전체 글

😼 Github : https://github.com/Mingyum-Kim
우아한테크코스/레벨1

[디자인 패턴] 상태 패턴 (State Pattern) 이란? 적용해보며 느낀 장점과 단점

상태마저 객체로 만들어보자라는 아이디어에서 프로그램을 조금 더 객체 지향적으로 구현하기 위해 상태 패턴을 사용하였다. (feat. 네오) 이번 포스팅에서는 상태 패턴이 무엇인지, 그리고 프로그램에 상태 패턴을 적용한 예시를 보여주고 어떠한 장점과 단점이 있는 지 분석해보려고 한다. 상태 패턴이란? 상태 패턴(State Pattern)은 객체가 상태에 따라 행위를 다르게 할 때, 상태를 객체화하여 이러한 행위를 상태 객체에게 위임하는 디자인 패턴이다. 객체의 상태가 클래스로 구현되고, 상태에 따른 행위가 클래스 내 메서드로 구현된다. 아주 간단한 예시로 상태 패턴을 이해해보자. public interface YoutubeState { YoutubeState start(); YoutubeState stop(..

우아한테크코스/레벨1

[OOP] 객체 분리의 필요성? 객체에게 적절한 책임을 부여해야 하는 이유

0️⃣ 객체 분리의 필요성 객체 분리하기 귀찮은데 메인 함수에 때려 넣으면 안되나? 실제로 내가 우아한테크코스에 들어오기 전에 사람들이 하라는 객체 분리를 하면서 떠올린 생각이다. 교내 수업 중 객체지향 프로그래밍에서 OOP에 대한 기본적인 개념들을 많이 배웠지만, 그것들은 하나의 수단일 뿐 실제로 프로그램을 만들 때 어떻게 적용해야 할지 잘 몰랐었다. 그리고 메인 함수에서 다 구현하면 요구사항은 충분히 동작하는데, 왜 굳이 객체를 분리하고 클래스의 양을 늘려야 하는지 이해하지 못했다. 그러던 내가 그 필요성을 인지하게 된 건 프리코스 1주차였다. 처음으로 순수 자바를 사용하여 프레임워크의 도움 없이 백지장에서 요구사항을 만족시키기 위한 코드를 작성하였다. 처음에는 스파게티 코드를 작성했다. 요구사항을 ..

우아한테크코스/레벨1

[OOP] 값 객체(VO, Value Object)란? 원시값 포장과 값 객체의 차이점은?

사다리 미션을 진행하면서 사다리의 높이를 뜻하는 Height라는 객체를 만들었다. public class Height { private static final int UPPER_BOUND = 12; private final int value; ... 사다리의 높이를 의미하는 value라는 원시값을 포장하는 용도로 객체를 설계했고, Height 클래스는 int를 사용하는 대신 Height라는 의미있는 타입 명칭을 사용하는 의도로 만들었다. 이에 대해 코드 리뷰를 받았는데, 원시값 포장과 값 객체의 차이점을 공부해보라는 피드백이 있었다. 값 객체는 무엇일까? 그리고 원시값 포장과 다르게 어떤 상황에서 값 객체가 사용되는걸까? 원시값 포장 int, String, double 등 원시 형태의 변수를 그대로 사용..

카테고리 없음

[회고] 우아한테크코스 8주차 회고

2024년 4월 1일 ~ 4월 5일 레벨 1을 마무리하는 한 주를 보냈다. 레벨 1은 새로운 사람들과 새로운 장소에 적응하고, 미션 프로세스를 적응하는 시간들이었다. 그리고 그 와중에 나만의 라이프 스타일을 찾으려 노력한 두 달이었다. 이번 주는 뭔가 해내야한다는 생각 없이 체스 미션을 마무리하고, 레벨 1을 돌아보는 활동에 집중하는 것으로 하였다. 시간을 내어 우아한테크코스의 추천 도서인 “유연함의 힘”을 읽기도 했다. 코치님들에게 전해들으면서 나는 ‘올바른 마인드셋’에 대해 마음 속으로 그렸었다. 개인적인 생각이 가미되어 마인드셋에 대해 정의내리다보니, 포비와 코치님들이 말하는 것과 다르게 이해한 부분이 있었다. 이를 책을 읽음으로써 깨닫게 되었고, 그 핵심 키워드는 실패를 받아들이는 자세에 있다는 ..

우아한테크코스/레벨1

[회고] 우아한테크코스 레벨 1 회고 : 성장에 대하여

🎈 레벨 1 돌아보기 방학식을 하루 앞두고 레벨 1 돌아보기활동을 하였다. ✨ 레벨 1 동안 학습한 내용을 백지에 써보았는데 두 가지 의미로 놀랐다. 첫 번째는 내가 이렇게 배운 게 많았구나 이고, 두 번째는 내가 이렇게 많은 걸 몰랐구나 이다. ㅋㅋㅋ 미션을 진행하는 모든 순간에 항상 노션을 키고 기록을 해왔다. 그때 그때 떠오르는 기술들, 모르겠는 것들을 다 정리했었다. 하지만 시간에 쫓겨 얕게 배우고 바로 코드에 적용해보기만 했었기에 깊게 공부하지 않았던 것 같다. 만약 면접 질문에서 이 질문이 나오고, 꼬리 질문 2-3개가 반복되면 나는 깊게 대답할 수 있을까? 애매하게 아는 것은 모르는 것보다 위험하지 않을까? 라는 생각을 했다. 👶 나는 성장하긴 한걸까? 레벨 1 미션들을 수행하면서 뭔가 굉장..

우아한테크코스/레벨1

[회고] 우아한테크코스 6기 백엔드 레벨1 7주차 회고

2024년 3월 25일 ~ 3월 29일 Keep (잘한 것) 우아한테크코스 내에서 얼굴을 알고 있지만 인사하거나 이야기해보지 않았던 여러 크루들에게 먼저 인사하고 말을 걸어보았다. 감자, 위브, 조이썬, 켬미 등등등 .. ☺ 어려울 것이 하나도 없었고 얼굴만 알고 닉네임을 몰랐던 크루들에 대해서 알아갈 수 있었다. 운동을 꾸준히 잘 하고, 건강한 식사도 양을 잘 조절하여 챙겨 먹었다. 매일 정해진 시간 만큼의 집중을 잘 하였다. 덕분에 미션을 다 구현했을 뿐 아니라 제이미와의 피드백을 나누는 과정에서도 최선을 다할 수 있었다. Problem (아쉬운 것) 주말에는 아주 살짝 번아웃이 왔다. 그 이유는 완벽하기 위해 최선을 다한 코드, 최선을 다한 피드백이라는 것에 너무 집착하고 스스로 몰아가서인 것 같다..

우아한테크코스/레벨1

[회고] 우아한테크코스 6기 백엔드 레벨1 6주차 회고

2024년 3월 18일 ~ 3월 22일 Keep (잘한 것) 일간 회고 방식을 바꿨다. 일간 회고를 작성하긴 하는데 주저리주저리 정해진 틀 없이 써내리다 보니 나중에 다시 읽지도 않고, 어떤 생각을 했었는 지 전반적인 문맥을 파악하기가 힘들었다. 그래서 내 성장과 직결된 내용으로 회고를 작성해보려고 한다. 예전에는 성장을 위해 세운 목표가 굉장히 구체적이었다. (예를 들어 백준 플레티넘 티어 달성 / 바디프로필 촬영 등) 그래서 매일매일 무엇을 해야하는 지 명확했고, 매일 그 해야할 것을 성실히 수행했느냐가 성장했음을 확인할 수 있는 척도였다. 그런데 우테코에 와서는 그 중장기 목표가 추상적이고 뚜렷하지 않아서 어떤 것을 척도로 내 성장을 확인할 수 있을 지 감이 잡히지 않았다. (목표라고 해봤자 취업?..

우아한테크코스/레벨1

[회고] 우아한테크코스 6기 백엔드 레벨1 5주차 회고

2024년 3월 11일 ~ 3월 15일 뒤늦게 포스팅하는 5주차 회고이다. 5주차 회고를 늦게 작성하는 이유에 대해 핑계를 대자면 한 주동안 몸이 좀 아팠다. 😅😥 월요일, 화요일 즈음에 계속 기운이 없더니 수요일부터 골골 아프기 시작했다. 보통 주말에 회고를 작성하는 편인데 주말에 회고고 뭐고 쓰러져서 자느라 한 주 마무리를 제대로 못했던 것 같다. 다행히 그 다음 주부터 몸이 괜찮아 졌는데, 체스 미션이 시작되고 페어 프로그래밍을 하는 것에 정신이 팔려 결국 5주차 회고를 6주차를 마무리하며 작성하게 되었다. 어쩔 수 없는 거겠지만, 이번에 아팠던 것을 계기로 몸 관리를 정말 잘 해야겠다고 느꼈다. 몸이 아프니 머리도 안돌아가고, 오래 앉아있는 게 힘들었었다. 진짜 건강이 최고다 😂 Keep (잘한 ..

우아한테크코스/레벨1

[CleanCode] 1단계 ♠️블랙잭♠️ 페어 프로그래밍 & 리팩토링 회고

이번 미션은 블랙잭 게임을 구현하고 게임을 실행하는 프로그램을 만드는 것이다. 자동차 미션과 사다리 미션을 겪으며 아, 이정도 난이도군 🤔 하며 나름 내 속도를 찾고 적응하고 있었는데, 블랙잭 미션의 등장을 기점으로 해서 많이 휘청휘청 거렸던 것 같다. 현재까지 우테코 미션 중 가장 어려웠던 것 같은데, 내가 무엇을 배워갔는 지 정리해보려고 한다. 💎 블랙잭 미션에서 달성하고 싶은 목표 지난 사다리 미션과 비교해서 부족한 부분을 토대로, 이번 블랙잭 미션에서 이루고 싶은 것을 정리하였었다. 메타인지를 사용해서 내가 관념적으로 작성하던 코드에 의문을 제기하고 고민해보기 리뷰어가 제시하는 의견을 무조건 따르지 말고, 내가 이해가 안가는 부분이 있다면 리뷰어에게 반박 의견을 제시해보기 리뷰어의 의견을 눈으로만..

MINGYUM
코딩하는 겸