=> 이런식으로 객체 간 (버스 - 나 / 점원 - 나) 인터렉션이 일어나는 것이 객체 간의 협력이다.
package ch14;
public class Student {
String studentName;
int money;
//생성자(초기화)
public Student (String studentName, int money) {
this.studentName = studentName;
this.money = money;
}
//버스를 타는 행위, (어떤 버스를 탔는지가 매개변수로 넘어온다.)
// Bus 객체와 take라는 메서드는 아직 만들지 않음.
public void takeBus(Bus bus) {
//버스를 타면 1000원 지불
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 + "원 입니다.");
}
}
인스턴스를 생성할 때 만들 값을 생각하면 됨.
Student student1 = new Student("이름", 가진돈);
인스턴스를 하나 생성할 때 학생의 이름과 돈이 필요함.
그럼 생성자도 이름과 돈을 초기화시켜주면 된다.
"학생" 객체를 계속 만들어내기위해 필요한 값.
핸드폰이라면? 핸드폰 종류, 가격 이 있겠지 ??
package ch14;
public class Bus {
int busNumber;
int passengerCount;
int money;
// 승객수와 금액은 초기값 없어도 됨 (한명씩 탈 때마다 늘어나기때문)
public Bus(int busNumber) {
this.busNumber = busNumber;
}
// 매개변수로 돈이 들어오면 take 함수가 실행됨
public void take(int money) {
// 돈이 추가되고
this.money += money;
// 승객이 1명씩 늘어난다
passengerCount++;
}
public void showBusinfo() {
System.out.println(busNumber + "번의 승객 수는 " + passengerCount + "이고, 수입은 " + money + "원 입니다.");
}
}
package ch14;
public class Subway {
int lineNumber;
int passengerCount;
int money;
// 승객수와 금액은 초기값 없어도 됨 (한명씩 탈 때마다 늘어나기때문)
public Subway(int lineNumber) {
this.lineNumber = lineNumber;
}
// 매개변수로 돈이 들어오면 take 함수가 실행됨
public void take(int money) {
// 돈이 추가되고
this.money += money;
// 승객이 1명씩 늘어난다
passengerCount++;
}
public void showSubwayinfo() {
System.out.println(lineNumber + "번의 승객 수는 " + passengerCount + "이고, 수입은 " + money + "원 입니다.");
}
}
package ch14;
public class TakeTransTest {
public static void main(String[] args) {
Student studentJ = new Student("James", 5000);
Student studentT = new Student("Tomas", 10000);
Bus bus100 = new Bus(100);
Bus bus500 = new Bus(500);
studentJ.takeBus(bus100);
Subway greenSubway = new Subway(2);
studentT.takeSubway(greenSubway);
studentJ.showInfo();
studentT.showInfo();
bus100.showBusinfo();
greenSubway.showSubwayinfo();
bus500.showBusinfo();
}
}