반응형 SMALL 그룹 스터디 공부(IT 서적)52 chapter 14. 자바 모듈 시스템 모던 자바 인 액션 14장에서는 자바 모듈 시스템에 대해 소개하고 있다. 자바 모듈 시스템이 무엇이며, 어디에 사용되는지, 이를 통해 어떤 이점이 있는지 알아본다. 자바 9에서 가장 많이 거론되는 새로운 기능은 모듈 시스템이다. 모듈 시스템은 완성까지 십년이 걸렸으며 그만큼 중요하고 구현하기 어려운 기능이다. 14.1 입력 : 소프트웨어 유추 소프트웨어를 만드는 데 도움을 주는 관심사분리와 정보 은닉을 살펴본다. 14.1.1 관심사분리 관심사분리는 프로그램을 고유의 기능으로 나누는 동작을 권장하는 원칙이다. 서로 겹치지 않는 코드 그룹으로 분리할 수 있고 그룹화한 모듈을 이용해 클래스 간의 관계를 시각적으로 확인할 수 있다. SoC 원칙은 다음과 같은 장점들이 있다. 아키텍처 관점, 복구 기법을 비즈니스.. 2023. 8. 31. 08 의존성 관리하기 잘 설계된 객체지향 애플리케이션은 작고 응집도 높은 객체들로 구성된다. 작고 응집도 높은 객체란 책임의 초점이 명확하고 한 가지 일만 잘 하는 객체를 의미한다. 01. 의존성 이해하기 변경과 의존성 어떤 객체가 협력하기 위해 다른 객체를 필요로 할 때 두 객체 사이에 의존성이 존재하게 된다. 의존성은 실행 시점과 구현 시점에 서로 다른 의미를 가진다. * 실행 시점: 의존하는 객체가 정상적으로 동작하기 위해서는 실행 시에 의존 대상 객체가 반드시 존재해야 한다. * 구현 시점: 의존 대상 객체가 변경될 경우 의존하는 객체도 함께 변경된다. 영화 예매 시스템의 PeriodCondition 클래스를 이용해 의존성의 개념을 설명하기로 한다. PeriodCondition 클래스의 isSatisfiedBy 메서드.. 2023. 8. 28. chapter 13 디폴트 자바 8이전에 자바에서는 인터페이스를 구현하는 클래스는 인터페이스에서 정의하는 모든 메서드를 구현하여 제공하거나 슈퍼클래스의 구현을 상속받아야 한다. 그런데 인터페이스에 새로운 메서드를 추가하는 경우가 있으면 해당 인터페이스를 구현했던 모든 클래스의 구현을 고쳐야 한다. 자바8 API에서 List 인터페이스에 sort같은 메서드를 추가했기 때문에 문제가 발생할 수 있다. 자바 8에서 기본 구현을 포함하는 인터페이스를 정의하는 두 가지 방법을 제공하는데 첫 번째, 인터페이스 내부에 정적 메서드를 사용하는 것 두 번째, 인터페이스의 기본 구현을 제공할 수 있도록 디폴트 메서드 기능을 사용하는 것 기존 인터페이스를 구현하는 클래스는 자동으로 인터페이스에 추가된 새로운 메서드의 디폴트 메서드를 상속받게 된다. .. 2023. 8. 25. chapter 12 새로운 날짜와 시간 API 자바 8 이전의 날짜와 시간 API의 문제들 Date 클래스는 직관적이지 못하며 자체적으로 시간대 정보를 알고 있지 않다 Date를 deprecated 시키고 등장한 Calendar 클래스 또한 쉽게 에러를 일으키는 설계 문제를 갖고 있다 Date와 Calendar 두 가지 클래스가 등장하면서 개발자들에게 혼란만 가중되었다. 날짜와 시간을 파싱하는데 등장한 DateFormat은 Date에만 지원되었으며, 스레드에 안전하지 못했다. Date와 Calendar는 모두 가변 클래스이므로 유지보수가 아주 어렵다. 12.1 LocalDate, LocalTime, Instant, Duration, Period 클래스 java.time 패키지는 LocalDate, LocalTime, LocalDateTime, Ins.. 2023. 8. 24. 07 객체 분해 * 장기 기억: 경험한 내용을 수개월에서 길게는 평생에 걸쳐 보관하는 저장소를 의미한다. * 단기 기억: 보관돼 있는 지식에 직접 접근할 수 있지만 정보를 보관할 수 있는 속도와 공간적인 측면 모두에서 제약을 받는다. * 인지 과부화: 문제 해결에 필요한 요소의 수가 단기 기억의 용량을 초과하는 순간 문제 해결 능력은 급격하게 떨어지고 만다. * 인지 과부하 방지 : 단기 기억 안에 보관할 정보의 양을 조절하는 것 * 인류가 복잡한 분야(소프트웨어 개발 영역)의 문제를 해결하기 위해 사용한 것 * 추상화 : 불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남기는 작업. 즉, 한 번에 다뤄야 하는 문제의 크기를 줄이는 것 -> 한 번에 단기 기억에 담을 수 있는 추상화의 수에는 한계가 있지만 추.. 2023. 8. 21. 06 메시지와 인터페이스 훌륭한 객체지향을 위해서는 클래스가 아닌 객체를 지향해야 한다. 협력 안에서 객체가 수행하는 책임에 초점을 맞춰야 한다. 책임은 객체가 수신할 수 있는 메시지의 기반이 된다. 객체지향 애플리케이션의 가장 중요한 재료는 객체들이 주고받는 메시지다. 매시지들이 객체의 퍼블리 인터페이스를 구성한다. 1. 협력과 메시지 클라이언트-서버 모델 클라이언트: 메시지를 전송하는 객체 Screening은 '가격을 계산하라' 메시지를 전송함으로써 도움 요청 Movie는 '할인 요금을 계산하라' 메시지를 전송함으로써 도움 요청 서버: 메시지를 수신하는 객체 Movie는 가격을 계산하는 서비스를 제공함으로써 메시지에 응답 DiscountPolicy는 할인 요금을 계산하는 서비스를 제공함으로써 메시지에 응답 협력: 클라이언트가.. 2023. 8. 18. 이전 1 2 3 4 5 6 7 ··· 9 다음 반응형 LIST