✍ Today I Learned
주특기 입문 주간 시작
알고리즘 문제를 찍먹 했던 프로그래밍 기초 주간이 지나고,
제대로 Spring을 다룰 주특기 기간이 시작되었다.
주특기 기간은 총 3주로 입문, 숙련, 심화가 각 한 주씩 구성된다.
발제와 동시에 당일 과제와 일정들이 쏟아졌다.
담임 매니저님이 신경 써주시긴 하지만
스스로 일정에 맞춰 학습할 수 있도록 세부적으로 계획을 짜야겠다.
- 11/25 21:00까지 S.A 과제 제출
- 11/26 13:00 Http와 Controller 세션 → 28일 20시로 밀림
- 12/1 10:00 입문 주차 시험
- 12/1 20:00 입문 주차 시험 문제풀이
- 12/1 21:00까지 개인과제, 팀 과제 제출
- 12/2 09:00 주특기 숙련 주차 발제
S.A 과제 [클래스 모델링하기]
당일 과제의 주제는 Java 객체지향에 대해 공부하고, 요구조건에 맞게 Class를 모델링하는 것이다.
갑자기 설계를 하려니 좀 막막했지만.. 차근차근 하나씩 해보기로 했다.
Bus 클래스 모델링
- 포함해야 할 정보는 field로, 기능은 method로 작성하였다.
- 버스 번호의 고유값은 static 키워드를 붙인 클래스 변수로부터 시퀀싱 되도록 설정하였다.
- field는 private로 설정하고, getter와 setter를 설정하여 method를 통해서만 field에 접근할 수 있도록 하였다.
- 이제 Taxi 클래스를 만들어야 하는데 좀 더 확장에 용이하려면? 상속을 이용해 보기로!
대중교통 클래스를 상속받는 Bus, Taxi 클래스
- 공통 기능을 상위 클래스인 PublicTransport 클래스에 정의하고, 하위 클래스에서 extends 키워드를 사용하여 상속받도록 하였다.
- 상속을 위해 field값의 접근 제한자를 public으로 수정하였다.
- 조금씩 다르게 기능하는 method는 오버라이딩 하여 재정의하였다.
오버로딩 & 오버라이딩
- 오버로딩(Overloading)이란? 서로 다른 시그니쳐를 갖는 여러 메소드를 하나의 이름으로 정의하는 것
- 오버라이딩(Overriding)이란? 상속 관계에 있는 부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 같은 시그니쳐를 갖는 메소드로 다시 정의하는 것
추상 클래스 vs 인터페이스
만약 모든 클래스가 인터페이스를 사용해서 기본 틀을 구성한다면... 공통으로 필요한 기능들도 모든 클래스에서 오버라이딩 하여 재정의 해야 하는 번거로움이 있습니다.
이렇게 공통된 기능이 필요하다면 추상 클래스를 이용해서 일반 메서드를 작성하여 자식 클래스에서 사용할 수 있도록 하면 된다. 어!? 그러면 그냥 추상 클래스만 사용하면 되는 거 아닌가요? 위에서 얘기했듯이 자바는 하나의 클래스만 상속이 가능합니다. 만약 각각 다른 추상 클래스를 상속하는데 공통된 기능이 필요하다면? 해당 기능을 인터페이스로 작성해서 구현하는 게 편하겠죠?
출처 : 추상 클래스 vs 인터페이스 왜 사용할까? 차이점
오늘의 나는
오늘 주특기 입문 주간 발제에서 제일 기억에 남는 말은,
"혼자 끙끙 앓지 말고 팀원들과 기술 매니저님을 잘 이용해먹으세요!"
라는 말이었다. 팀원들과는 꾸준히 소통하면서 질문하고 공유했지만,
기술 매니저님을 잘 이용해먹진(?) 못했던 것 같다.
그래서 이번 주간의 목표는 기술 매니저님께 좋은 질문 하기!
이 말은 즉, '파고들어 공부하기'라고 할 수 있다.
끝까지 파고들어서 공부를 해야 질문할 거리가 생기기 때문에..😅
유의미한 질문으로 시야를 계속 넓혀 가보자!
'📝 TIL' 카테고리의 다른 글
[TIL] 3주차 주특기 입문ㅣCRUD API 만들기 1편 (3) | 2022.11.28 |
---|---|
[TIL] 2주차 주특기 입문ㅣJava 스터디 발표 (0) | 2022.11.26 |
[TIL] 2주차 알고리즘 테스트 (0) | 2022.11.24 |
[TIL] 2주차 알고리즘 조각 모음 (0) | 2022.11.23 |
[TIL] 2주차 알고리즘 모의고사 (4) | 2022.11.22 |