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 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