본문 바로가기
언어/JAVA

객체 간의 협력 (collabration)

by step 1 2021. 4. 14.
반응형

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

  • 객체 지향 프로그램에서 객체 간에는 협력이 이루어짐
  • 협력을 위해서는 필요한 메세지를 전송하고 이를 처리하는 기능이 구현되어야 함
  • 매개 변수로 객체가 전달되는 경우가 발생

 

버스와 지하철을 타는 예제 프로그래밍

A 와 B는 각각 버스와 지하철을 타고 학교에 갑니다.

A는 5000원을 가지고 있었고, 100번 버스를 타면서 1000원을 지불합니다

B는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불합니다

 

package ch13;

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 + "원입니다");
	}
}

 

package ch13;

public class Subway {

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

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 + "원 입니다.");
	}
}

 

package ch13;

public class TakeTest {

	public static void main(String[] args) {
		
		Student studentA = new Student("A", 5000);
		Student studentB = new Student("B", 10000);
		
		Bus bus100 = new Bus(100);
		Bus bus500 = new Bus(500);
		
		studentA.takeBus(bus100);
		
		Subway greenSubway = new Subway(2);
		studentB.takeSubway(greenSubway);
		
		studentA.showInfo();
		studentB.showInfo();
		
		bus100.showBusInfo();
		greenSubway.showSubwayInfo();
		
		bus500.showBusInfo();
	}
}

 

결과

 

반응형

'언어 > JAVA' 카테고리의 다른 글

static 메서드  (0) 2021.04.16
static 변수  (0) 2021.04.16
객체 자신을 가리키는 this  (0) 2021.04.14
캡슐화  (0) 2021.04.14
접근 제어 지시자, get() / set() 메서드, 정보은닉  (0) 2021.04.13