2025/08 4

[객체지향의 사실과 오해] 7장 정리

객체지향 설계 안에 존재하는 3가지 상호 연관된 관점동일한 클래스를 세 가지 다른 방향에서 바라보는 것을 의미함1은 클래스, 2는 인터페이스, 3은 속성과 메서드를 반영한다.클래스는 세 관점을 모두 수용할 수 있도록 개념, 명세, 구현을 함께 드러내야 함동시에 코드 안에서 세 관점을 쉽게 식별할 수 있도록 깔끔하게 분리해야 함-> 세 관점을 나눠 설계하면 유지보수와 확장에 강한 코드를 만들 수 있음. 개념을 분명히 하는 건 당연하고, 인터페이스 중심으로 설계하면 구현이 바뀌어도 협력 관계가 유지되고 외부 코드가 바뀌지 않으므로 1. 개념 관점(Conceptual Perspective) :설계는 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현실제 도메인 규칙과 제약을 최대한 유사하게 반영하는 것이 ..

스터디 2025.08.31

[객체지향의 사실과 오해] 5장, 6장 정리

5장. 책임과 메시지5장을 한 문장으로 정리하면 ‘객체의 자율성이 협력의 품질을 결정한다’객체가 자율적으로 책임을 수행해야 협력이 단순해지고, 응집도가 올라가고, 캡슐화가 잘 된다. 결론적으로 설계의 확장성과 유연성, 재사용성이 향상된다. ‘객체가 자율적이다’ 어떤 요청을 받았을 때, 그 책임을 어떻게 수행할 건지에 대해서는 객체 본인이 판단한다는 의미.객체의 책임이 너무 구체적이면 객체의 자율성이 침해되고, 객체의 책임이 너무 추상적이면 객체가 해야 할 행동이 명확하지 않아진다.1. 객체가 너무 구체적인 책임을 지게 되어 자율성이 침해되는 경우Notification 객체에게 부여된 책임type을 판단하라판단된 type에 따라서 알림을 전송하라문제점?호출부의 문자열 타입에 오타가 있는 경우 런타임 에러 ..

스터디 2025.08.23

[객체지향의 사실과 오해] 3장, 4장 정리

3장. 타입과 추상화intro지하철 노선도를 실제 지리와 다르게 거리와 역 이름만 표현-> '정확성'을 버리고 '목적'에 집중. 꼭 알아야 하는 사실만 정확히 표현하고 몰라도 되는 정보는 무시한 것추상화를 통한 복잡성 극복추상화란?- 공통점은 취하고 차이점은 버려 단순하게 만듦- 불필요한 세부사항을 제거하여 중요한 부분을 강조 추상화의 목적?- 복잡성을 이해하기 쉬운 수준으로 단순화하는 것객체지향과 추상화1) 그룹으로 나누어 단순화하기앨리스는 외형+행동방식이 동일한 사람들을 '트럼프'라고 불렀다.그룹에 속한 객체가 단 하나뿐이라고 해도, 이렇게 그룹으로 나누어 단순화하면 내재된 복잡성을 효과적으로 감소시킬 수 있다.2) 개념(concept)개념이란 공통점을 기반으로 객체들을 여러 그룹으로 분류할 수 있는..

스터디 2025.08.16

[객체지향의 사실과 오해] 1장, 2장 정리

1장객체지향의 핵심은 '클래스'나 '상속'이 아닌 '자율적인 객체들 간의 협력'이다. 객체지향의 목표는 실세계를 소프트웨어로 끌고와서 모방하는 게 아니라, 고객이 원하는 요구사항을 새로운 세계로 만드는 것이다. 따라서 실세계의 모방이라는 개념은 설계/구현할 때는 부적합하다. 그래도 객체지향이라는 세계를 이해하고 사상을 학습하는 데는 효과적이므로, 이 관점으로 1장을 설명해보겠다. 손님, 캐시어, 바리스타 = 역할주문, 주문 접수, 제조 = 책임 특정 역할은 특정한 책임을 암시한다.역할 > 책임 (포함관계) 각 역할을 가진 객체들은 서로 협력해서 문제를 해결한다.협력 : 연쇄적인 요청과 연쇄적인 응답이 발생하고, 각 역할을 맡은 객체들이 요청을 성실히 이행하는 것 요청한 역할만 정확히 수행해준다면, 어떤..

스터디 2025.08.09