코딩은 주댕이로/객체지향의 사실과 오해
-
Ch7. 함께 모으기코딩은 주댕이로/객체지향의 사실과 오해 2022. 4. 4. 20:34
마틴 파울러는 객체지향 설계 안에 존재하는 세 가지 상호 연관된 관점에 대해 설명한다. 개념 관점, 명세 관점, 구현 관점 개념 관점: 사용자가 도메인을 바라보는 관점을 반영한다. 실제 도메인의 규칙과 제약을 최대한 유사하게 반영하는 것이 핵심 명세 관점: 프로그래머는 객체가 협력을 위해 ‘무엇'을 할 수 있는가에 초점을 맞춘다. 구현 관점: 객체들이 책임을 수행하는 데 필요한 동작하는 코드를 작성하는 것. 책임을 ‘어떻게' 수행할 것인가에 초점 개념 관점, 명세 관점, 구현 관점은 동일한 클래스를 세 가지 다른 방향에서 바라보는 것을 의미한다. 클래스는 세 가지 관점을 모두 수용할 수 있도록 개념, 인터페이스, 구현을 함께 드러내야 한다. 동시에 코드 안에서 세 가지 관점을 쉽게 식별할 수 있도록 깔끔..
-
Ch6. 객체 지도코딩은 주댕이로/객체지향의 사실과 오해 2022. 3. 9. 01:08
유일하게 변하지 않는 것은 모든 것이 변한다는 사실뿐이다. 여행 중에 길을 모르면 지나가는 사람에게 묻는다. (길을 찾는 기능을 통해 해결) 지도를 보고 찾아간다. (길을 찾아주는 구체적 기능이 아닌 길을 찾을 수 있는 구조를 통해 해결) 여기까진 뭐지..? 했음 기능 설계 대 구조 설계 기능 측면의 설계는 제품이 사용자를 위해 무엇을 할 수 있는지에 초점을 맞춘다. 구조 측면의 설계는 제품의 형태가 어떠해야 하는지에 초점을 맞춘다. 성공적인 소프트웨어들이 지닌 공통적인 특징은 훌륭한 기능을 제공하는 동시에 사용자가 원하는 새로운 기능을 빠르고 안정적으로 추가할 수 있다는 것이다. 미래에 대비하는 가장 좋은 방법은 변경을 예측하는 것이 아니라 변경을 수용할 수 있는 선택의 여지를 설계에 마련해 놓는 것이..
-
Ch5. 책임과 메시지코딩은 주댕이로/객체지향의 사실과 오해 2022. 3. 9. 01:08
자율적인 책임 자율적인 객체란 스스로의 의지와 판단에 따라 각자 맡은 책임을 수행하는 객체 외부의 간섭을 받아선 안된다. 자신의 의지에 따라 증언할 수 있는 자유 객체가 책임을 자율적으로 수행하려면 책임이 자율적이어야 한다. → 책임이 자율적? 뭔소리? 자율적인 책임 증언하라 상세한 수준의 책임 목격했던 장면을 떠올려라 (난 기억력이 안좋아서 메모를 하는 타입인데..?) 시간의 순서대로 재구성하라 (순서를 편집할 수 없음) 말로 간결하게 표현하라 (난 말솜씨가 안좋아서 서류로 제출하고 싶은데?) → 자유의 범위를 지나치게 제한하고 있다. 증언이라는 책임을 수행하는데 왕의 명령에 지나치게 의존적이다. 너무 추상적인 책임 너무 구체적인 것도 문제지만 너무 추상적인 것 역시 문제다. ‘증언하라’가 아닌 ‘설명..
-
Ch3. 타입과 추상화코딩은 주댕이로/객체지향의 사실과 오해 2022. 3. 9. 01:07
추상화를 통한 복잡성 극복 이 추상화가 유용했던 이유는 승객들이 지하철을 바라보는 모델과 일치했기 때문 → 역의 위치가 중요한 것이 아니라 역와 역 사이의 연결이 중요하다고 생각함 추상화 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법이다. 복잡성을 다루기 위해 추상화는 두 차원에서 이뤄진다[Kramer 2007]. 첫 번째 차원은 구체적인 사물들 간의 공통점은 취하고 차이점은 버리는 일반화를 통해 단순하게 만드는 것이다. 두 번째 차원은 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거함으로써 단순하게 만드는 것이다. 객체지향과 추상화 ‘기껏해야 트럼프에 불과해' 모든 트럼프 객체를 ‘트럼프'로 일반화 하였음 사람들은 본능적으로 공통적인 특성을 기준으로 객체를 여러 그룹..
-
Ch2. 이상한 나라의 객체코딩은 주댕이로/객체지향의 사실과 오해 2022. 3. 9. 01:06
인간은 세상에 존재하는 다양한 객체를 식별하고 분류함으로써 세상을 이해한다. 아기랑 막대기 실험으로 증명됨ㅋㅋ 상태와 프로퍼티 모든 객체의 상태는 단순한 값과 객체이ㅡ 조합으로 표현할 수 있다. 상태를 구성하는 모든 특징을 통틀어 객체의 프로퍼티라고 한다. 객체의 프로퍼티는 단순한 값인 속성과 다른 객체를 가리키는 링크라는 두 가지 종류의 조합으로 표현할 수 있다. 상태 캡슐화 객체는 상태를 캡슐 안에 감춰둔 채 외부로 노출하지 않는다. 객체가 외부에 노출하는 것은 행동뿐이며, 외부에서 객체에 접근할 수 있는 유일한 방법 역시 행동뿐이다. 동등성(Equality)과 동일성(Identical) 행동이 상태를 결정한다 초보자들은 먼저 객체에 필요한 상태가 무엇인지를 결정하고 그 상태에 필요한 행동을 결정한다..