키오스크 과제 : 장바구니 구현기 (HashMap에서 Key의 유일성 판단)
·
TIL
이번 키오스크 과제를 하면서는 설계를 하는 데에 많은 고민을 했다.어떤 클래스를 만들까? 이 클래스가 어떤 역할까지를 맡는 것이 맞을까?어떤 메서드를 만들까? 이 메서드가 어떤 기능까지 수행하는 것이 맞을까?와 같이 역할을 분리하는 데에,특히 사용자와 상호작용 하는 부분과 내부 비즈니스 로직을 어떤 클래스에 어떤 메서드로 분할할 지를 많이 고민했다.또 나의 코드를 읽는 이로 하여금 쉽게 이해할 수 있는 코드를 짜려고 노력을 했다. 결과적으로 시원하게 모든 고민들을 해결했다고 말할 순 없지만(애초에 가능한가?), 고민하면서 전체 코드에 대거 변화가 일어나기도 했다. 일단 구현을 하면서 마주쳤던 고민들과 공부 내용, 해결했던 방법들을 정리해보자.들어가기 앞서 ...우선 필수기능까지 구현한 기존의 프로젝트 구..
키오스크 과제 : Stream 함수에서 인덱스 사용하기
·
TIL
💥 Stream 함수에서 인덱스 사용발단 : forEach() 에서 인덱스 정보가 필요해!`기존에 생성한 Menu의 MenuItem을 조회 할 때 스트림을 사용하여 출력하도록 수정`하라는 요구사항에 맞게, `Menu` class의 `printMenuItems()` 메서드를 변경하고자 하였다.기존 코드 // List에 들어있는 MenuItem을 순차적으로 보여주는 함수 public void printMenuItems() { for(int i=0; i위 함수를 실행하면 다음과 같이 인덱스와 함께 메뉴 아이템의 정보가 출력된다.1. ShackBurger | W 6.9 | 토마토, 양상추, 쉑소스가 토핑된 치즈버거2. SmokeShack | W 8.9 | 베이..
🧐 계산기 과제를 마무리하는데 생겨난 궁금증
·
TIL
Generics의 사용Generics를 사용해서 기존엔 int였던 피연산자 타입을 double로도 받아올 수 있도록 하는 것이 Lv.3의 요구사항 중 하나였다.내가 구현한 내용은 다음과 같다.public class ArithmeticCalculator { private final List result = new LinkedList(); public Double calculate(T firstNum, T secondNum, String operator) { double result = OperatorType.fromSymbol(operator).operate(firstNum,secondNum); setResult(result); return result; ..
계산기 과제 : 계산 결과 Lambda&Stream 필터링 조회 구현하기
·
TIL
Lv.3 의 구현사항계산기 클래스의 메서드 calculate의 피연산자로 모든 타입의 숫자를 받아올 수 있어야 한다. (int, double, 양수, 음수)enum 으로 연산자 타입을 관리하고 활용한다.계산기에 저장된 연산 결과를 Lambda & Stream을 활용하여 조건에 맞도록 조회하는 메서드를 구현한다.오늘은 어제 1,2를 구현하면서 대강만 짜놨던 3번 요구사항을 세부 구현해보았다.어제는 아래 코드와 같이 메서드를 하나만 추가해놨었다. public void printResultGreaterThan(Number value) { String str = result.stream() .filter(v -> v > value.doubleValue()) ..
계산기 과제 : Java Generics, Enum 활용기
·
TIL
구현 요구사항Lv.3 의 구현사항은 아래와 같다.계산기 클래스의 메서드 `calculate`의 피연산자로 모든 타입의 숫자를 받아올 수 있어야 한다. (int, double, 양수, 음수)enum 으로 연산자 타입을 관리하고 활용한다.계산기에 저장된 연산 결과를 Lambda & Stream을 활용하여 조건에 맞도록 조회하는 메서드를 구현한다.오늘은 1과 2를 중점적으로 고민하여 구현하였다.Generics  : 피연산자 타입 확장하기먼저 기존 Lv.2의 계산기 클래스이다.기존의 피연산자 입력으로 0을 포함한 양의 정수만을 받아왔기 때문에 `calculate` 메서드의 피연산자 타입이 int로 지정되어있다.결과 값은 double로 지정되어있는데, 피연산자가 모두 정수여도 나누기 연산 시 실수가 될 수 있기 ..