본문 바로가기
반응형
SMALL

전체 글65

chapter 9 리펙터링, 테스팅, 디버깅 람다 표현식으로 코드 리팩터링하기 람다 표현식이 객체지향 설계 패턴에 미치는 영향 람다 표현식 테스팅 람다 표현식과 스트림 API 사용 코드 디버깅 9.1 가독성과 유연성을 개선하는 리팩터링 람다, 메서드 참조, 스트림 등의 기능을 이용해 가독성을 높이고 유연한 코드로 리팩토링하는것을 설명. 9.1.1 코드 가독성 개선 익명 클래스를 람다 표현식으로 리팩토링 람다 표현식을 메서드 참조로 리팩토링 명령형 데이터 처리를 스트림으로 리팩토링 9.1.2 익명 클래스를 람다 표현식으로 리팩터링하기 하나의 추상 메서드를 구현하는 익명 클래스는 람다 표현식으로 리팩토링 할 수 있다. Runnable r1 = new Runnable() { // 익명 클래스를 사용한 이전 코드 @Override public void r.. 2023. 7. 30.
chapter 8 컬렉션 API 개선 8.1 컬렉션 팩토리 자바에서 적은 요소를 포함하는 리스트를 어떻게 만들까? 다음 방법은 세 문자열을 저장하는데도 많은 코드가 필요하다. List friends = new ArrayList(); friends.add("Raphael"); friends.add("Olivia"); friends.add("Thibaut"); 다음처럼 Arrays.asList() 팩토리 메서드를 이용해 코드를 줄일 수 있지만, 고정 크기의 리스트이기 때문에 요소를 추가하려하면 Unsupported OperationException이 발생한다. List friends = Arrays.asList("Raphael", "Olivia"); friends.set(0, "Rechard"); friends.add("Thibaut"); Un.. 2023. 7. 26.
03 역할,책임,협력 캡슐화의 측면에서 합성이 더 좋은 방법이다. 객체지향의 패러다임의 관점에서 핵심은 역할(role), 책임, 협력 이다. 객체지향의 본질은 협력하는 객체들의 공동체를 창조하는 것이다. 01 협력 영화 예매 시스템 돌아보기 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용을 협력이라고 한다. 객체가 협력에 참여하기 위해 수행하는 로직은 책임이라고 부른다. 객체들이 협력 안에서 수행하는 책임들이 모여 객체가 수행하는 역할을 구성한다. 협력 -> 협력은 객체지향의 세계에서 기능을 구현할 수 있는 유일한 방법이다. 메시지 전송은 객체 사이의 협력을 위해 사용할 수 있는 유일한 커뮤니케이션 수단이다. 메시지를 수신한 객체는 메서드를 실행해 요청에 응답한다. 객체가 메시지를 처리할 방법은 스스로 선택하며.. 2023. 7. 24.
chapter 7 병렬 데이터 처리와 성능 자바 7이 등장하기 전에는 데이터 컬렉션을 병렬로 처리하기 어려웠음. 다음과 같은 일련의 과정을 거쳐야 했음. 1) 데이터를 서브파트로 분할해야 한다. 2) 분할된 서브파트를 각각의 스레드로 할당한다. 3) 스레드로 할당한 다음에는 의도치 않은 레이스 컨디션(역자주_경쟁 상태)이 발생하지 않도록 적절한 동기화를 추가해야 한다. 4) 부분 결과를 합쳐야 한다. 자바 7은 더 쉽게 병렬화를 수행하면서 에러를 최소화할 수 있도록 포크/조인 프레임워크(fork/join framework) 기능을 제공한다. 이 장에서는 스트림으로 데이터 컬렉션 관련 동작을 얼마나 쉽게 병렬로 실행할 수 있는지 설명한다. 7.1 병렬 스트림 컬렉션에 parallelStream을 추출하면 병렬 스트림(parallel stream)이.. 2023. 7. 24.
02 객체지향 프로그래밍 01 영화 예매 시스템 시스템을 구현하기 위한 요구사항은 다음과 같다. 시간대 별로 영화를 예매한다. 요금할인은 할인 정책(discount policy)과 할인 조건(discount condition) 2가지다. 할인 정책은 금액과 비율로 나눠지고 할인 조건은 기간과 순서로 나눠진다. 02 객체지향 프로그래밍을 향해 진정한 객체지향 패러다임의 전환은 객체에 초점을 맞춰야 얻는다. 첫째, 어떤 객체들이 필요한지 고민한다. 객체 중심의 접근 방법은 설계를 단순하고 깔끔하게 만든다 둘째, 객체를 협력하는 공동체의 일원으로 봐야한다. 훌륭한 협력이 훌륭한 객체를 낳고 훌륭한 클래스를 낳는다. 도메인의 구조를 따르는 프로그램 구조 도메인(domain) 이란 문제를 해결하기 위해 사용자가 프로그램을 사용하는 분야를.. 2023. 7. 23.
01.객체, 설계 티켓 판매 애플리케이션 구현하기 이벤트에 당첨됀 관람객:초대장을 티켓으로 교환한 후에 입장 이벤트에 당첨돼지 않은 관람객:티켓을 구매해야만 입장 초대장이라는 개념을 구현한 Invitation은 공연을 관람할 수 있는 초대일자(when)를 인스턴스 변수로 포함하는 간단한 클래스이다. public class Invitation { private LocalDateTime when; } 공연을 관람하기 원하는 모든 사람들은 티켓을 소지하고 있어야만 한다. public class Ticket { private Long fee; public Long getFee(){ return fee; } } 관람객이 소지품을 보관할 Bag클래스를 추가하자 Bag 클래스는 초대장(ticket), 티켓(invitation), 현금.. 2023. 7. 23.
반응형
LIST