본문 바로가기
CS

#2. 객체지향프로그래밍(OOP)

by nacjji 2023. 2. 21.
객체지향 프로그래밍(Object-Oriented-Programming)

컴퓨터 프로그래밍 패러다임 중 하나, 현실세계의 객체를 모델링하여 프로그래밍 하는 방법

 

객체란? 

  • 객체지향 프로그래밍에서 객체란 소프트웨어 내에서 특정한 역할과 관련된 데이터와 해당 데이터를 처리하는 메서드를 포함하는 소프트웨어 개체를 의미한다. 
  • 객체는 다른 객체와 상호작용한다. 
  • 데이터와 메서드는 해당 객체의 상태를 나타낸다. 
  • 객체는 이 상태를 변경하는 방법을 제공한다.
  • 객체는 클래스(Class)에 의해 정의되고, 객체의 속성과 메서드를 정의한다. 
  • 객체는 각자 고유한 식별자(Identifier)를 가지고, 객체의 상태는 해당 객체의 속성값으로 표현된다. 
  • 객체는 다른 객체와 메시지를 주고 받으며, 메시지는 객체간의 상호작용을 정의한다.

 

객체지향 프로그래밍의 장점
  • 코드 재사용성 : 객체를 재사용하거나 새로운 객체를 생성해 코드의 재사용성을 높일 수 있다. 
  • 유지보수성 : 각 객체는 독립적으로 작동하고, 변경에 대한 영향을 제한하는 추상화를 통해 유지보수가 용이하다.
  • 모듈화 : 프로그램을 작은 모듈로 용이하게 분할하여 작성할 수 있고, 대규모 프로그램의 개발과 유지보수에 유리하다.
  • 확장성 : 새로운 클래스를 추가하거나 기존 클래스를 변경하기 용이하다. 
  • 가독성 : 객체의 속성과 메서드를 캡슐화하고 추상화하여 코드의 가독성을 높인다.
  • 재사용성 : 코드의 재사용성을 높여 코드 작성의 시간을 단축시킬 수 있다.

 

객체지향 프로그래밍의 원칙(SOLID)
  • Single Responsibility Principle(단일 책임 원칙, SRP)
    • 하나의 클래스는 하나의 책임을 가진다.(클래스는 단일 기능만 수행한다.)
  • Open-Closed Principle(개방-폐쇄 원칙, OCP)
    • 기존 코드를 수정하지 않고도 새로운 기능을 추가할 수 있다.(기존 코드는 확장에 대해 개방되어 있고, 변경에 대해서는 폐쇄적이어야 함)
  • Liskov Substitution Principle(리스코프 치환 원칙, LSP)
    • 상위 클래스를 하위 클래스를 교체해도 기능에 문제가 없어야 한다.(하위 클래스는 상위 클래스의  대체 가능성이 있어야 하고, 상위 클래스에서 정의한 규약을 지켜야 한다.
  • Interface Sergregation Principle(인터페이스 분리 원칙, ISP)
    • 인터페이스는 클라이언트가 필요로 하는 메서드만 제공해야 한다.(인터페이스는 가능한 작아야 하고, 사용하지 않는 메서드는 제공하지 않아야 한다.)
  • Dependency Inversion Principle(의존 역전 원칙, DIP)
    • 의존성은 추상화에 의존해야 하고, 구체적인 구현에 의존하면 안된다. (의존 관계는 인터페이스나 추상클래스에 의존해야 하고, 구현 클래스에 의존해선 안된다.)

'CS' 카테고리의 다른 글

#6. MSA(Micro Service Architechure)  (0) 2023.02.23
#5. 인덱스  (0) 2023.02.22
#4. DI(Dependency Injection)  (0) 2023.02.22
#3. REST API  (0) 2023.02.21
#1. 시간복잡도와 공간복잡도  (0) 2023.02.19