작지만 꾸준한 반복

객체지향의 사실과 오해를 읽고 본문

카테고리 없음

객체지향의 사실과 오해를 읽고

iamjooon2 2023. 4. 7. 22:39

 

 

처음 우테코 자동차 미션을 시작할 때, 역할, 책임 협력... 다른 크루들이 하는 말을 정말 하나도 이해하지 못했다.

급하게 오브젝트를 구매했는데, 책 두께를 보니 막막해서... 객체지향의 사실과 오해를 구매했다.

레벨 1 도중 허겁지겁 키워드 위주로 머리에 쑤셔넣은채로 읽어서, 레벨 2 시작전 여유롭게 정독해보았다

조금은 추상적일 수도 있는 내용이었지만 이상한 나라의 앨리스, 커피공화국, 영화관의 예제들과

우아한테크코스 미션에 대입해보는 과정에서 "아~ 이게 그 뜻이었구나" 라고 뒤늦게 이해되는 것들이 많았다.

 

읽을 때 마다 새로운 책이지 않을까 싶다

 

밑줄 친 문장들

 

객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다.

 

객체지향에서는 데이터와 프로세스를 객체라는 하나의 틀 안에 묶어놓음으로써 객체의 자율성을 보장한다. 자율적인 객체로 구성된 공동체는 유지보수가 쉽고 재사용이 용이한 시스템을 구축할 수 있는 가능성을 제시한다.

 

객체지향에서 중요한 것은 동적으로 변하는 객체의 ‘상태’와 상태를 변경하는 ‘행위’다. 클래스는 타입을 구현하기 위해 프로그래밍 언어에서 제공하는 구현 메커니즘이라는 사실을 기억하라

 

객체가 가져야 하는 상태와 행위에 대해 고민하기 전에 그 객체가 참여할 문맥인 협력을 정의하라.

 

객체지향 시스템은 역할과 책임을 수행하는 자율적인 객체들의 공동체이다.

 

클래스의 구조와 메서드가 아니라 객체의 역할, 책임, 협력에 집중하라. 객체지향은 객체를 지향하는 것이지 클래스를 지향하는 것이 아니다.

 

책임 주도 설계의 핵심은 어떤 행위가 필요한지를 먼저 결정한 후에 이 행위를 수행할 객체를 결정하는 것이다. 이 과정을 흔히 What/Who 사이클이라고 한다. '어떤 행위(What)'를 수행할 것인지 결정한 후 '누가(who)' 그 행위를 수행할 것인지 결정해야 한다. 여기서 ‘어떤 행위’가 바로 메시지다.

 

 

용어정리

 

객체 : 명확한 경계를 가지고 서로 구별할 수 있는 구체적인 사람이나 사물

협력 : 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용

책임 : 객체가 협력에 참여하기 위해 수행하는 로직, 객체에 의해 정의되어있는 응집도 있는 행위의 집합.

역할 : 객체들이 협력 안에서 수행하는 책임들이 모여 객체가 수행하는 것.

메시지 : 객체가 다른 객체에게 협력하기 위해 사용할 수 있는 유일한 의사소통 수단.

메서드 : 메시지를 처리하기 위해 내부적으로 선택하는 방법

인터페이스 : 객체가 다른 객체와 협력하기 위한 접점. 객체의 외부.

구현 : 객체 내부의 구조와 작동 방식.

도메인 : 사용자가 프로그램을 사용하는 대상 분야.

도메인 모델 : 사용자가 프로그램을 사용하는 대상.