플레이데이터 풀스택 백엔드 9기 4주차 주간회고 및 학습기록 (네번째 기록)
Facts
이번 주도 저번 주와 마찬가지로 java 공부만 했다. 조금 다른 점은, 더 거시적인 관점에서 보는 연습을 많이 했다는 것이다. 물론 자바의 기능들을 쓰는 연습도 했다. 예외처리, 제네릭스, 컬렉션, 열거형, 람다, 스트림을 연달아 배웠다. 목요일에는 선생님과 실습 문제를 풀어보면서 자료구조를 파악하는 설계하는 연습을 했는데, 이렇게 조금 더 거시적인 관점에서 자료구조를 설계하고 그에 맞춰 코드를 작성하니까 재미있었다. 물론 쉽진 않았다. 수업 시간엔 이해가 잘되었지만, 나 혼자 다시 하라고 하면 아직은 잘 못할 것 같았다. 아직 제출 못한 Collection 실습 과제 2번째 문제부터 제대로 할 줄 알아야 혼자 자료구조도 짜고 그에 맞춰 적절하게 코딩도 할 수 있을 것 같다.
컬렉션이나 열거형, 람다 등을 배우면서 지금껏 배운 것들보다 확실히 어렵다는 느낌을 받았다. 특히 처음 Enum을 배웠을 때는 '이걸 왜 쓰지?'라고 생각했던 거 같다. 선생님께서 예를 들어주시면서 "혈액형 같은 변수에 C형 같은 게 들어오지 않도록 해줄 수 있다"라고 하셔서 금세 이해할 수 있었지만, 내가 필요할 때 이런 다양한 기능들을 잘 활용할 수 있을까 하는 걱정이 들었다.
다행히도 지난 주 어렵게 느껴졌던 객체와 클래스, 입출력 등의 내용이 이번주에는 확실히 덜 어렵게 느껴졌다. 역시 생소함이 제일 문제이지 않았나 싶다. 계속 접하고 써보고 이해하려고 노력하다보니까 익숙해진 것이 아닐까. 이번 주에 배운 것들도 금방 체화되기를 바란다.
Feelings
이제 꽤 많이 적응했나보다. 시간이 빠르게 흐르기 시작했다. 크게 힘들진 않았고, 그렇다고 가뿐하지도 않았다. 공부하는 과정이 꽤 즐겁고 재밌었지만 중간중간 이해가 잘 안되어서 짜증나는 부분도 있었다. 그저 똑같이 [어렵다. 공부해야지 > 계획보다 조금 덜 공부 > 이전 진도가 완전히 잘 되지는 않는 상태에서 다음 것 공부]와 같은 사이클을 반복한 것 같다. 이제 계획만큼 공부하고, 최대한 효율적인 공부를 하려고 노력해야겠다.
이번 주말, 노션에 배운 것을 전부 정리하고 수업 코드와 실습 코드를 관찰하는 시간을 가졌다. 이 방법이 지난 한 달간 해본 방법 중 가장 효율적이고 효과적이라는 생각이 들어서 만족스러웠다. 그렇다면 내 공부 루틴은 이제 1. 쉬는시간과 점심시간에 노션 정리를 하고 / 2. 집에서 그 날 배운 코드를 관찰하고 이해하는 시간을 갖고 / 3. 남은 시간과 주말을 활용해 실습 과제를 처리하는 방식으로 해야겠다. 과제를 하는 데 중점을 두기 보다는 관찰 시간을 늘리는 게 먼저인 거 같다.
Findings
배운 것 1. 예외처리 (Exception)
- 예외란?
: 오류와 마찬가지로 실행중인 프로그램을 종료시키는 것이 일반적이지만 발생할 수 있는 상황을 개발자가 미리 예측하고 처리할 수 있는 미약한 오류 - 예외처리를 하는 이유
: 미리 예측하고 컨트롤 할 수 있는 예외를 처리함으로써 프로그램이 예상치 못한 상황에 봉착하지 않도록 방지하거나, 의도한 방향으로 컨트롤하기 위함이다. 중요한 것은, 사용자에게 좋지 않은 경험을 제공하는 일이 없도록 할 수 있다는 것이다. - 예시 코드
- 내가 예외처리의 흐름을 이해하는 데 도움이 된 코드를 바탕으로 정리를 해보겠다.
1) throws Exception (메소드 선언부)
: 이 메소드가 예외를 던질 수도 있다고 선언
➡️ 이 메소드를 호출하는쪽에서 try-catch 예외를 처리하거나, 자신도 throws를 통해 예외를 던져야 한다.

2) 결국 언젠가는 이렇게 try-catch를 통해 예외처리를 해야 한다. 오른쪽 코드는 위 사진에 있는 Exception Class를 호출하여 checkEnoughMoney라는 메소드를 try하는데, Exception이 발생할 경우 "상품구입불가"라는 메시지가 출력되도록 한 것이다.

3) 만약 try-catch로 예외처리를 하지 않은 상태에서 main 메소드에서 실행을 하면 예외가 발생하고, 이를 처리할 방법은 없다.

배운 것 2. InputStream(Reader) vs OutputStream(Writer) 판단 방법
어떤 상황에 inputStream을 쓸지, 언제 outputStream을 쓸지 파악하려면 '프로그램'을 생각하면 된다.
프로그램에 들어가게 하는 모든 코드는 input이고, 프로그램으로부터 빠져나오는 모든 코드는 output이다.
| 구분 | InputStream(Reader) | OutPutStream(Writer) |
| 역할 | 읽기 (입력받기) | 쓰기 (출력하기) |
| 방향 | 외부 → 프로그램 (데이터 들어옴) | 프로그램 → 외부 (데이터 나감) |
| 비유 | 우체통에서 편지 꺼내기 | 편지를 보내기 |
| 상황 | - 키보드 입력 받을 때 (키보드 → 프로그램) - 파일에서 내용 읽을 때 (파일 → 프로그램) |
- 콘솔에 출력할 때 (프로그램 → 모니터) - 파일에 저장할 때 (프로그램 → 파일) |
- 화살표가 프로그램을 가리키는 상황이면 Input, 화살표가 프로그램에서 출발할 때는 Output이다.
배운 것 3. 매개변수가 있는 생성자 : this. 을 잊지말자
- 실습문제를 푸는 중에 Member 객체가 말을 안 들어서 짜증이 많이 났었다. 알고보니...내가 너무 바보같은 짓을 했다.


아마 자바를 조금이라도 다룰 줄 아는 분은 이걸 보면 내가 뭘 잘못했는지 알 수 있을 것이다. this.id = id와 this.name = name을 작성하지 않아서 Member 객체의 멤버변수들이 전~혀 초기화되지 않았던 것이다.
제발! 생성자를 작성할 때 this.을 잊지 말자.
Future
1. 너무 강남식당, 우리집, 메가스터디만 간 거 같다. 이번 주는 반드시 육회비빔밥을 먹어보리라.
2. 앞으로 생성자를 잘못 만들어서 문제가 되는 일은 없게 할 것이다.
3. 이번 주는 반드시 Collection, Enum, Lambda, Stream을 완벽히 이해해 볼 것이다.
(이해란, 예시 코드를 참고하지 않고 내가 스스로 관련 코드를 작성할 수 있는 상태를 의미한다)
4. 지금까지 배운 여러 기능들을 코드에 최대한 담아보려고 노력해야겠다.
'PLAYDATA 주간회고' 카테고리의 다른 글
| 플레이데이터 풀스택 백엔드 9기 4월 4주차 회고 (0) | 2025.04.27 |
|---|---|
| 플레이데이터 풀스택 백엔드 9기 4월 3주차 회고 (2) | 2025.04.22 |
| 플레이데이터 풀스택 백엔드 9기 4월 1주차 회고 (2) | 2025.04.08 |
| 플레이데이터 풀스택 백엔드 9기 3월 4주차 회고 (0) | 2025.03.31 |
| 플레이데이터 풀스택 백엔드 9기 3월 3주차 회고 (0) | 2025.03.25 |