계산기 개인과제 해설 피드백
while문 안은 true로 고정시켜두고 break 조건을 맨 마지막에 두는 식
------------------------
과제 해설 영상
1. .next().charAt(idx) : charAt메서드는 입력받은 문자열의 idx번째 문자를 char로 반환해준다!
2. index 조정시 ++나 --로만 하는게 좋다, 반복문 종료 후 index = 9 이런식으로 초기화? 매우 안좋음
index 크기가 바뀌면 다시 수정해야함
3. 예외처리시 반드시 종료 or 처음으로 돌아가도록
4. 예외 던지기 throw 를 메서드 안에서 하게하기, 기존에 정의되어 있는 exception을 적절히 찾아서 메서드 내부에 예외처리 할 부분에서 그냥 throw하면됨..
그 메서드에서 구지 throws를 할 필요는 x
그럼 throws는 정확히 언제 해야하는건가? 를 파악해야할듯
+ try catch 문을 사용하는 이유는, 예외처리를 받는 위치에서 프로그램이 종료되지 않고 다시 재대로된 입력을 받고 실행되도록 하기 위해!
5. private으로 설정되어 있는 필드는 getter 와 setter로 접근하는게 일단 맞다
but getter와 setter를 어떻게 하는지에 따라 캡슐화 수준이 달라질수 있다 (높은 캡슐화, 낮은 캡슐화)
높은 캡슐화란, 클래스의 필드와 관련된 내용 수정등은 모든게 그 클래스 내부에서만 동작하는게 좋다
ex) App 클래스에서는 인스턴스.remove() 또는 인스턴스.add() 이렇게만 접근하도록!
이렇게 생각하면 app 에서는 getter와 setter둘다 사용 안하는게 더 올바른 캡슐화인가 라고 생각할수 있는데 그게 맞다
getter와 setter는 나는 깊은복사를 추구했는데 그게 getter와 setter는 아닐지도..
얕은복사로 만들되 이 둘을 쓰는 적절한 곳이 따로 있고 app클래스는 아닌거로?
6. 사용자 지정 생성자를 만들었다면 무조건 기본생성자를 만들어 놓기!
7. 추상화 하는 과정(상속으로 공통부분 추리기), 자식 클래스에서 부모에 접근 할때는 무조건 super.으로 사용
=> 고민했던 부분인데 부모클래스 타입으로 통일하려고 할때 자식의 추상메서드 구현부에 필요한
매개변수가 다르면! 부모의 abstract 부분에서 동일이름 다른매개변수 추상메서드가 여러개 생김
근데 이러면 필요없는 자식쪽에 다른 추상메서드를 구현해야되는 경우가 생김
결론 : 이건 잘못된 추상화이다.
결국 무리해서 추상메서드를 만들어 모든 자식들을 부모타입으로 업캐스팅 해서 동일 메서드로 다른동작을 구현되게 할 필요는 없다!
8. 포함관계 : 클래스내 단순 필드로 존재 / 상속관계 : 말 그대로 상속
final선언 필드들은 객체생성과 동시에 초기화가 필요! 즉 생성자에서 초기화 해줘야함
9. 기능을 확장 할 때, 메인으로 존재하는 클래스를 최대한 수정하지 않고 추가하기 위해서는 어떻게? ex) 계산기 클래스에서 사칙연산만 존재하다 나머지 연산이 추가됬다, 그후 또 비트이동
연산이 추가됫다
=> interface 로 기능들을 묶는다 -> 사칙연산, 나머지연산 클래스를 interface implements
연산자 역시 메인 계산기 클래스에서 다루는게 아니라, 따로 클래스로 만들어서 그 내용을
메인 계산기 클래스에서는 가져와서 쓰는느낌
즉, % 든 << >> 든 새로운 연산자가 추가될때마다 메인계산기 클래스에서 계속 수정할 필요가 없는것이 목표!!!
+ new 키워드를 계속 사용되는 부분역시 클래스 싱글톤 느낌으로 해당 클래스에서 get 요청하면
그 클래스에서 없으면 new로 한후 연산자 구현체 반환! 있으면 존재하는 구현체 반환해주면 훨씬
메모리 부담이 없는 코드
enum 클래스는 안에 선언한 enum 하나하나가 다 클래스 객체와 같다
=> 즉 필드를 가질수 있다
<코드와 같이 정리는 나중에>
'TIL > Web Back' 카테고리의 다른 글
[Sparta] 내일배움캠프 TIL 11일차 (0) | 2024.05.03 |
---|---|
[Sparta] 내일배움캠프 TIL 10일차 (0) | 2024.05.02 |
[Sparta] 내일배움캠프 TIL 8일차 (0) | 2024.04.30 |
[Sparta] 내일배움캠프 7일차 TIL (0) | 2024.04.29 |
[Sparta] 내일배움캠프 WIL 1주차 (0) | 2024.04.28 |