Tiny Star

📌TIL [Today I Learn]

[TIL] 23년 5월 30일 화요일

청크 2023. 5. 30. 21:28

23년 5월 30일 화요일

오늘의 목표 : 개인 과제 - 키오스크 시스템 만들기

 

오늘 공부한 내용🤓

자바 코드로 키오스크 만들기 개인 과제를 받았다.

그동안 팀원들과 함께 힘을 합쳤던 것과 달리 오로지 내 힘으로만 해내야 하는 과제다. 

개인 과제 하느라 휴일도 없이 15시간씩 코드를 들여다봤지만 아직 한 달 차 자바 뉴비에게는 코드 한 줄 한 줄 작성하는 게 쉽지만은 않은 것 같다.

 

과제 제출 D-2

아직 키오스크 코드를 완성하지 못했지만 코드를 대략 6번정도 엎고 다시 작성하면서 객체지향 파트에 대해서 배운 것이 몇 가지 있다.

 

1. 생성자 + 객체 자신을 가리키는 this의 개념에 대해 완벽하게 알게되었다.

책으로 봤을 때는 생성자가 왜 필요한지, this를 왜 쓰는지 조차 이해가 안 갔는데프로젝트를 위해 코드를 작성해 보니

매개변수와 클래스의 값의 이름이 일치할 때 this를 통해 컴퓨터에게 알려줘야 한다는 걸 알았다.

    public Menu() {
        //기본 생성자
    }
    public static String title = "Welcome to Connects Coffee Espresso Bar";
    public Menu(String name, String explanation) {
        this.name = name;
        this.explanation = explanation;
    }

2. 글로만 읽었던 메서드를 직접 만들어봤다.

    public void ProductArr(Product[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.println(i + 1 + "." + arr[i].name + "|" + arr[i].explanation + "|" + arr[i].price + "원");
        }

    }

3. 가장 큰 난제였던 같은 패키지 안의 class 내용을 Main class으로 연결시키기를 성공했다.

   public void selectMenu(int order1) {
//        System.out.println(order1);
        if (order1 == 1) {
            System.out.println(" ========= [CAFE] ========= ");
            Product[] Cafe = new Product[4];
            Cafe[0] = new Product("Cafe Espresso", "에스프레소, 설탕(설탕이 필요 없는 경우 미리 말씀해주세요.)", 2900);
            Cafe[1] = new Product("Cafe Strapazzato", "에스프레소, 설탕, 카카오", 3300);
            Cafe[2] = new Product("Cafe Gege", "에스프레소,카카오, 크림", 3800);
            Cafe[3] = new Product("Cafe Romano", "에스프레소, 설탕, 레몬", 4300);
            Product p = new Product();
            p.ProductArr(Cafe);
            Scanner sc = new Scanner(System.in);
            int order = sc.nextInt();
            if (order >= 1 && order <= Cafe.length) {
                // User selected a valid menu item
                System.out.println();
                System.out.printf(Cafe[order - 1].name + Cafe[order - 1].explanation + Cafe[order - 1].price + "원");

                // Ask if the user wants to add to cart
                System.out.println();
                System.out.println("위 메뉴를 장바구니에 추가하시겠습니까?");
                System.out.println("1. 확인");
                System.out.println("2. 취소");

            } else {
                // Invalid input
                System.out.println("유효하지 않은 선택입니다.");
            }
        } else if (order1 == 2) {

처음에는 무작정 메인 필드에다가 엄청난 양의 메뉴들을 sout으로 출력해 나갔다.

그 결과 코드는 늘어지고 메모리는 갉아먹고,,, 악순환의 무한반복을 책에서 열심히 찾아서 해결했다.

 

아직 코드가 많이 복잡하긴 하지만 메뉴 리스트를 모두 Product class로 옮기고 

Main class에서 메뉴리스트를 감싼 클래스 selectMenu를 불러오기까지 성공했다.

Product p = new Product();

p.selectMenu(order1);

 

완벽하고 깔끔한 코드를 짠 건 아니지만, 내 손으로 하나의 큰 산을 넘었다는 것에 의의를 두기로 했다.

 

어려웠던 내용😵‍💫

어떤 주제를 가지고 자바로 구현하는 게 아직은 익숙하지가 않다.

어떤 클래스를 만들어야 하는지, 어떤 클래스를 상속받아야 하는지는 알겠으나 그 클래스들의 내용을 채워가는 게 쉽지 않다.

궁금&부족한 내용❓

같은 패키지 안에서 다른 클래스 내용을 불러오면 자꾸 오류가 발생한다.

다른 사람들은 쉽게 쉽게 불러오는 것 같은데, 왜 나만 오류가 나는 걸까...

느낀 점💡

이론에서 배운 내용을 응용하는 것이 잘 안 되고 있기 때문에 계속해서 코드를 작성하면서 익숙해져야 할 것 같다.

작성한 코드를 엎는다는 것 자체가 너무 아깝고 속상했다.한번 꼬인 코드를 지금은 풀 수 없기 때문에 과감하게 처음부터 다시 작성해 봤는데 그렇게 하길 잘했다고 생각한다.코드를 계속 반복해서 작성할수록 점점 간결하게 작성할 수 있고,

 하루하루 객체지향 파트에 대해 이해하는 것들이 늘어나서 뿌듯하다.

 

 

 

 

 

 

 

 

 

 

 

'📌TIL [Today I Learn]' 카테고리의 다른 글

[TIL] 23년 6월 01일 목요일  (0) 2023.06.01
[TIL] 23년 5월 31일 수요일  (0) 2023.05.31
[TIL] 23년 5월 25일 목요일  (0) 2023.05.25
[TIL] 23년 5월 24일 수요일  (0) 2023.05.24
[TIL] 23년 5월 23일 화요일  (0) 2023.05.23