우테코 재도전~
3학년때 우테코 7기를 도전했었다. 1차합격도 못했었다;;; 지금 돌이켜보면 코드에도 문제가 있었겠지만 더 큰 문제는 아마 지원서가 남들이 이해하지 못하는 주제? 혹은 잘 못쓴 지원서가 아니었나 생각 들었다.
이번에 25년 우테코 질문 항목이 1개여서 그리고 그동안 1년동안 경험했던 것들 기반으로 진정성있게 작성을 했다. 정말 진심으로 하고 싶다 ㅠㅠ
문자열 덧셈 계산기
👹설계는 넘 어려워~
작년에도 느꼈었지만 요구사항을 보고 구현해야할 기능으로 나누고 이 기능들을 구현하기 위해 어떻게 객체지향적으로 설계해야할까?가 항상 막막했다. 그래서 이번에는 오브젝트라는 유~명한 책과 인프런에서 강의를 구입해서 공부하기 시작했다.
두 강의와 책 모두 아직 다 듣지는 않았지만 객체지향설계나 요구사항 분석하는 것에 감을 잡을 수 있었다.
오브젝트와 클린 코더스: 실전 객체 지향 프로그래밍과 TDD 마스터 클래스 강의에서 공통적으로 설명하는 부분은
설계 과정에 대한 설명부분이었는데
- 시스템이 사용자에게 제공해야하는 기능인 시스템 책임 파악한다.
- 시스템 책임을 더 작은 책임으로 분할한다.
- 분할된 책임을 수행할 수 있는 적절한 객체 또는 역할을 찾아 책임을 할당한다
- 객체가 책임을 수행하는 도중 다른 객체의 도움이 필요한 경우 이를 책임질 적절한 객체 또는 역할을 찾는다
- 해당 객체 또는 역할에게 책임을 할당함으로써 두 객체가 협력하게 한다.
완전히 이해해서 바로 적용하지는 못했지만 최대한 따라가면서 적용해봤었다. 그래서 그런지 생각보다 오래걸렸었다.
우선 기능별로 구현 목록을 작성했고
각 기능을 보고 이 기능을 구현하기 위한 객체들을 책임을 기준으로 뽑아서 정리를 했다.
각각의 책임과 역할을 작성한 것은 PR링크에서 확인할 수 있다.
👹Stream에 익숙해지자
stream 문법을 많이 사용했는데 공부를 했는데도 머뭇머뭇거렸던것 같다. 다시 복습해보자
1 | |
.map : 각 요소를 다른 형태로 변환
.colloet : 수집
Collectors.joining() : 문자열 스트림을 하나로 합쳐서 연결한다. 구분자를 붙일 수 있다.
1 | |
.anyMatch : 하나라도 조건을 만족하는지
1 | |
Stream.concat() : 두 요소를 합친 스트림을 생성한다.
.stream() : 컬렉션에서 스트림을 생성한다
Stream.of() : 직접 요소를 입력해 스트림을 생성한다
1 | |
.peek() : 중간에 데이터를 처리
1 | |
.reduce() : 누적 함수를 사용해 모든 요소를 단일 결과로 합침, 초깃값이 없으면 Optional로 변환
1 | |
Array.stream() : 배열로 부터 스트림 생성
.filter() : 중간에 조건에 맞는 요소만 추려낸다.

