각진 세상에 둥근 춤을 추자

[Java] this를 이용하여 객체 간 협력하기 본문

Java

[Java] this를 이용하여 객체 간 협력하기

circle.j 2022. 9. 17. 10:23

객체 지향 프로그램은 객체를 정의하고 객체 간 협력으로 만들어 진다. 

학생이 버스나 지하철을 타고 학교에 가는 것을 객체 지향으로 프로그래밍 해 본다. 

 

 

1. 학생 클래스 구현하기

 

멤버 변수(속성):  '이름', '학년', '가진 돈'

멤버 함수(메서드):  '버스를 탄다', '지하철을 탄다', '학생의 현재 정보를 보여 준다'

 

package ch06_2;

// P175 - 학생 클래스 생성하기

public class Student {
	
	
	public String studentName;	//학생 이름
	public int grade;		//학년
	public int money;		//학생이 가지고 있는 돈
	
	// 학생 이름과 가진 돈을 매개변수로 받는 생성자
	public Student(String studentName, int money) {
		this.studentName = studentName;
		this.money = money;
	}
	
	// 학생이 버스를 타면 1,000원을 지불하는 기능을 구현하는 메서드
	public void takeBus (Bus bus) {
		bus.take(1000);
		this.money -= 1000;
	}
	
	// 학생이 지하철을 타면 1,500원을 지불하는 기능을 구현하는 메서드
	public void takeSubway (Subway subway) {
		subway.take(1500);
		this.money -= 1500;
	}
	
	// 학생의 현재 정보를 출력하는 메서드
	public void show () {
		System.out.println(studentName + "님의 현재 남은 잔액은 " + money + "원 입니다.");
	}
}

 

 

2. 버스 클래스 구현하기

 

멤버 변수(속성): 버스 번호, 승객 수, 버스가 받는 요금 총액

멤버 함수(메서드): 승객 한 명이 버스를 탄 경우를 구현 (거스름돈 생략)

package ch06_2;

// P177 - 버스 클래스 생성하기 

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 show() {
		System.out.println("버스 "+busNumber+"번의 승객은 "+passengerCount+"명이며, 수입은 "+money+"원 입니다.");
	}
	
	
}

 

 

3. 지하철 클래스 구현하기

 

멤버 변수(속성): 노선 번호, 승객 수, 지하철이 받는 요금 총액
멤버 함수(메서드): 승객 한 명이 지하철를 탄 경우를 구현 (거스름돈 생략)

 

package ch06_2;

// P178 - 지하철 클래스 생성하기

public class Subway {
	
	String lineNumber;		// 지하철 노선
	int passengerCount;		// 승객 수
	int money;			// 수입 액
	
	// 지하철 노선 번호를 매개변수로 받는 생성자
	public Subway(String lineNumber) {
		this.lineNumber = lineNumber;
	}
	
	// 승객이 지하철에 탄 경우를 구현하는 메서드
	public void take (int money) {
		this.money += money;
		passengerCount++;
	}
	
	// 지하철 정보를 출력하는 메서드
	public void show() {
		System.out.println(lineNumber+"의 승객은 "+passengerCount+"명이며, 수입은 "+money+"원 입니다.");
	}
}

 

 

4. 학생, 버스, 지하철 객체 협력하기

 

package ch06_2;

// P178 - 학생, 버스, 지하철 객체 협력하기

public class TakeTrans {
	public static void main(String[] args) {
		
		Student s1 = new Student("James", 5000);
		Student s2 = new Student("Jay", 10000);
		
		Bus bus100 = new Bus(100);	// 노선 번호가 100인 버스 생성
		s1.takeBus(bus100);		// James(s1)가 100번 버스를 탑승
		s1.show();			// James 정보 출력
		bus100.show();			// Bus 정보 출력
		
		Subway subwayGreen = new Subway("2호선");	// 노선 번호가 2호선인 지하철 생성
		s2.takeSubway(subwayGreen);			// Jay(s2)가 2호선을 탑승
		s2.show();					// Jay 정보 출력
		subwayGreen.show();				// Subway 정보 출력
		
	
	}
}

'Java' 카테고리의 다른 글

[Java] 변수 유효 범위  (0) 2022.09.17
[Java] static 변수  (0) 2022.09.17
[Java] this를 사용하여 주소 값 반환하기  (0) 2022.09.17
[Java] this로 다른 생성자 호출하기  (0) 2022.09.17
[Java] this 출력하기  (0) 2022.09.16