반응형
객체 지향 프로그래밍에서의 협력
· 객체 지향 프로그램에서 객체 간에는 협력이 이루어짐.
· 협력을 위해서는 필요한 메세지를 전송하고 이를 처리하는 기능이 구현되어야 함
· 매개 변수로 객체가 전달되는 경우가 발생
위 사진의 예제 소스
학생 객체가 버스나 지하철을 이용할 수 있다.
각 교통수단을 이용 시 학생이 갖고 있는 돈에서 탑승비용이 차감된다.
각 교통수단은 탑승한 인원 수와 인원만큼의 수입이 나타난다.
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();
}
}
결과
반응형
'개발 > Java' 카테고리의 다른 글
변수의 유효 범위와 메모리 (0) | 2021.04.22 |
---|---|
Static 변수 (2) | 2021.04.22 |
<접근 제어 지시자>와 <정보은닉> (0) | 2021.04.20 |
참조 자료형 변수 (2) | 2021.04.20 |
생성자 오버로딩 (overloading) (2) | 2021.04.19 |