내일 배움 캠프

드디어 개인과제이다
개인과제로는 키오스크 기능을 하는 코드를 짜는 것인데
우선 오늘의 설정 목표는 큰틀을 잡으며 조금 코드를 써보는 것이다!!
깃부터 만들고 연결 하고 시작하쟝~

어떤 영업을 할껀지 과제에 대한 큰 틀짜기

예제로 나와있는것은 쉑쉑버거의 메뉴였다.
하지만 나는 다른것을 하고싶은데 어떤걸 하면 좋을까 하다가
그래도 내가 경험해봤고 잘 알고있는 카페를 하는게 어떨까 했다.
크게 참고될만한 카페는 개인적으로는 스타벅스보다는 투썸플레이스를 좋아하니까
그리고 실제로 투썸은 키오스크를 사용을 하니까 그쪽 메뉴를 참고하여 만들어 보려한다.
사실 카페도 겹칠꺼 같아서 걱정이 되지만 카페 메뉴와 이삭토스트를 결합할수도 있다..

클래스 나누기

우선적으로 한것은 어떤 클래스들을 생성할것인지였다
1.키오스크라는 자바를 생성하여 그것을 구동하면 모든것을 입력하고 할수있게끔 구동할것이다
2.메뉴!!응당 필요하다!이름과 설명을 가져있어야한다
3.product각 상품의 설명을 가져있는 클래스를 만든다
4.order 주문된 상품 리스트(장바구니 개념)을 가지는 클래스가 필요하다.

우선은 당장은 모든것을 다 구현하기는 힘드니
에제로 제공된것을 보면서 완벽 구현까지는 아니더라도 정도껏 구현을 해봐야겠다.
키오스크 클래스에 들어갈 내용은
1.메뉴보기
2.제품 주문
3.주문 내역보기(장바구니 역할)
4.결제하기
5.아무것도 안하고 나가기
인것같다

즉 1번부터 해보자고

메뉴클래스!!!!

키오스크에서 새로운 메뉴를 추가해도 표기할수있게끔
클래스를 지정해줄 필요가있다.
당연하겠지만 메뉴의 이름을 저장할곳이 있어야지

    // 메뉴의 이름을 저장하는 변수를 생성해준다.
    private String name;

    // 메뉴에 대한 간단한 설명을 저장하는 변수이다
    private String description;

이런식으로 시작을 잡아서 가보도록 하자

    public Menu(String name, String description) {
        this.name = name;
        this.description = description;
    }

객체생성자이다 메뉴의 이름과 설명을 받아서 초기화하는 역할을 하는 코드가 작성되고
이름과 설명을 반환하는 return 을 설정해주면 어느정도 메뉴에 대한 클래스 작성은 끝난거 같다.
내가 원하는데로 작동만한다면...

public class Menu {
    private String name;
    private String description;

    public Menu(String name, String description) {
        this.name = name;
        this.description = description;
    }

    public String getName() {
        return name;
    }

    public String getDescription() {
        return description;
    }

    @Override
    public String toString() {
        return name + ": " + description;
    }
}

가장 마지막줄 오버라이드는 이제 이름과 설명을 받았으면 그것에 대한 모양을 저런식으로
메뉴이름 : 메뉴설명 으로 반환하게끔 만들어둔것이다.

이제 메뉴를 만들었으니까 그 자식을 만들어 볼 차례인거 같다

Product 클래스!!!

일단 배운대로 extends를 이용해서 메뉴클래스를 확장해주며 상속을 받아주고!!!
메뉴에서는 이름과 설명만 놔뒀으니 각 상품의 가격을 지정해줄 필요가 있다
그렇기에

private double price ;

라는 변수를 생성해줘서 가격을 입력받을수 있도록 한다.
그러면 이제 싹다 긁어와서 여기서 작업을 해줘야하니까
부모한테 받아와야겠지???

 public Product(String name, String description, double price) {
 super(name, description); 
 this.price = price;
 }

super를 활용하여 부모 즉 메뉴 클래스에 있는 친구를 긁어온뒤에
여기 있는 this를 사용해서 여기에서 가격을 불러와준다 그리곤 뭐 가격을 반환해주고
이쁘게 표시를 해줘야겠지????
메뉴 클래스와 같이 오버라이드 기능을 이용하여서

   @Override
    public String toString() {
        return super.toString() + " | 가격: " + price;
    }
}

을 활용해준다
그러면 전반적으로 메뉴와 프로덕트 클래스를 완성할수있다.
이제 그럼 슬슬 키오스크 클래스를 만들어볼까한다.

키오스크 클래스!!!!(메인)

우선 자바에서 사용할 기능들을 쫙쫙 뽑아와보자고

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

이 기능들을 사용할거라고 인포트 해준뒤에
private List<Product> products;
을 추가해주며 상품 목록을 저장하는 리스트를 만들어준다.
그리고 아까 위에서 말한데로 키오스크를 시작하는 메서드를 만들어줘야하는데

  public void start() {
        while (true) {
            System.out.println("\nYULL's CAFE에 오신 것을 환영합니다!");
            System.out.println("1. 메뉴 보기");
            System.out.println("2. 제품 주문");
            System.out.println("3. 주문 내역 보기");
            System.out.println("4. 결제하기");
            System.out.println("5. 나가기");
            System.out.print("옵션을 선택해주세요: ");

            int choice = scanner.nextInt();
            scanner.nextLine();

무한 루프를 이용해서 나가기를 선택하기 전까지는 계속 입력을 해야하는것을 만들어주었다...이름은 우선 내맘이니까 내 카페여!!!!!!
이렇게 했는데 아차 싶었다...맞아....예제랑 너무 다르네??
바로 수정

    public void start() {
        while (true) {
            System.out.println("\nYULL's CAFE에 오신 것을 환영합니다!");
            System.out.println("1. 커피");
            System.out.println("2. 차");
            System.out.println("3. 토스트");
            System.out.println("4. 디저트");
            System.out.println("5. 장바구니");
            System.out.println("6. 나가기");
            System.out.print("옵션을 선택해주세요: ");
            int choice = scanner.nextInt();
            scanner.nextLine();

이런식으로 수정을 해줬다
물론 수정을 해줌으로서 나의 할일은 더 늘어난게 문제이긴하지만
그래도 어쩌겠는가
각 카테고리 마지막 주차의 숙제에서 배운 카테고리로 분류하고 각자의 카테고리만 호출하게끔
바꿔주면 되는것이다 그래서 예로 products.add(new Product("아메리카노", "에스프레소에 물을 추가한 음료", 3.5));만 들어가던 것에 뒤쪽에 ,커피를 넣어줌으로서 카테고리를 형성할수 있게 되었다...
왐마 이까지 했는데 벌써시간이....
더 해야한다 오늘 틀은 만들어야 할것아냐!!!!
적어도 안에 들어갈 메뉴들은 작성을 해보자

각각의 카테고리를 나눠놨으니까

   private void initializeProducts() {
        products.add(new Product("아메리카노", "국민음료? 당신의 하루는 언제나 아메리카노로 시작하는거 다알아요!!!", 3.5, "커피"));
        products.add(new Product("라떼", "우유와 함께한 에스프레소의 궁합!! 고소한 커피를 경험해보세요.", 4.0, "커피"));
        products.add(new Product("카푸치노", "에스프레소와 밀크의 댄스파티! 너무 신나서 거품이 마구...길라임씨가 되어보세요.", 4.5, "커피"));
        products.add(new Product("모카", "초코의 달콤함과 에스프레소의 깊은 만남! 쫀독쫀독 달달에 빠져보세요.", 4.8, "커피"));
        products.add(new Product("바닐라 라떼", "바닐라의 달달한 속삭임에 에스프레소가 넘어가 부렸으~.", 5.0, "커피"));
        products.add(new Product("플랫 화이트", "카푸치노? 아님 플랫 화이트? 거기서 거기니까 고민하지말기로해요 ", 4.3, "커피"));
        products.add(new Product("콜드 브루", "시간을 내어 차가운 물에 담긴 커피의 완숙한 향기! 얼음과의 혀에 닿는 깔끔함!", 4.7, "커피"));
        products.add(new Product("더치 커피", "더치로 나를 주세요! 드리프로 6시간 동안 나오기만 고대하던 커피의 기다림.", 5.2, "커피"));
        products.add(new Product("아포가토", "이도저도 아니야 난 아이스크림이 좋아!하는 당신의 선택", 5.5, "커피"));

        // 차 카테고리
        products.add(new Product("아이스 티", "뜨숩은 차가 심심할 땐 아이스로 즐겨보는건 어떤가요? 아샷추 가능!!", 3.0, "차"));
        products.add(new Product("레몬에이드", "레몬의 활력! 그냥 에이드가 아니라 T.O.P 에이드 . 탄산의 춤을 느껴보세요!", 3.8, "차"));
        products.add(new Product("프룻 스무디", "생과일로만 만들어서 당신의 활기도 살아나게 해줄!!!!", 5.5, "차"));
        products.add(new Product("아이스 초코", "초콜릿이 더위에 지쳐 쉬고 싶다며 아이스로 변신! 시원한 휴가를 즐기는 중!", 4.2, "차"));
        products.add(new Product("허브의 숲", "마시면 마법의 숲에 빠지는 기분? 신비로운 허브 차", 3.5, "차"));
        products.add(new Product("로즈위스퍼", "장미의 꽃말처럼 사랑의 속삭임 그게 질투일지 순수한 사랑일지는 당신의 옆에 누가있는지에 달렸죠! 러블리한 장미차", 4.0, "차"));
        products.add(new Product("홍차 대모험", "가게만의 특볋한 블랜딩으로 만들어진 홍차의 탐험같은 차!", 3.8, "차"));
        products.add(new Product("차올려라!", "우린 명차를 마신다! 우전 녹차로 명차중 명차인 녹차!!", 4.2, "차"));
        products.add(new Product("춘식이용", "춘식이가 좋아하는 고구마가 라떼가 되어 돌아온 것! 달콤하게 깜짝 놀라는 맛", 4.5, "차"));


        // 토스트 카테고리
        products.add(new Product("평범한 토스트?", "버터와 잼의 비밀스러운 데이트!", 2.0, "토스트"));
        products.add(new Product("치즈 토스트", "치즈가 숨어있어! 누가 나를 찾나?(치즈양이 적다는건 아녀유...)", 2.5, "토스트"));
        products.add(new Product("아보카도의 대모험", "아보카도와 계란의 토스트 위 콜라보!!", 3.5, "토스트"));
        products.add(new Product("아보카도 VIP", "아보카도가 주인공, 계란은 특별출연!", 4.0, "토스트"));
        products.add(new Product("햄치즈 토스트 파티", "햄과 치즈의 뜨거운 빵위에서 놀이!", 3.5, "토스트"));
        products.add(new Product("계란 토스트", "계란만의 무대! 이걸 고른 당신 아마 편식쟁이...?", 3.0, "토스트"));
        products.add(new Product("크림치즈의 꿈", "녹아내리는 크림치드 ft.후라이의 꿈", 3.8, "토스트"));
        products.add(new Product("땅콩버터 토스트", "땅콩버터의 맛으로 미쿡의 등교길이 생각날 맛!", 3.2, "토스트"));
        products.add(new Product("시나몬 토스트", "시나몬의 무대! 시나몬이 왕밤빵 많이 뿌려져있다구!", 3.6, "토스트"));

        // 디저트 카테고리
        products.add(new Product("치즈케이크", "치즈가 웃다! 행복의 원조!", 4.0, "디저트"));
        products.add(new Product("티라미수 ", "커피와 치즈의 이탈리아 정통 연애 방식!", 4.5, "디저트"));
        products.add(new Product("브라우니", "꾸덕함을 원하는 당신은 이걸 고르게 된다!!", 3.8, "디저트"));
        products.add(new Product("마카롱", "설탕덩어리고 살찌지만 어쩌겠어 맛있는걸?", 2.5, "디저트"));
        products.add(new Product("파운드 케이크", "세계를 돌며 찾은 최고의 커피 파트너!", 3.5, "디저트"));
        products.add(new Product("푸딩", "몰랑몰랑 탱글탱글 커피랑 안어울려도 너만 있다면야!", 3.0, "디저트"));
        products.add(new Product("젤라또", "이탈리아의 쫀득함이 한입과 한 수저에 가득!", 4.0, "디저트"));
        products.add(new Product("무스", "에어리한 질감으로 흐느적흐느적!!!", 4.2, "디저트"));
        products.add(new Product("크렘 브륄레", "크림의 꽃, 설탕의 불꽃!딱딱함 속에 감춰진 부드러움 like you!", 4.8, "디저트"));

    }

나의 아이디어 뱅크의 산물......

웹서버 강의

저녁이후의 시간에는 강의가 또 준비되어있어서
웹에대한 내용을 배운다!!!!!

웹 서버 강의 요약

웹 서버의 비유: 웹 서버는 '고양이'와 같다.

고양이는 그 무엇에 대한 요청이든 응답하고 처리한다는 점에서 웹 서버와 유사성을 가진다.

웹 서버의 정의: 서버는 클라이언트의 요청에 대해 응답하고 처리하는 시스템이다.

웹 서버의 목적: 우리가 학습하고 만들 것은 웹 서버입니다.

웹 서버의 주요 기능은 정적 페이지 제공과 API 제공이다.

백엔드의 비유: 백엔드 개발은 레스토랑에서 주방의 역할을 한다.

주방은 요리를 제공하는 곳이며, 백엔드는 데이터와 서비스를 제공한다.

배포 방법

통합 배포: 프론트엔드와 백엔드를 동시에 한 웹 서버에서 구성하고 배포.
웹 서버 수: 1개

분리 배포: 프론트엔드와 백엔드를 각각 다른 웹 서버에서 구성하고 배포.
웹 서버 수: 2개

백엔드만의 배포: 백엔드만을 구성하여 웹 서버에서 배포.
웹 서버 수: 1개

프론트엔드만의 배포 (서버리스 개발): 프론트엔드만을 구성하여 웹 서버에서 배포.
서버리스(Serverless) 개발: 백엔드 서버 없이 프론트엔드만으로 서비스를 구현하는 방식
웹 서버 수: 1개
최근 추세: 서버리스 개발이 점점 더 주목받고 있음.스타트업에서 쉽기때문에!!!!!

회고

오늘은 뭔가 완성을 하고싶었는데 하지 못해서 좀 아쉽다...
하지만 내일은 완성을 해보도록하자!!!!!!!!!!!!!!!
그래도 뭔가 많이 했잖아?허헣

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글