[Java] 객체 간의 협력 collaboration

2022. 9. 4. 17:49·🍞 BackEnd/Java

객체 간의 협력 (collaboration)

- 객체 지향 프로그램에서 객체 간에는 협력이 이루어짐

- 협력을 위해서는 필요한 메시지를 전송하고 이를 처리하는 기능이 구현되어야 함

- 매개 변수로 객체가 전달되는 경우가 발생

- 객체 협력의 예

 

버스 타고 학교 가는 학생의 과정

James와 Tomas는 각각 버스와 지하철을 타고 학교에 갑니다.

James는 5000원을 가지고 있었고, 100번 버스를 타면서 1000원을 지불합니다.

Tomas는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불합니다.

 

두 학생이 버스와 지하철을 타는 상황을 구현해보자!

 

 

Student.java

public class Student {

	String studentName;
	int grade;
	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 + "원 입니다");
	}
}

 

Bus.java

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

public class Subway {

	int lineNumber;
	int passengerCount;
	int money;

	public Subway(int lineNumber) {
		this.lineNumber = lineNumber;
	}

	public void take(int money) {
		this.money += money;
		passengerCount++;
	}

	public void showSubwayInfo() {
		System.out.println(lineNumber + "번 지하철의 승객은 " + passengerCount + "명 이고, 수입은 " + money + "원 입니다");
	}
}

 

TakeTransTest.java

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);

		Subway subwayGreen = new Subway(2);

		studentJ.takeBus(bus100);
		studentT.takeSubway(subwayGreen);

		studentJ.showInfo();
		studentT.showInfo();

		bus100.showBusInfo();

		subwayGreen.showSubwayInfo();
	}
}

 

택시 타고 학교 가는 학생의 과정 (복습)

앞의 에제에서 Edward는 지각을 해서 택시를 타야 했다.

20000원을 가지고 있었는데 10000원을 택시비로 사용했어야 했다.

택시는 '잘 나간다 운수' 회사 택시를 탔다.

 

 

Student.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.take(1000);
		this.money -= 1000;
	}

	public void takeSubway(Subway subway) {
		subway.take(1200);
		this.money -= 1200;
	}
	// 추가된 부분
	public void takeTaxi(Taxi taxi) {
		taxi.take(10000);
		this.money -= 10000;
	}

	public void showInfo() {
		System.out.println(studentName + "님의 남은 돈은 " + money + "원 입니다.");
	}
}

 

Taxi.java

public class Taxi {
	String TaxiName;
	int money;

	public Taxi(String TaxiName) {
		this.TaxiName = TaxiName;
	}

	public void take(int money) {
		this.money += money;
	}

	public void showTaxiInfo() {
		System.out.println(TaxiName + "택시 수입은 " + money + "원 입니다.");
	}
}

 

TakeTransTest.java

public class TakeTransTest {

	public static void main(String[] args) {
		Student studentJ = new Student("James", 5000);
		Student studentT = new Student("Tomas", 10000);
		Student studentE = new Student("Edward", 20000);

		Bus bus100 = new Bus(100);
		Subway subwayGreen = new Subway(2);
		Taxi taxi = new Taxi("잘 나간다 운수");

		studentJ.takeBus(bus100);
		studentT.takeSubway(subwayGreen);
		studentE.takeTaxi(taxi);

		studentJ.showInfo();
		studentT.showInfo();
		studentE.showInfo();

		bus100.showBusInfo();
		subwayGreen.showSubwayInfo();
		taxi.showTaxiInfo();
	}

}
저작자표시 (새창열림)

'🍞 BackEnd > Java' 카테고리의 다른 글

[Java] 생성자 constructor  (0) 2022.09.04
[Java] 객체 자신을 가리키는 this  (0) 2022.09.04
[Java] 함수와 메서드  (0) 2022.09.04
[Java] 인스턴스 생성과 힙 메모리  (0) 2022.09.04
[Java] 객체와 객체지향 프로그래밍  (0) 2022.09.04
'🍞 BackEnd/Java' 카테고리의 다른 글
  • [Java] 생성자 constructor
  • [Java] 객체 자신을 가리키는 this
  • [Java] 함수와 메서드
  • [Java] 인스턴스 생성과 힙 메모리
박빵이
박빵이
2025년에도 갓생살기
  • 박빵이
    기억보다 기록
    박빵이
  • 전체
    오늘
    어제
    • 분류 전체보기 (337)
      • 🍞 FrontEnd (97)
        • HTML+CSS (4)
        • JavaScript (17)
        • TypeScript (4)
        • React (52)
        • Next.js (2)
        • Android (15)
      • 🍞 BackEnd (24)
        • Java (15)
        • Node.js (6)
        • Spring (1)
      • 🍞 Cloud & Infra (0)
        • AWS SAA (0)
        • Microsoft Azure (0)
      • 🍞 Algorithm (147)
        • C++ (4)
        • Baekjoon (41)
        • Programmers (97)
      • 🍞 Computer Science (18)
        • 운영체제 (1)
        • 데이터 통신 (6)
        • 네트워크 (6)
        • 데이터베이스 (1)
      • 🍞 대외활동 & 부트캠프 (42)
        • 삼성 청년 SW 아카데미 (1)
        • LG유플러스 유레카 (0)
        • 한국대학생IT경영학회 (1)
        • IT연합동아리 UMC (17)
        • 길벗 블로깅 멘토 (18)
        • IT연합동아리 피로그래밍 (3)
        • 개발 컨퍼런스 (2)
  • 블로그 메뉴

    • Admin
  • 링크

    • GitHub
  • 인기 글

  • 태그

    JavaScript
    안드로이드
    Android
    level1
    길벗 블로깅 멘토
    알고리즘
    길벗 블로깅 멘토링
    umc
    백준
    level2
    코틀린
    map
    Java
    Front
    C++
    react
    유니온파인드
    위상정렬
    코딩자율학습
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
박빵이
[Java] 객체 간의 협력 collaboration
상단으로

티스토리툴바