Java

[Java] 39. 포함 관계

Song hyun 2024. 4. 23. 11:52
728x90
반응형

[Java] 39. 포함 관계

 

 

1. 포함 관계(Composition)

-포함 관계는 한 클래스가 다른 클래스를 포함하는 관계를 말한다. 

자바에서 포함 관계는 한 클래스가 다른 클래스를 자신의 필드(=멤버 변수)로 포함하는 것을 말한다.

-이 개념은 "has-a" 관계로도 불린다.

-이는 객체 간의 강한 연관성을 뜻하며, 하나의 객체가 다른 객체 없이는 존재할 수 없을 때 쓰인다.

 

 

 

 

2. 포함 관계의 특징

-포함된 객체는 포함하는 객체 안에서만 존재하며, 포함하는 객체가 파괴되면 포함된 객체도 함께 파괴된다.

-이 관계는 객체간의 강한 의존성을 특징으로 하며, 소유한 객체가 완전한 책임을 진다.

-포함관계는 연관관계보다 더 강한 연결을 의미한다.

 

 

 

연습문제 1.

(1) 클래스 Computer/CPU를 만들고, 둘을 포함관계로 만들어라.

(2) 포함관계를 응용한 메서드를 만들어라.

 

풀이 과정:

(1) 클래스 Computer/CPU를 만들고, 둘을 포함관계로 만들어라.

-클래스 Computer/CPU를 생성한다.

-클래스 생성을 완료했다면, 각각의 클래스에 변수를 선언한다.

이 때, Computer의 변수에 CPU를 포함시킨다.

 

(2) 포함관계를 응용한 메서드를 만들어라.

-CPU는 컴퓨터가 작동하기 위해 필요한 부품이다.

이를 표현하기 위해, 호출시 스크립트를 출력하는 start/stop 메서드를 선언한다.

-Computer 클래스에도 똑같이 start/stop 메서드를 선언한다. 

단, 이 때 CPU 클래스의 start/stop 메서드를 해당 메서드 내부에 호출한다.

 

-> CPU 클래스의 객체를 변수로 가지며. 메서드 호출 시 CPU 속의 메서드도 함께 호출되는 것을 확인할 수 있다.

 

package basic.ch18;

public class Computer {
	String name;
	int price;
	CPU cpu;
	
	public Computer() {
		cpu = new CPU();
	}
	
	public void StartComputer() {
		System.out.println("컴퓨터의 전원을 켭니다.");
		this.cpu.start();
	}
	public void StopComputer() {
		System.out.println("컴퓨터의 전원을 끕니다.");
		this.cpu.stop();
	}
	
	public static void main(String[] args) {
		Computer pc1=new Computer();
		pc1.StartComputer();
		pc1.StopComputer();
		pc1.cpu.name="오늘 산 CPU";
		System.out.println(pc1.cpu.name);
	}

}

 

 

 

package basic.ch18;

public class CPU {
	String name;
	int price;
	
	void start() {
		System.out.println("CPU가 작동합니다.");
	}
	void stop() {
		System.out.println("CPU가 작동을 멈춥니다.");
	}

}
728x90
반응형