1. 객체 지향 프로그래밍에서의 협력
- 객체 지향 프로그램에서 객체 간의 협력을 바탕으로 코딩이 이루어짐
- 협력을 위해서는 필요한 메세지를 전송하고 이를 처리하는 기능이 구현되어야 함
- 매개 변수로 "객체 자체"가 전달되는 경우가 발생
객체 협력의 예

ex) 학생이 버스를 타면, 학생의 가진 돈은 줄어들고, 버스의 승객수+1, 수입+a 가 된다. -> 객체 간의 협력!
실생활을 아주 잘 반영한 것이 객체 지향 프로그래밍!
2. 객체 지향 프로그래밍 예제
2.1. <버스 타고 학교 가는 학생의 과정을 객체 지향 프로그래밍으로 구현해보기>
<code />
James와 Tomas는 각각 버스와 지하철을 타고 학교에 갑니다.
James는 5000원을 가지고 있었고, 100번 버스를 타면서 1000원을 지불합니다.
Tomas는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불합니다.
두 학생이 버스와 지하철을 타는 상황을 구현해 봅시다.
Student.java
<java />
package ch14;
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, 어떤 버스를 탔는지 매개변수로 넘어옴
bus.take(1000); //버스 객체에 의해 take 함수가 불려졌다.
this.money-=1000;
}
public void takeSubway(SubWay subway) {
subway.take(1200);
this.money-=1200;
}
public void showInfo() {
System.out.println(studentName+"님의 남은 돈은 "+money+"원 입니다.");
}
}
Bus.java
<java />
package ch14;
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.java
<java />
package ch14;
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+"원입니다.");
}
}
TakeTransTest.java
<java />
package ch14;
public class TakeTransTest {
public static void main(String[] args) {
Student hyerin=new Student("혜린",5000);
Student hyeongsoo=new Student("형수",10000);
Bus bus100 = new Bus(100); //버스는 여러 대의 버스가 있을 수 있다.
Bus bus500 = new Bus(500);
hyerin.takeBus(bus100); //인스턴스로 넘어간 버스는 100번!
SubWay greenSubway = new SubWay(2);
hyeongsoo.takeSubway(greenSubway);
hyerin.showInfo();
hyeongsoo.showInfo();
bus100.showBusInfo();
greenSubway.showSubwayInfo();
bus500.showBusInfo();
}
}

'JAVA' 카테고리의 다른 글
2-13.객체 지향 - static메서드, 변수의 유효 범위 (0) | 2022.01.11 |
---|---|
2-12.객체 지향 - static 변수 (0) | 2022.01.11 |
2-10.객체 지향 - this (0) | 2022.01.08 |
2-9.객체 지향 - 캡슐화 (0) | 2022.01.08 |
2-8.객체 지향 - 접근 제어 지시자, 정보 은닉 (0) | 2022.01.08 |