[OOP] SOLID
·
Programming/OOP
우아한테크코스 레벨 1에서 학습한 내용을 정리한 글입니다. 💭 들어가며미션을 진행할 때마다 항상 "좋은 설계란 무엇일까?"라는 고민을 하게 된다. 그 물음에 대한 답을 찾기 위해 다양한 시도를 해보지만, 결국은 SOLID 원칙으로 귀결되곤 한다.SOLID 원칙은 객체지향 설계에서 지켜야 할 다섯 가지 핵심 원칙을 말하며, 변화에 유연하고 유지보수가 쉬운 구조를 만드는 데 큰 도움을 준다. 궁극적으로 좋은 설계란 변경 사항이 생겼을 때 영향을 받는 범위가 최소화된 구조라고 생각한다. 이런 구조를 만들기 위해 SOLID 원칙은 좋은 기준점이 되어 준다.SRP (Single Responsibility Principle): 단일 책임 원칙OCP (Open Closed Principle): 개방 폐쇄 원칙LSP..
[Java] 인터페이스, 추상 클래스, 일반 상속
·
Programming/Java
우아한테크코스 레벨 1에서 학습한 내용을 정리한 글입니다. 💭 들어가며미션을 진행하면서 인터페이스와 추상 클래스의 특징을 명확히 이해하지 못한 채, 미션을 완료하기 위해 무작정 사용하곤 했다. 그런데 이번 장기 미션에서 페어였던 포포는 추상 클래스를 깔끔하게 잘 활용하는 반면, 그 차이를 온전히 따라가지 못하는 나를 보며 해당 개념을 다져야겠다고 생각했다. 이를 계기로 인터페이스와 추상 클래스, 그리고 일반 상속의 특징과 차이점 및 사용 시점 등에 대해 정리해 보았다.  ✅ 인터페이스(Interface)interface 키워드로 선언된 구조이다.기능을 정의하는 데 사용한다.메서드 시그니처만을 가진다.자바 8부터 default 메서드(구현 포함)와 static 메서드 선언이 가능해졌다.기본적으로 모든 메..
[Java] 제네릭(Generic)
·
Programming/Java
우아한테크코스 레벨 1에서 학습한 내용을 정리한 글입니다. 💭 들어가며자바의 제네릭은 컬렉션 프레임워크를 사용할 때 자연스럽게 접하게 되지만, 정확한 용도를 깊이 이해하지 못한 채 사용해 왔다는 생각이 들었다. 이번 기회를 통해 학습하면서, 제네릭이 예상보다 복잡한 개념임을 알게 되었다. 따라서, 이번 포스팅에서는 기본적인 내용을 간단히 정리하고, 추가적인 학습이 필요할 경우 심화 내용을 따로 다루고자 한다.  ✅ 제네릭(Generic)이란▶ 정의제네릭(Generic)은 타입을 변수화하여, 클래스나 메서드 선언 시 구체적인 타입을 적지 않고, 사용하는 쪽에서 그 타입을 지정해 줄 수 있도록 하는 기술이다.🔽 예시 코드List genericList = new ArrayList();위 예시에서 List은..
[Java] 컬렉션 프레임워크(Collection Framework)
·
Programming/Java
우아한테크코스 레벨 1 자료를 참고하여 학습한 내용을 정리한 글입니다.틀린 내용이나 그림이 있다면 댓글로 알려주시면 감사하겠습니다. 👐🏻 💭 들어가며미션을 수행할 때 주로 List나 Set 같은 익숙한 컬렉션만 사용해 왔다. 하지만 LinkedList, Deque 등의 자료구조를 접하면서 컬렉션의 동작 방식과 적절한 활용 시점을 정확히 파악하지 못하고 있다는 생각이 들었다. 이러한 문제를 해결하기 위해, Java의 컬렉션 구현체들을 하나씩 분석하며 깊이 있게 공부할 필요가 있다고 느꼈다.Java Collections Framework는 크게 인터페이스(Interface)와 구현체(Implementations)로 구성되어 있으며, 각 구현체는 특정한 상황에서 더 효율적인 성능을 제공한다. 이를 이해하..
[Java] 람다 표현식, 함수형 인터페이스, Stream API
·
Programming/Java
우아한테크코스 레벨 1 자료를 참고하여 학습한 내용을 정리한 글입니다. 💭 들어가며일반 for 문과 향상된 for 문에 익숙해져 있어 Lambda와 Stream API를 사용하지 않았다. 우아한테크코스 미션에서 Lambda와 Stream API를 활용하는 데 미숙한 나를 보며 계기로 학습의 필요성을 느꼈지만, 왜 for 문 대신 Stream API를 사용해야 하는지 잘 와닿지 않았다. 기존의 for 문도 충분히 가독성이 있다고 생각했기 때문이다. 따라서 이번 글에서는 람다 표현식(Lambda Expression), 함수형 인터페이스와 Stream API를 왜 사용하는지, 그리고 어떻게 활용하는지를 정리했다.  ✅ 람다 표현식(Lambda Expression)▶ 사용하는 이유Java 8 이전에는 익명 클..
[Java] 테스트 코드, JUnit & AssertJ
·
Programming/Java
우아한테크코스 레벨 1 자료를 참고하여 학습한 내용을 정리한 글입니다. 💭 들어가며테스트 코드를 작성하는 것은 개발자에게 매우 중요한 일이다. 경험이 쌓이고 연차가 늘어날수록 코드의 안정성을 더욱 중요하게 고려해야 한다. 테스트 코드를 작성할 때 일반적으로 org.junit.jupiter.api.Assertions(JUnit) 또는 org.assertj.core.api.Assertions(AssertJ)를 사용하며, 대부분 후자인 AssertJ를 선호하는 경우가 많다. 그 이유는 아래에 살펴보자.  ✅ Test AnnotationAnnotation설명@Test단위 테스트를 정의@DisplayName테스트 이름을 지정@Nested내부 클래스를 이용한 그룹화 테스트@Disabled테스트를 비활성화@Para..
[우아한테크코스] 최종 합격 기록
·
회고/우아한테크코스
💭 들어가며메일이 발표 시간보다 3시간 정도 지나서 도착했다. 오후 3시부터 긴장감에 배가 아팠고, 3시간 가량은 지옥에 있는 것 같았다. 집에 가는 길에 버스를 갈아타려고 내린 순간, 최종 합격 메일을 받았다..! 버스 환승 센터는 사람들로 북적였고, 정말 추웠지만 그 순간에는 아무것도 보이지 않고 너무 기뻤다. 사랑하는 사람들에게 연락을 돌리고 축하를 받았다. 벌써 큰 연말 선물을 받은 기분이었다. 이제 정말 기대되는 2025년이 다가오고 있다. 이 글은, 우아한테크코스의 여정에 도전하고자 하는 사람들에게 조금이라도 도움이 되길 바라는 마음에서 작성하고자 한다. ✅ 자기소개서자기소개서에 영혼을 갈아 넣었다. 문장 하나하나를 꼼꼼히 읽고 다듬으며, 더 잘 읽히고 진정성 있게 전달되도록 여러 번 수..
[우아한테크코스] 1차 합격, 최종 코딩 테스트 기록
·
회고/우아한테크코스
💭 들어가며감사하게도, 우아한테크코스 1차 심사에 합격했다. 메일을 읽던 당시, 혼자 집에 있었음에도 기쁨에 소리 질렀던 기억이 아직도 생생하다. 동시에 "내가 해낼 수 있을까? 하는 불안감도 밀려왔다. 하지만, 지원서와 프리코스를 통해 보여드리고자 했던 꾸준함과 끈기를 떠올리며, 결국 최종 코딩 테스트에서는 지금까지 쌓아온 노력을 온전히 담아내기만 하면 된다는 마음으로 임했다. 🔥 준비 과정프리코스가 끝난 후, 다른 지원자들이 스터디를 꾸려 일주일에 한 번씩 꾸준히 문제를 푸는 모습을 보며 나도 연습을 해야 하지 않을까 고민했다. 하지만 내가 연습하지 않았던 이유는 밀린 프로젝트와 시험 때문이기도 했지만, 가장 큰 이유는 연습을 지속하다가 1차에서 떨어졌을 때 받을 감정적인 타격이 두려웠기 때문..
soeun2537
'우아한테크코스' 태그의 글 목록 (3 Page)