본문 바로가기

FrontEnd

[객체지향 설계] 객체지향 설계의 기초와 핵심개념

반응형

designgurus의 객체지향 코스를 수강하면서 관련 내용을 정리 중입니다.

 

객체 지향 설계란?

  • 객체 중심으로 프로그램을 설계하고 개발하는 프로그래밍 스타일
    • 절차 지향 : 각 블록은 데이터를 조작하기 위한 단계
    • 객체 지향 : 데이터와 데이터와 관련된 기능을 객체 안에 포장

객체 지향의 재료

  • 객체: 객체는 현실의 실체와 OOP의 기본 빌딩 블록을 나타냅니다.
    • 예를 들어 온라인 쇼핑 시스템에는 장바구니, 고객, 제품 항목 등과 같은 각 객체가 있습니다.
  • 클래스 : 클래스는 객체를 위한 설계도, 프로토타입 입니다.
    • 객체의 속성, 상태, 데이터, 필드
    • 객체의 함수, 동작 ,행동, 메서드
    •  예를 들어 온라인 쇼핑 시스템에서 고객 객체는 배송 주소, 신용 카드 등과 같은 속성과 주문, 주문 취소 등의 메서드를 갖습니다.

객체 지향의 4 원리

캡슐화(Encapsulation)

  • 관련 있는 데이터를 객체 안에 묶어 외부 세계로부터 숨김
  • 다른 객체는 해당 객체의 상태에 직접 접근할 수 없음
  • 퍼블릭 메서드를 통해서만 상태의 정보를 얻을 수 있음
    • 반드시 getter여야 할 필요가 없음
    • 상태의 변이를 일으킬 수도 있음
      • 커맨드 혹은 쿼리

추상화(Abstraction)

캡슐화의 확장
객체에 대해 필요한 정보만 남기고 나머지는 숨김(인터페이스)
  • 객체가 서로 통신하는 대규모 시스템은 코드 베이스를 유지하기 매우 어려움
  • 서로에 대해 너무 잘 알게되면 한 모듈의 변경 여파가 커자게 됨
  • 통신을 위한 인터페이스는 그대로 냅두고 내부 구현만 고칠 수 있음
추상화는 개체의 내부 구현 세부 정보를 숨기고 다른 개체와 관련된 작업만 표시함으로써 유지보수에 도움됨

상속(Inheritance)

상속은 기존 클래스에서 새 클래스를 만드는 메커니즘입니다.

다형성(Polymorphism)

  • 다형성(Polymorphism)(그리스어로 "많은 형태"를 의미)은 객체가 다른 형태를 취할 수 있는 능력(서브클래스)
    • 다른 형태 : 하위(상속, 확장) 클래스
  • 문맥(컨텍스트;형태;서브클래스 종류)에 따라 동일한 메시지에 다른 방식으로 응답할 수 있음을 의미함
체스 게임을 예로 들어 보겠습니다.
체스 말은 비숍, 캐슬 또는 나이트와 같은 다양한 형태를 취할 수 있으며
이러한 모든 말은 '이동' 메시지에 다르게 반응합니다.


 

 

반응형