전체 글

😼 Github : https://github.com/Mingyum-Kim
DEV book/객체지향의 사실과 오해

[OOP] 객체지향의 사실과 오해 5, 6장 - 자율적인 객체와 도메인 모델링

책임과 메시지 객체지향 패러다임이 전통적인 패러다임에 비해 우월한 이유는 뭘까? 객체지향에서는 명확한 책임을 가진 객체들이 협력에 참여해야 한다. 그러나 책임은 ‘어떻게’가 아닌 ‘무엇을’ 이라는 형태로 나타나야 하며, 객체가 책임을 수행하는 방식의 자율성을 보장해주어야 한다. 객체는 메세지를 전송하여 다른 객체에게 접근할 수 있다. 이 메시지에 추가적인 정보가 필요하면 인자(argument)로 이를 표현할 수 있다. 메서드 객체에게 메시지를 전송하면 결과적으로 메시지에 대응되는 메서드가 실행된다. 어떤 메서드를 호출할 지 실행 시간에 결정할 수 있는 것은 객체지향의 핵심이다. 다형성 다형성은 서로 다른 타입에 속하는 객체가 동일한 메시지를 수신할 경우, 서로 다른 메서드로 이를 처리할 수 있는 메커니즘..

DEV book/객체지향의 사실과 오해

[OOP] 객체지향의 사실과 오해 3, 4장 리뷰 - 역할, 책임, 협력

타입과 추상화 개념 개념(concept)이란 공통점을 기반으로 객체들을 하나로 묶기 위한 그릇이다. 개념을 이용하면 서로 다른 객체를 여러 그룹으로 분류할 수 있다. 이렇게 분류된 그룹 안에 속한 하나의 객체를 그 개념의 인스턴스 (instance) 라고 한다. 즉, 객체는 특정 개념에 적용되었을 때 ‘인스턴스’라고 부를 수 있다. 따라서 우리가 많은 사물들의 공통점을 통해 개념을 확립하고, 분류하였을 때 비로소 하나의 객체는 인스턴스로 사용될 수 있는 것이다. 개념은 세 가지 관점으로 해석할 수 있다. 심볼 (symbol) - 개념을 지칭하는 명칭 내연 (intension) - 개념의 정의 외연 (extension) - 개념에 속하는 모든 객체의 집합 타입(type) 객체를 분류함으로써 우리는 객체들의..

DEV book/객체지향의 사실과 오해

[OOP] 객체지향의 사실과 오해 1, 2장 리뷰 - 객체지향의 본질

협력하는 객체들의 공동체 객체지향이라는 예술은 적절한 객체에게 적절한 책임을 할당하는 것에서 시작된다. 객체지향 설계를 하기 전, 객체의 역할을 확립하자. 객체의 역할은 아래와 같은 특징을 가진다. 여러 객체가 동일한 역할을 수행할 수 있다. 하나의 객체가 여러 역할을 수행할 수 있다. 역할은 대체 가능성을 의미한다. 객체는 책임을 다하는 방법을 선택할 수 있다. 협력하는 객체의 덕목 다른 객체의 요청한 것 (what)에 협력적으로 응답한다. 객체가 어떻게 (how) 응답하는 지에 대해 충분히 자율적이다. 객체는 자율적이기 위해서 어떤 행동(behavior)을 하기 위해 필요한 상태(state)를 알고 있어야 한다. 예를 들어, 바리스타는 커피 제조를 위한 방법을 기억하는 상태에 있고, 그렇기 때문에 이..

DEV book/토비의 스프링 3.1

[토비의 스프링 3.1] 6장 - AOP (1) 직접 구현하는 고립된 단위 테스트

앞서 트랜잭션 경계를 설정하기 위해 서비스 추상화 기법을 사용하였고, UserService안에 트랜잭션 관련한 코드를 기입하였다. AOP를 사용하는 이유 중 가장 대표적인 것은 선언적 트랜잭션 기능이다. 트랜잭션 경계 설정을 조금 더 세련되게 수정하는 과정에서 AOP를 사용해보는 파트이다. 우선, 이전 시간에서 UserServiceTest에서 UserDao와 MailSender 오브젝트를 호출하여 통합 테스트를 진행하는 것을 실습하였다. 각각의 오브젝트를 직접 고립시켜보고, 외부 DB 등과 같은 환경에 종속되지 않는 단위 테스트를 구현해보자. 트랜잭션 코드의 분리 public void upgradeLevels() throws Exception { // 트랜잭션 시작 TransactionStatus sta..

DEV book/토비의 스프링 3.1

[토비의 스프링 3.1] 5장 서비스 추상화 - UserService, TransactionService 추상화

4장에서 데이터베이스에 접근하는 기술이 다양함을 볼 수 있었듯이, 여러 환경이나 상황에서 기술이 바뀌고 다른 API를 사용하기 때문에 성격이 비슷한 여러 기술을 추상화하고 이를 일관되게 사용할 수 있도록 하는 것은 중요하다. 데이터를 가져오고 입력하는 역할을 하는 UserDao에 사용자의 레벨을 관리하는 기능을 추가하고 싶다. 그러나 레벨 관리와 관련한 복잡한 비즈니스 로직은 UserDao가 아닌 비즈니스 로직 서비스를 제공한다는 의미에서 UserService에서 관리한다. UserService는 UserDao의 빈을 DI 받아 사용한다. UserDao의 구현 클래스가 바뀌어도 UserService는 영향을 받지 않는다 public class UserService { UserDao userDao; pub..

DEV book/토비의 스프링 3.1

[토비의 스프링 3.1] 4장 예외 - 예외 처리 전략과 DataAccessException을 사용한 JDBC 한계 극복

모든 예외는 적절하게 복구되거나 작업을 중단시키고 개발자에게 통보되어야 한다. 자바에서 프로그램 상에 Throw 할 수 있는 예외는 총 세가지 종류가 있다. 예외의 종류 java.lang.Error의 서브 클래스 OutOfMemoryError나 ThreadDeath와 같이 자바 VM에서 발생시키는 에러를 말한다. Exception과 Checked Exception 개발자의 애플리케이션 코드에서 발생한 에러이다. Checked Exception이란 Exception의 서브 클래스이면서 RuntimeException을 상속하지 않은 것을 의미한다. 체크 예외가 발생하는 코드를 작성할 때는 예외를 처리하는 코드를 반드시 함께 작성한다. 예를 들어, 존재하지 않는 파일의 이름을 입력한 FileNotFoundEx..

Other/기록

[회고] 봄날은 온다, 2023년 하반기 회고 😎

2023.06.30 - [Other/기록] - [회고] 2023년 상반기 회고 👶 그리고 하반기 목표 [회고] 2023년 상반기 회고 👶 그리고 하반기 목표 부끄럽지만 .. 2023년 상반기를 마무리하며 처음으로 회고 글을 작성해보려고 한다. 2023 상반기를 짧게 정리하자면, 흘러가는 대로 살던 내가 마음을 고쳐먹고 크게 성장한 시기라고 할 수 있다. mingyum119.tistory.com 2023년 6월 30일에 작성한 상반기 회고에서 하반기의 목표를 언급했었다. 어느새 시간이 훌쩍 지나 12월 30일이다 😮 딱 6개월이 지나고 많은 게 달라진 지금이다. 상반기 회고를 작성할 때면 내가 많이 부족하다는 생각에 힘들어했던 것 같은데, 그래도 나름의 결과물을 내고 이것저것 나만의 스토리를 만들어 온 덕..

우아한테크코스/레벨0

[회고] 우아한테크코스 6기 백엔드 최종 합격 후기 & 총정리

우아한테크코스 6기 백엔드 최종 합격 후기 이 제목의 회고글을 쓸 수 있다니 .. 🥲 기다려왔던 순간인데 아직도 얼떨떨하고 현실감이 느껴지지 않는다. 최종 합격자 발표가 있던 오늘, 오후 내내 스터디가 있었기에 메일을 일부러 보지 않기로 했다. 왜냐하면 합격을 하던, 불합격을 하던 그 감정을 참아내며 스터디를 진행할 수 없을 것이라고 생각해서였다. 그런데 2시부터 다리가 덜덜 떨리고 심장이 쿵쿵 뛰어서 도무지 집중할 수가 없어서 결국 메일을 보게 되었는데, 왠걸 합격이었다 🥰 최종 코딩테스트를 응시한 이후로 최종 합격 메일을 열람하는 순간이 계속 꿈에 나왔다. 합격하는 꿈을 꾸고 일어나서도 너무 생생해서 그게 현실이 아니라는 것에 절망하고 ..... 아무튼 별 짓을 다했다. 최선을 다했다고, 결과에 상관..

우아한테크코스/레벨0

[회고] 우아한 테크코스 6기 백엔드 최종 코딩테스트 회고 & 리팩토링 - 온콜

2023.12.17 - [Other/기록] - [회고] 우아한 테크코스 6기 최종 코딩테스트 후기 feat. 아쉬움 가득 ... [회고] 우아한 테크코스 6기 최종 코딩테스트 후기 feat. 아쉬움 가득 ... 두둥. 드디어 우아한 테크코스 마지막 전형인 최종 코딩테스트를 응시하였다! 그간 고생했던 나, 그리고 프리코스 동료들 모두 수고하셨습니다. 😊 최종 코딩 테스트는 우아한 테크코스 선릉 mingyum119.tistory.com 지난 후기에서 우아한 테크코스 최종 코딩테스트 시험을 치루면서 준비한 것들과 오프라인 시험을 치고 온 후기를 남겼다. 이후로 오픈 카카오톡 채팅방에서 함께 최종 코딩테스트 코드를 리뷰할 사람들을 모집하였고, 시험을 보았던 리포지토리를 공개로 전환하여 PR 생성 + 리드미 작성..

MINGYUM
코딩하는 겸