- 처음
while
문과 switch
문을 배웠을 때 만든 코드를 활용하여 메인클래스에서 다른 클래스를 불러오는 프로그램을 만들었다.
공지사항, 쇼핑몰, 장바구니, 주문정보, 회원관리, 그리고 잘못 입력했을 때 다시 입력하라는 메세지도 나올 수 있게 항목을 만들어놓고 종료를 누르기 전까진 계속 반복하게 하는 코드이다.
- 일단 공지사항과 쇼핑몰 클래스만 따로 만들어서 1번 공지사항을 입력했을 때 그냥 "공지사항입니다" 라고 단순하게 띄우는 단계를 넘어가서 공지사항 목록을 나오게 만들었다. 그리고 Main 클래스에서 만들었던 0번의 종료버튼을 이전메뉴(Main)로 돌아가는 항목으로 수정했다.
내가 만든 코드
Main Class
package project1201;
import java.util.Scanner;
public class Main {
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
while (true) {
System.out.println("[메인 화면 입니다.]");
System.out.println("선택할 항목의 번호를 입력 해주세요.");
System.out.println("1.공지사항, 2.쇼핑몰, 3.장바구니, 4.주문정보, 5.회원관리, 0.종료");
System.out.print("입력 >> ");
String menu = scanner.nextLine();
System.out.println();
switch (menu) {
case "1":
System.out.println("[공지사항 입니다.]");
Notice notice = new Notice();
notice.excute();
break;
case "2":
System.out.println("[쇼핑몰 입니다.]");
Shop shop = new Shop();
shop.excute();
break;
case "3":
System.out.println("장바구니 목록 입니다.");
System.out.println();
break;
case "4":
System.out.println("주문정보 입니다.");
System.out.println();
break;
case "5":
System.out.println("회원관리 페이지 입니다.");
System.out.println();
break;
case "0":
System.out.println("종료 되었습니다.");
System.out.println();
System.exit(0);
default:
System.out.println("잘못 입력 하셨습니다.");
System.out.println();
break;
}
}
}
}
Notice Class
package project1201;
import java.util.Scanner;
public class Notice {
public void excute() {
while (true) {
System.out.println("선택할 항목의 번호를 입력 해주세요.");
System.out.println("1.리스트, 2.글보기, 3.글쓰기, 4.글수정, 5.글삭제, 0.이전메뉴");
System.out.print("입력 >> ");
Scanner scanner = new Scanner(System.in);
String menu1 = scanner.nextLine();
switch (menu1) {
case "1":
System.out.println("리스트 입니다.");
System.out.println();
break;
case "2":
System.out.println("글보기 입니다.");
System.out.println();
break;
case "3":
System.out.println("글쓰기 입니다.");
System.out.println();
break;
case "4":
System.out.println("글수정 입니다.");
System.out.println();
break;
case "5":
System.out.println("글삭제 입니다.");
System.out.println();
break;
case "0":
System.out.println("이전메뉴로 돌아갑니다.");
System.out.println();
return;
default:
System.out.println("잘못 입력 하셨습니다.");
System.out.println();
break;
}
}
}
}
Shop Class
package project1201;
import java.util.Scanner;
public class Shop {
public void excute() {
while (true) {
System.out.println("선택할 항목의 번호를 입력 해주세요.");
System.out.println("1.리스트, 2.글보기, 3.글쓰기, 4.글수정, 5.글삭제, 0.이전메뉴");
System.out.print("입력 >> ");
Scanner scanner = new Scanner(System.in);
String menu1 = scanner.nextLine();
switch (menu1) {
case "1":
System.out.println("리스트 입니다.");
System.out.println();
break;
case "2":
System.out.println("글보기 입니다.");
System.out.println();
break;
case "3":
System.out.println("글쓰기 입니다.");
System.out.println();
break;
case "4":
System.out.println("글수정 입니다.");
System.out.println();
break;
case "5":
System.out.println("글삭제 입니다.");
System.out.println();
break;
case "0":
System.out.println("이전메뉴로 돌아갑니다.");
System.out.println();
return;
default:
System.out.println("잘못 입력 하셨습니다.");
System.out.println();
break;
}
}
}
}
다른 클래스 호출하기
case "1":
System.out.println("[공지사항 입니다.]");
Notice notice = new Notice();
notice.excute();
break;
case "2":
System.out.println("[쇼핑몰 입니다.]");
Shop shop = new Shop();
shop.excute();
break;
- 맨 처음에 다른 클래스를 어떻게 불러오지 했을 때 객체를 먼저 생성해야 된다는건 알았다.
notice
클래스와 shop
클래스는 static
클래스가 아니기 때문에 객체가 필요했다. 클래스타입의 변수를 선언하고 new
를 통해 객체를 만들고 나서, 이 클래스를 어떻게 불러와야 하는지 잠깐 머뭇 거렸다.
- 당연히 구글의 도움을 받았다. 검색해서 알아 내고 난 뒤에는 너무 간단한것조차 생각 못했다는 자괴감이(?)밀려왔다. 그렇게 예습 복습을 했어도 막상 실전 코드에 써먹지 못한다면 무용지물이다. 이래서 자꾸 작은 프로젝트라고 혼자 구상해서 만들어보라는 얘기가 나오는 것 같다.
선생님이 만든 코드
- 크게 다른 부분이나 내 코드보다 더 간결한 코드만 비교했음.
Main Class
System.out.println("\n---------- Main ----------\n");
System.out.println("1.공지사항 2.쇼핑몰 3.장바구니");
System.out.println("4.주문정보 5.회원관리 0.종료");
- 메뉴 출력시에
System.out.println();
을 출력하여 코드 한 줄을 추가 하는 것 보다 \n
을 통해 줄바꿈을 해서 코드를 간결화 할 수 있음. 그리고 1번부터 0번까지 코드가 너무 길게 나오면 보기가 불편할 수 있으니 두 줄로 나눠서 메뉴를 출력하여 가독성을 좋게 함.
Notice, Shop Class
String menu = Main.scanner.nextLine();
- 메인 클래스에서 이미
public static Scanner scanner = new Scanner(System.in);
라고 선언했고 어차피 입력 받는 키보드가 여러개가 아니므로 Notice 클래스에서는 그냥 메인에 있는 scanner
를 갖다 쓰면 된다. 굳이 Notice 클래스나 Shop 클래스에서 scanner 객체를 새로 생성 할 필요가 없음.