[Java] 객체 간 협력
객체 지향 프로그램은 객체를 정의하고 객체 간 협력으로 만들어진다.
그러면 실제로 객체간의 협력이 어떻게 이루어지는지 한번 예제를 만들어 확인해보자.
학생 클래스 구현하기
계속 예제로 들었던 학생 클래스를 또 한번 만들어보자. 학생클래스는 ‘이름’,’ 학년’, ‘가진 돈’ 이렇게 세가지 멤버 변수를 갖는다고 가정해보겠다. 그리고 메서드로는, ‘버스 타기’, ‘지하철 타기’, ‘학생의 현재 정보 보여주기’ 세가지 행동을 갖는다고 하자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package cooperation;
public class Student {
public String studentName;
public int grade;
public int money;
public Student(String studentName, int money){
this.studentName = studentName;
this.money = money;
}
public takeBus(Bus bus){
bus.take(1000);
this.money-= 1000;
}
public takeSubway(Subway subway){
subway.take(1500);
this.money -= 1500;
}
public void showInfo(){
System.out.println(studentName+"님의 남은 돈은"+money+"입니다.");
}
}
Student 클래스는 버스를 타면 1000원을 money에서 빼주고, 지하철을 타면 1500원을 money 에서 뺀다.
그럼 위에서 Student에서 사용한 클래스들인 Bus와 Subway 클래스를 만들어보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package cooperation;
public class Bus {
int money;
int person;
int busNumber;
public Bus(int busNumber){
this.busNumber = busNumber;
}
public void take(int money){
this.money += money;
person++;
}
public void showInfo(){
System.out.println(busNumber+"번의 승객은"+person+"명이고, 수입은"+money+"입니다");
}
}
동일하게 이름만 바꿔서 Subway를 만들어준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package cooperation;
public class Subway {
int money;
int person;
int subwayNumber;
public Subway(int subwayNumber){
this.subwayNumber = subwayNumber;
}
public void take(int money){
this.money += money;
person++;
}
public void showInfo(){
System.out.println(subwayNumber+"번의 승객은"+person+"명이고, 수입은"+money+"입니다");
}
}
이렇게 Student, Bus, Subway 클래스를 만들어 주었으니 이들이 어떤 식으로 협력하여 main에서 작동하는지 TakeTrans 클래스를 만들어주어 객체간의 협력을 시켜보자.
학생은 James와 Tomas 두명으로 하고, James는 버스, Tomas는 지하철을 타도록 한뒤, 각각 탑승 후 학생의 현재 상태와 대중교통의 현재 상태가 나오도록 해주자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package cooperation;
public class TakeTrans {
public static void main(String[] args){
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 subway9 = new Subway(9);
Tomas.takeSubway(subway9);
Tomas.showInfo();
subway9.showInfo();
}
}
James와 Tomas라는 두개의 인스턴스를 만들어 준뒤, 이름과 가진돈을 추가해준다.
버스와 지하철도 동일하게 각각 하나씩 bus100과 subway9이라는 인스턴스를 추가 해준다.
James는 takeBus 메서드가 호출되어 버스를 탔고, Tomas는 takeSubway 메서드가 호출되어 지하철을 탔다.
이처럼 우리가 각각 만든 객체들을 인스턴스로 만들어 각 객체끼리 협력하도록 해줄 수 있다.
댓글남기기