[북스터디] 객체지향의 사실과 오해 (2)

ggam-nyang·2022년 4월 9일
0

북스터디

목록 보기
2/2

개괄

3, 4, 5장은 결국 협력, 책임, 역할에 관한 얘기들이었다. 1주차와 비슷하게 코드가 있진 않아서, 너무 추상적이게 느껴지기도 했다. 그래도 개념을 이해하고 객체지향의 오해를 해소하는 좋은 책임이 분명하다.

3장. 타입과 추상화

추상화에 관한 내용이다.
SW 사관학교 정글을 수료하며, 프로그래밍을 배우며 느낀건.

프로그래밍 == 추상화

결국 모든건 추상화의 과정이라고 생각하는데, 결국 객체지향도 고도화된 추상화들을 통해
개발을 용이하게 하는 패러다임이 아닌가싶다.

지하철 노선도를 생각해보자. 우리의 2호선 노선도와 실제 지리적 위치는 차이가 있다.
그럼에도 우리는 노선도가 훌륭한 지도라고 생각한다.
이것 또한 추상화다. 추상화란, 공통점을 모아놓는 것 + 불필요한 부분을 삭제하는 것이다.
전자의 개념이 곧 추상화라고 생각해서 후자의 개념이 신기했다.

지하철 노선도는 지리적 위치라는 불필요한(지도를 보는 사람에게) 정보를 제외하고,
역의 관계에만 집중한 추상화된 지도이다.
목적지에 가기 위해 노선도를 확인하는 사람들에게 적합한 지도를, 추상화를 통해 생성했다.

즉 객체들의 공통점 혹은 불필요한 정보를 제외한 알맹이 정보를 추상화하여 표현할 수 있다.

책의 예시로, 트럼프 카드로 된 하트 여왕, 국왕, 경비병, 정원사등은 모두 트럼프 카드로 추상화할 수 있다.
이들 모두 트럼프 카드의 특징(네모, 모서리 둥금)을 가지지만, 각각 객체를 설명하기보다 트럼프 카드로 묶는 것이다!

class TrumpCard {
	둥근 모서리,
    네모 모양,
    클로버, 하트, 다이아, 스페이드 타입을 가짐
}

이런 느낌으로 추상화를 하고, 객체는 상속을 받는다던지 할 수 있을 것 같다.

4장. 역할, 책임, 협력

이하는 기억에 남는 것들 위주로 정리하겠다.

1, 2장의 핵심 내용을 떠올려보자. 객체를 생성, 설계할 때 상태가 아닌 행동을 먼저 설계하자.
행동에 필요한 상태를 정의하면 되는 것이다.

행동은 왜 필요할까?
객체들의 책임을 다하기 위해서다. 바리스타는 손님에게 커피를 만들어줄 책임이 있고, 커피를 만드는 행동이 필요하다.

다시 한번, 책임은 왜 필요할까?
협력을 하기 위해서다. 객체지향 프로그래밍은 결국 객체들의 협력으로 이루어진다.
협력을 하기 위해 책임을 다해야 하고, 책임을 위해 행동이, 행동에 필요한 상태가 정의돼야한다.

즉, 어떤 협력이 필요한지 설계하는 것이 우선이다.

이 내용이 4장의 핵심 내용이라 생각하고, 스프링 개발 1달차인 나는 정확히 반대로 객체지향을 다뤄왔지 않나 싶다.

5장. 메세지

객체지향은 곧 협력

4장의 내용이 위와 같다.

그렇다면 어떻게 협력할까?
앞선 내용은 객체지향 프로그래밍에 대한 WHY라면, 이젠 HOW이다.

객체간의 협력을 위해, 객체는 서로 메세지를 통해 소통한다.
각 메세지에 대한 송신자, 수신자가 존재한다.
송신자는 최대한 추상화된(?) 메세지를 전달한다.
예를 들어, 캐셔는 바리스타에게

커피를 만들어줘

라고 메세지를 보내면, 어떤 방법으로 커피를 만들지는 바리스타의 자율이다.

이 자율이 굉장히 중요한 부분인데, 각 수신자(객체)는 자율성이 보장되어야하고
말인 즉, 송신자는 자율성을 보장하는 메세지를 보내야한다.

95도 뜨거운 물로 만든 커피 만들어줘

라고 한다면, 바리스타는 퇴사할지도 모른다.

결국 메세지라는 HOW를 통해 객체지향의 유명한 특성들이 설명된다.

다형성

메세지의 타입, 인자 개수 등에 따라 수신자가 Method를 선택한다!
(즉, 커피 만드는 방법은 바리스타가 선택한다.)

캡슐화

송신자는 수신자가 어떤 상태, 메서드를 가지고 있는지 알 수 없다.
(캐셔는 바리스타의 커피 제조 방법을 모르고, 그저 커피 제작 메세지를 보낼 뿐이다.)

마치며

출퇴근 시간을 이용해 책을 읽는 것이 쉽지 않다.
하루 1시간만 읽어도 1주일에 2장은 쉬울텐데!
좀 더 화이팅해보자!

++
책이 무겁지 않지만, 핵심 내용을 많이 담고 있다.
아는 만큼 보이는 책이라고 느껴져서 내가 많이 흡수를 못했을 수도 있다.
후에, 스프링과 더 친해지면 다시 읽어보자.

  
profile
개발 꿈나무

0개의 댓글