• JAVA_학생이 대중교통을 이용하는 과정을 객체지향 프로그래밍하기.

    2021. 8. 2.

    by. KAEY


      - 해당 코드를 참조만 하시고, 복사 붙여넣기를 통한 과제를 진행하시면 도움이 정말 하나도 안됩니다. 부디 직접해보시고, 다른 사람의 솔루션이 어떤 지 참조하시는 정도로만 사용해주세요.


    1. 학생 클래스

    public class Student {
      public String studentName; // 학생 이름
      public int grade; // 학년
      public int money; // 학생이 가지고 있는 돈
      
        public Student(String studentName, int money){ // 이름과 돈 초기화하기
          this.studentName = studentName;
          this.money = money;
        }
        
        public void takeBus(Bus bus) {
          bus.take(1000);
          this.money -= 1000;
        }
        
        public void takeSubway(Subway subway) {
          subway.take(1500);
          this.money -= 1500;
        }
        
        public void showInfo() {
        System.out.println(studentName + "님의 남은 돈은 " + money + "입니다.");
        }
    }

     


    2. 버스 클래스

    public class Bus {
      int busNumber; // 버스 번호
      int passengerCount; // 승객 수
      int money; // 버스의 수입
      
        public Bus(int busNumebr){ // 버스 번호를 매개변수로 받는 생성자
        this.busNumber = busNumebr;
        }
        
        public void take(int money){ // 승객이 낸 돈을 받음 
        this.money += money; // 버스의 수입 증가
        passengerCount++; // 승객 수 증가
        }
        
        public void showInfo() { // 버스 정보를 출력하는 함수
        System.out.println("버스 " + busNumber + "번의 승객은 " + passengerCount +"명이고, 수입은 "
        + money + "입니다.");
        }
    }

     


    3. 지하철 클래스

    public class Subway {
      public String lineNumber; // 지하철 노선 번호
      public int passengerCount; // 승객 수
      public int money; // 수입 액
      
        public Subway(String lineNumber) { // 지하철 노선 초기화
        this.lineNumber = lineNumber; 
        }
        
        public void take(int money) { // 승객이 탄 경우
        this.money += money; // 수입 증가
        passengerCount++; // 승객 수 증가
        } 
        
        public void showInfo(){ // 지하철 정보 출력
        System.out.println(lineNumber + "의 승객은 " + passengerCount +"명이고, 수입은 " + money + 
        "입니다.");
        }
    }

     


    4. 2명의 학생이 각각 버스와 지하철을 타고 학교에 간다.

    public class TakeTrans {
    
      public static void main(String[] args) {
      // 두 명의 학생을 생성
      Student studentChris = new Student("Chris", 5000); 
      Student studentEmily = new Student("Emily", 10000);
      
      Bus bus100 = new Bus(100);
      studentChris.takeBus(bus100); // Chris가 100번 버스를 탐
      studentChris.showInfo(); // Chris 정보 출력
      bus100.showInfo(); // 버스 정보 출력
      
      Subway subwayGreen = new Subway("2호선"); 
      studentEmily.takeSubway(subwayGreen); // Emily가 2호선을 탐
      studentEmily.showInfo(); // Emily 정보 출력
      subwayGreen.showInfo(); // 지하철 정보 출력
      }
    }

     


    5. 세 번째 학생인 janna 가 택시를 타고 학교를 가고, 1만원을 지불한 과정을 표현.

    TakeTrans.java
    
    		Student studentJenna= new Student("Jenna", 20000);
            //추가
            
            	Taxi KakaoTaxi = new Taxi("카카오 택시");
    		studentJenna.takeTaxi(KakaoTaxi); //제나가 카카오택시를 탐
    		studentJenna.showInfo(); //제나 출력
    		KakaoTaxi.showInfo(); //택시정보출력
            //추가

     해당 코드를 추가하여 Jenna에 대한 Student 메소드 생성, 그 후 택시에 대한 정보를 입력하고 출력하도록 함.

     

     

    Student.java
    
    	  public void takeTaxi(Taxi taxi) {
    		  taxi.take(10000);
    		  this.money -= 10000;
    	  }

    Student 클래스에 takeTaxi에 정보를 넣습니다.

     

     

    package java08_1week;
    
    public class Taxi {
    	String TaxiName; // 택시 이름
    	int passengerCount; // 승객 수
    	int money; // 택의 수입
    		  
    	public Taxi(String taxiName){ // 버스 번호를 매개변수로 받는 생성자
    		this.TaxiName = taxiName;
    	}
    		    
    	public void take(int money){ // 승객이 낸 돈을 받음 
    		this.money += money; // 택시의 수입 증가
    		passengerCount++; // 승객 수 증가
    	}
    		    
    	public void showInfo() { // 택시 정보를 출력하는 함수
    		System.out.println("택시 "+"\""+ TaxiName +"\""+ "의 승객은 " + passengerCount +"명이고, 수입은 "
    				+ money + "입니다.");
    		System.out.println("************************************");
    	}
    }

    그 후 Taxi.java 파일을 생성하여, 해당 Taxi 정보들에 대한 정리와 출력을 하도록 합니다.

     

     


    6. 네 번째 학생인 Vicky는 4000원을 내고 별다방에서 아메리카노를 사서 마셨습니다. Spencer는 콩다방에서 4500원을 내고 카페라떼를 사 마셨습니다. 앞의 예제를 참고하여 이 과정을 객체지향으로 프로그래밍해보세요.

    TakeTrans.java
    
    		Student studentVicky= new Student("Vicky", 30000);
    		Student studentSpencer= new Student("Spencer", 30000);
            //추가
            
            	Cafe cafestar = new Cafe("별다방", "ame");
    		studentVicky.takeCafeAme(cafestar); // 비키가 별다방에 감
    		studentVicky.showInfo(); //비키 출력
    		cafestar.showInfo(); // 별다방 출력
    		
    		Cafe cafekong = new Cafe("콩다방", "latte");
    		studentSpencer.takeCafeLatte(cafekong); // 스팬서 콩다방 감
    		studentSpencer.showInfo(); //스팬서 출력
    		cafekong.showInfo(); //콩다방정보출력

     비키와 스팬서의 정보를 각각 생성, 관리.

     

     

    package java08_1week;
    
    public class Cafe {
    	String CafeName; // 카페이름
    	String CafeMenu; // 카페메뉴
    	int money; // 카페의 수입
    		  
    	public Cafe(String cafeName, String cafeMenu){ // 
    		this.CafeName = cafeName;
    		this.CafeMenu = cafeMenu;
    	}
    		    
    	public void take(int money, String cafeMenu){ // 승
    		this.CafeMenu = cafeMenu; // 카페메뉴
    		this.money += money;
    	}
    		    
    	public void showInfo() { // 
    		System.out.println("카페 "+"\""+ CafeName +"\""+ "의 메뉴이름은 " + CafeMenu +"이고, 수입은 "
    				+ money + "입니다.");
    		System.out.println("************************************");
    	}
    }

    그 후 cafe.java 파일을 생성하여 정보들을 관리하고 출력합니다.

     

     

    Student.java
    
    	  public void takeCafeAme(Cafe cafe) {
    		  cafe.take(4000, "ame");
    		  this.money -= 4000;
    	  }
    	  
    	  public void takeCafeLatte(Cafe cafe) {
    		  cafe.take(4500, "latte");
    		  this.money -= 4500;
    	  }

    그 후 student.java 파일에 해당 카페 음료에 대한 정보를 넣어 cafe.java 클래스로 전달해줍니다.

     

     


    결과 화면

     


    이게 맞는건지도 모르겠고, 출력은 맞게 되는데 옳게 짠건가..? 맞나ㅠㅠ..

     

    댓글 (비로그인 댓글 허용하지 않습니다.)