본문 바로가기

DEVELOPER/Java

객체 간의 협력 (collaboration)

반응형

객체 지향 프로그래밍에서의 협력


  · 객체 지향 프로그램에서 객체 간에는 협력이 이루어짐.

  · 협력을 위해서는 필요한 메세지를 전송하고 이를 처리하는 기능이 구현되어야 함

  · 매개 변수로 객체가 전달되는 경우가 발생

객체 협력의 예

 



위 사진의 예제 소스


  학생 객체가 버스나 지하철을 이용할 수 있다.

  각 교통수단을 이용 시 학생이 갖고 있는 돈에서 탑승비용이 차감된다.

  각 교통수단은 탑승한 인원 수와 인원만큼의 수입이 나타난다.

 

Student의 클래스

public class Student {

	String studentName;
	int money;
	
	public Student(String studentName, int money) {
		
		this.studentName = studentName;
		this.money = money;
	}
	
	public void takeBus(Bus bus) {
		
		bus.take(1000);
		this.money -= 1000;
	}
	
	public void takeSubway(Subway subway) {
		
		subway.take(1200);
		this.money -= 1200;
	}
	
	public void showInfo() {
		System.out.println(studentName + "님의 남은 돈은 " + money + "원 입니다.");
	}
}

 

bus의 클래스

public class Bus {

	int busNumber;
	int passengerCount;
	int money;
	
	public Bus(int busNumber) {
		this.busNumber = busNumber;
	}
	
	public void take(int money) {
		
		this.money += money;
		passengerCount++;
	}
	
	public void showBusInfo() {
		
		System.out.println(busNumber + "번의 승객 수는 " + passengerCount + "명 이고, 수입은 " + money + "원 입니다.");
	}
}

 

subway의 클래스

public class Subway {

	int subwayNumber;
	int passengerCount;
	int money;
	
	public Subway(int subwayNumber) {
		
		this.subwayNumber = subwayNumber;
	}
	
	public void take(int money) {
		
		this.money += money;
		passengerCount++;
	}
	
	public void showSubwayInfo() {
		
		System.out.println(subwayNumber + "번의 승객 수는 " + passengerCount + "명 이고, 수입은 " + money + "원 입니다.");
	}
}

 

test

public class TakeTransTest {

	public static void main(String[] args) {

		Student james = new Student("James",5000);
		Student tomas = new Student("Tomas", 10000);
		
		Bus bus100 = new Bus(100);
		Bus bus500 = new Bus(500);
		
		james.takeBus(bus100);
		
		Subway greenSubway = new Subway(2);
		tomas.takeSubway(greenSubway);
		
		james.showInfo();
		tomas.showInfo();
		
		bus100.showBusInfo();
		bus500.showBusInfo();
		greenSubway.showSubwayInfo();
	}

}

결과

위 예제의 결과


 

반응형

'DEVELOPER > Java' 카테고리의 다른 글

변수의 유효 범위와 메모리  (0) 2021.04.22
Static 변수  (2) 2021.04.22
<접근 제어 지시자>와 <정보은닉>  (0) 2021.04.20
참조 자료형 변수  (2) 2021.04.20
생성자 오버로딩 (overloading)  (2) 2021.04.19