JAVA - 클래스에서 다른 클래스 호출하기

Luna·2022년 12월 1일
0

JAVA

목록 보기
8/32
  • 처음while문과 switch문을 배웠을 때 만든 코드를 활용하여 메인클래스에서 다른 클래스를 불러오는 프로그램을 만들었다.
    공지사항, 쇼핑몰, 장바구니, 주문정보, 회원관리, 그리고 잘못 입력했을 때 다시 입력하라는 메세지도 나올 수 있게 항목을 만들어놓고 종료를 누르기 전까진 계속 반복하게 하는 코드이다.
  • 일단 공지사항과 쇼핑몰 클래스만 따로 만들어서 1번 공지사항을 입력했을 때 그냥 "공지사항입니다" 라고 단순하게 띄우는 단계를 넘어가서 공지사항 목록을 나오게 만들었다. 그리고 Main 클래스에서 만들었던 0번의 종료버튼을 이전메뉴(Main)로 돌아가는 항목으로 수정했다.

내가 만든 코드

Main Class

package project1201;

import java.util.Scanner;

//1.공지사항, 2.쇼핑몰, 3.장바구니 4.주문정보, 5.회원관리, 0.종료

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;
			} // end of switch
		} // end of while
	} // end of main()
} // end of BoardController2 class

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 객체를 새로 생성 할 필요가 없음.

0개의 댓글