본문 바로가기
개발

좋은 객체 지향 프로그래밍

by jeounpar 2023. 3. 5.

객체 지향 프로그래밍?

  • 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지 를 주고받고, 데이터를 처리할 수 있다. -> 협력
  • 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다

유연하고 변경이 용이하게 설계

  • 레고 블럭 조립하듯이
  • 키보드 마우스 갈아 끼우듯이
  • 컴퓨터 부품 갈아 끼우듯이
  • 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법

객체 지향 프로그래밍은 다음 한 문장으로 정리 할 수 있다.

'객체들의 협력으로 프로그램 작동하며 이때 각 객체들은 유연하고 변경이 용이하게 만들어야 한다' 

 

만약, '운전자' 객체와 '아반떼' 객체가 있다고 할 때 '아반떼'를 '테슬라'로 변경시 운전자는 동일하게 운전을 할 수 있다. 하지만 아반떼 객체를 통째로 변경한다는 것은 바람직 하지 않다. 아반떼 객체 대신에 '자동차'라는 역할을 만들고 이를 구현하는 '아반떼', '테슬라' 객체를 만든다면 운전자는 자동차 역할만을 의존한 상태로 어떤 자동차 구현 객체가 있어도 운전을 할 수 있다는 것이다.

 

다형성

역할구현으로 구분하면 세상이 단순해지고, 유연해지며 변경도 편리해진다.

  • 클라이언트는 대상의 역할(인터페이스)만 알면 된다.
  • 클라이언트는 구현 대상의 내부 구조를 몰라도 된다.
  • 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다.
  • 클라이언트는 구현 대상 자체를 변경해도 영향을 받지 않는다.

자바 : 역할=인터페이스, 구현=인터페이스를 구현한 클래스, 구현 객체

객체 설계시 역할과 구현을 명확히 분리하고 객체 설계시 역할을 먼저 부여하고, 그 역할을 수행하는 구현 객체를 만듬

 

협력

객체들의 협력 관계는 런타임시 결정된다. 즉, 개발자는 본인이 원하는 객체간의 협력 관계를 런타임 시점에서 유연하게 변경 할 수있다.

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

HashMap vs ConcurrentHashMap  (0) 2023.03.05
좋은 객체 지향 설계의 5가지 원칙(SOLID)  (0) 2023.03.05