본문 바로가기
Java

2-6 클래스와 객체2 (2) - 객체 간의 협력 ex) 승객과 버스

by yukuda 2024. 3. 18.
728x90

객체 간의 협력

학생이 버스나 지하철을 가는 상황을 객체 지향으로 프로그래밍

 

 

package cooperation;

public class Student {

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

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 showInfo() {
		System.out.println("버스 "+ busNumber + "번의 승객은 " + passengerCount + "명이고,수입은"
		+ money + "입니다.");
	}
}
package cooperation;

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 showInfo() {
		System.out.println("지하철 "+ lineNumber + "의 승객은 " + passengerCount + "명이고,수입은"
		+ money + "입니다.");
	}
}
package cooperation;

public class TakeTrans {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Student james = new Student("james",5000);
		Student tomas = new Student("tomas",10000);	
		
		Bus bus100 = new Bus(100);
		james.takeBus(bus100);
		james.showInfo();
		bus100.showInfo();
		
		Subway subwayGreen = new Subway(2);
		tomas.takeSubway(subwayGreen);
		tomas.showInfo();
		subwayGreen.showInfo();
	}

}