객체 지향 프로그래밍에 대해 배운 것들을 사용해 학생, 버스, 지하철 세 가지의 객체가 서로 상호작용하는 것을 프로그래밍 한 예제다.
package classpart;
public class Student {
String name;
int money;
public Student(String name, int money) {
this.name = name;
this.money = money;
}
public void takeBus(Bus bus) {
this.money -= 1000;
bus.take(1);
}
public void takeSubway(Subway subway) {
this.money -= 1500;
subway.take(1);
}
public String getName() {
return name;
}
public int getMoney() {
return money;
}
public void showInfo() {
System.out.println(this.getName()+" has "+this.getMoney());
}
}
package classpart;
public class Bus {
int busNum;
int intake = 0;
int passenger;
public Bus(int num) {
this.busNum = num;
}
public void take(int passenger) {
this.passenger++;
this.intake+=1000;
}
public int getBusNum() {
return busNum;
}
public int getIntake() {
return intake;
}
public int getPassenger() {
return passenger;
}
public void showInfo() {
System.out.println("Bus "+this.getBusNum()+" got "+this.getPassenger()+" passengers and earned "+this.getIntake()+" won");
}
}
package classpart;
public class Subway {
int subwayNum;
int intake = 0;
int passenger;
public Subway(int num) {
this.subwayNum = num;
}
public void take(int passenger) {
this.passenger++;
this.intake+=1500;
}
public int getsubwayNum() {
return subwayNum;
}
public int getIntake() {
return intake;
}
public int getPassenger() {
return passenger;
}
public void showInfo() {
System.out.println("Subway "+this.getsubwayNum()+" got "+this.getPassenger()+" passengers and earned "+this.getIntake()+" won");
}
}
학생 클래스에서 학생이 버스나 지하철을 타는 메소드를 실행하면 다음과 같은 일이 일어난다.
학생 객체가 takeBus나 takeSubway 메소드를 실행하면 학생의 돈이 1000원 혹은 1500원 빠져나가고 Bus나 Subway타입의 객체의 take()메소드가 한 번 실행된다.
버스나 지하철 클래스 입장에서는 다른 객체에서 호출되어 실행되면 승객수가 1 증가하고 돈이 1000원이나 1500원이 올라간다.
package classpart;
public class Test {
public static void main(String[] args) {
Student stu1 = new Student("John", 10000);
Student stu2 = new Student("Kelly", 20000);
Student stu3 = new Student("Harry", 14000);
Bus bus100 = new Bus(100);
Subway subway2 = new Subway(2);
Subway subway7 = new Subway(7);
stu1.takeBus(bus100);
stu2.takeSubway(subway2);
stu1.takeSubway(subway7);
stu3.takeSubway(subway7);
stu1.showInfo();
stu2.showInfo();
stu3.showInfo();
bus100.showInfo();
subway2.showInfo();
subway7.showInfo();
}
}
실행결과
John has 7500
Kelly has 18500
Harry has 12500
Bus 100 got 1 passengers and earned 1000 won
Subway 2 got 1 passengers and earned 1500 won
Subway 7 got 2 passengers and earned 3000 won
지금까지 배운 객체와 클래스, 인스턴스, 생성자, 참조변수의 모든 개념을 사용하여 간단한 예제를 하나 구현해 보았다. 예제 코드에서는 서로 다른 세 개의 객체가 서로 영향을 주며 유기적인 작용을 한다. 이러한 프로그램을 구현해 봄으로써 객체지향 프로그래밍이 어떤 것인지 감을 잡을 수 있었다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
(Java) 23 - 변수 수명과 유효범위 (0) | 2020.05.17 |
---|---|
(Java) 22 - static 변수 (0) | 2020.05.17 |
(Java) 20 - this (0) | 2020.05.17 |
(Java) 19 - 정보 은닉 (0) | 2020.05.17 |
(Java) 18 - 참조 자료형 (0) | 2020.05.17 |