구성 (Composition)이란? 구성(Composition)은 객체 지향에서 전체(Whole)와 부분(Part) 간의 관계 중 가장 엄격한 형태의 연관(Association)입니다. 강한 소유: 전체 객체(A)가 부분 객체(B)의 생성 및 생존을 전적으로 책임집니다.생명 주기 종속: 전체 객체가 파괴되거나 소멸되면, 부분 객체도 반드시 함께 소멸되어야 합니다.존재 의미: 부분 객체는 전체 객체 없이는 독립적으로 존재할 의미가 없습니다.핵심: 구성 관계는 "has-a" 관계 중에서도 "부분 없이는 전체가 성립할 수 없다"는 강력한 제약 조건을 내포합니다.(예: 집과 방, 자동차와 엔진) // Engine 클래스: Car 없이는 존재 의미가 없는 부분 객체public class Engine { pr..
의존 (Dependency)이란? 의존(Dependency)은 UML에서 클래스 간의 가장 약한 형태의 관계를 나타냅니다.정의: 한 클래스(A)가 다른 클래스(B)의 변경에 영향을 받는 관계입니다. 클래스 A는 클래스 B를 일시적으로 사용합니다.핵심: 의존 관계는 일시적인 사용을 의미하며, 연관/집합 관계처럼 지속적인 연결이나 소유를 나타내지 않습니다.// Logger 클래스: 사용되는 객체 (의존성 대상)public class Logger { public void log(String message) { System.out.println("[LOG] " + message); }}// OrderProcessor 클래스: Logger 클래스에 의존함public class OrderPr..
구현(Implementation)은 특히 인터페이스(Interface)와 이를 따르는 클래스의 관계를 나타낼 때 사용됩니다.이 관계를 실체화(Realization)라고 부릅니다. // Printable 인터페이스: '출력 기능'에 대한 규약을 정의public interface Printable { // 이 메서드는 구현하는 모든 클래스가 반드시 제공해야 함 void print(String document); // 이 메서드는 구현하는 모든 클래스가 반드시 제공해야 함 void checkTonerLevel();}// LaserPrinter 클래스는 Printable 인터페이스의 규약을 이행(구현)합니다.public class LaserPrinter implements P..
상속은 한 클래스(자식 클래스 또는 서브 클래스)가 다른 클래스(부모 클래스 또는 슈퍼 클래스)의 특성(속성)과 행위(메서드)를 물려받아 재사용하는 관계입니다.일반화(Generalization): 부모 클래스는 더 일반적인(General) 개념을 나타냅니다.// 부모 (슈퍼/일반화) 클래스public class Animal { public void eat() { System.out.println("동물이 먹습니다."); }}// 자식 (서브/특수화) 클래스 - Animal의 모든 것을 물려받음public class Dog extends Animal { public void bark() { System.out.println("개가 짖습니다."); }}
연관(Association)이란?연관(Association)은 UML(통합 모델링 언어)에서 클래스 또는 객체들이 서로 관련되어 있거나 연결되어 있음을 나타내는 가장 일반적인 관계입니다. 쉽게 말해, 한 클래스가 다른 클래스의 존재를 알고 그 클래스의 기능을 사용하는 관계를 의미합니다.핵심 특징구현 방법: Java 같은 객체 지향 언어에서는 주로 멤버 변수(필드)를 사용하여 구현됩니다.한 클래스가 다른 클래스의 객체를 참조하는 형태로 연결됩니다.생명 주기: 연관 관계에 있는 두 객체는 일반적으로 독립적인 생명 주기를 가집니다.한 객체가 파괴되어도 다른 객체는 계속 존재할 수 있습니다. (이는 구성/합성 관계와의 주요 차이점입니다.)역할: 각 클래스는 연관 관계 내에서 어떤 역할을 수행하는지 이름(Role..
MapStruct + Factory 메서드 패턴 결합"프로젝트 구조(Controller-Service-Repository 기반)”를 기준으로 Java/Spring 생태계에서 가장 생산적이면서 유지보수가 뛰어난 방식입니다.MapStruct : 엔티티 → VO 변환을 자동화Factory 메서드 : 상황별 생성 규칙을 중앙 집중화Record or Immutable VO : 데이터 변경 불가로 안정성 확보💻 Sample Code(도메인 예시: 상품(Product))1️⃣ Entitypackage com.example.domain;import jakarta.persistence.Entity;import jakarta.persistence.Id;import lombok.Getter;import lombok.Set..
액터 (Actor): 시스템과 상호작용하는 사람 또는 외부 시스템입니다. 시스템 외부에 있으며, 시스템에게 특정 기능을 요청하고 결과를 받습니다.예: 사용자, 관리자, 결제 시스템유스케이스 (Use Case): 액터가 시스템을 통해 특정 목표를 달성하기 위해 수행하는 기능의 단위입니다. '무엇을 하는가'에 초점을 맞춥니다.예: 로그인하다, 상품을 주문하다, 게시글을 작성하다관계 (Relationship): 액터와 유스케이스, 또는 유스케이스와 유스케이스 사이의 상호작용 및 의존성을 표현하는 선입니다.유스케이스 관계별 표현1. 연관 관계 (Association)액터와 유스케이스가 서로 상호작용하는 가장 일반적인 관계입니다. 실선으로 표현합니다. +-------+ +..
Specification은 스프링 데이터 JPA (Spring Data JPA) 라이브러리가 제공하는 인터페이스(Interface) 입니다.// 'org.springframework.data.jpa.domain' 라는 패키지(부품 상자) 안에 들어있는// 'Specification' 이라는 설계도(인터페이스)를 가져와서 쓰겠다는 의미입니다.import org.springframework.data.jpa.domain.Specification; // 파일명: AccountSpecification.javapackage com.mybusinessapp.repository.specification;import com.mybusinessapp.domain.Account;import com.mybusinessapp...
- Total
- Today
- Yesterday
- system.io
- await
- .submit()
- jstl(java standard tag library)-core
- 특정 문자를 기준으로 자르기
- java.sql
- XPLATFORM
- 인텔리제이(intellij)
- 제품 등록
- java 키워드 정리
- 진수 변환
- 스프링 시큐리티(spring security)-http basic 인증
- java web-mvc
- 메이븐(maven)
- System.Diagnostics
- java-개발 환경 설정하기
- docker
- React
- jstl(java standard tag library)
- jsp 오픈 소스
- 람다식(lambda expression)
- 스프링 프레임워크(spring framework)
- MainActor
- 문자 자르기
- nl2br
- 스프링 시큐리티(spring security)
- error-java
- 스프링 프레임워크(spring framewordk)
- 표현 언어(expression language)
- REST API
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |