[상속-11] 업캐스팅 Bus 연습문제

seratpfk·2022년 8월 1일
0

JAVA

목록 보기
62/96

연습문제

  • Bus, Seat, Person, Student, Alba 클래스 생성
	Bus bus = new Bus(25);
	bus.ride(1, new Person("kim"));
	bus.ride(5, new Student("choi"));
	bus.ride(10, new Alba("min"));
	bus.info();

Person클래스 생성(메인메소드 없음)

  • 모두가 가지는 공통요소(이름)을 필드로 생성한다.
	private String name;
	public Person(String name) {
		super();
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

Student클래스 생성(메인메소드 없음)

  • Person과 상속관계
  • 필드 없음.
public class Student extends Person{
	public Student(String name) {
		super(name);	
	}
}

Alba클래스 생성(메인메소드 없음)

public class Alba extends Student {
	public Alba(String name) {
		super(name);
	}
}

Seat클래스 생성(메인메소드 없음)

	private Person person;
    public Person getPerson() {
		return person;
	}
	public void setPerson(Person person) {
		this.person = person;
	}

Bus클래스 생성(메인메소드 없음)

	private Seat[] seats;  // 배열 선언
	private int limit;     // 버스 정원
	// Bus 생성자에서 배열 생성을 진행함
	public Bus(int cnt) {
		seats = new Seat[cnt];  // 배열 생성, new Bus(25)인 경우 Seat가 25개 생성됨
		limit = cnt;
		for(int i = 0; i < cnt; i++) {
			seats[i] = new Seat();
		}
	}
	// ride() 메소드
	public void ride(int seatNo, Person person) {
		// 존재하지 않는 시트번호
		if(seatNo <= 0 || seatNo > limit) {
			return;  // ride() 메소드 종료
		}
	// 시트에 사람이 없으면, 시트번호에 Person 저장하기
		Seat seat = seats[seatNo - 1];
		Person p = seat.getPerson();
		if(p == null) {
			seat.setPerson(person);
		}
	}
	// info() 메소드
	public void info() {
		for(int i = 0; i < limit; i++) {  // limit은 seats 배열의 length와 같음
			Seat seat = seats[i];
			Person person = seat.getPerson();  // Seat seat = seat[i]; 없애고 Person person = seat.getPerson();
			if(person != null) {  // if(seat.getPerson() != null), if(seat[i].getPerson();
				System.out.println((i + 1) + "," + person.getName());
				// System.out.prinln((i + 1) + "," + seat.getPerson().getName()); 
				// System.out.prinln((i + 1) + "," + seats[i].getPerson().getName()); 
			} else {
            	System.out.println((i+1) + ", 비어 있음");
            }    
		}
	}

Main클래스 생성(메인메소드 설정)

	public static void main(String[] args) {
		Bus bus = new Bus(25);
		bus.ride(1, new Person("kim"));
		bus.ride(5, new Student("choi"));
		bus.ride(10, new Alba("min"));
		bus.info();
	}

출력:
1,kim
2, 비어 있음
3, 비어 있음
4, 비어 있음
5,choi
6, 비어 있음
7, 비어 있음
8, 비어 있음
9, 비어 있음
10,min
11, 비어 있음
12, 비어 있음
13, 비어 있음
14, 비어 있음
15, 비어 있음
16, 비어 있음
17, 비어 있음
18, 비어 있음
19, 비어 있음
20, 비어 있음
21, 비어 있음
22, 비어 있음
23, 비어 있음
24, 비어 있음
25, 비어 있음

0개의 댓글