본문 바로가기
반응형
SMALL

전체 글65

chapter 10 상속과 코드 재사용 객체지향에서는 코드를 재사용하기 위해 '새로운'코드를 추가한다. 객체지향에서 코드는 일반적으로 클래스 안에 작성되기 때문에 객체지향에서 클래스를 재사용하는 전통적인 방법은 새로운 클래스를 추가하는 것이다. 클래스를 재사용하기 위해 새로운 클래스를 추가하는 가장 대표적인 기법인 상속에 관해 살펴보기로 한다. 객체지향에서는 상속 외에도 코드를 효과적으로 재사용할 수 있는 방법이 한 가지 더 있다. 새로운 클래스의 인스턴스 안에 기본 클래스의 인스턴스를 포함시키는 방법으로 흔히 합성이라고 부른다. 01 상속과 중복 코드 DRY 원칙 중복 코드는 변경을 방해한다. 이것이 중복 코드를 제거해아 하는 가장 큰 이유다. 중복 코드가 가지는 가장 큰 문제는 코드를 수정하는 데 필요한 노력을 몇 배로 증가시킨다는 것이다.. 2023. 9. 12.
01. JPA 소개 * 객체와 관계형 데이터베이스 간의 차이를 중간에서 해결해주는 ORM 프레임워크 * JPA를 사용해서 얻은 가장 큰 성과는 애플리케이션을 SQL이 아닌 객체 중심으로 개발하니 생산성과 유지보수가 확연히 좋아졌고 테스트를 작성하기도 편리해졌다. 1.1 SQL을 직접 다룰 때 발생하는 문제점 1.1.1 반복, 반복 그리고 반복 객체를 데이터베이스에 CRUD하려면 너무 많은 SQL과 JDBC API를 코드로 작성해야 한다. 그리고 테이블마다 이런 비슷한 일을 반복해야 한다. 개발하려는 애플리케이션에서 사용하는 데이터베이스 테이블이 100개라면 무수히 많은 SQL을 작성해야 하고 비슷한 일을 100번은 더 반복해야 한다. 1.1.2 SQL에 의존적인 개발 * 진정한 의미의 계층 분할이 어렵다. * 엔티티를 신뢰.. 2023. 9. 10.
chapter 15 CompletableFuture와 리액티브 프로그래밍 컨셉의 기초 이 장의 내용 Thread, Future, 자바가 풍부한 동시성 API를 제공하도록 강요하는 진화의 힘 비동기 API 동시 컴퓨팅의 박스와 채널 뷰 CompletableFuture 콤비네이터로 박스를 동적으로 연결 리액티브 프로그래밍용 자바 9 플로 API의 기초를 이루는 발행 구독 프로토콜 리액티브 프로그래밍과 리액티브 시스템 15.1 동시성을 구현하는 자바 지원의 진화 Runnable, Thread → ExecutorService, Callable, Future, 제네릭 → RecursiveTask → 람다 → 분산 비동기 프로그래밍 15.1.1 스레드와 높은 수준의 추상화 프로세스는 다시 운영체제에 한 개 이상의 스레드 즉, 본인이 가진 프로세스와 같은 주소 공간을 공유하는 프로세스를 요청함으로 태.. 2023. 9. 6.
09 유연한 설계 01 개방-폐쇄 원칙 개방-폐쇄 원칙은 다음과 같은 문장으로 요약할 수 있다. 소프트웨어 개체(클래스,모듈,함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다. 여기서 키워드는 '확장'과 '수정'이다. 이 둘은 순서대로 애플리케이션의 '동작'과 '코드'의 관점을 반영한다. * 확장에 대해 열려 있다. 애플리케이션의 요구사항이 변경될 때 이 변경에 맞게 새로운 '동작'을 추가해서 애플리케이션의 기능을 확장할 수 있다. * 수정에 대해 닫혀 있다. 기존의 '코드'를 수정하지 않고도 애플리케이션의 동작을 추가하거나 변경할 수 있다. 개방-폐쇄 원칙은 유연한 설계란 기존의 코드를 수정하지 않고도 애플리케이션의 동작을 확장할 수 있는 설계라고 이야기한다. 컴파일타임 의존성을 고정시키고.. 2023. 9. 4.
chapter 14. 자바 모듈 시스템 모던 자바 인 액션 14장에서는 자바 모듈 시스템에 대해 소개하고 있다. 자바 모듈 시스템이 무엇이며, 어디에 사용되는지, 이를 통해 어떤 이점이 있는지 알아본다. 자바 9에서 가장 많이 거론되는 새로운 기능은 모듈 시스템이다. 모듈 시스템은 완성까지 십년이 걸렸으며 그만큼 중요하고 구현하기 어려운 기능이다. 14.1 입력 : 소프트웨어 유추 소프트웨어를 만드는 데 도움을 주는 관심사분리와 정보 은닉을 살펴본다. 14.1.1 관심사분리 관심사분리는 프로그램을 고유의 기능으로 나누는 동작을 권장하는 원칙이다. 서로 겹치지 않는 코드 그룹으로 분리할 수 있고 그룹화한 모듈을 이용해 클래스 간의 관계를 시각적으로 확인할 수 있다. SoC 원칙은 다음과 같은 장점들이 있다. 아키텍처 관점, 복구 기법을 비즈니스.. 2023. 8. 31.
08 의존성 관리하기 잘 설계된 객체지향 애플리케이션은 작고 응집도 높은 객체들로 구성된다. 작고 응집도 높은 객체란 책임의 초점이 명확하고 한 가지 일만 잘 하는 객체를 의미한다. 01. 의존성 이해하기 변경과 의존성 어떤 객체가 협력하기 위해 다른 객체를 필요로 할 때 두 객체 사이에 의존성이 존재하게 된다. 의존성은 실행 시점과 구현 시점에 서로 다른 의미를 가진다. * 실행 시점: 의존하는 객체가 정상적으로 동작하기 위해서는 실행 시에 의존 대상 객체가 반드시 존재해야 한다. * 구현 시점: 의존 대상 객체가 변경될 경우 의존하는 객체도 함께 변경된다. 영화 예매 시스템의 PeriodCondition 클래스를 이용해 의존성의 개념을 설명하기로 한다. PeriodCondition 클래스의 isSatisfiedBy 메서드.. 2023. 8. 28.
반응형
LIST