객체 지향 프로그래밍(Object Oriented Programming)
객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로,
프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고,
그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
객체 지향 프로그래밍 장단점
- 코드 재사용이 용이
남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서 사용할 수 있다.
- 유지보수가 쉬움
절차 지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아 수정해야하는 반면 객체 지향 프로그래밍에서는 수정해야 할 부분이 클래스 내부에 멤버 변수혹은 메서드로 존재하기 때문에 해당 부분만 수정하면 된다.
- 대형 프로젝트에 적합
클래스 단위로 모듈화시켜서 개발할 수 있으므로 대형 프로젝트처럼 여러 명, 여러 회사에서 프로젝트를 개발할 때 업무 분담하기 쉽다.
- 단점
- 처리 속도가 상대적으로 느림
- 객체가 많으면 용량이 커질 수 있음
- 설계시 많은 시간과 노력이 필요
class와 instance
class + instance
class : 집단에 속하는 속성(attribute)과 행위(behavior) 변수와 메서드로 정의한 것, 객체를 만들기 위한 메타정보
instance : 객체, 정의한 클래스에 토대로 실제 메모리에 할당된 것.
- class : 분류, 그룹
- instance : 사례, 예제, 구체적 사례
ex) 포유류(class) = 사람(instance1), 고양이(instance2), 개(instance3)
※ 추상화
공통의 속성이나 기능을 묶어 이름을 붙이는 것으로 클래스를 설계하는 것자체를 의미함
class, instance의 관계
class를 복제하여 instance를 만든다.
하나의 class를 생성하면, class를 복제한 여러개의 instance를 만드는데,
instance는 class와 동일한 변수와 함수를 가진다.
instance 마다 변수에 담겨있는 값이 다를 수 있다.
각각의 instance에 담겨있는 함수를 이용하는데, 함수가 속해있는 instance에 변수를 이용해서 처리한다.
객체 지향 프로그래밍의 사례
### 객체 지향 프로그래밍의 사례
name = 'kim' # 'kim' = 객체
names = ['kim', 'gong', 'jun'] # list 데이터 타입 -> 배열이면서 객체 타입
name = 'kim' # 문자열 만들기
# -> str = class, str('kim') = instance
String = class
String.new('kim) = instance
name = String.new('egoing')을 이용한 변수
Object(객체) -> Class를 통해 실제로 구현하고자 하는 것 ( 함수=메소드 또는 데이터집합)
Class --> 객체를 생성하기 위한 속성, 특성 등등을 누구나 쓸수 있는 함수+변수로 구현
Instance --> 클래스의 속성을 이어 받되, 변수를 달리 하는 것.
string.new(메소드) --> string은 클래스.. string.new(메소드) 전체가 instance.
이것의 결과가 객체(Object)
'python' 카테고리의 다른 글
python - 상속(inheritance) (0) | 2022.04.28 |
---|---|
pyhthon - 인캡슐레이션Encapsulation(캡슐화) (0) | 2022.04.28 |
python - 모듈(modules)란? (0) | 2022.04.27 |
python - function 함수란 무엇인가? (0) | 2022.04.27 |
python - 반복문(loop) 활용& 컨테이너(container) (0) | 2022.04.27 |
댓글