본문 바로가기

CS

객체지향이란

소프트웨어 개발 방법론 중 하나로, 프로그램에서 가장 작은 단위를 객체로 만들고 객체 간의 상호작용을 이용해 소프트웨어를 개발하는 개념입니다.

 

객체지향의 특징

  1. 클래스와 객체 (Class & Objects):
    • 클래스(Class)는 객체(Object)를 생성하기 위한 설계도로, 데이터와 메서드(함수)로 구성됩니다.
    • 객체는 클래스의 인스턴스로, 클래스의 구조를 기반으로 실제 메모리에 할당된 것을 의미합니다.
  2. 캡슐화 (Encapsulation):
    • 캡슐화는 데이터와 관련 기능(메서드)을 하나로 묶고, 외부에서의 접근을 제한하여 데이터의 안전성과 보안성을 보장합니다.
    • 클래스는 자체적인 데이터를 관리하며, 외부에서는 내부 동작 방식을 몰라도 인터페이스를 통해 접근할 수 있습니다.
  3. 상속 (Inheritance):
    • 상속은 기존 클래스의 특성(속성과 메서드)을 다른 클래스에서 재사용하거나 확장할 수 있도록 해줍니다.
    • 상속을 통해 새로운 클래스는 기존 클래스의 특성을 이어받아 사용할 수 있습니다.
  4. 다형성 (Polymorphism):
    • 다형성은 같은 이름의 메서드가 다른 기능을 수행하도록 하는 기능으로, 같은 코드에서 다양한 동작이 가능하도록 합니다.
    • 오버라이딩(Overriding)과 오버로딩(Overloading)을 통해 다형성을 구현할 수 있습니다.
  5. 객체 지향 설계 원칙 (Object-Oriented Design Principles):
    • SOLID 원칙과 같은 객체 지향 설계 원칙은 객체지향의 기본 원리를 따라 코드를 설계하고 유지보수하기 쉽도록 돕습니다.
    • 단일 책임 원칙(SRP), 개방-폐쇄 원칙(OCP), 리스코프 치환 원칙(LSP) 등이 있습니다.

 

OOP란

객체지향 프로그래밍(Object-Oriented Programming)의 약어로, 객체의 관점에서 프로그래밍을 하는 것입니다.

 

 

SOLID 원칙

의미 있는 객체지향 소프트웨어를 설계하기 위한 다섯 가지 원칙을 의미합니다. 이 원칙들은 코드의 유연성, 확장성, 유지보수성을 높이고, 객체지향 프로그램의 설계를 개선하는 데 도움이 됩니다.

 

  1. 단일 책임 원칙 (Single Responsibility Principle - SRP):
    • 하나의 클래스는 하나의 책임만 가져야 합니다.
    • 클래스가 변경되어야 하는 이유는 오직 하나여야 하며, 이는 클래스를 더 작고 이해하기 쉽게 만듭니다.
    • 이 원칙을 따르면 코드의 유지보수가 쉬워지고 응집력이 높아집니다.
  2. 개방-폐쇄 원칙 (Open-Closed Principle - OCP):
    • 확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 합니다.
    • 기존의 코드를 수정하지 않고도 기능을 추가하거나 변경할 수 있도록 설계해야 합니다. 이를 위해 추상화와 다형성을 활용합니다.
  3. 리스코프 치환 원칙 (Liskov Substitution Principle - LSP):
    • 자식 클래스는 부모 클래스의 기능을 대체할 수 있어야 합니다.
    • 즉, 어떤 클래스의 인스턴스가 있을 때, 그것을 해당 클래스의 하위 클래스의 인스턴스로 치환해도 기존의 동작 방식이 변경되지 않아야 합니다.
  4. 인터페이스 분리 원칙 (Interface Segregation Principle - ISP):
    • 클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안됩니다.
    • 즉, 인터페이스를 여러 개로 분리하여 각 클라이언트가 필요한 인터페이스만 사용하도록 하는 것입니다.
  5. 의존관계 역전 원칙 (Dependency Inversion Principle - DIP):
    • 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안됩니다. 둘 모두 추상화에 의존해야 합니다.
    • 즉, 추상화를 통해 상위 수준의 모듈은 하위 수준의 모듈과 직접적으로 연결되지 않고, 추상화에 의존하여야 합니다.