221103 대중교통 시스템 재현하기

니바지·2022년 11월 6일
1

오늘 수업에서는 저번에 배웠던 jvm 메모리 구조를 이용하여 간략하게 대중교통 시스템을 재현해 보았다!

이번에 콘솔창에 띄운 정보는 총 5개였다.

  1. 학생이름
  2. 남은 돈
  3. 대중교통 번호
  4. 수익금(교통비용)
  5. 승객 수

java에서 어떻게 하면 위 정보들을 콘솔창에 띄울수 있을지 필기와 함께 식을 정리해보았다!


이번 수업에서 만든 영역은 총 4개였다.

- Taketrans

main메서드. 누가 무엇을 몇 번 탑승했는지 등의 정보를 담는 그릇과 같은 역할을 한다!! 각 인스턴스를 여기 만들어 놓기도 했음.

package javastudy;

public class Taketrans {

	public static void main(String[] args) {
		// TODO 자동 생성된 메소드 스텁
		
		Student s = new Student("홍길동", 1000); //매개변수 값을 만들지 않으면 오류가 뜸. //홍길동 객체(인스턴스)
		Bus bus = new Bus(1);
		s.takeBus(bus); //버스 타는 기능 실행 -- Student 클래스에서 호출
		s.showInfo(); //-- Student 클래스에서 호출
		bus.showInfo();//-- Student 클래스에서 호출
		
		System.out.println("----------------------------------");
		
		Student s2 = new Student("이순신", 3000);
		Subway subway = new Subway("2호선");
		s2.takeSubway(subway); //지하철 타는 기능 실행 -- Student 클래스에서 호출
		s2.showInfo();//-- Student 클래스에서 호출
		subway.showInfo();//-- Student 클래스에서 호출
		
	}
	
		
}

- Bus

클래스 중 한 부분으로 Bus 시스템에 대한 정보를 구축해 놓았다.

package javastudy;

public class Bus {
	
		//멤버변수(전역) - 초기화가 자동으로 된다.
	
		int busNumber; //차량번호
		int busMoney; //수입금 (승객에게서 빠져나가는 금액)
		int passengerCount; //승객수
		
		
		public Bus(int no) { 
			this.busNumber = no; //객체의 value값 (버스 번호)
		}
		
		public void take(int money) { //승객의 수에 따라 수익금이 오르도록 식을 짬.
			this.busMoney += money;
			this.passengerCount ++;
		}
		
		public void showInfo() {
			System.out.println("버스 번호: " + busNumber);
			System.out.println("수입금: " + busMoney);
			System.out.println("승객 수: "+ passengerCount);
		}
}

- Subway

클래스 중 한 부분으로 Subway 시스템에 대한 정보를 구축해 놓았다.

package javastudy;

public class Subway {
	
	String lineNumber; //지하철 호선
	int subwayMoney; //수입금 (승객에게서 빠져나가는 금액)
	int passengerCount; //승객수
	
	public Subway(String no) {
		this.lineNumber = no; //객체의 value값 (지하철 호선)
	} 

	public void take(int money) { //승객의 수에 따라 수익금이 오르도록 식을 짬.
		this.subwayMoney += money;
		passengerCount++;
		}
	
	public void showInfo() { //지하철 타기 기능
		System.out.println("지하철 라인: " + lineNumber);
		System.out.println("수익금: " + subwayMoney);
		System.out.println("승객 수: " + passengerCount);
	}
}

- Student

클래스 중 한 부분으로 Taketrans에 만들어 놓은 인스턴스 정보를 담아놓았으며, 매개변수를 통해 인스턴스에게 인자값을 제공한다.

package javastudy;

public class Student {
	//인스턴스 = 메모리 가상 공간에 만들어진 객체.
	
	//멤버변수(전역의 기능을 가지고 있다.)
	public String name;
	public int studentMoney;
	
	public Student(String nm, int money) { //매개변수가 있는 생성자
		this.name = nm;					//매개변수로 넘어온 값을 멤버변수에 담는다
		this.studentMoney = money;
	}
	
	public void takeBus(Bus bus) { //버스를 타는 기능
		bus.take(500); //버스 타기 기능을 실행시킨다.
		this.studentMoney -= 500;
	}
	
	public void takeSubway(Subway subway) { //지하철을 타는 기능
		subway.take(1000); //지하철 타기 기능을 실행시킨다.
		this.studentMoney -= 1000; 
	}
	
	public void showInfo() { //설명을 해주는 기능
		System.out.println("학생 이름은? " + name);
		System.out.println("남은 돈은? " + studentMoney);
	}
}

각 클래스에 대한 정보는 main메서드인 Taketrans 파일에 담기고, Taketrans의 console을 실행하면 각 양식에 맞춰 학생 이름과 남은 돈 (s.showInfo), (s2.showInfo), 버스 번호(지하철 라인)와 수익금, 승객수(bus.showInfo),(subway.showInfo)가 차례로 출력하게 된다.


아직은 초반이라 그런지 과정의 원리가 머릿속에 쉽게 정리되지 않는 것 같다. 하지만 꾸준히 하다보면 언젠가 컴퓨터와 제대로 소통할 수 있게 되지 않을까?! 그날까지 파이팅이다!! 👏

profile
N잡러를 꿈꾸는 코딩 학도의 우당탕탕 코딩 입문기🍳

0개의 댓글