본문 바로가기

Java/이론

[Java] A has B

객체간의 관계에는

has와 is가 있습니다.

has에 대해 먼저 알아볼까합니다.

A has B는 A가 B를 가지고 있다라는 뜻입니다.

B has A는 B가 A를 가지고 있다는 뜻이죠.

객체도 객체를 소유할 수 있는데요.

예를들어 candy라는 클래스가 있고

company라는 클래스가 있을 때

사탕에대한 정보를 가지고 있는 회사 클래스를 만들 수 있고

회사에 대한 정보를 가지고 있는 사탕 클래스를 만들수도 있습니다.

개발자가 정하기 나름입니다.

 

이해하기 쉽도록 구현 방법을 알아볼까요?

 식당 클래스가 있고 해당 클래스에는

식당 이름, 식당 주인 이름, 식당 위치, 식당 전화번호 정보가 있습니다.

그리고 사람 클래스에는 식당 주인에 대한 이름, 성별 , 전화번호가 있습니다.

식당클래스에서 식당 주인에 대한 정보를

사람클래스에서 받아오려고 할 때

식당 객체에서 사람 객체를 포함시켜서 

사용할 수 있습니다.

코드를 살펴보겠습니다.

식당 클래스의 이름은 Restaurant, 

사람 클래스의 이름은 Man입니다.

 

먼저 포함될 Man 클래스 부터 살펴보겠습니다.

 

public class Man {

String name;

String gender;

String phoneNumber;

 

각 멤버 변수들을 상단에 선언해줍니다.

 

public Man(String name, String gender, String phoneNumber) {

super();

this.name = name;

this.gender = gender;

this.phoneNumber = phoneNumber;

}

 

생성자도 자동 완성으로 생성해줍니다.

 

public void printMan() {

System.out.println(name);

System.out.println(gender);

System.out.println(phoneNumber);

}

 

 print메소드도

간단히 만들어줍니다.

 

다음은 포함하는 클래스인

Restaurant 클래스입니다.

포함되는 클래스랑 살짝 다른데요.

 

String owner;

String name;

String place;

String phoneNumber;

Man m;

 

먼저 필요한 멤버 변수를 선언해줍니다.

이때 사람클래스도 포함시켜야하므로

사람 클래스의 객체 변수도 선언해줍니다.

 

public Restaurant(Man m,String owner, String name, String place, String phoneNumber) {

super();

this.m = m;

this.owner = owner;

this.name = name;

this.place = place;

this.phoneNumber = phoneNumber;}

 

그다음 생성자를 만들어야 하는데

생성자의 파라미터로 각 변수들을 넣어주고

Man 클래스의 객체 변수도 넣어줍니다.

 

public void printRestaurant() {

System.out.println(owner);

System.out.println(name);

System.out.println(place);

System.out.println(phoneNumber);

m.printMan();

}

 

다음은 프린트 메소드인데

식당의 멤버변수들을 출력하고

Man의 print메소드도 호출합니다.

 

public static void main(String[] args) {

Man m = new Man("Kim Andrew", "남자", "010-1234-5678");

//강남포차, 역삼동, 02-1222-3444, Kim Andrew의 식당

Restaurant r = new Restaurant(m1,m,"강남포차", "역삼동" , "02-1222-3444", "Kim Andrew");

r.printRestaurant();

System.out.println("===============================================================");

}

 

그 다음 메인 클래스에서

각 객체를 생성하고

Restaurant의 프린트 메소드를 호출합니다.

 

강남포차

역삼동

02-1222-3444

Kim Andrew

Kim Andrew

남자

010-1234-5678

 

이렇게 식당의 정보가 출력되고

식당 주인의 정보가 차례대로 출력됩니다.

Resataurant 객체가 Man객체의 프린트 메소드를

포함하고 있어서 차례대로 출력되는 결과를 볼 수 있습니다.

A has B라는 객체 관계에 대해서 알아봤습니다.

'Java > 이론' 카테고리의 다른 글

[Java] 접근 제어자(Access Modifier)  (0) 2024.12.13
[Java] 상속(Inheritance)  (0) 2024.12.12
[Java] 생성자  (0) 2024.12.11
[Java] Static / Final  (0) 2024.12.11
[Java] JavaDoc  (1) 2024.12.11