최근에 봤던 회사의 기술면접에서 리스코프 치환 원칙에 대해서 물어보았습니다. 리스코프 치환 원칙이 무엇인지 대강은 알고 있었지만 막상 설명하려니 잘 나오지가 않더군요.. 게다가 그것을 위반한 코드의 예시와 그 코드를 올바르게 수정하려면 어떻게 해야 하느냐는 질문에 잘 답변하지 못했습니다 ㅠㅠ 이번 포스팅에서는 리스코프 치환 원칙에 대해서 제대로 공부도 할 겸 정리해 보려고 합니다. SOLID원칙을 정리해 둔 블로그들을 보면 보통 자바로 정리되어 있는 경우가 많은데, 제 글이 코틀린을 주로 사용하시는 개발자 분들에게 도움이 되었으면 합니다. 1. 리스코프 치환 원칙이란?리스코프 치환 원칙(LSP, Liscov Substitution Principle)은 객체지향 프로그래밍의 5원칙인 SOLID원칙 중 하나..
이번 포스팅에서는 JUnit 5를 사용해 코틀린에서 테스트코드를 어떻게 작성하는지 알아보겠습니다. 저는 재작년 우테코 6기 프리코스를 할 때 테스트코드라는 것을 처음 알게 되었고, 작성해 보았는데요! 난생처음 작성해 보는 데다 관련 정보가 많지 않아서 테스트코드를 짜기 굉장히 어려웠던 기억이 있습니다. 오늘은 제가 우테코에서 배운 JUnit 5 사용법을 기초부터 설명해 보려고 합니다. 테스트코드가 처음이신 분들도 쉽게 따라올 수 있도록 최대한 쉽게 설명하려고 하니, 테스트코드에 대한 이해가 없는 분들께 도움이 되었으면 좋겠습니다! 😊 1. JUnit 5란?테스트코드를 작성하고 싶어서 들어왔는데 JUnit 5 얘기를 계속 하네? 나는 아직 JUnit 5가 뭔지도 모르는데.. 하시는 분들이 계실 수 있습니..
컴퓨터공학에는 동등성(Equality)과 동일성(Identity)이라는 개념이 존재합니다. 보통 일상생활에서 사용하는 "동등하다"와 "동일하다"라는 표현은 서로 비슷한 의미여서 두 표현의 의미를 명확히 분리해 쓰지는 않을 것 같은데요, 하지만 컴퓨터공학에서 이 두 표현은 명백히 다른 의미를 가지고 있고, 구분해서 사용해야 합니다. 이번 포스팅에서는 코틀린에서 동등성과 동일성이 어떻게 다른지 살펴보겠습니다! 1. 동등성, 동일성이 무슨 용어지?동등성, 동일성은 객체나 데이터를 비교할 때 같은지를 판단하는 개념입니다. 그리고 어떻게 같은지에 따라서 같다고 하더라도 동등하거나 동일한 것으로 나뉘게 됩니다. 2. 동등성이란?먼저 동등성은 두 데이터가 같은 내용(값)을 가지고 있음을 의미합니다. 다음 코드를 봅시..
코틀린에는 자바에는 없는 다양한 클래스들이 존재합니다. data class는 그중 하나로, 굉장히 편리한 기능들을 제공하고 있지요. 저는 자바를 안 해봐서 data class가 얼마나 편리한 클래스인지 체감을 해보지는 않았지만, 코틀린의 강력한 기능임에는 분명합니다. 우테코에 들어와서 첫 주차에 data class에 대한 강의가 있었습니다. 가장 처음에 배울 만큼 중요한 개념입니다. 그때에는 data class는커녕 class의 개념조차 완벽히 정립되어 있지 않았어서 굉장히 이해가 어려웠던 기억이 있네요.. 하지만 우테코를 수료한 지금은 누군가에게 data class를 설명할 수 있을 정도로 실력이 향상된 것 같습니다! 😄 그럼 한 번 data class를 알아보러 떠나봅시다. ㅎㅎ 1. data c..
1. 객체지향 프로그래밍은 알겠는데, 객체는 모른다?컴퓨터공학을 전공하신 분들이라면, 또는 자바나 C++과 같은 프로그래밍 언어를 공부하신 분들이라면 객체지향 프로그래밍이 무엇인지 모르시지는 않을 것입니다. 절차지향 프로그래밍과 반대되는, 프로그램의 설계를 객체라는 개념을 토대로 바라보는 관점이 바로 객체지향 프로그래밍입니다. 하지만 많은 개발자들이 객체지향 프로그래밍을 하고 있으면서도, 객체가 무엇인가?라는 질문에 대해 명확한 대답을 할 수 있는 사람은 드뭅니다. 저 또한 그러한 사람 중 한 명이었고, 우아한테크코스에서 공부하며 제가 아직도 객체가 무엇인지, 심지어 객체지향 프로그래밍이 무엇인지조차 모르고 있었다는 사실을 깨닫게 되었습니다. 그래서 객체란 무엇인지 한 번 제대로 짚고 넘어갈 필요가 있다..
객체지향 프로그래밍을 해 본 사람이라면 프로퍼티와 필드가 무엇인지 모르시는 분들은 아마 없을 거라고 생각합니다. 클래스 내부에 존재하여, 객체의 상태를 나타내는 멤버 변수를 프로퍼티, 혹은 필드라고 부르게 되지요. 프로퍼티(property)라는 단어는 영어로 재산, 혹은 특성 정도의 의미를 지니고 있으니, 클래스의 멤버 변수를 프로퍼티라고 부르는 이유도 납득이 갑니다. 하지만 프로퍼티와 필드의 차이를 정확하게 알고 계시는 분은 의외로 적을 거라고 생각합니다. 두 개념이 비슷한 개념이기도 하고, 거의 동의어처럼 혼용해서 사용하시는 분들도 많은 것 같습니다. 저 또한 두 개념의 차이를 공부해도 이해가 잘 가지 않아 '뭐 거의 같은 거겠지' 하고 생각해 왔습니다. 그러다가 제가 지금 다니고 있는 우아한테크코스..