객체 활용에 대한 예시를 풀어보았다.
kwon와 chan는 각각 버스와 지하철을 타고 학교에 갑니다.
kwon는 5000원을 가지고 있었고, 100번 버스를 타면서 1000원을 지불합니다.
chan는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불합니다.
두 학생이 버스와 지하철을 타는 상황을 구현해 봅시다.
필드
가. 학생
1) 학생이름
2) 학생이 가지고 있는 초기 금액
나. 버스
1) 버스 이용 금액
2) 버스 번호
3) 버스 승객 (추가)
다. 지하철
1) 지하철 이용 금액
2) 지하철 번호
3) 지하철 승객 (추가)
메서드
가. 학생
1) 버스를 탔을 때 금액 감소 (버스객체)
2) 지하철을 탔을 때 금액 감소 (지하철 객체)
3) 학생별 남은 돈 출력
나. 버스
1) 버스 이용 금액과 승객 카운트
2) 버스 이용 정보 출력
다. 지하철
1) 지하철 이용 금액과 승객 카운트
2) 지하철 이용 정보 출력
package fastcampus.p02object;
public class Bus {
int lineNumber;
int passengers;
int money;
public Bus(int lineNumber) {
this.lineNumber = lineNumber;
}
public void take(int money) {
this.money += money;
passengers++;
}
public void showSubwayInfo() {
System.out.println(lineNumber + "번 버스의 승객은 " + passengers + "명 이고, 수입은 " + money + "원 입니다");
}
// 한번에 여러명 계산
public void usingBus(int lineNumber, int passengers, int money) {
this.lineNumber = lineNumber;
this.passengers += passengers;
this.money += (passengers * 1000);
}
}
필드값으로 lineNumber, passengers, money(요금)
생성자에 lineNumber 를 받도록 하여 진행한 것 유의
take 메서드를 통해서 버스의 정보 (요금 수익, 승객수) 를 기입해줄 수 있다.
showSubwayInfo 메서드를 통해서 Bus 에 저장된 정보들을 출력한다.
package fastcampus.p02object;
public class Subway {
int lineNumber;
int passengers;
int money;
public Subway(int lineNumber) {
this.lineNumber = lineNumber;
}
public void take(int money) {
this.money += money;
passengers++;
}
public void showSubwayInfo() {
System.out.println(lineNumber + "번 지하철의 승객은 " + passengers + "명 이고, 수입은 " + money + "원 입니다");
}
// 한번에 여러명 계산
public void usingSubway(int lineNumber, int passengers, int money) {
this.lineNumber = lineNumber;
this.passengers += passengers;
this.money += (passengers * 1200);
}
}
필드값으로 lineNumber, passengers, money(요금)
생성자에 lineNumber 를 받도록 하여 진행한 것 유의
take 메서드를 통해서 지하철의 정보 (요금 수익, 승객수) 를 기입해줄 수 있다.
showSubwayInfo 메서드를 통해서 Subway 에 저장된 정보들을 출력한다.
3. 학생
package fastcampus.p02object;
public class Student {
// 학생이 처음 가지고 있는 돈
private int money;
// 학생 이름
private String name;
public Student(String name, int money) {
this.name = name;
this.money = money;
}
public void SubwayUse(Subway sub) {
sub.take(1200); // 활용을 위해서 대입
this.money -= 1200;
}
public void BusUse(Bus bus) {
bus.take(1000); // 활용을 위해서 대입
this.money -= 1000;
}
public void showInfo() {
System.out.println(name + " 학생의 남은돈 : " + money);
}
}
SubwayUse(Subway sub) 은 지하철을 탄 학생의 money 를 지하철 이용 운임만큼 차감해주는 메서드이다. SubwayUse의 매개변수는 subway 타입의 매개변수를 받음에 유의한다.
또한 sub.take(1200)은 Subway 객체에 해당 정보를 넣어줄 수 있다.
BusUse(Bus sub) 은 버스를 탄 학생의 money 를 버스 이용 운임만큼 차감해주는 메서드이다.BusUse의 매개변수는 Bus 타입의 매개변수를 받음에 유의한다.
또한 sub.take(1200)은 Bus 객체에 해당 정보를 넣어줄 수 있다.
showInfo 는 학생 클래스 필드에 저장된 정보를 출력해준다.
4. 실행 클래스
package fastcampus.p02object;
public class StudentTest {
public static void main(String[] args) {
Student kwon = new Student("권권", 5000);
Student chan = new Student("찬찬", 10000);
Bus bus = new Bus(100);
Subway sub = new Subway(2);
kwon.BusUse(bus);
chan.SubwayUse(sub);
kwon.showInfo();
chan.showInfo();
sub.showSubwayInfo();
bus.showSubwayInfo();
}
![](https://velog.velcdn.com/images/kwonkwon18/post/14c74dca-11ac-48f1-9098-73682a4e40cf/image.gif)
}
//권권 학생의 남은돈 : 4000
//찬찬 학생의 남은돈 : 8800
//2번 지하철의 승객은 1명 이고, 수입은 1200원 입니다
//100번 버스의 승객은 1명 이고, 수입은 1000원 입니다
세가지 객체를 모두 활용하여 적용해보는 예제였다.