ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 객체와 객체간에 상호작용
    Java 2023. 2. 12. 23:20
    학습 목표

    객체간에 메세지를 주고 받을 수 있다(상호작용)

     

     

     

    학생 클래스 만들기

    :takeBus, takeSubway 매개변수에 어떤 데이터 타입이 들어오는지, 담겨 있는 값이 무엇인지 인지하세요.

     

    package ch05;
    
    public class Student {
    	String name; 
    	int money;
    	
    	public Student(String name, int money) {
    		this.name = name; 
    		this.money = money;
    	}
    	
    	//객체간의 협업(핵심부분) 다른 클래스에 영향을 주는것
    	// 학생이 버스를 탄다 
    	public void takeBus(Bus targetBus) {		//버스에 대한 정보를 매개변수로 받아온다. bus는 객체이다.
    		System.out.println("takeBus 메서드 실행 됨");
    		// 요금을 넣어야 한다. 
    		targetBus.take(1_000);	//버스라는 클래스에 1000원을 지불하는 것.
    		this.money = this.money - 1_000;	//1000원이 소비된다.
    	}
    	//객체간의 협업(핵심부분) 다른 클래스에 영향을 주는것
    	// 학생이 지하철을 탄다 
    	public void takeSubway(Subway targetSubway) { //지하철에 대한 정보를 매개변수로 받아온다 Subway는 객체이다.
    		System.out.println("takeSubway 메서드 실행 됨");
    		targetSubway.take(1_200);		//지하철 클래스에 1200원을 지불하는 것.
    		this.money -= 1_200;		//1500원이 소비된다. 
    	}	
    	
    	// 상태창 
    	public void showInfo() {
    		System.out.println("학생의 이름 : " + this.name);
    		System.out.println("학생의 소지금 : " + this.money);
    		System.out.println("-----------------------");
    }
    }

     

    package ch05;
    
    public class Subway {
    	int lineNumber; 	//노선번호
    	int passengerCount; 	//승객수
    	int money; //돈
    	
    	// 생성자 - 리턴 타입 없고 , 클래스 이름과 같다 
    	public Subway(int lineNumber) {	//모든 지하철은 노선을 가져야한다 (기본생성자 설정)
    		this.lineNumber = lineNumber; 
    	}
    	
    	public void take(int money) {		//승객을 태움
    		this.money += money; 	//위의 매개변수를 받았으므로, 받은만큼 돈이 증가한다.
    		this.passengerCount++;		//1명씩 태울때마다 승객수 증가
    	}
    	
    	//상태창
    	public void showInfo() {
    		System.out.println("지하철 호선 : " + this.lineNumber);
    		System.out.println("승객 수 : " + this.passengerCount);
    		System.out.println("수익 금액  : " + this.money);
    	}
    }
    package ch05;
    
    public class Bus {
    	int busNumber; 
    	int passengerCount; 
    	int money; 
    	
    	public Bus(int busNumber) { //모든 버스는 버스 번호를 가져야한다 (기본생성자 설정)
    		this.busNumber = busNumber; 
    	}
    	
    	public void take(int money) {	//승객을 태움
    		this.money += money;	//위의 매개변수를 받았으므로, 받은만큼 돈이 증가해야하므로 +=money로 설정한다.
    		this.passengerCount++;		//승객수 증가
    	}
    	
    	public void showInfo() {
    		System.out.println("버스 번호 : " + this.busNumber);
    		System.out.println("승객 수 : " + this.passengerCount);
    		System.out.println("수익 금액  : " + this.money);
    	}
    }

     

    package ch05;
    
    public class MainTest1 {
    	// 메인 함수 
    		public static void main(String[] args) {
    				Student studentKim = new Student("홍길동", 10_000);
    				Bus bus100 = new Bus(100);
    				Bus bus200 = new Bus(200);
    				Subway subwayLine1 = new Subway(1);
    				Subway subwayLine2 = new Subway(2);
    				
    				// 객체와객체간에 메세지 전달하기 (상호작용하기) 
    				
    				studentKim.takeBus(bus100);
    				System.out.println("-----------");
    				// 학생 정보 확인 
    				studentKim.showInfo();
    				// 버스 정보 확인 
    				bus100.showInfo();
    				//이해 포인트 - 객체간에 메세지 전달법 
    				
    				// 지하철 태워 보기 
    				studentKim.takeSubway(subwayLine2);
    				// 학생 정보 
    				studentKim.showInfo();
    				
    				// 지하철 2호선 정보
    				subwayLine2.showInfo();
    				System.out.println("--------------");
    				subwayLine1.showInfo();
    }
    }
    출력값
    승객 수 : 1
    수익 금액 : 1000
    takeSubway 메서드 실행 됨
    학생의 이름 : 홍길동
    학생의 소지금 : 7800
    -----------------------
    지하철 호선 : 2
    승객 수 : 1
    수익 금액 : 1200
    --------------
    지하철 호선 : 1
    승객 수 : 0
    수익 금액 : 0

     

     

     

    대중교통 이용 프로그램 만들어보기2

    필요한 클래스 : 학생,버스,지하철

    '학생'클래스의 정보 : 이름,돈
    '학생'클래스의 메서드 : 탄다,정보

    '버스'클래스의 정보 : 버스번호,승객수,돈
    '버스'클래스의 메서드 : 태우다,정보
    '지하철'클래스의 정보 : 노선번호, 승객 수,돈
    '지하철'클래스의 메서드 : 태우다,정보
    package ch06;
    
    public class Student {
    	int money;
    	String studentName;
    	
    	public Student(String studentName, int money)
    	{
    		this.studentName = studentName;
    		this.money = money;
    	}
    	
    	// 객체간의 협업 (핵심부분), 다른 클래스에 영향을 주는 것.
    	public void takeBus(Bus bus) // 버스에 대한 정보를 매개변수로 받아온다. bus는 객체이다.
    	{
    		bus.take(1000); // 버스라는 클래스에 1000원을 지불하는 것 
    		money -= 1000; // 1000원이 소비된다.
    	}
    	
    	// 객체간의 협업 (핵심부분), 다른 클래스에 영향을 주는 것.
    	public void takeSubway(Subway subway) // 지하철에 대한 정보를 매개변수로 받아온다. Subway는 객체이다.
    	{
    		subway.take(1500); // 지하철 클래스에 1500원을 지불하는 것 
    		money -= 1500; // 1500원이 소비된다.
    	}
    	
    	public void showInfo()
    	{
    		System.out.println(studentName + "님의 남은 잔액은 " + money + "원 입니다.");
    	}
    
    }
    package ch06;
    
    public class Subway {
    	int lineNumber; // 노선번호
    	int passengerCount; // 승객 수
    	int money; // 돈
    	
    	public Subway(int lineNumber) //모든 지하철은 노선을 가져야한다. (기본생성자 설정)
    	{
    		this.lineNumber = lineNumber;
    	}
    	
    	public void take(int money) // 승객을 태움
    	{
    		passengerCount++;
    		this.money += money; //위의 매개변수를 받았으므로, 받은만큼 돈이 증가해야하므로 += money로 설정한다.
    	}
    	
    	public void showInfo()
    	{
    		System.out.println("지하철 " + lineNumber + "호선의 승객은 " + passengerCount + "명이고, 지하철 수입은 "
    				+ money + "원 입니다.");
    	}
    
    }
    package ch06;
    
    public class MainTest1 {
    
    	public static void main(String[] args) {
    			
    			Student james = new Student("James", 5000);
    			Student bit = new Student("Bit", 10000);
    			
    			// 버스를 타는 제임스
    			Bus bus100 = new Bus(100); // 100번 버스
    			james.takeBus(bus100);
    			james.showInfo();
    			bus100.showInfo();
    			
    			// 지하철을 타는 빛
    			Subway subwaygreen = new Subway(2); // 2호선
    			bit.takeSubway(subwaygreen);
    			bit.showInfo();
    			subwaygreen.showInfo();
    		
    	} // end of main
    
    } // end of class
    출력값
    James님의 남은 잔액은 4000원 입니다.
    버스 100번의 승객은 1명이고, 버스 수입은 1000원 입니다.
    Bit님의 남은 잔액은 8500원 입니다.
    지하철 2호선의 승객은 1명이고, 지하철 수입은 1500원 입니다.

    'Java' 카테고리의 다른 글

    this  (0) 2023.02.13
    접근 제어 지시자  (0) 2023.02.13
    생성자  (0) 2023.02.12
    함수와 스택 메모리  (0) 2023.02.12
    함수(function)  (0) 2023.02.12
Designed by Tistory.