JAVA / 객체 간의 협력(Collaboration)

아몬드봉봉·2023년 12월 12일
0

Java

목록 보기
8/17

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

  • 객체 지향 프로그램에서 객체 간에는 협력이 이루어짐
  • 협력을 위해서는 필요한 메시지를 전송하고 이를 처리하는 기능이 구현되어야 함
  • 매개 변수로 객체가 전달되는 경우가 발생

객체 간의 협력 예제

  • James와 Tomas는 각각 버스와 지하철을 타고 학교에 갑니다.
  • James는 5000원을 가지고 있었고, 100번 버스를 타면서 1000원을 지불합니다.
  • Tomas는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불합니다.
  • 두 학생이 버스와 지하철을 타는 상황을 구현해 보자
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.take(1000);
        this.money -= 1000;
    }
    
    public void takeSubway(Subway subway) {
        subway.take(1200);
        this.money -= 1200;
    }
    
    public void showInfo() {
        System.out.println(studentName + "님의 남은 돈은 " + money + "원 입니다.");
    }
    
}
 
----------------------------------------------------
 
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 + "원 입니다.");
    }
    
}
 
----------------------------------------------------
 
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 + "원 입니다.");
    }
    
}
 
----------------------------------------------------
 
public class TakeTransTest {
 
    public static void main(String[] args) {
        
        Student studentJ = new Student("James", 5000);
        Student studentT = new Student("Tomas", 10000);
        
        Bus bus100 = new Bus(100);
        Bus bus500 = new Bus(500);
        
        studentJ.takeBus(bus100);
        
        Subway greenSubway = new Subway(2);
        
        studentT.takeSubway(greenSubway);
        
        studentJ.showInfo();
        studentT.showInfo();
        
        bus100.showBusInfo();
        greenSubway.showSubwayInfo();
        
        bus500.showBusInfo();
        
    }
    
}
  • studentJ.showInfo() => James님의 남은 돈은 4000원 입니다.
  • studentT.showInfo() => Tomas님의 남은 돈은 8800원 입니다.
  • bus100.showBusInfo() => 100번의 승객수는 1명 이고, 수입은 1000원 입니다.
  • greenSubway.showSubwayInfo() => 2번의 승객수는 1명 이고, 수입은 1200원 입니다.
  • bus500.showBusInfo() => 500번의 승객수는 0명 이고, 수입은 0원 입니다.
profile
성장을 즐기는 백엔드 자바 개발자

0개의 댓글

관련 채용 정보