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

조하영·2022년 9월 21일
0
  1. 변수는 기억공간이다. 그리고 선언후에 사용할 수 있다.

  2. 선언문 : 자료형 변수 초기값
    자료형 : 원시타입과 참조타입
    클래스 형태도 정의가 됨 : 제공받는 클래스
    내가 정의한 클래스

           원시타입 : 내가 사용하고자는 데이터를 값을 저장(int char boolean byte)
           참조타입 : 내가 사용하고자 하는 객체의 주소값을 저장

    추가> 객체는 new 연산자로 만들고 힙에 저장한다. 그리고 참조타입변수는 객체의 주소값을 저장한다.

  3. 클래스는 객체가 아니다. 객체를 정의하고 있다..
    new 생성자(); 이런 식으로 new 연산자가 있어야 객체가 만들어 진다. 이 객체는 실제 내가 사용하려고 하는 것.
    생성자는 메서드 다. 그리고 클래스 이름과 동일하다. 객체가 만들어 질때 호출된다. 재호출 불가.
    ** 클래스는 레시피, 레시피로 만들어진 실제 내가 먹으려고 하는 음식이 객체

  4. 메서드
    메서드는 특정 기능을 정의 한 것
    메서드는 정의부와 호출부를 따로 구분하여 기억, 메서드를 정의 놓고 호출하면서 사용한다.
    호출부는 정의된 메서드이 기능을 사용하는 곳.. 예를들어 String a ="aaaa"; a.contains() // 메서드 호출불
    메서드 정의는 접근제어자 리턴타입 메서드명(매개변수 1, 2 , 3 ){
    }
    리턴타입은 메서드가 호출되고 메서드가 실행되고 결과물을 호출부로 리턴한다. 이때 리턴하는 값이 리턴값이 되고
    리턴값의 타입이 리턴타입이된다. 메서드 정의에서는 리턴타입을 기입한다.

  5. 객체 정의는 즉 클래스를 정의 하는 의미이다.
    클래스는 전역변수와 메서드로 구성한다.
    전역변수는 데이터를 기억하는 것. 메서드는 기능을 수행하는 것(여기서 메서드는 정의를 의미한다)

마켓관리 프로그램

메인마켓 클래스

package Market;

public class MainMarket {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("프로그램 시작");
        new MainMenu();
        System.out.println("프로그램 종료");
    }

}

메인메뉴 클래스

package Market;

import java.util.Scanner;

public class MainMenu {
    Scanner in = new Scanner(System.in);
    GoodsManeger a = new GoodsManeger();
    Member b = new Member(a);

    MainMenu() {
        for (;;) {
            menu();
            String selMenu = in.nextLine();
            if (selMenu.equals("1")) {
                a.runGoods();
            } else if (selMenu.equals("2")) {
                b.goShopping();
            } else if (selMenu.equals("3")) {
                break;
            } else {
                System.out.println("잘못된 입력입니다.");
            }
        }
    }

    private void menu() {
        System.out.println("-----------");
        System.out.println("1. 물건관리");
        System.out.println("2. 쇼핑하기");
        System.out.println("3. 종료");
        System.out.println("-----------");

    }

}

물건관리 클래스

package Market;

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

public class GoodsManeger {
    ArrayList<Goods> gList = new ArrayList<>();
    Scanner in = new Scanner(System.in);

    public void runGoods() {
        for (;;) {
            menu();
            String selMenu = in.nextLine();
            if (selMenu.equals("1")) {
                addGoods();
            } else if (selMenu.equals("3")) {
                listGoods();
            } else if (selMenu.equals("2")) {
                modGoods();
            } else if (selMenu.equals("4")) {
                delGoods();
            } else if (selMenu.equals("5")) {
                searchGoods();
            } else if (selMenu.equals("6")) {
                break;
            } else {
                System.out.println("잘못된 입력입니다.");
            }
        }
    }
    private void searchGoods() {
        System.out.println("검색할 이름을 입력하세요");
        String b = in.nextLine();
        boolean flag = false;
        for (int i = 0; i < gList.size(); i++) {
            if (gList.get(i).name.equals(b)) {
                System.out.println(b + "와 같은 이름");
                gList.get(i).prt();
                flag = true;
                System.out.println("--------------");
            } else if (gList.get(i).name.indexOf(b) != -1) {
                System.out.println(b + "를 포함하는 이름");
                gList.get(i).prt();
                flag = true;
                System.out.println("--------------");
            }

        }
        if (flag == false) {
            System.out.println("이름이 없습니다.");
        }
    }

    private void delGoods() {
        System.out.println("삭제할 이름을 입력하세요");
        String b = in.nextLine();
        boolean flag = true;
        for (int i = 0; i < gList.size(); i++) {
            if (gList.get(i).name.equals(b)) {
                gList.remove(i);
                System.out.println(b + "삭제 완료");
                flag = false;
            }
        }
        if (flag) {
            System.out.println("이름이 없습니다.");
        }
    }

    private void modGoods() {
        System.out.println("수정할 이름을 입력하세요");
        String b = in.nextLine();
        boolean flag = true;
        for (int i = 0; i < gList.size(); i++) {
            if (gList.get(i).name.equals(b)) {
                System.out.println("수량을 입력하세요");
                int newInt = in.nextInt();
                in.nextLine();
                gList.get(i).cnt = newInt;

                System.out.println("가격을 입력하세요");
                newInt = in.nextInt();
                in.nextLine();
                gList.get(i).price = newInt;
                flag = false;
            }
        }
        if (flag) {
            System.out.println("이름이 없습니다.");
        }
    }

    private void addGoods() {
        Goods newGoods = new Goods();
        System.out.println("이름 입력");
        String name = in.nextLine();
        System.out.println("아이디 입력");
        String id = in.nextLine();
        System.out.println("수량 입력");
        int cnt = in.nextInt();
        in.nextLine();
        System.out.println("단가 입력");
        int price = in.nextInt();
        in.nextLine();
        newGoods.setting(name, id, cnt, price);

        gList.add(newGoods);
    }

    public void listGoods() {
        for (int i = 0; i < gList.size(); i++) {
            System.out.println(i + "번 정보-------");
            gList.get(i).prt();
            System.out.println("------------");
        }
    }

    private 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("6. 이전메뉴");
        System.out.println("-----------");
    }
}

물건 클래스

package Market;

public class Goods {
    String name = null;
    String id = null;
    int cnt = 0;
    int price = 0;

    public void setting(String name, String id, int cnt, int price) {
        this.name = name;
        this.id = id;
        this.cnt = cnt;
        this.price = price;
    }

    public void reCnt(int cnt) {
        this.cnt -=cnt;
    }

    public void prt() {
        System.out.println("이름: " + this.name);
        System.out.println("아이디: " + this.id);
        System.out.println("수량: " + this.cnt);
        System.out.println("가격: " + this.price);
    }
}

고객 클래스

package Market;

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

public class Member {

    String name = "guest";
    ArrayList<GoodsBasket> basket = new ArrayList<>();
    Scanner in = new Scanner(System.in);
    GoodsManeger aa = null;

    public Member(GoodsManeger aa) {
        this.aa = aa;
    }

    public void goShopping() {
        for (;;) {
            menu();
            String selMenu = in.nextLine();
            if (selMenu.equals("1")) {
                shopping();
            } else if (selMenu.equals("2")) {
                System.out.println("장바구니 정보-------");
                viewBasket();
                System.out.println("------------");
            } else if (selMenu.equals("3")) {
                break;
            } else {
                System.out.println("잘못된 입력입니다.");
            }
        }

    }

    private void viewBasket() {
        for (int i = 0; i < basket.size(); i++) {
            System.out.println("------------");
            basket.get(i).prt();
        }
    }

    public void shopping() {
        GoodsBasket c = new GoodsBasket();
        aa.listGoods();
        System.out.println("구매할 물건의 번호를 입력하세요");
        String a = in.nextLine();
        int b = Integer.parseInt(a);
        if (b < aa.gList.size()) {
            System.out.println("구매할 수량을 입력하세요");
            String a1 = in.nextLine();
            int b1 = Integer.parseInt(a1);
            c.name = aa.gList.get(b).name;
            c.plusCnt(b1);
            if(aa.gList.get(b).cnt-b1<0) {
                System.out.println("수량이 부족합니다.");
            }else {
                aa.gList.get(b).reCnt(b1);
                c.sumPrice(aa.gList.get(b).price);
                basket.add(c);
                System.out.println(aa.gList.get(b).name + b1 + "개 구매 완료");
            }
        } else {
            System.out.println("잘못된 입력입니다.");
        }
    }

    private void menu() {
        System.out.println("-----------");
        System.out.println("1. 구매하기");
        System.out.println("2. 장바구니");
        System.out.println("3. 이전메뉴");
        System.out.println("-----------");

    }

}

장바구니 물건 클래스

package Market;

public class GoodsBasket {
    String name= null;
    int cnt= 0;
    int goodsPrice=0;

    public void plusCnt(int cnt) {
        this.cnt+=cnt;
    }
    public void sumPrice(int goodsPrice) {
        this.goodsPrice= cnt*goodsPrice;
    }
    public void prt() {
        System.out.println("물건:"+name);
        System.out.println("수량:"+cnt);
        System.out.println("가격:"+goodsPrice);
    }
}
profile
공부하는 개발자

0개의 댓글