Java 기초 상속(5) - 경찰과 총의 소유관계
728x90
기본 환경
JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 |
목표
경찰과 총의 관계를 이해하여 소유관계에 대해 이해한다.
이전 게시물과 비교하여 소유관계와 상속관계의 차이를 이해한다.
코드
package ex12inheritance; /* 구성관계로 표현하기에 적합한 Has-A관계 X has a Y => X과 Y를 소유(보유)하고 있다. - 경찰이 권총을 소유하고 있다. - 경찰이 수갑을 소유하고 있다. Has-A와 같이 소유의 관계를 상속으로 표현하면 클래스 간의 강한 연결고리가 형성되어 권총이 없는 경찰을 표현하기가 힘들어진다. 따라서 이 경우에는 구성관계로 표현하는 것이 적합한다. 구성관계를 클래스의 맴버로 또 다른 객체를 정의하는 것을 말한다. */ class Gun{ int bullet; public Gun(int bNum) { bullet = bNum; } //총을 쏘는 행위를 표현한 맴버메소드 public void shutGun() { System.out.println("빵야~~~~!"); bullet--; //탄환이 감소됨 } } //경찰을 표현한 클래스 class Police{ int handCuffs; //수갑의 보유갯수 Gun gun;//보유한 권총 public Police(int bNum, int hCuff) { handCuffs = hCuff; /* 권총 보유 여부 초기화 : 만약 총알이 없는 상태라면 보유한 권총이 없는것으로 표현하기 위해 맴버변수를 null로 초기화 한다. 참조변수가 null값이란 것은 아무것도 참조할 객체가 없다는 의미이다. */ if(bNum <= 0) { gun = null; } else { gun = new Gun(bNum); } } //수갑을 채우는 행위를 표현 public void putHandcuff() { System.out.println("수갑채움~! 넌 콩밥~!"); handCuffs--; } //경찰이 권총을 발사하는 행위를 표현 public void shut() { if(gun == null) { //경창이 권총을 소유하지 못했다면 발사할 수 없다. System.out.println("보유한 권총 없음, 헛방"); } else { gun.shutGun(); } } } public class E05HasAComposite { public static void main(String[] args) { //권총을 보유한 경찰을 표현 System.out.println("==경찰 1=="); Police police1 = new Police(5, 3); police1.shut(); police1.putHandcuff(); //권총을 보유하지 못한 경찰을 표현 System.out.println("==경찰 2=="); Police police2 = new Police(0, 3); police2.shut(); police2.putHandcuff(); } }
앞에서 컴퓨터는 상속의 관계로 만들었고 경찰과 총은 소유의 관계로 구성을 만들었습니다. 그 이유는 노트북과 테블릿은 컴퓨터 범주안에 포함되지만 총은 경찰의 범주안에 포함되지 않기 때문입니다. 이처럼 사물과 사물의 관계를 객체지향적으로 이해하고 구성할 줄 알아야 가독성이 높은 코드를 완성할 수 있습니다.
결과 값

'Java > Java_기초부터 _끝까지' 카테고리의 다른 글
Java 기초 상속(7) - 전화번호부 (0) | 2020.11.30 |
---|---|
Java 기초 상속(6) - overriding (0) | 2020.11.26 |
Java 기초 상속(4) - 컴퓨터 상속 구조 (0) | 2020.11.24 |
Java 기초 상속(3) - static (0) | 2020.11.20 |
Java 기초 상속(2) - 접근제어 (0) | 2020.11.18 |
댓글을 사용할 수 없습니다.