결합도

    오브젝트 10_ 상속과 코드 재사용

    상속과 코드 재사용에 대한 내용이다 자세한 내용이 궁금하면 오브젝트를 펼쳐보는 걸 추천드립니다.📖 오브젝트 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 www.yes24.com 상속과 중복 코드 중복 코드는 모두를 의심하게 만든다. 이것만으로 제거하기 충분한 이유지만 결정적이 이유는 따로 있다. DRY 원칙 중복 코드는 변경을 방해한다. 이게 중복 코드를 제거해야 하는 가장 큰 이유다. 중복 코드는 수정과 테스트에 드는 비용을 증가시키고 공황상태로 몰아넣을 수 있다. 중복 여부의 판단 기준은 변경이다. 변경이 생겼을 때 두 코드를 수정해야 한다면 중복이다. 함께 수정이 안..

    오브젝트 08_ 의존성 관리하기

    의존성 관리에 대한 내용이다 자세한 내용이 궁금하면 오브젝트를 펼쳐보는 걸 추천드립니다.📖 오브젝트 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 www.yes24.com 시작하면서 객체지향 설계란 의존성을 관리하는 것이고 객체가 변화를 받아들일 수 있게 의존성을 정리하는 기술이라고 할 수 있다 [Metz12] 의존성 이해하기 변경과 의존성 어떤 객체가 협력하기 위해 다른 객체를 필요로 할 때 두 객체 사이에 의존성이 생기며, 실행 시점과 구현 시점에 서로 다른 의미를 가진다. - 실행 시점 : 의존하는 객체가 동작하기 위해서 실행 시에 의존 객체가 있어야 한다. - 구현 ..

    오브젝트 05_ 책임 할당하기

    오브젝트 04_ 설계 품질과 트레이드오프에 언급된 데이터 중심 설계 문제점의 해결 방법인 책임 할당하기 내용으로 이전 시간에 언급된 주요 개념들이 자주 등장한다. 중간에 구현으로 검증하는 과정이 있지만 이전에 설명한 내용으로 생략한다. 자세한 내용이 궁금하면 오브젝트를 펼쳐보는 걸 추천드립니다.📖 오브젝트 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 www.yes24.com 책임 주도 설계를 향해 데이터보다 행동을 먼저 결정하라 객체는 외부에 제공하는 행동이 중요하다. 협력안에서 수행하는 책임이 객체의 존재가치를 증명한다. 데이터는 객체의 행동을 수행할 재료일 뿐이다. 재..

    오브젝트 04_ 설계 품질과 트레이드 오프

    설계 품질과 트레이드오프에 대한 내용이다. 자세한 내용이 궁금하면 오브젝트를 펼쳐보는 걸 추천드립니다.📖 오브젝트 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 www.yes24.com 객체지향 설계에서는 상태(데이터) 분할의 중심축과 책임 분할의 중심축 두 가지 방법으로 시스템을 객체로 분할할 수 있다. 상태 분할의 중심축은 절차지향 설계라 생각하면 되고, 책임 분할의 중심축은 객체지향 설계라 생각하면 된다. 좋은 설계의 기준으로 사용되는 캡슐화, 응집도, 결합도를 알아보자 캡슐화 객체의 내부 구현을 외부로부터 감추는 걸 캡슐화라 한다. 여기서 나중에 변경이 될 가능성이 ..

    오브젝트 01_ 객체, 설계

    객체, 설계에 대한 주제로 내용이다. 자세한 내용이 궁금하면 오브젝트를 펼쳐보는 걸 추천드립니다.📖 오브젝트 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 www.yes24.com 티켓 판매 어플리케이션 구현해보기 이벤트로 티켓권 소유하면 무료관람을 하는 작은 소극장을 구현하면 다음과 같다. public class Theater { private TicketSeller ticketSeller; public Theater(TicketSeller ticketSeller) { this.ticketSeller = ticketSeller; } public void enter(Audi..