티스토리 뷰

객체 지향?

객체 지향이라는 말을 보거나 들었을 때 처음 드는 생각은 클래스이다.

 

관련 있는 데이터를 한 곳에 모아둔 것, 데이터를 다루기 위한 기능을 정의한 것 이를 객체 지향의 용어로 바꾼다면 추상화, 캡슐화, 다형성으로 표현 가능하다.

 

하지만 서문을 보자마자 객체를 잘못 이해하고 있다는 생각이 들었다. 작가님이 이 책을 통해 전하고자 하는 내용은 객체의 특징을 얼마나 잘 이해하고 있느냐가 아닌 객체를 객체답게 바라보고자 하는 것이다.

이 책을 읽고 다음의 목표를 천천히 달성해 나가야한다.
  1. 클래스가 아닌 객체를 바라보는 것
  2. 객체를 협력하는 공동체로 바라보는 것
  3. 객체에게 적절한 역할과 책임을 부여하는 것
  4. 앞선 개념을 프로그래밍 언어에 적용하는 것

객체 지향의 배경

실세계의 정보를 프로그램으로 구현하기 위한 틀이 필요했는데 이것이 바로 객체 지향 프로그램의 시작이다.

 

객체지향이란 실세계를 직접적이고 직관적으로 모델링할 수 있는 패러다임

 

하지만 실세계의 정보와 객체간의 유사성은 거리가 멀고 많은 모순이 발생하게 되었다. 또한 실제 객체 지향 소프트웨어의 목표은 모방이 아니라 새로운 세계의 창조에 있다.

 

이러한 문제에도 객체 지향 패러다임에 실세계의 모방이 들어가는 이유는 객체 지향의 핵심 사상인 연결완전성(seamlessness)을 설명하는데 현실세계의 협력(collaboration)이 적합하기 때문이다.

협력을 이루기 위해

각각의 객체는 역할을 가지고 있으며 단일로 모든 것을 수행할 수 없다. 이를 위해서는 요청과 응답이라는 협력이 자연스럽게 발생하고 요청과 응답을 수행하기 위해 역할에 대한 책임을 가져야한다.

 

역할에 대한 책임은 다음과 같이 나타날 수 있다.

  • 동일한 역할을 수행할 수 있다.
  • 이는 대체 가능함을 의미한다.
  • 책임의 수행은 자율적으로 선택 가능하다.
  • 여러 가지 역할을 동시에 수행할 수 있다.

우아한 객체 지향

우아한 설계의 핵심은 객체에게 알맞은 책임을 부여하는 것

 

역할, 책임, 협력도 결국 객체에서 발생하게 되는 것이다. 따라서 객체지향 패러다임의 중심에는 객체가 존재한다.

 

가장 기본이 되는 덕목은 다음과 같다.

  • 객체는 자율성을 갖추고 충분히 협력적이여야 한다.
    • 이러한 객체의 자율성은 외부와 내부를 확실히 구분하게 됨으로 나오게 된다.
  • 수신된 메시지는 메서드로 처리된다.
    • 컴파일 시간에 메서드가 결정되는 절차적 언어와 달리 런타임에 메서드가 결정되는 것은 객체 지향 언어의 핵심 특징 중 하나다.
    • 메시지와 메서드를 확실히 구분함으로 객체의 자율성을 높일 수 있다.

우아한 개발자

코드를 담는 클래스의 관점이 아닌 메시지를 주고 받는 객체의 관점으로 볼 수 있도록 사고의 중심을 전환할 수 있어야 한다. 클래스는 단지 객체의 협력 관계를 코드로 옮기는 도구일 뿐이다.

 

객체 지향의 중심은 객체를 지향하는 것이지 클래스를 지향하는 것이 아니다.

'도서 > 객체지향의 사실과 오해' 카테고리의 다른 글

객체 지도  (0) 2022.08.04
책임과 메시지  (0) 2022.07.29
역할, 책임, 협력  (0) 2022.07.20
타입과 추상화  (0) 2022.06.18
이상한 나라의 객체  (0) 2022.06.16
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Total
Today
Yesterday