최종 코딩테스트 연습최종 코딩테스트를 앞두고 우테코 디스코드의 동물원 채널에서 친해진 분들과 함께 스터디를 진행했다. 최종 코딩테스트 3주 전부터 매주 2번, 5시간씩 실전과 동일한 환경에서 문제를 풀었고, 문제를 푼 후에는 대화형 코드리뷰를 통해 서로의 부족한 점을 채우고 피드백을 주고받으며 실력을 향상시켰다.github repository : https://github.com/wooteco7th-study/wooteco7th/pulls GitHub - wooteco7th-study/wooteco7thContribute to wooteco7th-study/wooteco7th development by creating an account on GitHub.github.com 또한 skillswap 스터디..
인터페이스, 추상 클래스, 합성 사용 시점인터페이스 사용 시점서로 독립적으로 존재하지만 공통된 행위(계약)을 가진 객체들에게 적합하다.상호작용하지 않는 객체부모가 아닌 구현체 둘이 함께 고려되어야 하는 상황이 거의 없다면 사용하자.구현체 둘이 함께 고려되어야한다면 합성 사용하기 크리스마스) 할인 정책// 증정 정책에 대한 공통 행위(규약)을 정의interface Gift { boolean isApplicable(); BigDecimal calculateAmount(); Map provideGiftItems(); String getName(); }class ChampagneGift implements Gift { priva..
상속과 다형성상속코드를 재사용하기 위해 가장 널리 사용되는 방법클래스 사이에 관계를 설정하는 것만으로도 기존 클래스가 가지고 있는 모든 속성과 행동을 새로운 클래스에 포함시킬 수 있다.부모 클래스가 제공하고 있는 모든 인터페이스를 자식 클래스가 물려받을 수 있다.자식 클래스는 부모 클래스가 수신할 수 있는 모든 메세지를 수신할 수 있기 때문에 외부 객체는 자식 클래스를 부모 클래스와 동일한 타입으로 간주할 수 있다.상속은 두 클래스의 인터페이스를 통일하기 위해 사용된 구현 방법동일한 인터페이스를 공유하는 클래스들을 하나의 타입 계층으로 묶는다.추가할 클래스가 기존의 어떤 클래스와 매우 흡사할 경우클래스의 코드를 재사용하는 방법 -> 상속업캐스팅 : 자식 클래스가 부모 클래스를 대신하는 것 구현 상속과 인..
절차지향 vs 객체지향절차지향프로세스와 데이터를 별도의 모듈에 위치시키는 방식모든 처리가 하나의 클래스 안에 위치하고 나머지 클래스는 단지 데이터의 역할만 수행public class Theater { public void enter(Audience audience, TicketSeller seller) { if (audience.getBag().hasInvitation()) { // 초대장이 있으면 Ticket ticket = seller.getTicketOffice().getTicket(); audience.getBag().setTicket(ticket); // Theater가 Audience의 가방을 직접 확인 } else { //..
1.1. 복잡한 요구사항 분석과 설계미션 난이도 변화1~3주차: 단순 요구사항익숙한 도메인과 비교적 단순한 요구사항이었습니다.객체지향 설계와 TDD를 적용하는 것에 집중했습니다.코드 품질을 개선하는 연습을 했습니다.4주차: 복잡한 요구사항A4 2페이지 분량의 복잡한 요구사항이었습니다.프로모션, 멤버십, 보너스 상품 등의 복잡한 비즈니스 로직을 이해하는데 시간이 걸렸습니다 (1시간)예상 출력과 테스트 코드로부터 숨겨진 요구사항을 발견할 필요가 있었습니다.5시간 내에 구현하는 것을 도전해보면서 시간에 대한 압박감이 있었습니다.결국 구현하는데 이틀이라는 시간이 걸렸습니다.. 발생한 문제점요구사항 분석의 어려움복잡한 요구사항을 이해하는데 어려움을 겪었고, 일부 요구사항을 누락하여 파악했습니다.숨겨진 요구사항을 ..
중간 회고지원서에 작성한 목표 달성 정도기존 목표 : 요구사항을 만족할 때까지 AI 도구를 사용하지 않겠다는 목표지원서에 작성한 "요구사항 만족 전까지 AI 도구를 사용하지 않겠다"는 목표를 지금까지 잘 지켜오고 있습니다. 1, 2주차 미션 전 과정(테스트, 구현, 리팩토링)에서 GPT나 Copilot의 도움 없이 진행했고, 테스트 통과 후 1-2일 정도만 GPT의 의견을 참고해 추가 리팩토링을 진행했습니다. 위 목표를 지키면서 얻은 점을 정리해보았습니다.첫째, 코딩 실력이 빠르게 성장했습니다.매 미션마다 구현 시간이 확연히 빨라졌고, 직접 모든 코드를 작성하다보니 문법과 작성 패턴이 더 깊이 기억에 남았습니다.둘째, 네이밍 스킬이 늘었습니다.자주 사용되는 도메인 용어나 메서드명을 문서화하여 도메인에 더..
3주차 미션https://github.com/woowacourse-precourse/java-lotto-7/pull/236 [로또] 김명지 미션 제출합니다. by Starlight258 · Pull Request #236 · woowacourse-precourse/java-lotto-7로또 기능 목록 1. 로또 구입 금액을 입력 받는다. 1000원 단위의 구입 금액 입력 구매 금액 저장 2. 로또를 발행한다. 로또 구매 금액으로부터 구매할 로또 수량 계산 로또 수량만큼 1~45 사이의 중github.com 느낀 점TDD를 제대로 적용하자TDD에 대한 오해처음에는 TDD를 단순히 테스트를 먼저 작성하고 구현하는 방식으로 이해했습니다. 그래서 전체 시스템의 입출력을 검증하는 통합 테스트를 작성하고 이를 통과..
고민한 점1주차 공통 피드백을 반영하자1주차 과제를 제출하고 공통 피드백을 확인했습니다.미처 생각하지 못한 부분이 많아서 많이 배웠습니다.1주차 과제를 피드백에 맞게 수정하고, 2주차 과제에 피드백을 고려하며 구현했습니다.특히 아래와 같은 부분에서 코드를 수정했습니다. 의도를 드러내지 않는 이름 사용하지 않기xx1, xx2처럼 파라미터에 연속된 숫자를 덧붙이는 것보다는 명확한 변수 이름을 사용하도록 수정했습니다.public class IntegerComparable implements NumberComparable { // 기존 @Override public boolean meetsThreshold(final Integer number1, final Integer number2) {..