본문 바로가기

우아한테크코스

(25)
책임 연쇄 패턴을 사용해서 지하철 추가 요금 정책을 반영해보자 지하철 미션 3단계를 구현해보았다. 추가 요금 정책을 적용하는 것으로, 노선별 추가 요금 정책과 연령별 요금 할인 정책을 반영하여 요금을 산정해야 한다. 그리고 요금을 계산할 때, 책임 연쇄 패턴을 사용하였다. 책임 연쇄 패턴 (Chain of Responsibility) 이란 요청을 처리하는 객체들 사이에 연결을 형성하여 요청을 처리할 수 있는 객체를 순차적으로 찾아가는 패턴으로 일련의 객체들을 연결된 체인으로 구성하여 체인 상에 있는 객체들은 순차적으로 요청을 처리한다. 온라인 주문 시스템을 개발할 때, 요청이 인증되어야 주문을 할 수 있게끔 하고, 인증된 유저들에게 권한을 부여해주고자 한다. 이 과정에서 인증에 실패하면 권한 부여를 하는 로직을 거칠 필요가 없다. 또 요청을 검증하고, 반복 요청에 ..
h2 database 를 사용해서 InMemoryDao Test 하기 체스 미션을 하면서 DB 연결을 배우게 되었고 그에 따라 DB 에 값이 제대로 동작하는지 확인하는 테스트가 필요해졌다. 하지만 코드를 구현하면서 실제 사용하는 DB 에 바로 연결해서 테스트하기에는 위험성이 너무 컸고 강의에서는 Dao interface 를 만들고 public interface ChessBoardDao { void create(ChessBoard chessBoard, String id); void updateBoard(ChessBoard chessBoard, String id); ChessBoard findChessBoardById(String id); void update(ChessBoard chessBoard, String id); } 기능 구현을 할때는 InMemoryDao 를 이런식..
레벨 1 - 레벨 로그 자동차 경주 단위 테스트를 작성하는 이유 내가 작성한 코드가 생각한대로 잘 동작하는지 확인하기 위해 출력을 해서 눈으로 확인할 필요가 없다 코드가 복잡해지면 기능 하나하나 확인하기 쉽지 않다 테스트 케이스를 생각하는 과정에서 코드 예외처리를 어떻게 진행할지 생각할 수 있다 리팩토링 시 테스트 코드가 따로 작성되어있으면 수정 후 기능 확인 시 테스트 코드를 실행시켜보면 된다 개발 및 테스트에 대한 시간과 비용 절감 가능 MVC 패턴 하나의 애플리케이션, 프로젝트를 구성할 때 구성요소를 세가지의 역할로 구분한 패턴 비즈니스 로직과 화면을 구분한다 모델과 뷰는 서로를 몰라야 한다. (컨트롤러가 중재) domain 은 view 에 의존하지 않도록 한다 view 는 domain 에 의존하지 않도록 한다 toStr..
[우테코 프리코스] 5기 합격 이번 주 수요일 5기 결과가 나왔다. 최종 코테 이후로 계속 불안했었고 풀리퀘 코드만 계속 들락날락 거렸는데 정말 감사하게도 좋은 결과가 나왔다. 자소서, 프리코스 과정, 최종 코테를 기준으로 선발기준을 잡으셨었는데 세가지 각각 중점을 뒀던 부분들을 정리해보았다. 자소서 사실 자소서가 가장 중요한 factor 가 되지 않았었나 싶다. 5기 설명회에서도 거듭 말씀하셨듯이 컴퓨터 프로그래밍 공부를 접할 기회가 적던 분들에게 더 기회를 준다고 말씀하셨었다. (그래서 전공자보다는 비전공자가, 또 다른 부트캠트나 교육기관을 경험한 사람들보다는 경험 안했던 사람들에게 좀 더 우선순위를 줄 수 있을 거라 하셨다) 내 상황을 말해보자면 나는 비전공자이고 프로그래밍 교육기관에서 1년 동안 공부를 하고 있는 상태였다. 교..
[우테코 프리코스] 최종 코딩 테스트 결과는 내손을 떠났으니 미련을 두지 말자고 생각하다가도 계속 생각이 머릿속에서 떠나지 않아서 글로 쓰면서 마음 정리를 해본다 1차 발표가 난뒤엔 사실 프리코스 끝나고 개인적인 만족감과 성취감과는 별개로 큰 기대는 하지 않고 있었다 왜냐면 인원이 너무 많았으니까.. 그래서 미련을 갖지 않기 위해 일부러 템플스테이도 갔다오고 일부러 정신을 딴데 쏟지 못하도록 몸을 혹사시키면서 공부했었다 그리고 대망의 수요일 ! 발표난다는 건 알고 있었지만 진짜 큰 기대가 없어서 해야 하는 일 끝내고 저녁 5시? 6시? 쯤에 메일함 들어가봤더니 1차 통과 메일이 와있어서 어리둥절하면서도 기쁘고 또 걱정되었다 왜냐면 그동안 자바 코드를 치는 건 약간 소홀히 했었던터라(...) 코드 작성보다는 객체 지향을 너무 멋모르고 코드 작..
[우테코 프리코스] 4주차 과제하면서 공부한 것들(중요 포인트!) 인터페이스 기본으로 제공된 BridgeNumberGenerator 가 인터페이스이고 BridgeRandomNumberGenerator 은 그 인터페이스를 상속받는다. 인터페이스는 무엇일까 출처 : https://life-with-coding.tistory.com/488 인터페이스는 추상 메서드만을 가질 수 있고 구현메서드는 가질 수 없는 일종의 추상 클래스입니다. 위의 추상 클래스와 다른 점은 자식 클래스들의 기능 유사도인데요. 추상클래스는 서로 비슷한 기능을 하는 클래스들을 묶을 때 사용하며, 인터페이스는 서로 다른 기능을 하는 클래스들을 묶을 때 인터페이스를 사용합니다. 인터페이스는 100% 다형성 보장 부모 클래스가 인터페이스이면 자식 클래스가 무조건 구현되어..
[우테코 프리코스] 3주차 숫자 야구 자바 기초 영상 도메인 : 내가 실제 다루고자 하는 서비스의 비즈니스 로직이 들어있는 영역 package baseball.domain baseball 패키지의 비즈니스 로직이 들어있음 패키지를 나눠줌으로써 동일한 일을 하는 클래스들을 묶어주고 클래스들이 어떤 일을 하는지를 쉽게 알아볼 수 있다. 클래스 변수(static), 인스턴스 변수 불변 변수 선언 : 수정 불가라고 지정. final 키워드 사용 객체 지향 프로그래밍 1. 기능을 가지고 있는 클래스를 인스턴스화(=객체) 한다. 2. 필요한 기능을 역할에 맞는 각 인스턴스가 수행하게 한다. 3. 각 결과를 종합한다. List : 자바에서 제공하는 collection. 필요한 기능을 미리 만들어서 제공해주고 있다. 배열을 사용해서 사용할 기능..
[우테코 프리코스] 2주차 AssertJ library import import static org.assertj.core.api.Assertions.*; 사용법 예시 1) object assertion either to determine equality of two objects or to examine the fields of an object. public class Dog { private String name; private Float weight; // standard getters and setters } Dog fido = new Dog("Fido", 5.25); Dog fidosClone = new Dog("Fido", 5.25); assertThat(fido).isEqualTo(fidosClone); assert..