본문 바로가기

분류 전체보기177

어그리게이션(Aggregation)과 컴포지션(Composition) 어그리게이션(Aggregation)과 컴포지션(Composition)은 객체 지향 프로그래밍에서 클래스 간의 관계를 설명하는 두 가지 중요한 개념입니다. 두 개념 모두 "부분-전체 관계(Part-Whole Relationship)"를 나타내지만, 그 결합의 강도와 객체 간의 의존성 측면에서 차이가 있습니다.  1. 어그리게이션(Aggregation)어그리게이션은 객체 간의 약한 결합(Loose Coupling)을 나타내는 관계입니다. 이는 "부분-전체" 관계에서 부분(Part) 객체가 전체(Whole) 객체에 포함되지만, 두 객체는 독립적인 생명 주기를 가집니다. 즉, 전체 객체가 없어져도 부분 객체는 여전히 존재할 수 있습니다.특징:독립적인 생명 주기: 전체 객체가 삭제되어도 부분 객체는 계속 존재할 .. 2024. 8. 21.
2024.08.20(화) { 클래스 로더, .invoke, seald, qualified name } 클래스 로더(Class Loader) 클래스 로더(Class Loader)는 자바 가상 머신(JVM)의 중요한 구성 요소로, 클래스 파일(.class)을 메모리로 로드하여 실행할 수 있게 하는 역할을 담당합니다. 클래스 로더는 자바의 동적 로딩(dynamic loading)을 가능하게 하며, 프로그램이 실행되는 동안 필요한 클래스를 동적으로 메모리에 적재합니다.클래스 로더의 역할클래스 파일 로딩:클래스 로더는 .class 파일을 파일 시스템, JAR 파일, 네트워크 등의 다양한 소스에서 읽어들이고, 이를 JVM의 메모리로 로드합니다.자바 프로그램이 실행될 때, 클래스 로더는 필요한 클래스를 동적으로 로드하여 JVM에서 사용할 수 있게 만듭니다.클래스 파일 검증:클래스 로더는 로드된 클래스 파일의 바이트코.. 2024. 8. 20.
2024.08.19(월) { 타겟 클래스, Stream } "타겟 클래스(Target Class)"와 "타겟 클래스 객체(Target Class Object)"는 주로 프록시 패턴이나 리플렉션과 관련된 맥락에서 사용되는 용어입니다. 이 용어들은 특히 동적 프록시(Dynamic Proxy)나 AOP(Aspect-Oriented Programming)에서 자주 등장합니다. 타겟 클래스 (Target Class)정의: 타겟 클래스(Target Class)는 주로 프록시 패턴에서 프록시 객체가 대신해서 동작할 원래의 클래스를 의미합니다. 이 클래스는 실제 비즈니스 로직을 포함하고 있으며, 프록시 객체는 이 클래스의 메서드 호출을 가로채거나 확장된 기능을 제공하는 역할을 합니다.사용 맥락:프록시 패턴: 프록시 객체는 타겟 클래스의 역할을 대신합니다. 타겟 클래스는 프록시.. 2024. 8. 20.
파라미터화된 타입(Parameterized Type)과 원시 타입(Raw Type) 파라미터화된 타입(Parameterized Type)과 원시 타입(Raw Type)은 제네릭(Generics)과 관련된 두 가지 개념입니다. 이 두 개념은 제네릭 타입을 사용할 때 중요한 차이를 나타냅니다.   파라미터화된 타입 (Parameterized Type)파라미터화된 타입은 제네릭을 사용하여 정의된 클래스, 인터페이스, 또는 메서드에 구체적인 타입 매개변수를 지정한 타입을 말합니다. 제네릭 타입은 여러 타입을 처리할 수 있도록 일반화되어 있으며, 파라미터화된 타입을 통해 제네릭 클래스나 메서드의 타입 매개변수를 특정 타입으로 지정할 수 있습니다.예시:class Box { // 제네릭 클래스 정의 private T item; public void setItem(T item) { .. 2024. 8. 19.
제네릭 타입 매개변수(T)와 와일드카드(?)의 역할 제네릭 타입 매개변수(T)와 와일드카드(?)의 역할을 비교  제네릭 타입 매개변수 (T)정의: T는 제네릭 클래스나 메서드에서 타입을 일반화하여 사용할 수 있도록 만드는 타입 매개변수입니다. T는 특정 타입을 나타내며, 제네릭 클래스를 인스턴스화할 때 또는 제네릭 메서드를 호출할 때 그 타입이 결정됩니다.용도: T를 사용하면 메서드나 클래스가 여러 타입을 지원할 수 있지만, 그 타입이 명확하게 지정되며, 코드 내부에서 일관되게 사용할 수 있습니다.상한 또는 하한 바운드 사용: T extends Number와 같이 특정 타입의 상한 바운드(또는 하한 바운드)를 설정하여 타입 매개변수를 제한할 수 있습니다.예시:class Box { // T는 Box가 사용되는 동안 고유한 타입 private T ite.. 2024. 8. 19.
바운딩과 와일드카드의 차이 제네릭에서 바운딩(Bounding)과 와일드카드(Wildcards)는 자바의 타입 시스템에서 중요한 개념입니다. 두 개념 모두 제네릭을 사용할 때 타입의 유연성을 제공하지만, 그 사용 목적과 방법에는 차이가 있습니다.바운딩 (Bounding)바운딩은 제네릭 타입 매개변수에 대한 상한 또는 하한을 설정하는 것을 의미합니다. 제네릭 클래스나 메서드를 정의할 때, 특정 타입이나 그 서브타입만 사용할 수 있도록 제한할 수 있습니다. 바운딩은 주로 상한 바운드(Upper Bound)와 하한 바운드(Lower Bound)로 나뉩니다.상한 바운드 (Upper Bound)상한 바운드를 설정하면, 제네릭 타입 매개변수는 특정 클래스의 서브클래스나 해당 클래스 자체로 제한됩니다.예를 들어 T extends Number는 .. 2024. 8. 19.