각진 세상에 둥근 춤을 추자
[Java] this를 이용하여 객체 간 협력하기 본문
객체 지향 프로그램은 객체를 정의하고 객체 간 협력으로 만들어 진다.
학생이 버스나 지하철을 타고 학교에 가는 것을 객체 지향으로 프로그래밍 해 본다.
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 |