본문 바로가기

CS (Computer Science)/독후감 : 객체지향의 사실과 오해6

6일차(완독) - 객체지향 설계를 바라볼 관점의 추가 이 책을 통해 이후 객체지향 프로그래밍에 관련된 여러 갈래로 파생된 기법들, 방법론, 디자인 패턴 등을 접할때 바라볼 수 있는 관점을 하나 얻은 기분이다. '적절한 책임을 위한 적절한 객체들의 설계.' 읽고나서 처음 커피를 시키는 카페에서의 과정을 예시로 시작하여, 객체들의 협력으로 이루어져있는 설계, 협력을 위한 메시지 역할, 구현과 인터페이스의 구분 등을 거쳐 작은 시스템을 구성하는 흐름을 보여주기까지 7장에 걸쳐 나누어 설명하고 있다. 전체에 걸쳐 자주 반복되어 책을 덮은 지금에도 생각나는 구절은 아래와 같다. 객체의 상태보다 행동이 중요하다. 상태는 과거의 행동의 결과를 유추할 수 있게 해줄 뿐이다. 객체에 책임을 정하는 것이 아닌, 책임을 행할 적절한 객체를 고르는 것이다. 도메인 모델을 통해 .. 2023. 11. 21.
5일차(6장) - 기능을 담을 구조라는 재료 6장에서는 지도를 예시로 들며 시작한다. 구조를 바탕으로 시스템을 분할하는 객체지향의 또 다른 측면에 관해 설명하고 있다. 구조 성공적인 소프트웨어들이 지닌 공통적인 특징은 훌륭한 기능을 제공하는 동시에 사용자가 원하는 새로운 기능을 빠르고 안정적으로 추가할 수 있다는 것이다. 기능만 중요한 것이 아닌 안정적인 환경에 대한 중요성에 대해 다시 한번 생각하게 됐다. 게임개발도 최적화가 이루어지지 않으면 게임콘텐츠가 무색해질만큼 평가가 안좋아지는 것이 생각나는 구절. 도메인 모델이란 사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태다. 도메인 모델이라는 개념이 나온다. 현실 객체와 소프트웨어 객체와의 차이를 분명히 언급하면서도 이는 은유를 통해 근본적으로 쉽.. 2023. 11. 20.
4일차(5장) - 책임의 자율성이 객체지향 프로그래밍에 미치는 영향 5장을 읽은 직 후 책임, 협력, 자율성, 객체의 상태가 아닌 행동이 중요하다. 메시지가 먼저이고 그 다음 적절한 객체이다. 위와 같은 말들을 굉장히 집요할 정도로 반복하며 강조한다. 그만큼 객체지향을 바라보는 관점에서 중요한 부분인 듯 싶다. 객체라는 점이 아닌 객체를 잇는 화살표에 더 집중하라는 느낌. 인터페이스와 구현을 구분함으로써 각 객체들을 1장에서 출근길 카페의 주문과정에 비유한 이유를 더 알 듯 했다. 캐셔는 주문 프로그램을 이용해 주문을 받고 바리스타에게 또 다른 요청을 넘긴다. 캐셔는 바리스타에게 요청할 때 필요한 최소한의 정보만 알고 있어도 된다. 바리스타는 본인의 로스팅 기법을 본인의 기준에 맞게 적용해도 캐셔는 이를 상관하지 않고 관심도 갖지 않는다. 그리고 이러한 것들은 객체지향 .. 2023. 11. 18.
3일차(4장) - 협력을 위한 책임. 책임에 맞는 객체. 객체가 참여할 수 있는 역할. 최후통첩 실험 에피소드로 4장이 시작된다. 인간은 이기적이면서도 합리적인가에 대한 가설에 대한 실험. 하지만 인간은 단순한 계산만으로 움직이지 않고 놓여진 상황, 문맥에 맞게 행동한다. 이 문맥은 타인과의 협력을 맺는 과정. 돌고돌아 협력의 중요성을 강조한다. 확장해서 오만한 하나의 객체보다 서로 조화롭게 협력하는 설계를 훌륭한 객체지향의 설계라고 강조한다. 엘리스의 내용 중 재판을 하는 과정의 에피소드로 이후 내용을 이어간다. 재판이라는 하나의 프로세스에 등장하는 여러 등장인물들을 객체로 보았을 때, 각각의 객체간의 협력과 각 객체들의 책임, 그리고 그 역할로 객체들을 추상화한다. 엘리스의 이야기에서 누군가는 재판을 진행해야 하고 누군가는 증인을 증인석으로 불러야 하며 누군가는 증언해야 한다. 이처럼 .. 2023. 11. 17.
2일차 (3장) - 클래스와 객체의 관계. 클래스는 타입을 구현하는 방법 중 하나 3장의 전반부에서는 지하철 노선도의 예시로 추상화의 중요성에 대한 얘기를 시작했다. 중반부에서는 타입의 개념과 함께 비트열에서부터 출발해서 타입의 등장을 설명한다. 숫자의 값을 떠나서 어떤 데이터에 어떤 연산자를 사용할 수 있는 지가 그 데이터의 타입을 결정한다. 이는 얘기를 곧 객체의 행동의 중요성으로 연결짓는다. 객체의 상태는 단순히 행동의 결과로 초래된 부수효과를 쉽게 표현하기 위함을 반복하여 언급한다. 이 객체의 행동의 중요성은 또 다시 다형성으로 개념이 연결된다. 같은 타입의 객체는 행동만 동일하다면 서로 다른 데이터를 갖을 수 있다. 동일한 행동이란 동일한 책임, 이는 동일한 메시지 수신을 의미한다. 즉, 데이터 처리방식은 다르더라도 동일한 메시지를 수신하고 처리한다. 이 부분에서 이전 다형성.. 2023. 11. 15.
1일차 (1장, 2장) : 객체는 무엇인가. 현실과 닮은 듯 안 닮은 듯 1장. 협력하는 객체들의 공동체 1장 전체에 걸쳐 강조하는 큰 줄기가 있다. 객체지향이란 상호작용하는 자율적인 객체들의 공동체. 객체의 자율성, 협력, 책임, 메시지, 메소드. 이 모든것들을 출근길 많은 직원들의 커피주문에 빗대어 비유해주고 있다. 물론 실세계의 모방이 실제 객체의 개념과 약간의 간극이 있지만서도. 객체지향 설계라는 예술은 적절한 객체에게 적절한 책임을 할당하는 것에서 시작된다. 전지전능한 객체는 자멸한다. 적절한 책임. 이전에 자바를 처음 배울당시 한 팀원이 한 메소드에 여러 메소드의 기능을 한번에 담았던 기억이 났다. 한 메소드가 10줄이 넘어가지 않는게 좋다는 튜터님의 말. 이 모든것들이 생각났던 구절. 그리고 가장 기억에 남은 표현은 클래스가 아닌 객체에 집중하자 2장. 이상한 나.. 2023. 11. 14.