휴먼교육센터 개발자과정 48일차

조하영·2022년 10월 14일
0

인터페이스

동일한 기능을 보장하기 위한 것. 자바의 다형성을 이용하여 코드를 줄이고 유지보수를 용이하게 함.
인터페이스를 통해 객체간의 응집도를 낮춘다.

이론
추상 메서드-선언만하고 구현하지 않은 메서드, 강제적으로 메서드 구현해야함.
상수 - 변수값이 있는데 수정을 못하는 값(절대적:구현받은 객체 수정불가)
정적(static)메서드 - 구현까지 된 메서드이며 무조건 사용해야하며 재정의 불가(절대적)
디폴트 메서드 - 구현까지 된 메서드이며 선택적으로 재정의 가능

사용예
지원하는 인터페이스를 사용 - gui ActionListner 등
내가 직접 정의해서 사용

인터페이스 실습

메인 클래스

package main;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new ItemADM();
    }

}

메뉴클래스

package main;

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

import item.Dduck;
import item.Item_DTO;
import item.Item_INF;
import item.Kimbab;
import item.Ramen;

public class ItemADM {
    Scanner in = new Scanner(System.in);
    Item_INF nowItem;
    Item_DTO m = new Item_DTO();
    ArrayList<Item_INF> iList = new ArrayList<>();

    public ItemADM() {
        for (;;) {
            System.out.println("오늘의 메뉴----");
            System.out.println("1. 라면");
            System.out.println("2. 떡볶이");
            System.out.println("3. 김밥");
            System.out.println("4. 프로그램종료");
            System.out.println("메뉴 선택>>>>");

            int sel = in.nextInt();
            in.nextLine();

            if (sel == 1) {
                nowItem = new Ramen();
                running(sel);
            } else if (sel == 2) {
                nowItem = new Dduck();
                running(sel);
            } else if (sel == 3) {
                nowItem = new Kimbab();
                running(sel);
            }else if (sel == 4) {
                break;
            }
        }
    }

    public void running(int sel) {
        while (true) {
            menu();
            int sel2 = in.nextInt();
            in.nextLine();
            if (sel2 == 1) {
                showInfo();
            } else if (sel2 == 2) {
                addItem(sel);
            } else if (sel2 == 3) {
                payItem();
            } else if (sel2 == 4) {
                showBasket();
            } else if (sel2 == 5) {
                break;
            }
        }
    }

    private void showBasket() {
        for (Item_INF i : iList) {
            i.showInfo();
        }

    }

    private void payItem() {
        nowItem.pay();

    }

    private void addItem(int sel) {
        if (sel == 1) {
            System.out.println("------------");
            System.out.println("라면 종류는 두가지 입니다.");
            System.out.println("주문할 라면을 입력하세요(쉰라면,진라면)");
            String name = in.nextLine();
            System.out.println("주문할 수량을 입력하세요");
            int cnt = in.nextInt();
            in.nextLine();
            m.setCnt(cnt);
            m.setName(name);
            if (name.equals("쉰라면")) {
                m.setPrice(1500);
            } else {
                m.setPrice(2000);
            }
            nowItem.insert(m);
            iList.add(nowItem);

        } else if (sel == 2) {
            System.out.println("------------");
            System.out.println("떡 종류를 입력하세요(밀떡,쌀떡)");
            String Dduck = in.nextLine();
            System.out.println("맵기를 입력하세요(강/중간/보통)");
            String hot = in.nextLine();
            String name = Dduck + " / " + hot;
            System.out.println("주문할 수량을 입력하세요");
            int cnt = in.nextInt();
            in.nextLine();
            m.setCnt(cnt);
            m.setName(name);
            m.setPrice(2000);
            nowItem.insert(m);
            iList.add(nowItem);

        } else if (sel == 3) {
            System.out.println("------------");
            System.out.println("김밥 종류는 세가지 입니다.");
            System.out.println("주문할 김밥을 입력하세요(참치/일반/돈까스)");
            String name = in.nextLine();
            System.out.println("주문할 수량을 입력하세요");
            int cnt = in.nextInt();
            in.nextLine();
            m.setCnt(cnt);
            m.setName(name);
            if (name.equals("일반")) {
                m.setPrice(2000);
            } else {
                m.setPrice(3000);
            }

            nowItem.insert(m);
            iList.add(nowItem);

        }

    }

    private void showInfo() {
        nowItem.showcomment();

    }

    public void menu() {
        System.out.println("------------");
        System.out.println("1. 정보보기");
        System.out.println("2. 장바구니담기");
        System.out.println("3. 계산하기");
        System.out.println("4. 주문내역");
        System.out.println("5. 이전메뉴");
        System.out.println("선택하세요>>>");
    }
}

아이템 인터페이스

package item;


public interface Item_INF {

    public void showInfo();
    public void showcomment();
    public void insert(Item_DTO m);
    public void pay();


}

아이템 DTO

package item;

public class Item_DTO {
    String name;
    int price;
    int cnt;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public int getCnt() {
        return cnt;
    }
    public void setCnt(int cnt) {
        this.cnt = cnt;
    }


}

라면 클래스

package item;


public class Ramen implements Item_INF{
    String kind = "라면";
    String comment = "면은 그저 시작일 뿐, 국물이 라면의 완성";
    String name;
    int price;
    int cnt;

    @Override
    public void insert(Item_DTO m) {
        this.name = m.getName();
        this.price = m.getPrice();
        this.cnt = m.getCnt();

    }

    @Override
    public void pay() {
        System.out.println("지불하실 금액은 "+ price * cnt + "원 입니다.");

    }

    @Override
    public void showInfo() {
        System.out.println("------------");
        System.out.println(kind);
        System.out.println(name);
        System.out.println("가격: "+ price);
        System.out.println("수량: "+ cnt);

    }

    @Override
    public void showcomment() {
        System.out.println(comment);

    }

}

김밥클래스

package item;

public class Kimbab implements Item_INF {
    String kind = "김밥";
    String comment = "옆구리가 터저야 제맛이지";
    String name;
    int price;
    int cnt;

    @Override
    public void insert(Item_DTO m) {
        this.name = m.getName();
        this.price = m.getPrice();
        this.cnt = m.getCnt();

    }

    @Override
    public void pay() {
        System.out.println("지불하실 금액은 "+ price * cnt + "원 입니다.");

    }

    @Override
    public void showInfo() {
        System.out.println("------------");
        System.out.println(kind);
        System.out.println(name);
        System.out.println("가격: " + price);
        System.out.println("수량: " + cnt);

    }

    @Override
    public void showcomment() {
        System.out.println(comment);

    }

}

떡볶이 클래스

package item;


public class Dduck implements Item_INF {
    String kind = "떡볶이";
    String comment = "맛에 빠져서 하나 더먹으려니 없어졌네~~";
    String name;
    int price;
    int cnt;

    @Override
    public void insert(Item_DTO m) {
        this.name = m.getName();
        this.price = m.getPrice();
        this.cnt = m.getCnt();

    }

    @Override
    public void pay() {
        System.out.println("지불하실 금액은 "+ price * cnt + "원 입니다.");

    }

    @Override
    public void showInfo() {
        System.out.println("------------");
        System.out.println(kind);
        System.out.println(name);
        System.out.println("가격: "+ price);
        System.out.println("수량: "+ cnt);

    }

    @Override
    public void showcomment() {
        System.out.println(comment);

    }

}
profile
공부하는 개발자

0개의 댓글