ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA - 접근제어자 연습문제
    JAVA 2024. 1. 4. 21:07
    728x90

    문제. 1 - 최대 카운터와 캡슐화

    MaxCounter 클래스를 만들기

    이 클래스는 최대값을 지정하고 최대값까지만 값이 증가하는 기능을 제공한다.

    • int count : 내부에서 사용하는 숫자. 초기값은0
    • int max : 최대값. 생성자를 통해 입력.
    • increament() : 숫자를 하나 증가.
    • getCount() : 지금까지 증가한 값을 반환
    • 접근 제어자를 사용해서 데이터를 캡슐화하기
    • 해당 클래스는 다른 패키지에서도 사용할 수 있어야 한다.
    package access.ex;
    
    public class MaxCounter {
        private int count;
        private int max;
        public MaxCounter(int max) {
            this.max = max;
        }
        public void increment() {
            if (count >= max) {
                System.out.println("최대값을 초과할 수 없습니다.");
            } else {
                count++;
            }
        }
        public int getCount() {
            return count;
        }
    }
    public class CountMain {
        public static void main(String[] args) {
            MaxCounter counter = new MaxCounter(3);
            counter.increment();
            counter.increment();
            counter.increment();
            counter.increment();
            int count = counter.getCount();
            System.out.println(count);
        }
    }

    문제. 2 - 쇼핑 카드

    ShoppingCartMain 코드가 작동하도록 Item, ShoppingCart 클래스를 완성하기.

     

    • 접근 제어자를 사용해서 데이터를 캡슐화 하기.
    • 해당 클래스는 다른 패키지에서도 사용할 수 있어야 함.
    • 장바구니에 상품을 최대 10개만 담을 수 있다.
      • 10개 초과 등록시 : "장바구니가 가득 찼습니다." 출력
    public class ShppingCartMain {
        public static void main(String[] args) {
            ShppingCart cart = new ShppingCart();
    
            Item item1 = new Item("마늘", 2000, 2);
            Item item2 = new Item("상추", 3000, 4);
    
            cart.addItem(item1);
            cart.addItem(item2);
    
            cart.displayItems();
        }
    }

    여기서 Item 클래스를 짜는 건 쉬웠는데, 혼동 되는게 고른 물건의 가격을 구하는 코드였는데 ProductCart에 넣고 싶었는데 생각해보니 속성과 기능은 한 곳에 있는 게 좋기 때문에, 속성이 있는 Item에서 진행하였다.

    public class Item {
        private String name;
        private int price;
        private int quantity;
        public Item(String name, int price, int quantity) {
            this.name = name;
            this.price = price;
            this.quantity = quantity;
        }
        public String getName() {
            return name;
        }
        public int getTotalPrice() {
            return price * quantity;
        }
    }

    ShppingCart 클래스 부분에선 addItem 부분에서 순간 배열을 생각하지 못해 어떻게 추가해야 하지?? 고민을 좀 했었던 거 같다.

    public class ShppingCart {
        private Item[] items = new Item[10];
        private int itemCount;
    
        public void addItem(Item item) {
            if (itemCount >= items.length) {
                System.out.println("장바구니가 가득 찼습니다.");
                return;
            } else {
                items[itemCount++] = item;
            }
        }
    
        private int calculateTotalPrice() {
            int totalPrice = 0;
            for (int i = 0; i < itemCount; i++) {
                totalPrice += items[i].getTotalPrice();
            }
            return totalPrice;
        }
    
        public void displayItems() {
            System.out.println("장바구니 상품 출력");
            for (int i = 0; i < itemCount; i++) {
                System.out.println("상품명 : " + items[i].getName()
                        + ", 합계 : " + items[i].getTotalPrice() + "원");
            }
            System.out.println("전체 가격 합 : " + calculateTotalPrice() + "원");
        }
    }

     

    'JAVA' 카테고리의 다른 글

    JAVA - 자바 메모리 구조와 static - 연습문제  (0) 2024.01.06
    JAVA - 자바 메모리 구조와 static  (1) 2024.01.06
    JAVA - 접근 제어자  (1) 2024.01.04
    JAVA - 패키지  (0) 2024.01.04
    JAVA - 생성자 + 연습 문제  (2) 2024.01.03
Designed by Tistory.