객체지향 프로그래밍(OOP)이란 프로그래밍 패러다임의 하나입니다.

객체지향의 객체(Object) 란 데이터(정보, 속성 등)와 데이터를 처리하는 기능(함수)이 클래스로 캡슐화 된 컴퓨터 자원의 묶음(모듈)을 객체 라고 합니다.

결국 객체지향 프로그래밍이란 현실의 문제를 여러 개의 객체 단위로 구분하여 처리하는 방식을 말한다고 할 수 있습니다.

객체지향 프로그래밍하면 주로 나오는 키워드가 있습니다.

1. 캡슐화 (Encapsulation)

캡슐화는 데이터와 데이터를 처리하는 함수를 하나로 묶는 것을 의미하며, 아래와 같은 특징이 있습니다.

  • 캡슐화된 객체 내부는 은닉되어 외부로부터 독립적이다.
  • 독립적인 객체는 외부 모듈에 의한 영향이 적다.
  • 독립적이기 때문에 객체 간의 결합도가 낮다.
  • 캡슐화된 객체는 재사용이 용이하다.

2. 상속성 (Inheritance)

상속성은 이미 정의된 상위 개념의 특징을 하위 개념이 물려받는 것을 의미하며, 아래와 같은 특징이 있습니다.

  • 상속을 통해 상위 개념의 특징을 공유하기 때문에 재사용이 용이하다.
  • 이미 정의된 개념을 하위 개념에서 상속받기 때문에 중복되는 코드 작성을 방지한다.
  • 상속받은 특징 외에 새로운 특징을 추가하여 사용할 수 있다.

3. 추상화 (Abstraction)

추상화는 객체의 공통 특징이나 기능을 묶어서 통상적으로 표현하는 것을 의미하며, 아래와 같은 특징이 있습니다.

  • 코드의 중복 작성을 방지하고, 가독성을 높여준다.
  • 추상화를 통하면 재사용이 용이하다.

4. 다형성 (Polymorphism)

다형성은 하나의 시그널을 각 객체가 가지고 있는 고유 특성으로 처리 가능하게 구성하는 것을 의미하며, 아래와 같은 특징이 있습니다.

  • 시그널의 형태가 달라지면 처리되는 방식도 달라진다.
  • 오버로딩, 오버라이딩 같은 기법을 사용하여 효율적인 작업이 가능하다.

    📌 Python에서는 오버로딩 기능이 지원되지 않는다.