본문 바로가기
프로그래밍 언어/JAVA(자바) 응용

13.객체 간의 협력(collabration)

by lroot 2022. 5. 22.
728x90
반응형

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

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

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

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

- 객체 협력의 예

학생 : 이름,학년,가진 돈 

버스 : 버스번호, 승객 수, 수입

지하철 : 노선번호, 승객 수, 수입

학생 ->(버스를 탄다) 버스 

학생 ->(지하철을 탄다) 지하철

 

예제

- 김씨와 이씨는 각각 버스와 지하철을 타고 학교에 간다.

- 김씨는 5000원을 가지고 있었고, 100번 버스를 타면서 1000원을 지불한다.

- 이씨는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불한다.

두 학생이 버스와 지하철을 타는 상황을 구현

 

- Student.java

public class Student {
String name;
int grade;
int money;

public Student(String name, int money) {
this.name = name;
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(name+"님의 남은 돈은 "+money+"원 입니다");

}

}

 

- Bus.java

public class Bus {

int busnumber;
int count;
int money;

public Bus(int busnumber) 
{
this.busnumber = busnumber;
}

public void take(int money) 
{
this.money += money;
count++;
}

public void showBusInfo()
{
System.out.println(busnumber+"번의 승객수는 "+count+"명 이고, 수입은 "+money+"원이다.");
}

}

 

- Subway.java

public class Subway {
int subwaynumber;
int count;
int money;

public Subway(int subwaynumber)
{
this.subwaynumber = subwaynumber;
}

public void take(int money)
{
this.money += money;
count++;
}

public void showSubwayInfo() 
{
System.out.println(subwaynumber+"번의 승객 수는 "+count+"명 이고, 수입은 "+money+"원입니다.");
}

}

 

- Test.java

public class Test {

public static void main(String[] args) {

Student one = new Student("김씨",5000);
Student two = new Student("이씨",10000);

Bus bus100 = new Bus(100);
Subway green = new Subway(2);

one.takeBus(bus100);
two.takeSubway(green);

one.showInfo();
two.showInfo();
bus100.showBusInfo();
green.showSubwayInfo();

}

}

 

댓글