반응형 SMALL 분류 전체보기65 05 책임 할당하기_02 다형성을 통해 분리하기 할인 가능 여부를 반환해 주기만 하면 Movie는 객체가 sequenceCondition의 인스턴스인지, periodCondition의 인스턴스인지는 상관하지 않는다. 이 시점이 되면 자연스럽게 역할의 개념이 무대 위로 등장한다. Movie의 입장에서 sequenceCondition과 periodCondition이 동일한 책임을 수행한다는 것은 동일한 역할을 수행한다는 것을 의미한다. 역할을 사용하면 객체의 구체적인 타입을 추상화할 수 있다. 자바에서는 일반적으로 역할을 구현하기 위해 추상 클래스나 인터페이스를 사용한다. 역할을 대체할 클래스들 사이에서 구현을 공유해야 할 필요가 있다면 추상 클래스를 사용하면 된다. 구현을 공유할 필요 없이 역할을 대체하는 객체들의 책임만 정의하고.. 2023. 8. 9. 05 책임 할당하기_01 데이터 중심 설게로 인해 발생하는 문제점을 해결할 수 있는 가장 기본적인 방법은 데이터가 아닌 책임에 초점을 맞추는 것이다. 책임에 초점을 맞춰서 설계할 때 직면하는 가장 큰 어려움은 어떤 객체에게 어떤 책임을 할당할지를 결정하기가 쉽지 않다는 것이다. GRASP 패턴을 이해하고 나면 응집도와 결합도, 캡슐화 같은 다양한 기준에 따라 책임을 할당하고 결과를 트레이오프할 수 있는 기준을 배우게 될 것이다. 01 책임 주도 설계를 향해 데이터 중심의 설계에서 책임 중심의 설계로 전환하기 위해서는 다음의 두 가지 원칙을 따라야 한다. 1) 데이터보다 행동을 먼저 결정해라 2) 협력이라는 문맥 안에서 책임을 결정해라 데이터보다 행동을 먼저 결정하라 객체를 설계하기 위한 질문의 순서를 바꿔라 데이터 중심의 설계에.. 2023. 8. 7. [JAVA] 백준 1991 번 트리 순회 JAVA 백준 1991번 트리 순회 트리 순회 문제 링크 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오. 예를 들어 위와 같은 이진 트리가 입력되면, 전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식) 중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (.. 2023. 8. 4. 08 프록시와 연관관계 관리 1) 프록시와 즉시로딩, 지연로딩: 객체가 데이터베이스에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 연관된 객체를 마음껏 탐색하기는 어렵다. 프록시를 사용하면 연관된 객체를 처음부터 데이터베이스에서 조회하는 것이 아니라, 실제 사용하는 시점에 데이터베이스에서 조회할 수 있다. 자주 함께 사용하는 객체들은 조인을 사용해서 함께 조회하는 것이 효과적이다. JPA는 즉시 로딩과 지연 로딩이라는 방법으로 둘을 모두 지원한다. 2) 영속성 전이와 고아 객체: JPA는 연관된 객체를 함께 저장하거나 함께 삭제할 수 있는 영속성 전이와 고아 객체 제거라는 편리한 기능을 제공한다. 8.1 프록시 엔티티를 조회할 때 연.. 2023. 8. 3. 실전 예제 4. 상속 관계 매핑 요구사항 1) 상품의 종류는 음반, 도서, 영화가 있고 이후 더 확장될 수 있다. 2) 모든 데이터는 등록일과 수정일이 있어야 한다. 상속 관계 매핑 상품 클래스를 jpabook.model.entity.item이라는 패키지로 이동했다. 이 패키지에는 상품과 상품의 자식 클래스들을 모아두었다. 그리고 상품 클래스는 직접 생성해서 사용하지 않으므로 abstract를 추가해서 추상 클래스로 만들었다. 부모 엔티티 상품(ITEM) @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) // 1번 @DiscriminatorColumn(name="DTYPE") // 2번 public abstract class Item { @Id @GeneratedValue @.. 2023. 8. 2. 04 설계 품질과 트레이드 오프 객체지향 설계의 핵심은 역할, 책임, 협력이다. 협력: 애플리케이션의 기능을 구현하기 위해 메시지를 주고받는 객체들 사이의 상호작용이다. 책임: 객체가 다른 객체와 협력하기 위해 수행하는 행동 역할: 대체 가능한 책임의 집합이다. 이 중에서도 가장 중요한 것이 '책임'이다. 책임은 객체지향 애플리케이션의 품질을 결정한다. 객체지향 설계란 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 것이다. 즉, 객체지향 설계의 핵심이 책임이고 책임을 할당하는 과정이 응집도, 결합도와 연관되어있다. 설계라는 것은 변경을 위해 존재하고 변경 시에는 반드시 비용이 발생한다. 훌륭한 설계란 적절한 비용 안에서 쉽게 변경할 수 있는 응집도가 높고 서로 느슨하게 결합된 요소로 구성된 .. 2023. 7. 31. 이전 1 ··· 4 5 6 7 8 9 10 11 다음 반응형 LIST