주노 님의 블로그

20240731 본캠프 13일차 TIL 본문

TIL

20240731 본캠프 13일차 TIL

juno0432 2024. 7. 31. 21:37

본캠프 13일차 내용 간단요약

  • 09:00 ~ 10:00 : 코드카타
  • 10:00 ~ 10:30 : 개인 과제 마무리 및 제출
  • 10:30 ~ 12:00 : 스프링 공부
  • 12:00 ~ 13:00 : 점심시간
  • 13:00 ~ 17:00 : 스프링 공부
  • 17:00 ~ 18:30 : 밍글데이
  • 18:30 ~ 19:30 : 저녁시간
  • 19:00 ~ 21:00 : 스프링 공부 

오늘 해야할 일✔️🔺

✔️  개인 과제 제출

✔️  스프링 공부

 


개인 과제 마무리

더보기
더보기

과제 3-2

필히 터질거라 생각되어 브랜치를 따로 파서 만들었다

다행히도 인텔리제이가 제안한 오류제거로 오류를 제거하였다

 

public abstract class AbstractOperation<T extends Number> 

 

Number클래스를 만들어 모든 숫자 자료형이 들어오게했지만

public class AddOperator extends AbstractOperation<Number>{

    @Override
    Number operate(Number num1, Number num2) {
        return num1.doubleValue() + num2.doubleValue();
    }
}

 

결국엔 doubleValue()로 변환을 해서 연산을 수행하기때문에 기존과는 다를게 없다

 

문제점

1. Number 자체의 연산 기능이 없다

비교는 있지만 연산 메서드가 없어서 무언가로 바꿔야한다

ublic abstract class Number implements java.io.Serializable {
    /**
     * Constructor for subclasses to call.
     */
    public Number() {super();}

    /**
     * Returns the value of the specified number as an {@code int}.
     *
     * @return  the numeric value represented by this object after conversion
     *          to type {@code int}.
     */
    public abstract int intValue();

    /**
     * Returns the value of the specified number as a {@code long}.
     *
     * @return  the numeric value represented by this object after conversion
     *          to type {@code long}.
     */
    public abstract long longValue();

    /**
     * Returns the value of the specified number as a {@code float}.
     *
     * @return  the numeric value represented by this object after conversion
     *          to type {@code float}.
     */
    public abstract float floatValue();

    /**
     * Returns the value of the specified number as a {@code double}.
     *
     * @return  the numeric value represented by this object after conversion
     *          to type {@code double}.
     */
    public abstract double doubleValue();

    /**
     * Returns the value of the specified number as a {@code byte}.
     *
     * @implSpec
     * The default implementation returns the result of {@link #intValue} cast
     * to a {@code byte}.
     *
     * @return  the numeric value represented by this object after conversion
     *          to type {@code byte}.
     * @since   1.1
     */
    public byte byteValue() {
        return (byte)intValue();
    }

    /**
     * Returns the value of the specified number as a {@code short}.
     *
     * @implSpec
     * The default implementation returns the result of {@link #intValue} cast
     * to a {@code short}.
     *
     * @return  the numeric value represented by this object after conversion
     *          to type {@code short}.
     * @since   1.1
     */
    public short shortValue() {
        return (short)intValue();
    }

    /** use serialVersionUID from JDK 1.0.2 for interoperability */
    @java.io.Serial
    private static final long serialVersionUID = -8742448824652078965L;

 

2. 바꾸지 않고 사용할 방법이 있는가?

연산 메서드가 없어서 불가피하게 변환해야한다

아마도 모든 operator에 조건문 사용하여 instanceOf 를 사용하여 만들수 있을것 같다.

 

참고자료

https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%A0%9C%EB%84%A4%EB%A6%ADGenerics-%EA%B0%9C%EB%85%90-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%B3%B5%ED%95%98%EA%B8%B0

 

☕ 자바 제네릭(Generics) 개념 & 문법 정복하기

제네릭 (Generics) 이란 자바에서 제네릭(Generics)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 객체별로 다른 타입의 자료가 저장될 수 있도록 한다. 자바에서 배

inpa.tistory.com

https://cabi.oopy.io/00ba0ada-433f-4be0-ba1f-529994f34b68

 

Java - 제네릭(Generic)

제네릭이란?

cabi.oopy.io

https://travelbeeee.tistory.com/462

 

[JAVA] #26 자바 Number 클래스 메소드 정리

안녕하세요, 여행벌입니다. 자바 Wrapper 클래스에 이어서 Number 클래스에 대해서도 정리해보겠습니다. Number 클래스 Character, Boolean 을 제외하고 모든 Wrapper 클래스는 Number 클래스를 상속합니다. 그

travelbeeee.tistory.com

 


스프링 공부

 

더보기
더보기

섹션 2 회원도메인을 개발하며

회원 도메인 설계의 문제점
이 코드의 설계상 문제점은 무엇일까요?
다른 저장소로 변경할 때 OCP 원칙을 잘 준수할까요? 
DIP를 잘 지키고 있을까요?

 

public class MemberServiceImpl implements MemberService {

    private final MemberRepository memberRepository;

    // 생성자에서 구체적인 구현체를 직접 생성함
    public MemberServiceImpl() {
        this.memberRepository = new MemoryMemberRepository();
    }

 MmeberServiceImpl 클래스에서 인터페이스 대신 구현체를 직접 생성하고 사용하고 있다

즉 구체적인 사항은 추상화에 의존해야한다는 DIP를 깨트린것이다

 

직접 생성하기때문에 MemoryMemberRepository를 변경하려면 Impl코드도 수정해야한다

OCP원칙을 지키지 않는다.

 

작성중......


오늘의 회고 & 12시간 몰입했는가?

오늘은 잠깐잠깐 팀원들이랑 얘기한다고 1시간 정도는 놀았던것같다

내일 프로젝트하려면 이정도는 얘기해놔야지!

일단 내일 프로젝트 요구사항 분석해보고, 주말에 개인과제 수정이나 다음주 주말에 개인과제 수정 들어가야겠다

 

'TIL' 카테고리의 다른 글

20240802 본캠프 15일차 TIL  (0) 2024.08.03
20240801 본캠프 14일차 TIL  (0) 2024.08.01
20240730 본캠프 12일차 TIL  (0) 2024.07.30
20240729 본캠프 11일차 TIL  (0) 2024.07.29
20240726 본캠프 10일차 TIL  (0) 2024.07.26