Java 집계 대 구성

Musfirah Waseem 2023년10월12일
  1. 자바의 구성
  2. Java의 집계
  3. 컴포지션 대 집계
  4. Java에서 컴포지션 작업
  5. Java에서 집계 작업
Java 집계 대 구성

Java에서 집합과 구성은 밀접하게 연결된 두 가지 개념입니다. Composition은 클래스 간의 긴밀한 연결인 반면 집계는 약한 연결입니다.

자바의 구성

구성은 기본 클래스 개체가 다른 파생 클래스 개체를 소유하고 파생 클래스 개체가 기본 클래스 없이는 존재할 수 없는 경우입니다.

예를 들어, Human을 구성하는 데에는 손, 다리, 심장 등 여러 하위 클래스가 있습니다. Human 개체가 죽으면 모든 하위 부분이 의미 있게 존재하지 않습니다.

Java의 집계

집계는 기본 클래스 개체와 해당 파생 클래스 개체가 독립적으로 존재할 수 있는 경우입니다. 예를 들어 Player 기본 클래스를 구성하고 여기에서 Team 클래스를 파생시키면 Player 개체가 파괴되더라도 팀은 여전히 존재합니다.

마찬가지로 이 해산되면 플레이어는 여전히 존재하며 다른 팀에 합류할 수 있습니다.

컴포지션 대 집계

구성 집합
PART-OF 관계 또는 특수 HAS A 관계 HAS A 관계
단방향 종속성 양방향 종속성
강력한 협회 유형 약한 연결 유형
하위는 상위 클래스에 종속됨 자식은 부모 클래스에 독립적입니다.
UML 다이어그램 표현은 블랙 다이아몬드입니다. UML 다이어그램 표현은 흰색 다이아몬드입니다.

Java에서 컴포지션 작업

import java.io.*;
import java.util.*;
class Job {
  private int pay;
  private int id;

  public int getWage() {
    return pay;
  }
  public void setWage(int pay) {
    this.pay = pay;
  }
  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
}
class Person {
  private Job job;

  public Person() {
    this.job = new Job();
    job.setWage(650);
  }
  public int getWage() {
    return job.getWage();
  }
}
class Main {
  public static void main(String[] args) {
    Person person = new Person();
    int salary = person.getWage();
    System.out.println("The wage of the person for a job: " + salary);
  }
}

출력:

The wage of the person for a job: 650

위의 코드는 두 클래스 간의 구성 관계를 표시합니다. 컴포지션은 관계의 부분-의 유형으로 분류됩니다. 위의 경우 임금직무의 일부입니다.

우리는 두 클래스 모두에 대해 매개변수화된 생성자, setter 및 getter 함수를 정의했습니다.

Java에서 집계 작업

import java.io.*;
import java.util.*;

class Bank {
  private String BankName;

  Bank(String name) {
    BankName = name;
  }
  public String getBankName() {
    return BankName;
  }
}

class Employee {
  private String EmployeeName;

  Employee(String name) {
    EmployeeName = name;
  }

  public String getEmployeeName() {
    return EmployeeName;
  }
}
class Main {
  public static void main(String[] args) {
    Bank bank = new Bank("IMF");
    Employee emp = new Employee("Rob");

    System.out.println(emp.getEmployeeName() + " is an employee of the " + bank.getBankName());
  }
}

출력:

Rob is an employee of the IMF

위의 코드는 두 클래스 간의 집계 관계를 표시합니다. 집계는 has-a 유형의 관계로 분류됩니다. 위의 경우 은행에는 Rob이라는 직원이 있습니다.

우리는 두 클래스 모두에 대해 매개변수화된 생성자, setter 및 getter 함수를 정의했습니다.

Musfirah Waseem avatar Musfirah Waseem avatar

Musfirah is a student of computer science from the best university in Pakistan. She has a knack for programming and everything related. She is a tech geek who loves to help people as much as possible.

LinkedIn