201018 TIL

SEULBI LEE·2023년 10월 18일
2

TIL

목록 보기
5/25

사소하지만 내 시간을 잡아먹은 내용

내용 이해하기

더 알고 싶은 것
자바란 무엇인가?


자바 문법종합반 3주차 숙제 이어서 하기

오버라이드가 답인가.

오버라이딩을 하기 위해서는 아래 조건들을 만족해야합니다.
1. 선언부가 부모 클래스의 메서드와 일치해야 합니다.
2. 접근 제어자를 부모 클래스의 메서드 보다 좁은 범위로 변경할 수 없습니다.
3. 예외는 부모 클래스의 메서드 보다 많이 선언할 수 없습니다.

어제 딱 여기까지 했다.

선언부가 부모 클래스의 메서드와 일치해야 하므로 숙제의 방향은 이게 아닌 것 같다.
다시 생각해보자.
인텔리제이가 override 예시를 만들어 줬는데, super 키워드를 사용했다.

package week03.homework;

public class AddOperation extends Calculator{
    //super 사용하여 add 함수 생성
    double add(int firstNumber, int secondNumber){
        return super.Calculate("add", firstNumber, secondNumber);
    }
}

test 클래스에서 확인 결과 객체 생성 후 작동 잘 됨!

package week03.homework;

public class Test {
    public static void main(String[] args) {
//        Calculator calculator = new Calculator();
//        double a = calculator.Calculate("나머지",10,3);
//        System.out.println(a);

        AddOperation test = new AddOperation();
        double b = test.add(1,2);
        System.out.println(b);

        SubstractOperation S = new SubstractOperation();
        double c = S.subtract(10,8);
        System.out.println(c);

        MultiplyOperation m = new MultiplyOperation();
        double d = m.multiply(4,50);
        System.out.println(d);

        DivideOperation dv = new DivideOperation();
        double e = dv.divide(3,5);
        System.out.println(e);

    }
}

Step2 와 비교하여 어떠한 점이 개선 되었는지 스스로 생각해 봅니다.
1. 처음에 나머지 메서드를 만들 때는 operator에 오타를 입력할 가능성까지 고려하여 else 구문까지 구현했었다. 그런 가능성이 사라졌다.
2. 메서드가 사용하기 더 깔끔하고 단순해졌다.

Step 4.
AddOperation(더하기),
SubstractOperation(빼기),
MultiplyOperation(곱하기),
DivideOperation(나누기) 연산 클래스들을 AbstractOperation(추상 클래스)를 사용하여 추상화하고 Calculator 클래스의 내부 코드를 변경합니다.

Step 3 와 비교해서 어떠한 점이 개선 되었는지 스스로 생각해 봅니다.
- hint. 클래스간의 결합도, 의존성(의존성역전원칙)
❗️Calculator의 calculate 메서드의 매개변수가 변경되었습니다.

설계도를 다시 보자.
Calculator는 calculate(int, int) : double
나머지는 전부 operate(int, int) : double이다.

일단 AbstractOperation을 만들고 추상화 부분을 차근차근 따라해보자.

abstract 키워드를 사용하여 추상 클래스를 선언할 수 있습니다.

다시 윗 구조에 손을 대야 할 것 같은데,
이렇게 오래 걸리는 건 아닌 것 같다.
그래도 코드를 읽는 눈을 키웠으니 해설 강의를 보고 숙제를 마무리하자.

그냥 듣기만 해서는 절대 머릿속에 남지 않는구나.
엄청나게 엉뚱한 방향으로 만들고 있었다는 걸 깨달았다.
public을 언제 써야 하는지,
간단하게 객체를 선언하고 사용하는 방법이 무엇인지,
생성자는 무슨 역할을 하는지,
관계를 구체적으로 어떻게 맺어야 하는지
전부 모르고 있는 거나 다름 없었다.
완강한 후 다시 돌려보는 게 좋을 것 같다.

강의를 들었는데도 코드를 한 줄도 못 쓰면 문제가 심각한 거 아닐까?
어떻게 하면 효율적으로 머릿속에 내용을 집어넣을까?

비효율적일 수도 있지만, 속성 개념을 다시 보기로 했다.
리프레시 할 겸 자바의 정석 남궁성 저자님 강의로 시작했다.
기억 안 나는 키워드는 그 때 그 때 검색해서 다시 강의를 들었다.

오늘의 복습 키워드
생성자
기본 생성자
매개 변수가 있는 생성자
참조 변수 this
생성자 this
상속
포함
단일 상속
object class
오바라이딩 vs 오버로딩

내일의 이어 복습할 키워드
참조변수 super
static

제공된 강의에서 남은 개념은 예외, 쓰레드이다.
조금씩이라도 들으면서 다시 본다고 생각하자.

오늘 하루를 마무리하며

개인 과제가 시작되었다.
개인 과제는 키오스크 구현하기이다.
머릿속에 아무 것도 남지 않는 현상을 팀원들에게 고민상담 했더니,
편안한 마음으로 다회독해보자는 조언을 들었다.
진작 그럴걸...
왜 그래야 하는지 아주 조금은... 알 것 같다...
나도 과제를 하면서
이 부분은 구현했는데 이 부분을 모르겠어요! 라고 정확하게 짚어서
질문할 수 있는 사람이 되고 샆다...

0개의 댓글