책
-
[객체지향의 사실과 오해] 0. 목차책/객체지향의 사실과 오해 2023. 1. 25. 01:31
1장 - 협력하는 객체들의 공동체 2장 - 이상한 나라의 객체 3장 - 타입과 추상화 4장 - 역할, 책임, 협력 5장 - 책임과 메시지 6장 - 객체 지도 7장 - 함께 모으기 + 부록 - 추상화 기법 객체지향 입문서로 유명한 책이다. 객체지향에 대해 따로 공부하지 않은 사람들, 자신의 설계와 코드가 객체지향적인지 판단이 서지 않는 사람들에게 강추한다. 일단 내가 그동안 작성한 코드들은 객체지향적으로 짠 코드가 아님을 확실히 알 수 있었다. 책에서는 역할, 책임, 협력, 메시지를 강조하지만, 나는 기능 완성하는데만 급급했으니.. 이 책을 지금이라도 읽은게 참 다행이라고 생각한다. 다른 책들보다는 이해하는데 오래 걸려서 시간이 걸리기도 하고, 블로그에 글을 쓸 때마다 여러 번 읽어야 해서 시간 효율이 극..
-
[객체지향의 사실과 오해] 7. 함께 모으기 ~ 부록 추상화기법책/객체지향의 사실과 오해 2023. 1. 25. 01:05
이번 장에서 설명하는 내용 인터페이스와 구현을 잘 분리해야 한다. 추상화는 복잡도를 줄이기 위해 다양한 방법을 사용한다. 1. 객체지향 설계 관점 객체지향을 설계할 때 3가지 관점으로 설계할 수 있다. 개념 관점 : 사용자가 도메인을 바라보는 관점을 반영. 실제 도메인의 규칙과 제약을 최대한 유사하게 반영함 명세 관점 : 객체가 협력을 위해 무엇을 하느냐에 초점을 맞춤. 인터페이스와 구현을 분리해서 설계함 구현 관점 : 개발자에게 가장 익숙한 관점으로 객체의 책임을 어떻게 어떻게 수행하느냐에 초점을 맞춤 좋은 설계란 한 클래스에서 개념 / 명세 / 구현 관점을 모두 볼 수 있어야 한다. 클래스가 은유하는 개념은 개념 관점, 공용 인터페이스는 명세 관점, 속성과 메서드는 구현 관점을 반영해야 한다. 2. ..
-
[객체지향의 사실과 오해] 6. 객체 지도책/객체지향의 사실과 오해 2023. 1. 23. 09:36
이번 장에서 설명하는 내용 도메인 모델이란 특정 목적에 필요한 지식을 선택적으로 단순화하고, 구조화한 형태이다. 유스케이스란 사용자와 시스템 간에 이뤄지는 상호작용의 흐름을 텍스트로 정리한 것이다. 도메인 모델과 유스케이스를 사용하여 설계를 한다면 유지보수하기 쉽고 유연한 객체지향 시스템이 된다. 1. 설계 좋은 설계란 미래의 변경을 예측하고 설계에 반영을 하는 것보단, 변경을 수용할 수 있는 설계를 만드는 것이다. 설계의 중요한 목표는 설계를 변경할 때의 시간을 낮추는 것이다. 전통적인 설계는 기능 중심 설계로 특정 기능을 작은 기능으로 나누는 방식이다. 이것은 작은 기능으로 나누어도 서로 밀접한 연관이 있기 때문에 기능이 변경될 경우 코드를 수정하는데 많은 시간을 소비해야한다. 하지만 객체지향적 설계..
-
[객체지향의 사실과 오해] 5. 책임과 메시지책/객체지향의 사실과 오해 2023. 1. 22. 18:51
이번 장에서 설명하는 내용 객체에게 자율성을 부여하면 좋은점 - 협력을 단순하게 만든다. - 외부와 내부를 명확하게 분리할 수 있다. - 협력의 대상을 다양하게 선택할 수 있는 유연성을 제공한다. 1. 자율적인 책임 객체지향을 구성하는 기본 단위는 객체이고, 객체는 스스로 정해진 원칙과 의지에 행동하는 자율적인 책임감을 가진다. 객체가 행동할 때는 다른 객체로부터 요청을 수신 받은 것이고, 이때 요청을 처리하기 위해 수행하는 행동을 책임이라고 한다. 요청을 송신한 객체는 수신 객체가 어떤 방법을 사용하든 책임만 완수할 수 있으면 아무런 터치를 하지 않는다. 자율적인 책임은 요청을 '어떻게' 수행하느냐가 아니라 '무엇을' 해야 하는가를 설명하는게 중요하다. 만약 내가 알고리즘 문제를 풀어야 한다면 어떻게 ..
-
[객체지향의 사실과 오해] 4. 역할, 책임, 협력책/객체지향의 사실과 오해 2023. 1. 13. 12:49
이번 장에서 설명하는 내용 어떤 협력에 참여하냐에 의해 객체에 필요한 행동을 결정하고, 필요한 행동이 객체의 상태를 결정한다. 객체를 설계하려면 협력부터 설계해야 한다. 객체지향 설계에서는 역할, 책임, 협력이 중요하고, 여기에서 책임 주도 설계, 디자인 패턴, 테스트 주도 개발이 나왔다. 1. 역할 개발자 정다빈은 요구사항 A를 만들기 위해 코드를 작성하고 있다고 가정해보자. 그러면 아래와 같은 상황이 발생한다. 1. 정다빈은 레노버 노트북 키보드에 손을 올려두고 타이핑을 한다. 2. 레노버 노트북 키보드는 입력된 값을 레노버 노트북에 전송한다. 3. 레노버 노트북는 모니터에 입력된 값을 표시한다. 여기서 정다빈, 레노버 노트북 키보드, 레노버 노트북, 모니터는 객체이다. 1장에서 말했듯이 각 객체는 ..
-
[객체지향의 사실과 오해] 3. 타입과 추상화책/객체지향의 사실과 오해 2023. 1. 12. 20:59
이번 장에서 설명하는 내용 추상화는 개념을 사용하여 단순화한다. 타입(개념)은 행동에 의해 결정된다. 분류, 일반화는 추상화를 위한 도구이다. 1. 객체지향과 추상화 추상화의 목적은 복잡성을 이해하기 쉬운 수준으로 단순화하는 것이라는 점을 생각할 수 있다. 그래서 추상화에서 중요한 점은 필요한 내용만 가지고 오면서, 공통점은 하나로 합치는 것이다. 현실 세계에서는 수 많은 객체들이 존재하지만, 이 객체들을 개별적인 단위로 취급해서 본다면 알아야할 내용이 너무나 많아진다. 예를 들어서 샤프심이 다 떨어진 샤프, 샤프심이 2개 들어간 샤프, 내부가 고장난 샤프, ... 이렇게 샤프 하나를 개별적인 단위로 취급하면 너무 복잡하다. 그래서 우리는 이런 샤프들을 하나의 샤프 그룹으로 생각하고, 더 나아가면 샤프와..
-
[객체지향의 사실과 오해] 2. 이상한 나라의 객체책/객체지향의 사실과 오해 2023. 1. 12. 15:31
이번 장에서 설명하는 내용 객체는 상태, 행동, 식별자를 가지고 있다. 행동이 상태를 결정한다. 1. 객체, 이상한 나라와 소프트웨어 나라 이상한 나라의 앨리스에서 앨리스는 음료를 마시면 키가 작아지고, 케이크를 먹으면 키가 커지게 된다. 여기서 앨리스의 키를 변화시키는 것은 앨리스의 행동이다. 즉, 앨리스의 상태를 결정하는 것은 행동이지만, 행동의 결과를 결정하는 것은 상태이다. 행동간의 순서도 중요하다. 만약 앨리스가 정원에 있는 문을 통과해야 하는데, 지금은 키가 커서 통과를 할 수 없는 상황이다. 앨리스가 문을 통과하려면 먼저 음료를 마시고 문을 통과해야한다. 반대로 문을 통과하고 음료를 마신다면 문을 통과하지 못한 상황에서 음료를 마셔 키가 작아지기만 한다. 따라서 행동의 순서가 결과에 영향을 ..
-
[객체지향의 사실과 오해] 1. 협력하는 객체들의 공동체책/객체지향의 사실과 오해 2023. 1. 11. 15:09
이번 장에서 설명하는 내용 객체지향에 대한 의미 바로잡기 객체지향에서 가장 중요한 점 1. 객체지향에 대한 의미를 재정립 많은 사람들이 객체지향은 실세계의 모방이라는 설명을 자주 한다. 하지만 이런 말은 객체지향의 철학적인 개념을 설명하는데 적합하지만, 객체지향 분석과 설계를 설명하는 실용적인 관점에서는 적합하지 않다. 객체지향의 목표는 실세계를 모방하는 것이 아니라, 고객과 사용자를 만족시킬 수 있는 새로운 세계를 창조하는 것이다. 객체지향이 실세계의 모방이라고 말하는 이유는 실세계에 대한 비유가 객체지향을 이해하고 학습하는데 효과적이기 때문이다. 아래 내용은 많은 사람들이 실세계를 비유하며 객체지향을 설명하는 내용이다. 이것은 실무적으로 부적합한 내용이지만, 객체지향을 설명하는데 효과적이다. 그래서 ..