객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 소프트웨어 개발 패러다임 중 하나로, 현실 세계의 객체들을 프로그래밍에서 모델링하여 문제를 해결하는 방식입니다. OOP는 코드의 재사용성, 유지보수성, 확장성을 증가시키기 위해 객체와 클래스를 중심으로 프로그래밍하는 접근 방법을 제공합니다.

OOP의 주요 개념:

  1. 클래스와 객체: 클래스는 객체를 만들기 위한 템플릿으로, 데이터와 메서드의 집합을 정의합니다. 객체는 클래스의 인스턴스로, 클래스에 정의된 데이터와 메서드를 실제로 사용하는 것입니다.
  2. 캡슐화 (Encapsulation): 데이터와 해당 데이터를 다루는 메서드를 함께 묶어 하나의 단위로 만드는 것을 의미합니다. 캡슐화는 데이터의 접근을 제어하여 데이터를 보호하고 오류를 방지합니다.
  3. 상속 (Inheritance): 클래스 간에 부모-자식 관계를 정의하여 부모 클래스의 속성과 메서드를 자식 클래스가 상속받을 수 있게 합니다. 상속을 통해 코드의 재사용성과 계층 구조를 형성할 수 있습니다.
  4. 다형성 (Polymorphism): 여러 개체가 동일한 인터페이스를 사용하여 다양한 방식으로 동작할 수 있는 능력을 의미합니다. 다형성은 추상화와 인터페이스를 활용하여 구현됩니다.
  5. 추상화 (Abstraction): 복잡한 현실 세계를 단순화하여 필요한 속성과 기능만을 포함하는 모델을 만드는 과정입니다. 추상화는 클래스와 인터페이스를 통해 이루어집니다.

객체 지향 프로그래밍은 소프트웨어의 모델링과 설계를 현실 세계의 개념과 유사하게 구성하여 문제를 해결하고, 코드의 재사용성과 유지보수성을 향상시키기 위한 강력한 도구와 개념을 제공합니다. 다양한 프로그래밍 언어에서 객체 지향 프로그래밍을 지원하며, Java, C++, Python, C# 등이 대표적인 객체 지향 언어입니다.

OOP 3요소

OOP 5원칙(SOLID)

객체의 책임과 상태