<객체지향 프로그래밍(Object-Oriented Programming)>
- 컴퓨터 프로그래밍의 패러다임 중 하나
- 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것
- 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용
- 프로그램 개발과 유지보수가 간편하고 직관적인 코드 분석이 가능
- 추상화, 캡슐화, 정보은닉, 상속, 다형성, 동적 바인딩, 오버로딩 등의 특성을 가짐
cf) 절차지향 프로그래밍 - 위에서 아래, 순서대로 실행 • 프로그램이 유기적으로 연결 • 대표적으로 C언어가 있음 • 순서대로 실행되기 때문에 실행 속도가 빠름 • 유지보수가 어려움 코드의 재사용이 어려움 |
- 프로그래밍을 할 때 주의할 점
· 프로그래밍을 할 때, 코드의 복사와 붙여넣기를 자주한다면? 그만큼 코드 중복이 많이 된다는 것을 의미
1. 코드 수정 시 많은 곳을 수정해야 하고, 수정하는 과정에 실수가 발생할 수 있음
2. 중복된 코드를 줄이기 위해 함수를 사용
3. 이런 함수가 많아지게 되면, 함수 또한 의미를 파악하기 힘들어짐
· 같은 코드를 반복하지 않음
· 한번 작성한 코드는 언제든 바뀔 수 있다는 것을 생각
<클래스>
: 객체를 조금 더 효율적으로 생성하기 위해 만들어진 구문
- 형식: class 클래스 이름 :
클래스 내용
- 대소문자를 구별하기 때문에 소문자로 class 정의
- 인스턴스: 클래스로부터 만들어진 객체
- 클래스의 이름공간: 클래스는 별도의 이름공간이 할당
- 인스턴스 또한 별도의 이름공간을 할당: 동적으로 인스턴스 내부에 멤버 추가 가능, 인스턴스마다 모두 독립적인 이름공간
<메소드>
: 클래스가 가지고 있는 함수
- 일반적인 함수와 똑같이 정의하지만 첫 번째 매개변수로 self를 사용 (관례적)
- self는 인스턴스 객체 자신의 레퍼런스를 지니고 있음: 각 인스턴스들은 self를 활용해 자신의 이름공간에 접근 가능
<메소드의 호출>
- 인스턴스 객체를 활용한 메소드 호출 (self 인자 활용)
- 클래스 객체를 이용한 메소드 호출 (직접 인스턴스를 적어줌)
- 객체 내부의 메소드를 호출할 수 있음
cf) 주의점: self를 적어주지 않으면, 외부에서 해당 메소드를 찾게 됨
- 정적 메소드(Static Method): 인스턴스 객체와 무관하게 클래스 이름공간에 존재하는 메소드
· 클래스 이름을 이용하여 직접 호출 가능
· 장식자 @staticmethod 사용
<클래스 멤버와 인스턴스 멤버>
- 클래스멤버: 클래스 이름공간에 생성, 모든 인스턴스에 공유
- 인스턴스 멤버: 인스턴스 이름공간에 생성, 인스턴스마다 독립
<생성자와 소멸자>
- 생성자: 객체(인스턴스)가 생성될 때 자동으로 호출되는 함수
· __init__으로 정의 (__ 의 의미는 예약된 이름, __name__, __main__ 등)
· 일반적으로 객체가 보유해야 할 변수나 자원들의 초기화를 하는 코드를 작성
- 소멸자: 객체(인스턴스)가 소멸될 때 자동으로 호출되는 함수
· __del__으로 정의
· 일반적으로 객체가 점유하고 있는 메모리나 기타 자원들의 해제를 하는 코드 작성
'Python' 카테고리의 다른 글
Python - 예외 처리 (0) | 2021.07.15 |
---|---|
Python - 연산자 오버로딩, 상속, 다형성 (0) | 2021.07.14 |
Python - 모듈 (0) | 2021.07.14 |
Python - 람다 함수, 재귀 함수 (0) | 2021.07.13 |
Python - 지역변수와 전역변수, 매개변수 (0) | 2021.07.13 |