오늘 수업에서는 저번에 배웠던 jvm 메모리 구조를 이용하여 간략하게 대중교통 시스템을 재현해 보았다!
이번에 콘솔창에 띄운 정보는 총 5개였다.
- 학생이름
- 남은 돈
- 대중교통 번호
- 수익금(교통비용)
- 승객 수
java에서 어떻게 하면 위 정보들을 콘솔창에 띄울수 있을지 필기와 함께 식을 정리해보았다!
이번 수업에서 만든 영역은 총 4개였다.
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 시스템에 대한 정보를 구축해 놓았다.
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 시스템에 대한 정보를 구축해 놓았다.
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);
}
}
클래스 중 한 부분으로 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)가 차례로 출력하게 된다.
아직은 초반이라 그런지 과정의 원리가 머릿속에 쉽게 정리되지 않는 것 같다. 하지만 꾸준히 하다보면 언젠가 컴퓨터와 제대로 소통할 수 있게 되지 않을까?! 그날까지 파이팅이다!! 👏