본문 바로가기
Today I Learned 2024. 4. 30.

(24.04.30)[3주차] 과제 이슈 정리

 

생각보다 과제가 은근히 계속 거리는게 있어서 무뎌지고 있다.

사실상 1시간에서 2시간이면 끝내야하는 내용인데,

괜히 뭔가 더 살펴본다고 더 공부하고 하느라 하루종을 다 쓰는듯 싶다.


과제 이슈 정리

enum을 실제로 만들고 다시 확인하기

더보기
package calculator;

public enum OperatorType {
    /*열거형 멤버*/
    ADD('+'),
    SUBSTRACT('-'),
    MULTIPLY('*'),
    DIVIDE('/'),
    MODE('%');

    /*생성자의 저장되는 필드 변수*/
    private final char symbol;

    /*생성자*/
    private OperatorType(char symbol) {
        this.symbol = symbol;
    }

    /*해당 symbol을 얻을 수 있는 Getter*/
    public char getSymbol() {
        return symbol;
    }

}

 

  • enum을 클래스 내에서 생성하는 것만 집중적으로 알고 있었기 때문에 enum 클래스에 대해서 정리하면서 과제 해결
    • 이미 알고 있듯이 열거형의 모든 멤버들은 private
  • enum클래스 안에는 생성자와 메서드getter 등을 추가할 수 있음
    • 하지만, 다른 클래스에서 enum 클래스를 사용하고자 할 때, 새롭게 객체 생성 불가! -> OperatorType operatorType = OperatorType.ADD; 같이 직접 상수를 불러와야함
  • **매우 중요** enum의 .values()  메서드
    • 알고 있었지만, 막상 사용하면 까먹어버리는 메서드
    • 모든 상수를 "배열" 형태로 반환시킴 -> 따라서 향상된  for 문 또는 배열로 지정하여 사용 가능

Generics 숫자 클래스 범위

더보기

 

public class ArithmeticCalculator <T extends Double> extends Calculator { // 주의 부분

    /*Calculatable 인터페이스 구현 사칙연산을 활용*/
    public double calculate(T number1, T number2, char operator) throws DivideException {
    ...
    }
}
  • Double은 래퍼클래스로 사용가능하지만, 요구사항에 있어서 이지만 모든 숫자의 조상 클래스인 Number을 사용
  • Number 타입을 활용하는 연습을 할 수 있도록
    • Double로 한정시켜놓을 경우 안에 메서드가 바뀌게 되면 다른 이슈가 발생할 수 있기 때문에 계속 IDE 에서 계속 주의를 주었음
  • <T extends Number> 을 활용할 수 있도록

 


가급적 까먹고 가볍게 넘어갈 수 있는 부분이 실저에 코드를 짜면서 많이 잊어먹는 느낌이라

계속 Notion과 Java의 정석을 보면서 과제를 할 수 있도록 해야할 것.!