개발상식

개발상식 | 객체지향 프로그래밍이란

반응형

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

객체지향 프로그래밍이란 컴퓨터가 사고하는 방식으로 프로그래밍을 진행하는 것이 아니라 인간 중심적 프로그래밍 패러다임이라고 할 수 있다.
현실에 존재하는 사물들을 객체 라고 이야기 하고 그 객체로부터 필요한 특징들을 가져와서 프로그래밍 하는 것이다. 이것을 추상화 라고한다.

객체 지향의 가장 기본은 객체가 내부적으로 어떤 데이터를 갖고 있는지가 아닌 어떤 기능을 제공하는 지 이다.
이러한 기능들은 오퍼레이션(operation) 이라고 불리며 즉, 객체는 오퍼레이션의 집합체 이다.

메세지

오퍼레이션(기능)의 집합은 인터페이스이다. 즈 오퍼레이션의 실행을 요청하는 것을 메시지를 보낸다라고 표현한다.
이러한 메세지는 OOP의 단점이 될 수 있다.

OOP의 장점

  1. 이미 작성한 코드에 대한 재사용성이 높다. 자주 사용되는 로직을 라이브러리로 만들어두면 계속해서 사용할 수 있으며 그 신뢰성을 확보할 수 있다.
  2. 라이브러리를 각종 예외상황에 맞게 설계를 해두면 사소한 실수를 하더라도 그 에러를 컴파일 단계에서 잡아낼 수 있음으로 버그 발생이 줄어든다.
  3. 내부적으로 어떻게 작동하는지 자세히 모르더라도 그 로직들을 쉽게 사용할 수 있음으로 생산성이 높아진다..( 양날의 검인 것 같다.)
  4. 객체 단위로 코드가 나누어 지기 때문에 디버깅이 쉽고 유지보수에 용이하다.

OOP의 단점

  1. 객체간의 정보 교환이 모두 메시지 교환을 통해 일어나므로 실행 시스템에 많은 overhead가 발생한다. (하드웨어의 발전으로 많이 보완되어짐)
  2. 객체는 상태를 갖는다. 변수가 존재하고 이 변수를 통해 객체가 예측할 수 없는 상태를 갖게 되며 애플리케이션 내부에서 버그를 발생시킨다.

이러한 이유들 떄문에 함수형 프로그래밍 패러다임이 주목받고 있다.

객체 지향적 설계 원칙

  1. SRP(Single Responsibility Principle): 단일 책임 원칙
    클래스는 단 하나의 책임만 가져야하며 클래스를 변경하는 이유 또한 단 하나여야 한다.
    즉 하나의 객체는 하나의 기능만을 수행하여야 한다. 기능이 많아지게되면 데이터도 많아지고 이를 공유하는 과정에서 버그가 발생할 숭 있다.
  2. OCP(Open-Closed Priciple) 개방-폐쇄 원칙
    열려있는 확장과 닫혀있는 변경의 특성을 가져야 한다.
  3. LSP(Liskov Substitution Principle): 리스코프 치환 원칙
    상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.
  4. ISP(Interface Segregation Priciple): 인터페이스 분리 원칙
    인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다
  5. DIP(Dependency inversion Principle): 의존 역전 원칙
    고수준의 모듈은 저수준 모듈의 구현에 의존해서는 안된다.
    즉 객체끼리 서로 의존을 한다는 것은 객체에 의해 다른객체가 생성되거나 변경이 될 경우가 포함이 되며 이를 순환의존 이라고 한다.

객체지향 설계 과정

  1. 제공해야할 기능을 탐색, 그 기능을 알맞은 객체에 할당
  2.  
  3.  
  4. 1-1. 기능구현에 필요한 데이터를 객체에 추가
    1-2. 객체내의 데이터를 이용하는 기능 추가
    1-3 기능을 캡슐화하여 구현
  5. 객체간의 메시지 전달 방식을 결정

출처

객체 지향에 대한 얕은 이해
Object Oriented Programming

반응형

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

[RESTful API] REST API란 무엇인가?  (0) 2021.12.03
개발상식 | 좋은 코드란?  (0) 2021.10.15