컴퓨터공학 💻 도서관📚

Part2. 2-13, 14 객체 간의 협력 본문

✅🌲강의 복습 노트/패캠 JavaSpring 강의,코드 복습

Part2. 2-13, 14 객체 간의 협력

들판속초록풀 2025. 1. 2. 16:51

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


협력을 위해서는 객체들끼리 매개변수를 통해서 필요한 정보를 주고 받는다
매개변수로 객체를 전달하는 경우가 발생한다


* 객체 협력의 예

 

 

MCM

M  : 멤버 변수 (객체 속성)

C : 생성자 (입력 함수)

M : 메서드  (협력, 계산, 출력함수)
객체 간의 협력 --> 메서드에서 객체를 매개변수로 주고받는다

 

 

Main함수:  studentJ , bus100 객체 인스턴스 생성후  studentJ.takeBus(bus100)
-->  Student객체:  bus.take(1000)   (이 코드의 bus는 매개변수 bus)
       -->  Bus객체:  take 함수 수행

 

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);       // 학생이 버스를 타서, 1.버스는 1000원을 벌고,
		this.money -= 1000;                     // 2.학생은 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 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 + "원 입니다");
	}
}

 

 

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);
		
		                           // main 함수(제 3자의 관점): 학생이 버스에 타서 돈을 냈다
		studentJ.takeBus(bus100);      // student의 메서드 활용 (매개변수는 객체Bus)
		studentT.takeSubway(subwayGreen);   // student의 메서드
		
		studentJ.showInfo();
		studentT.showInfo();
		
		bus100.showBusInfo();
		subwayGreen.showSubwayInfo();
	}

}

/*  출력 예시 
James님의 남은 돈은 4000원 입니다
Thomas님의 남은 돈은 8800원 입니다
100번 버스의 승객은 1명 이고, 수입은 1000원 입니다
2번 지하철의 승객은 1명 이고, 수입은 1200원 입니다 */
Comments