객체 지향 프로그래밍에서의 협력
- 객체 지향 프로그램에서 객체 간에는 협력이 이루어짐
- 협력을 위해서는 필요한 메세지를 전송하고 이를 처리하는 기능이 구현되어야 함
- 매개 변수로 객체가 전달되는 경우가 발생
- 객체 협력의 예
학생 : 이름,학년,가진 돈
버스 : 버스번호, 승객 수, 수입
지하철 : 노선번호, 승객 수, 수입
학생 ->(버스를 탄다) 버스
학생 ->(지하철을 탄다) 지하철
예제
- 김씨와 이씨는 각각 버스와 지하철을 타고 학교에 간다.
- 김씨는 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();
}
}
'프로그래밍 언어 > JAVA(자바) 응용' 카테고리의 다른 글
15.Static메서드 (0) | 2022.05.22 |
---|---|
14.Static 변수 (0) | 2022.05.22 |
12.this(객체 자신) (0) | 2022.05.22 |
11.캡슐화(encapsulation) (0) | 2022.05.22 |
10.접근 제어 지시자(access modifier)와 정보은닉(information hiding) (0) | 2022.05.21 |
댓글