본문 바로가기

소스코드

[코딩습관잡기] - 2.9단계

배열을 이용하여 간단한 극장 예약 시스템을 작성한다.
좌석은 10개이다.
먼저 좌석 배치표를 보여준다.
예약이 끝난 좌석은 1로, 예약이 안된 좌석은 0으로 나타낸다.

예시


 

public class Main {

	public static void main(String[] args) {
		new Back().run();
	}
}

 

public class Back {
	int seatN;
	
	public Back() {
		seatN = 0;
	}
	
	public void run() {
		Show sh = new Show();
		do {
		seatN = new Front().run(sh);
		if(sh.getRseat(seatN)==0) sh.setRseat(seatN);
		else System.out.println("이미 예약된 자리입니다.");		
		} while(seatN!=-1);
	}	
}

 

import java.util.Scanner;

public class Front {
	private int seatNum;
	
	public Front() {
		seatNum = -1;
	}	
	public int run(Show sh) {
		Scanner scan = new Scanner(System.in);
		System.out.print("좌석을 예약하시겠습니까? (y/n)");
		if(scan.next().equals("y")) seatNum += input(sh);
		return seatNum;
	}
	
	public int input(Show sh) {
		Scanner scan = new Scanner(System.in);
		sh.showSeats();
		System.out.print("\n몇번째 좌석을 예약하시겠습니까?>>");
		int seat = scan.nextInt();
		return seat; 
	}
}

 

public class Reservation {
	int[] Rseat;
	
	public Reservation() {
		Rseat = new int[10];
	}

	
	public int getRseat(int i) {
		return Rseat[i];
	}


	public void setRseat(int i) {
		Rseat[i] = 1;
	}
}

 

public class Show extends Reservation {
	String str;
	
	public Show () {
		str = "--------------------------------------"
				+"\n 1 2 3 4 5 6 7 8 9 10"
				+"\n--------------------------------------";
	}
	public void showSeats() {
		System.out.println(str);
		for(int i=0;i<10;i++)
			System.out.printf(" %d",super.getRseat(i));
	}
}

 

쌤이 코딩할 때 프론트에서 하는 일, 백에서 하는 일, DB관련 하는 일을 구분해서 생각해보라고 하셨다.

클래스 설계를 잘하는 사람은 DB설계도 잘하고, DB설계를 잘하는 사람은 클래스 설계도 잘한다고...

설계부터 잘 해야 나중에 꼬이거나 에러가 났을 때도 빠른 해결이 가능하다고 한다.

그래서 첨에 습관 잡을 때는 해당 직무군에서 무슨 일을 할지 나눠서 짜보라고해서 문제를 보고 짜보았다.

이렇게 분리하는 연습을 하면서 객체지향언어를 사용하는 이유에 대해 다시 한 번 생각하게 됐다.