728x90

<객체지향 프로그래밍(Object-Oriented Programming)>

- 컴퓨터 프로그래밍의 패러다임 중 하나

- 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것

- 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용

- 프로그램 개발과 유지보수가 간편하고 직관적인 코드 분석이 가능

- 추상화, 캡슐화, 정보은닉, 상속, 다형성, 동적 바인딩, 오버로딩 등의 특성을 가짐

cf) 절차지향 프로그래밍
- 위에서 아래, 순서대로 실행
• 프로그램이 유기적으로 연결
• 대표적으로 C언어가 있음
• 순서대로 실행되기 때문에 실행 속도가 빠름
• 유지보수가 어려움 코드의 재사용이 어려움

- 프로그래밍을 할 때 주의할 점

 · 프로그래밍을 할 때, 코드의 복사와 붙여넣기를 자주한다면? 그만큼 코드 중복이 많이 된다는 것을 의미

  1. 코드 수정 시 많은 곳을 수정해야 하고, 수정하는 과정에 실수가 발생할 수 있음

  2. 중복된 코드를 줄이기 위해 함수를 사용

  3. 이런 함수가 많아지게 되면, 함수 또한 의미를 파악하기 힘들어짐

 · 같은 코드를 반복하지 않음

 · 한번 작성한 코드는 언제든 바뀔 수 있다는 것을 생각

 


<클래스>

: 객체를 조금 더 효율적으로 생성하기 위해 만들어진 구문

 

- 형식: class 클래스 이름 :

           클래스 내용

- 대소문자를 구별하기 때문에 소문자로 class 정의

- 인스턴스: 클래스로부터 만들어진 객체

- 클래스의 이름공간: 클래스는 별도의 이름공간이 할당

- 인스턴스 또한 별도의 이름공간을 할당: 동적으로 인스턴스 내부에 멤버 추가 가능, 인스턴스마다 모두 독립적인 이름공간

 

<메소드>

: 클래스가 가지고 있는 함수

 

- 일반적인 함수와 똑같이 정의하지만 첫 번째 매개변수로 self를 사용 (관례적)

- self는 인스턴스 객체 자신의 레퍼런스를 지니고 있음: 각 인스턴스들은 self를 활용해 자신의 이름공간에 접근 가능

 

<메소드의 호출>

- 인스턴스 객체를 활용한 메소드 호출 (self 인자 활용)

- 클래스 객체를 이용한 메소드 호출 (직접 인스턴스를 적어줌)

- 객체 내부의 메소드를 호출할 수 있음

cf) 주의점: self를 적어주지 않으면, 외부에서 해당 메소드를 찾게 됨

- 정적 메소드(Static Method): 인스턴스 객체와 무관하게 클래스 이름공간에 존재하는 메소드

 · 클래스 이름을 이용하여 직접 호출 가능

 · 장식자 @staticmethod 사용

 

<클래스 멤버와 인스턴스 멤버>

- 클래스멤버: 클래스 이름공간에 생성, 모든 인스턴스에 공유

- 인스턴스 멤버: 인스턴스 이름공간에 생성, 인스턴스마다 독립

 

<생성자와 소멸자>

- 생성자: 객체(인스턴스)가 생성될 때 자동으로 호출되는 함수

 · __init__으로 정의 (__ 의 의미는 예약된 이름, __name__, __main__ 등)

 · 일반적으로 객체가 보유해야 할 변수나 자원들의 초기화를 하는 코드를 작성

- 소멸자: 객체(인스턴스)가 소멸될 때 자동으로 호출되는 함수

 ·  __del__으로 정의

 ·  일반적으로 객체가 점유하고 있는 메모리나 기타 자원들의 해제를 하는 코드 작성

 

728x90

'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

+ Recent posts