디자인패턴

[디자인패턴] 객체지향 프로그래밍(OOP)

오늘도개발 2024. 2. 28. 13:02

 

1. 객체지향이란?

 

 - 소프트웨어 개발 방법론 중 하나

 

 - 현실 세계의 사물과 개념을 프로그래밍적으로 모델링하여 문제를 해결

 

  • 클래스(Class): 클래스는 객체를 생성하기 위한 설계도 

 

  • 추상화(Abstraction):  필요한 공통된 속성이나 기능을 추출

 

  • 상속(Inheritance): 상속은 이미 존재하는 클래스(부모 클래스)를 기반으로 구체적인 클래스(자식 클래스)로 구현

 

  • 다형성(Polymorphism): 다형성은 같은 이름의 메서드나 함수가 다른 기능을 수행

 

  • 캡슐화(Encapsulation): 데이터와 동작을 하나의 단위로 묶어 외부에서의 접근을 제어하고, 객체의 내부를 보호

 

 

2. 응집도 와 결합도

 

 - 응집도(Cohesion):

 응집도는 클래스나 모듈 내부의 요소들이 서로 연관되어 있는 정도를 나타냄

 * 높은 응집도는 한 모듈 내의 요소들이 서로 밀접하게 관련되어 있음

 

 - 결합도(Coupling):

결합도는 모듈 간의 상호 의존성 정도를 나타냄

 * 두 모듈이 얼마나 강하게 결합되어 있는지를 측정

 

 * 높은 응집도와 낮은 결합도를 가진 프로그램이 유지보수에 효율적

 

 

3. SOLID 원칙

 

 - 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):

  • 고수준 모듈은 저수준 모듈에 의존해서는 안됨
  • 즉, 제공하는 인터페이스에만 종속적이 되어야 한다.

 

* SOLID 원칙을 적용하면 코드의 유연성과 확장성을 높일 수 있음