📘 주간목표

  • 토이프로젝트

✅ 토이프로젝트 체크했던 부분

    private static Customers allCustomers;
    private static final int DEFAULT_SIZE = 10;
    protected Customer[] customers;
    private int size;
    private int capacity;

    protected Customers() {
        customers = new Customer[DEFAULT_SIZE];
        capacity = DEFAULT_SIZE;
    }
  1. 처음에 모든클래스를 private으로 정의하니까 자식클래스들이 모두 오류가 났다.
    ➡️
    상속된 경우에 부모의 속성들이 자식에게 모두 상속되는것은 맞지만, private을 사용하여 변수나 메서드에 접근 권한을 설정하면 부모의 private 변수 자식에 접근할 수 있는 권한이 없기 때문에 바로 사용이 불가능하다.
    (그러나 getter, setter를 만들어 간접적으로 접근은 가능)

접근제한자외부 접근가능한 클래스범위외부 호출가능한 생성자범위
public모든 외부에서 접근 가능모든 패키지에서 호출 가능
protected같은 패키지의 클래스 or 자식클래스에서만 접근 가능같은 패키지의 클래스 or 자식클래스에서만 호출 가능
private모든 외부에서 접근 불가능외부에서 객체 생성 불가능

그래서! 보통 싱글톤 패턴에서는 부모클래스 생성자를 private이 아니라 protected로 하여 클래스를 상속하고 확장할 수 있음을 알았고, 싱글톤패턴이 사용된 클래스는 전부 접근제어자를 protected로 바꿔주었다.



    public int size() {return size;}
    public int capacity() {return capacity;}
    public boolean isEmpty() { return size == 0; }
    public void set(int i, Customer customer) {
        if (!(i >= 0 && i < size)) return;
        if (customer == null) return;

        customers[i] = customer;
    } //i 번째 원소를 customer로 수정
  1. 여기서는 i값 검증을 먼저 해줌으로써 i값에 따른 예외처리를 따로 할 필요가 없었다.
    Exception이 너무 많으면 가독성부분 이외에도 안좋은 점이 있나 찾아보았지만 딱히 찾은건 없다.ㅎㅎ

  • size : 배열이 포함하고있는 요소의 크기
  • capacity: 배열 전체의 크기

따라서 size의 크기는 큐에 포함된 요소의 개수에 따라 값이 증감하고
capacity의 크기는 재할당 하기 전까지 고정적이다.
둘의 차이를 잘 알고 변수로 사용할 것!



    public void add(int i, Customer customer) {
        if (!(i >= 0 && i < size)) return;
        if (customer == null) return;

        if (size < capacity) {
            for (int j = size - 1; j >= i; j--) {
                customers[j + 1] = customers[j];
            }
            customers[i] = customer;
            size++;
        } else {
            grow();
            add(i, customer);
        }
    }
  1. 배열의 복사(더블링)에서 원소를 추가할 때, 배열 복사 후 복붙 해주는 위치도 잘 고려해야한다.
    복사 후 앞에서부터 붙여넣으면 바로 다음 인덱스 값이 사라지게 되기 때문에 비어있는 뒤에서부터 밀면서 붙여넣어줘야한다고한다.


❗️ 느낀점

  • 예외처리 (35점)
    • 고객 분류 기준이 수정될 경우 수정된 분류기준에 의해 고객을 다시 분류할 수 있는가? (10점)
    • 고객 정보가 추가되거나 삭제될 경우의 예외를 처리하였는가? (10점)
    • 배열의 저장범위를 벗어나게 되면 생기는 오류를 해결하였는가? (15점)

예외처리 사용이 어렵다. 😩
강의를 들을땐 이해가 갔는데 막상 실제에 적용하려니까 어떻게 적용해야할지 모르겠어서 강의를 다시 듣는중이다.



📘 다음 주간목표

  • 토이프로젝트 마무리/제출
  • OOP강의 마지막주간 복습
profile
이안이의 우당탕탕 개발기

0개의 댓글