Languages/Java

[자바 객체 지향 프로그래밍] 06. 기말고사: 자바 실무 프로젝트

Dev다D 2021. 3. 4. 10:44
반응형

영화관 '코드박스' 예약 시스템 pt. 1

 

영화관 '코드박스'에서 좌석 예약 시스템을 개발해달라는 부탁이 왔는데요. 지금까지 배운 객체 지향 프로그래밍 개념을 이용해서 한번 만들어봅시다.

좌석은 A행부터 E행까지 있고, 각 행은 1열부터 9열까지 있습니다.

이번 과제에서는 '영화관(Seat, Theater 클래스)'만 구축하고, 다음 과제에서 '예약'과 '취소' 기능을 구현해봅시다!

Seat 클래스

(1) private String name

예약자 이름을 담습니다.

(2) public String getName()

예약자 이름을 리턴합니다.

(3) public void reserve(String name)

예약자 이름을 설정해줍니다.

(4) public void cancel()

예약자 이름을 없애줍니다. name을 다시 null로 설정하는 것이죠!

(5) public boolean isOccupied()

이미 예약된 자리인지 불린값을 리턴해줍니다.

(6) public boolean match(String checkName)

checkName이라는 이름으로 예약된 자리인지 확인하고, 불린값을 리턴해줍니다.

Theater 클래스

(1) private Seat[][] seats;

전체 좌석을 표현하는 2차원 Seat 배열입니다.

(2) private int rowCount, colCount;

전체 좌석의 행(row)과 열(col)의 수를 담는 변수입니다.

(3) public Theater(int rowCount, int colCount)

Theater 클래스의 생성자입니다. 파라미터로 받은 열과 행의 수에 해당하는 2차원 배열을 만들고, Seat 클래스의 인스턴스들로 배열을 채워줍니다. 모든 Seat 인스턴스는 서로 달라야 합니다. 총 rowCount * colCount개의 인스턴스가 필요하겠죠?

또, 파라미터로 받은 변수들의 값을 각각 동일한 이름의 내부 인스턴스 변수에 넣어줍니다. 예를 들어서 rowCount는 this.rowCount에 넣어줘야 하겠죠?

(4) public void printSeatMatrix()

좌석 정보를 출력하는 메소드입니다. 템플릿으로 제공된 완성된 메소드입니다. 그래도 직접 읽고 이해하려고 노력해보세요!

 

 


package Ex0601;

public class Seat {
    private String name;

    public String getName() {
        return name;
    }

    public void reserve(String name) {
        this.name = name;
    }

    public void cancel() {
        name = null;
    }

    public boolean isOccupied() {
        return name != null;
    }

    public boolean match(String checkName) {
        return name.equals(checkName);
    }
}
package Ex0601;

public class Theater {

    private Seat[][] seats;
    private int rowCount, colCount;

    public Theater(int rowCount, int colCount) {

        if(rowCount > 26) {
            rowCount = 26;
        }

        seats = new Seat[rowCount][colCount];

        for (int i = 0; i < rowCount; i++) {
            for (int j = 0; j < colCount; j++) {
                seats[i][j] = new Seat();
            }
        }

        this.rowCount = rowCount;
        this.colCount = colCount;
    }

    public void printSeatMatrix() {
        System.out.print("  ");
        for (int i = 1; i <= 9; i++) {
            System.out.print("  " + i);
        }
        System.out.println();

        for (int i = 0; i < rowCount; i++) {
            System.out.print((char) ('A' + i) + ": ");
            for (int j = 0; j < colCount; j++) {
                Seat s = seats[i][j];
                if (s.isOccupied()) {
                    System.out.print("[O]");
                } else {
                    System.out.print("[ ]");
                }
            }
            System.out.println();
        }
    }
}

본 내용은 Codeit의  '자바 기초' 강의를
참고하여 작성한 내용입니다.

 

반응형