본문 바로가기

개발상식

객체 지향 프로그래밍

객체 지향 프로그래밍(Object Oriented Programming)

  • 객체 지향 프로그래밍 이전의 프로그래밍 패러다임 => 컴퓨터 중심

  • 객체 지향 프로그래밍 => 인간 중심적 프로그래밍

  • 현실 세계의 사물들을 객체라고 보고, 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍 => 추상화

  • 이미 작성한 코드에 대한 재사용성이 높음

  • 라이브러리를 각종 예외상황에 맞게 잘 만들어두면 개발자가 사소한 실수를 하더라도 그 에러를 컴파일 단계에서 잡아낼 수 있으므로 버그 발생이 줄어듦

  • 내부적으로 어떻게 동작하는지 몰라도 개발자는 라이브러리가 제공하는 기능들을 사용할 수 있기 때문에 생산성이 높아지게 됨

  • 객체 단위로 코드가 나눠져 작성되기 때문에 디버깅이 쉽고 유지보수에 용이

  • 데이터 모델링 할 때 객체와 매핑하는 것이 수월하기 때문에 요구사항을보다 명확하게 파악하여 프로그래밍 가능

  • 객체 간의 정보 교환이 모두 메시지 교환을 통해 일어나므로 실행 시스템에 많은 overhead가 발생 => 하드웨어의 발전으로 많은 부분 보완됨

  • 단점 => 객체가 상태를 갖음. 변수가 존재하고 변수를 통해 객체가 예측할 수 없는 상태를 갖게 되어 애플리케이션 내부에서 버그를 발생시킴 => 함수형 패러다임이 주목 받음

객체 지향적 설계 원칙

  1. SRP(Single Responsibility Principle): 단일 책임 원칙
    • 클래스는 단 하나의 책임을 가져야 하며 클래스를 변경하는 이유는 단 하나의 이유이어야 한다.
  2. OCP(Open-Closed Principle): 개방-폐쇄 원칙
    • 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다.
  3. LSP(Liskov Substitution Principle): 리스코프 교환 법칙
    • 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.
  4. ISP(Interface Segregation Principle): 인터페이스 분리 원칙
    • 인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다.
  5. DIP(Dependency Inversion Principle): 의존 역전 원칙
    • 고수준 모듈을 저수준 모듈의 구현에 의존해서는 안된다.

img

Reference

'개발상식' 카테고리의 다른 글

RESTful API  (0) 2020.09.28