본문 바로가기
반응형
SMALL

전체 글65

chaper 2.동적 파라미터화 코드 전달하기 1. 동작 파라미터화란 동작 파라미터화란, 어떻게 실행할지 결정하지 않은 코드 블록을 의미한다. 이 코드블록은 나중에 호출되어 사용되어질 때, 실행됀다. 자주 바뀌는 요구사항에 효과적으로 대응할 수 있음을 의미한다. 나중에 실행될 메서드의 인수로 코드블록을 전달할 수 있고, 결과적으로 코드블록에 메서드의 동작이 파라미터화 되어 전달된다. 2.변화하는 요구사항에 대응 요구사항 기존의 농장 재고목록 어플리케이션에 리스트에서 녹색(green) 사과만 필터링하는 기능을 추가 2.1.1 첫 번째 시도:녹색 사과 필터링 public static List filterGreenApples(List inventory){ List result = new ArrayList(); // 사과 누적 리스트 for(Apple ap.. 2023. 7. 21.
chapter 1. 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가? 1.1 역사의 흐름은 무엇인가? 자바 역사를 통틀어 가장 큰 변화가 자바 8에서 일어났다. 예를 들어 사과 목록을 무게순으로 정렬하는 고전적 코드를 자바 8에서는 다음과 같이 작성할 수 있다. // 고전적인 코드 Collections.sort(inventory, new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); } }); // Java 8 inventory.sort(comparing(Apple::getWeight)); 자바 8을 이용하면 자연어에 더 가깝게 간단한 방식으로 코드를 구현할 수 있다. 멀티코어 CPU 대중화와 같은 하드웨어직인 변화도 자바 8에 영향.. 2023. 7. 21.
부록 추상화 기법 도메인에 존재하는 개념들을 구조화하고 단순화하기 위해 다양한 추상화 기법을 사용할 수 있다. 주요 추상화 기법의 종류들 분류와 인스턴스화 일반화와 특수화 집합과 분해 분류와 인스턴스화 개념과 범주 도로 위를 달리는 작은 승용차와 버스, 트럭들을 가리켜 ‘자동차’라고 하며, 길거리에 자라고 있는 다양한 종류의 가로수들을 일컬어 ‘나무’라고 할 수 있다. 개별 자동차와 나무는 완전히 동일하지 않지만 유사한 특성을 바탕으로 각각 ‘자동차’와 ‘나무’로 분류할 수 있다. 이처럼 객체를 분류하고 범주로 묶는 것은 객체들의 특정 집합에 공통의 개념을 적용하는 것을 의미한다. 자동차 - 바퀴를 이용해 사람들을 한 장소에서 다른 장소로 운반하는 운송수단 (이라는 특징) 나무 - 푸른 잎과 갈색의 줄기를 가.. 2023. 7. 21.
07 / 함께 모으기 개념 관점 설계는 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현한다. 사용자가 도메인을 바라보는 관점을 반영한다. 실제 도메인의 규칙과 제약을 최대한 유사하게 반영하는 것이 핵심이다. 명세 관점 객체의 인터페이스를 바라보게 된다. = 실제로 소프트웨어 안에서 살아 숨쉬는 객체들의 책임에 초점을 맞추게 된다. 프로그래머는 객체가 협력을 위해 ‘무엇’을 할 수 있는가에 초점을 맞춘다. “구현이 아니라 인터페이스에 대해 프로그래밍하라”를 따르는 것은 명세 관점과 구현 관점을 명확하게 분리하는 것에서부터 시작된다. 구현 관점(Implementation Perspective) 실제 작업을 수행하는 코드와 연관되어 있다. 객체들이 책임을 수행하는 데 필요한 동작하는 코드를 작성하는 것에 초점을 맞춘다. 프.. 2023. 7. 21.
06 / 객체 지도 객체 지도 길을 직접 알려주는 방법 vs 지도를 이용하는 방법 길을 직접 알려주는 방법 기능적이고 해결 방법 지향적인 접근법 길을 찾는데 필요한 구체적인 기능을 제공한다. 현재의 요구만을 만족시킬 수 있다. 지도를 이용하는 방법 구조적이고 문제 지향적인 접근법 길을 찾는데 필요한 구조를 제공한다. 다양한 목적을 위해 재사용될 수 있다.(범용적) 지도를 제작한 사람들이 지도를 만들 때는 지도를 사용할 사람이 구체적으로 어떤 목적으로 사용할지 알지 못한다. 기능에 대한 요구사항이 계속 변함에도 지도는 모든 요구사항을 수용할 수 있다. 기능에 비해 상대적으로 잘 변하지 않는 안정적인 지형 정보를 기반으로 하고 있기 때문이다. 기능이 아니라 구조를 기반으로 모델을 구축하는 편이 좀 더 범용적이고 이해하기 쉬우며.. 2023. 7. 21.
05 / 책임과 메시지 의도는 "메시징"이다. 훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가보다는 모듈이 어떻게 커뮤니케이션하는가에 달려 있다. 휼륭한 객체지향의 세계는 명확하게 정의된 역할과 책임을 지닌 객체들이 상호 협력하는 세계다. 자율적인 책임 자율적인 객체란 스스로 정한 원칙에 따라 판단하고 스스로의 의지를 기반으로 행동하는 객체 객체가 어떤 행동을 하는 유일한 이유는 다른 객체로부터 요청을 수신(메시지)했기 때문이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라고 한다. 결국 객체지향 설계는 적절한 책임을 적절한 객체에게 할당하는 과정으로 이루어진다. 객체가 자율적이기 위해서는 객체에게 할당되는 책임의 수준 역시 자율적이어야 한다. 하지만 그렇다고 책임이 너무 추상적이면.. 2023. 7. 21.
반응형
LIST