강의를 참고해 상속없이, 객체 간의 협업으로 만든 프로그램이므로 코딩 난이도는 다소 떨어질 수 있습니다.
Introduction
필요한 클래스 : 학생, 버스, 지하철
'학생'클래스의 정보 : 이름, 학년, 돈
'학생'클래스의 메서드 : 탄다, 정보
'버스'클래스의 정보 : 버스번호, 승객 수, 돈
'버스'클래스의 메서드 : 태우다, 정보
'지하철'클래스의 정보 : 노선번호, 승객 수, 돈
'지하철'클래스의 메서드 : 태우다, 정보
첫번째 클래스 (Student.java)
package cooperation;
public class Student {
int grade;
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 + "원 입니다.");
}
}
학생 클래스를 만들었으면 이 학생이 이용할 클래스인 버스와 지하철을 만들어주어야한다. (객체간의 협업)
두번째 클래스 (Bus.java)
package cooperation;
public class Bus {
int busNumber; // 버스번호
int passengerCount; // 승객 수
int money; // 돈
public Bus(int busNumber) //모든 버스는 번호를 가져야한다. (기본생성자 설정)
{
this.busNumber = busNumber;
}
public void take(int money) // 승객을 태움
{
passengerCount++;
this.money += money; //위의 매개변수를 받았으므로, 받은만큼 돈이 증가해야하므로 += money로 설정한다.
}
public void showInfo()
{
System.out.println("버스 " + busNumber + "번의 승객은 " + passengerCount + "명이고, 버스 수입은 "
+ money + "원 입니다.");
}
}
버스 클래스에서 승객의 수를 카운트할 passengerCount와 승객이 지불한 돈을 증가시켜야하므로
this.money += money; 를 써준다.
세번째 클래스 (Subway.java)
package cooperation;
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 + "원 입니다.");
}
}
버스 클래스와 마찬가지로 구현해준다.
테스트할 클래스 (메인함수 포함) (takeTrans.java)
package cooperation;
public class takeTrans {
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();
}
}
Student james = new Student 로 Student.java 클래스에 대한 객체를 생성하게 된다.
Student 클래스에서는 String studentName과 int money를 기본 매개변수로 받고자 하므로
new Student("James", 5000); 처럼 한번에 설정해주는 것이다.
Bus bus100 = new Bus(100)에서도 마찬가지이다.
Bus.java 클래스에 대한 객체를 생성하는데,
public Bus(int busNumber)처럼 기본 매개변수로 버스번호를 받고자하므로 new Bus(100)으로 설정해준다.
showInfo()라는 함수로 잘 처리되었는지 확인한다.
Result
'Programming > Java_자바' 카테고리의 다른 글
[JAVA 기초] 제네릭 프로그래밍, 컬렉션 프레임워크 (0) | 2022.01.13 |
---|---|
[JAVA 기초] 상속과 다형성의 간단한 예제 (동물) (0) | 2021.12.25 |
[JAVA 기초] 생성자 (0) | 2021.12.08 |
[JAVA 기초] (2, 8, 10,16) 진수 별 표현 방식 및 출력 (0) | 2021.12.06 |
[JAVA 에센셜] 자바 코딩 연습_챕터4_실습문제 (0) | 2021.04.06 |