OOP(Object Oriented Programming)란 object들의 상호작용으로 프로그램을 구성하는 프로그래밍이다. 뜻 그대로 객체지향프로그래밍을 말한다.
OOP language라고 불리기 위해서는 3가지 특성을 가져야한다.
- encapsulation(data hiding)-data나 method등 세부적인 구현방법에 대해 capsule로 싸고, 외부에서는 이를 조작할 수 있는 interface만 제공한다. 이를 통해 외부접근을 막을 수 있어 더 private한 프로그래밍을 할 수 있다.
- inheritance(상속)- 어떠한 class가 다른 class의 속성과 메소드를 물려받는 것이다. 이를 통해 modularity가 이루어진다. 상속을 통해서 코드의 재사용성을 극대화시키고 코드의 중복을 없애 더욱 간단한 코드가 만들어질 수 있다. 부모 클래스와 자식클래스로 나누어지고 자식클래스는 부모클래스로부터 속성과 메소드를 물려받는다. (is-a 관계)
*oop 관계: (is-a) inheritance/ (has-a) embedded - polymorphism(다형성): 같은 이름의 method나 함수가 다른 클래스나 객체에 따라 다른 동작을 할 수 있는 능력. 즉, 보이는 것은 같으나 다른 기능을 하는 것이다. inheritance를 통해 이루어진다. 동일 message로 여러 종류의 object에게 각각 고유한 task를 수행할 수 있게 한다.
oop
- oop는 순서가 없이 message 기반으로 동작한다. object간의 message전달을 통해 상호작용함.
- 기존 imperative programming에 없던 class, object, encapsulation, inheritance, polymorphism등의 개념이 도입됨.
위의 특성들을 기반으로 oop를 사용하면, 데이터나 method를 계속해서 정의할 필요가 없어진다.
object
- 보거나 만질 수 있는 사물
- python에서는 다음의 속성을 가진 데이터 덩어리를 가르킴.
- type: 해당 object이 무엇인지 정의
- id
- value: 앞서 type에 의해 object가 가질 수 있는 value의 범위가 결정됨.
- reference count: 해당 object이 얼마나 많은 곳에서 사용되는지를 count함.
예를 들어서 설명하자면, 차의 속성과 메소드를 encapsulation해서 class를 정의한다. 차클래스에서 파생하여 volvo클래스, bmw클래스를 만들 수 있다. volvo와 bmw클래스는 차클래스의 속성과 메소드를 상속받는다. 차클래스에 있는 clarksion()함수를 volvo클래스로 가져와 재정의하는 overriding(상속된 method를 sub-class에서 재정의함)을 사용할 수 있다(polymorphism).

*method-함수
data-속성
ex) 차 색상, 크기등 차의 특징은 속성(이미 정해져서 나오는 값)이고, 차가 가속하고 감속하는 것은 함수(변수에 다양한 값을 넣을 수 있음)이다.
- overriding:상속된 method를 sub-class에서 재정의하는 것. 'super()'를 통해 super-class의 object를 가져와서 호출해야함. overriding을 하지 않는 경우, 기본적으로 super-class의 method를 사용한다.
- overloading: 중복정의(python에서는 지원하지 않음)
'컴퓨터프로그래밍' 카테고리의 다른 글
| Python Type (0) | 2024.05.20 |
|---|---|
| VSCODE (0) | 2024.05.13 |
| programming 소개 (0) | 2024.05.01 |
| 파이썬 실행방법 (0) | 2024.03.25 |
| VSCODE에서 'hello world' 출력하기 (0) | 2024.03.12 |