어제만든 방식이 아닌거 같아서 엎고 다시 만들기로 했다.
그리고 오전에 코드리뷰와 튜터님 설명이 있어서 참고해서 만들었다.
TIL 작성법
코드리뷰 & 튜터님 설명
- 추가 기능까지 한다면 hashMap 추천
- 어떤 요구사항을 받았나
-> 각 클래스 만들고 역할을 생각해볼것
- 클래스(참고용)
-> 상품 : 상품 화면이 아니라 상품 자체의 내용
-> 메뉴 : 메인메뉴 내용
-> 주문 : 장바구니/ 장바구니 추가, 삭제, 주문
-> main은 가져와서 실행만
-> 스크린 : 내용 출력
- 객체지향은 여러 객체를 만들어 활용하는 것, 객체 없이 순서대로 작성하는 것은 절차 지향적임
- 객체지향 설명
-> 추상 클래스와 인터페이스 거의 동일하며 추상 클래스를 인터페이스로 바꿀 수 있다.
-> 인터페이스 :여러 클래스들을 행위로 묶은 것(회전하다 -> 선풍기, 헬리콥터)
-> 추상 클래스 : 구체적인 여러 클래스들을 일반화된 개념으로 묶은 것(동물 -> 사람,참새, 고양이)
문제(java)
가상의 메뉴판을 하나 만들고 상품을 선택하여 주문하기, 취소하기에 기능을 가진 키오스크 만들기
- 메인 메뉴판 -> 상품 메뉴판 -> 구매화면 -> 주문화면 -> 주문완료 화면 -> 주문취소 화면
- 필수 요구사항
- 메뉴 클래스는 이름, 설명 필드를 가지는 클래스로 만들어주세요.
- 상품 클래스는 이름, 가격, 설명 필드를 가지는 클래스로 만들어주세요.
- 상품 클래스의 이름, 설명 필드는 메뉴 클래스를 상속받아 사용하는 구조로 개발해주세요.
- 주문 클래스도 만들어서 상품 객체를 담을 수 있도록 해주세요.
문제풀기
- 각 화면을 print로 만들고 선택해야하는 부분은 Scanner를 사용하기
- 다른 화면으로 이동은 페이지별 메서드 만들어서 main에서 호출
- 선택지가 많은 경우 swich문 사용
- 메뉴 클래스(부모), 상품 클래스(자식) 으로 선언한 필드 상속
- 기본 클래스 메뉴,상품,주문에 출력용으로 스크린,키오스크 추가하여 진행
각 메뉴를 print로 만들고 이동시 필요한 정보(input)은 scanner로 받아서 정보에 따라 맞는 페이지를 출력한다.
++ 기존에 필드를 여러개 만들어서 진행했는데 다시 필드 3개로 선언하여 메서드로 만들어 출력
오류 & 해결
- 어제한 내용과 달리 필드 3개로 name, detail, price 세트를 3개 출력할 방법을 찾아야 한다. 처음엔 2차 배열을 생각했으나 고정된 값이니 더 간단한 방법이 좋을거 같아서 필드 선언 후 메서드로 출력 했다.
public void mainmenu(int num, String name, String detail){
System.out.println(num + ". "+ String.format("%-10s",name) +"|"+ detail);
}
Product product = new Product();
product.mainmenu(1,"Coffee","다양한 원두가 있는 커피");
- 같은 클래스 내에 있는 메서드를 불러오는 법
product.mainmenu 만 보다가 같은 클래스는 잠깐 헷갈렸다,확인용으로 적어둠
this.Coffee();
this.NonCoffee();