Python

OOP 기초

with_AI 2022. 4. 14. 10:51

OOP: object oriented programming 

- 객체를 기반으로 프로그램을 만드는 방법론

 

파이썬이라는 언어가 OOP 라는 패러다임을 JAVA로부터 계승받음

 

실제 세상에 존재하는 것을 프로그래밍에서 구현 하기 위한 패러다임

 

개념의 추상화

- 실제 세상을 표현하고 있는 여러가지 개념들을 프로그램으로 옮겨서 구현할 수 있기 위한 컨셉의 프로그래밍

 

객체

- 실제 사물 하나하나를 의미, 사물들이 공유하는 속성을 정의한 것을 클래스 라고 한다.

 

OOP는 데이터변수와 데이터를 처리하는 기능을 묶어서 만든다. 따라서 그 객체가 처리되는 기능을 자연스럽게 정의할 수 있다.

 

Class에는 Class를 기술하는 정보를 나타내는 변수인 Class variable과 class의 특징을 설명하는 기능인 class method를 포함

 

 

개념의 구체화

- 추상적인 개념 class를 실제로 사용하려면 하나 하나의 개별 사물로 만들어야 하는데, 이를 개별 사물인 객체라고 한다.

 

OOP의 장점은

- 클래스 구조를 잘 설계하면 라이브러리 형태로 재사용 가능

 

- 일상 생활에 존재하는 개념을 그대로 프로그램에 구현 가능

 

- 클래스의 상속 개념 때문에, 프로그래밍 자체의 재사용성이 극대화

 

- OOP를 이용하여 개발을 하게되면, 다른 기능을 수정하더라도 클래스가 서로 다르게 구현되어 있어 다른 기능에 끼치는 영향이 매우 적어질 수 있다.

 

 

1. 상속

 

- 클래스는 개념의 추상화이기 때문에 해당개념을 계승하는 하위 개념을 만들 수 있다.

 

- 상위 하위 개념이 존재, 상속하는 클래스는 superclass, 상속받는 클래스는 subclass라고 한다.

 

- subclass는 superclass의 모든 개념을 이어받기 때문에 class variable, calss method도 그대로 이어받는다.

 

 

2. 다형성

 

- 여러 하위 클래스가 같은 class method를 상속받게 되면, 그 기능을 다르게 구현할 수 있다.

 

- 하나의 기능을 나타내는 개념이 실제 구현에서 다양한 형태로 표현 가능한 것을 Polymorphism이라고 한다.

 

- 이러한 다형성을 구현할 수 있는 기능을 Method Overriding이라고 한다.

 

 

3. 추상화

 

- 클래스 내부에 구현된 Variable, method를 보지 않아도 개념상으로 사용할 수 있게 하는 개념

 

- 내부 구현은 살펴보지 않아도 된다.

 

4. 은닉화

class

{

data members + methods

}

 

- 파이썬, 확장성 -> 은닉화

 

- 은닉화가 잘 되면 사용자는  class 의 내부 구현 코드를 보지 않아도 내부 데이터와 기능을 사용하는데 아무런 문제가 없다.

 

 

요약

 

OOP는 대규모 코드의 유지 보수를 편리하기 위해서 생긴 프로그램 방법론

 

구현하고자 하는 대상을 class로 정의하여 코드로 구현 가능

 

다양한 특징들이 class를 통해서 구현된 코드가 재사용되기 편하게 해준다.

 

이러한 이유로 잘 만들어진 open source library들을 손쉽게 이용할 수 있다.

 

 

 

 

 

 

 

 

 

 

'Python' 카테고리의 다른 글

데이터 시각화 라이브러리 Seaborn  (0) 2022.04.19
Pandas를 사용해야 하는 이유  (0) 2022.04.15
Numpy array  (0) 2022.04.14
Python Class 메소드 오버라이딩(Method override) 예제  (0) 2022.04.14
Python Class 기초  (0) 2022.04.14