객체지향 프로그래밍(OOP)이란 프로그래밍 패러다임의 하나입니다.
객체지향의 객체(Object)
란 데이터(정보, 속성 등)와 데이터를 처리하는 기능(함수)이 클래스로 캡슐화
된 컴퓨터 자원의 묶음(모듈)을 객체
라고 합니다.
결국 객체지향 프로그래밍이란 현실의 문제를 여러 개의 객체 단위로 구분하여 처리하는 방식을 말한다고 할 수 있습니다.
객체지향 프로그래밍하면 주로 나오는 키워드가 있습니다.
1. 캡슐화 (Encapsulation)
캡슐화는 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
을 의미하며, 아래와 같은 특징이 있습니다.
- 캡슐화된 객체 내부는 은닉되어 외부로부터 독립적이다.
- 독립적인 객체는 외부 모듈에 의한 영향이 적다.
- 독립적이기 때문에 객체 간의 결합도가 낮다.
- 캡슐화된 객체는 재사용이 용이하다.
2. 상속성 (Inheritance)
상속성은 이미 정의된 상위 개념의 특징을 하위 개념이 물려받는 것
을 의미하며, 아래와 같은 특징이 있습니다.
- 상속을 통해 상위 개념의 특징을 공유하기 때문에 재사용이 용이하다.
- 이미 정의된 개념을 하위 개념에서 상속받기 때문에 중복되는 코드 작성을 방지한다.
- 상속받은 특징 외에 새로운 특징을 추가하여 사용할 수 있다.
3. 추상화 (Abstraction)
추상화는 객체의 공통 특징이나 기능을 묶어서 통상적으로 표현하는 것
을 의미하며, 아래와 같은 특징이 있습니다.
- 코드의 중복 작성을 방지하고, 가독성을 높여준다.
- 추상화를 통하면 재사용이 용이하다.
4. 다형성 (Polymorphism)
다형성은 하나의 시그널을 각 객체가 가지고 있는 고유 특성으로 처리 가능하게 구성하는 것
을 의미하며, 아래와 같은 특징이 있습니다.
- 시그널의 형태가 달라지면 처리되는 방식도 달라진다.
- 오버로딩, 오버라이딩 같은 기법을 사용하여 효율적인 작업이 가능하다.
📌 Python에서는 오버로딩 기능이 지원되지 않는다.