Dev.J

[JAVA] 문제 4-4 학생이 버스나 지하철을 타고 학교에 가는 것을 객체 지향 프로그램으로 구현 본문

Solved

[JAVA] 문제 4-4 학생이 버스나 지하철을 타고 학교에 가는 것을 객체 지향 프로그램으로 구현

JJ____ 2021. 9. 5. 20:43

 학생이 버스나 지하철을 타고 학교에 가는 것을 객체 지향 프로그램으로 구현한다.

 제시하지 않은 것은 임의로 추가하여 구현.

 학생클래스(Student)

   멤버변수 : 이름(name), 학년(grade), 가진 돈(money)

   메소드

     버스탄다(takeBus) : 버스를 타면 1000원을 지불

     지하철탄다(takeSubway) : 지하철을 타면 1500원을 지불

     학생의 현재 정보(showInfo) : 이름과 남은 돈을 출력

 버스클래스(Bus)

   멤버변수 : 버스번호(busNumber), 승객수(passengerCount), 버스 수입(money)

   버스 번호를 매개변수로 받는 생성자

   메소드

   take : 승객 한명이 버스를 탄 경우. 요금을 매개변수로 받고 승객수와 버스 수입 증가

   showInfo : 버스 번호와 승객수, 버스 수입을 출력

 지하철클래스(Subway)

   멤버변수 : 지하철노선(lineNumber), 승객수(passgengerCount), 수입액(money)
   지하철 노선 번호를 매개변수로 받는 생성자

   메소드

   take : 승객 한명이 지하철에 탄 경우. 요금을 매개변수로 받고 승객수와 지하철 수입 증가

   showInfo : 지하철번호와 승객수, 지하철 수입을 출력

 

 아래 두 명의 학생이 버스(1000원)와 지하철(1500원)을 각각 한 번씩 타고 학교에 갈 때, 각자 가진 돈의 변화와 버스, 지하철의 수입을 출력하는 프로그램을 작성하시오.

    학생1 : “홍길동”, 5000원

    학생2 : “이길동”, 10000

 

---------

 

학생 클래스(Student)

public class Student1 {

String name = "";
int grade = 0;
int money = 0;

public Student1(String n, int m) {
this.name = n;
this.money = m;
}

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(name + "님의 남은 돈은" + money + "원");
// return을 쓸라면 void 자리에 int 등을 쓰고 반환타입에 println을 쓸라면 void를 써야함
}
}

 

버스 클래스(Bus)

class Bus {
int busNumber = 0;
int passengerCount = 0;
int money = 0;

public Bus(int busNumber) {
this.busNumber = busNumber;
}

public void take(int money) {
this.money += money; // 요금을 매개변수로 받고 버스 수입 증가
passengerCount++;
}

public void showInfo() {
System.out.println("버스번호는" + busNumber + "승객수는" + passengerCount + "버스 수입은" + money);
}
}

 

지하철 클래스(Subway)

class Subway {
int lineNumber = 0;
int passgengerCount = 0;
int money = 0;

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

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

public void showInfo(){
System.out.println("지하철 번호는" + lineNumber + "승객수는" + passgengerCount + "지하철 수입은" + money);
}
}

 

Main 클래스

public class Trans_simulation {

public static void main(String[] args) {
Student1 S1 = new Student1("홍길동", 5000);
Student1 S2 = new Student1("이길동", 10000);

Bus bus100 = new Bus(100); //버스 번호를 매개변수로 받음
Subway subway2 = new Subway(2); //지하철 노선을 매개변수로 받음.

S1.showInfo();
S1.takeBus(bus100);
bus100.showInfo();
S1.showInfo();
System.out.println("");
S2.showInfo();
S2.takeSubway(subway2);
subway2.showInfo();
S2.showInfo();

}
}

 

문제풀이_JJ_1
문제풀이_JJ_2
문제풀이_JJ_3
문제풀이 및 결과_JJ_4

728x90