forked from woowacourse-precourse/java-calculator-7
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[문자열 덧셈 계산기] 정재우 미션 제출합니다. #1
Open
holyPigeon
wants to merge
116
commits into
InQ-InQ-InQ-InQ-InQ:main
Choose a base branch
from
holyPigeon:holyPigeon
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 45 commits
Commits
Show all changes
116 commits
Select commit
Hold shift + click to select a range
74857b7
docs: 초기 기능 구현 목록 작성
holyPigeon def14f8
feat: InputView 클래스 생성
holyPigeon 92563d8
feat: 사용자로부터 덧셈 문자열을 입력받는 기능 구현
holyPigeon 433332e
docs: 기능 구현 목록 수정
holyPigeon e2cad86
feat: 입력값 검증을 담당하는 클래스 생성
holyPigeon c845e49
feat: 입력값에 숫자가 포함되지 않은 경우, 예외를 반환하는 기능 구현
holyPigeon d08f262
feat: 입력값에 기본 구분자가 포함되어 있지 않은 경우, 예외를 반환하는 기능 구현
holyPigeon 28c579c
docs: 기능 구현 목록 수정
holyPigeon 82aa671
feat: 입력값에 커스텀 구분자가 포함되어 있는지 확인하는 기능 구현
holyPigeon 24676f9
feat: 커스텀 구분자를 입력값에서 잘라내어 구분자 목록에 포함시키는 기능 구현
holyPigeon e4cd131
docs: 기능 구현 목록 수정
holyPigeon bdc7364
feat: 커스텀 구분자를 뺸 문자열을 입력값을 최종 저장하는 기능 구현
holyPigeon d5c49b2
refactor: 입력값 파싱 전의 전처리 과정 리팩토링
holyPigeon 84ad4a6
feat: 구분자를 기준으로 문자열을 분리하는 기능 구현
holyPigeon 9cea28f
feat: 구분자를 통해 분리된 값이 숫자가 아닐 경우, 예외를 반환하는 기능 구현
holyPigeon ea427f9
Feat: 문자열로부터 숫자들을 추출하는 기능 구현
holyPigeon 76e8e17
feat: Calculator 클래스 생성
holyPigeon 6764b1a
feat: 구분자를 통해 분리된 값이 음수일 경우, 예외를 반환하는 기능 구현
holyPigeon ea3f44c
feat: 구분자를 통해 분리된 값이 빈 문자열일 경우, 결과로 0을 반환하는 기능 구현
holyPigeon 6e2e254
feat: Calculator 클래스의 숫자 목록 필드 추가
holyPigeon ac8e140
feat: Calculator 클래스의 생성자 구현
holyPigeon 2c2a8a7
feat: Calculator 클래스의 덧셈 기능 구현
holyPigeon 83a6ebf
docs: 구현 완료되었지만 미처 체크되지 못한 기능들 체크
holyPigeon 7fb4892
feat: OutputView 클래스 생성
holyPigeon 9e3388e
feat: 덧셈 결과 출력 기능 구현
holyPigeon f881ad6
feat: CalculatorController 클래스 생성
holyPigeon db6ca6a
feat: 커스텀 구분자 제거 메서드를 private으로 접근 제한
holyPigeon 16a3b77
feat: 입력값으로부터 숫자를 추출하는 메서드의 구분자 목록 관련 파라미터 제거
holyPigeon 613606d
refactor: 기존 InputParser 클래스의 input 필드 제거 및 그에 따른 구조 변경
holyPigeon 0bb7a9d
refactor: 여러 검증 메서드들을 묶어주는 통합 검증 메서드 추가 및 기존 메서드 private으로 접근 제한 처리
holyPigeon a91b735
refactor: InputValidator 클래스의 delimiters 필드 초기화 시점 수정
holyPigeon 35dec0d
feat: CalculatorController 클래스 필드 변수 및 생성자 구현
holyPigeon 1e2e160
feat: 입출력 및 핵심 로직을 CalculatorController 클래스에 종합
holyPigeon 868d629
feat: 계산기 기능 1차 구현 완료
holyPigeon 18d5c88
fix: 허용된 구분자가 들어갔음에도 예외를 반환하는 에러 수정
holyPigeon 8b9ced4
fix: 필요없는 구분자 검증 관련 메서드 제거
holyPigeon f18b5a4
fix: 커스텀 구분자의 끝을 인식하지 못하는 에러 수정
holyPigeon 6af00a7
fix: 불변 크기 리스트 사용으로 인해 add 연산이 제한되는 에러 수정
holyPigeon edde85f
fix: 커스텀 구분자 부분을 제대로 제거하지 못하는 에러 수정
holyPigeon 3292709
refactor: 미허가 구분자 검증 시 사용되는 정규식을 보다 직관적으로 보이도록 분리
holyPigeon 36b8e73
refactor: 미허가 구분자 검증 메서드명을 보다 직관적으로 변경
holyPigeon 2b2b320
feat: 허용되지 않은 구분자를 에러 메시지에 추가하는 기능 구현
holyPigeon d6cde41
feat: 사용자 입력 종료를 위한 메서드 구현
holyPigeon ebdde3b
feat: 사용자 입력 종료 로직 적용
holyPigeon 99a3daa
refactor: 검증 담당 클래스의 디렉토리 변경
holyPigeon b8fe0c7
feat: 입력값이 빈 문자열일 경우, Calculator 객체에 빈 숫자 리스트를 전달하는 기능 구현
holyPigeon 099b536
refactor: 정수 검증 메서드명 및 내부에서 던지는 에러 메시지를 직관적으로 변경
holyPigeon 3276f8e
refactor: 양수 검증 메서드에서 반환하는 에러 메시지를 직관적으로 변경
holyPigeon be4be31
docs: 리팩토링 목록 작성
holyPigeon 32efd80
refactor: 필요없는 검증 메서드 제거
holyPigeon 3686a82
refactor: 가독성을 위한 InputParser 클래스 내 메서드 위치 변경
holyPigeon dd96717
refactor: 기존에 InputParser 클래스에 혼재됐던 검증 로직을 InputValidator 클래스로 이동
holyPigeon b130196
refactor: InputParser 클래스에서 InputValidator를 참조하여 검증 로직을 사용하도록 수정
holyPigeon f8c5efa
feat: 구분자에 의해 분리된 값이 Blank일 경우 0으로 치환되지 않도록 변경
holyPigeon 423b7f1
refactor: 필요 없는 통합 검증 메서드 제거
holyPigeon c7a9c64
refactor: InputValidator 클래스에서 구분자 목록을 직접 관리하지 않고 주입받도록 수정
holyPigeon 8c9f357
feat: 커스텀 구분자에 이스케이프 문자("\")가 포함된 경우에 대한 예외 처리 추가
holyPigeon cd704ce
feat: 커스텀 구분자가 빈 문자열("")일 경우에 대한 예외 처리 추가
holyPigeon e1ef257
docs: 리팩토링 목록 수정
holyPigeon 193dfdb
feat: 커스텀 구분자에 숫자가 포함되는 경우에 대한 예외 처리를 추가
holyPigeon fe9902f
feat: 에러 메시지 관리 Enum 구현
holyPigeon a4212d0
feat: 에러 메시지 리팩토링 사할 InputValidator 클래스에 적용
holyPigeon 1146400
docs: 리팩토링 목록 수정
holyPigeon 5c951a9
feat: 구분자 목록을 관리할 수 있는 Delimiters 클래스 구현
holyPigeon 7f00236
feat: 기본 구분자 관련 Enum 구현
holyPigeon 5ab4468
feat: 기본 구분자 초기화 로직 적용
holyPigeon c96593c
refactor: Delimiters 클래스명 Delimiter로 직관적 변경
holyPigeon 439a5f0
refactor: DefaultDelimiters 클래스명 DefaultDelimiter로 직관적 변경
holyPigeon 46fbd96
refactor: Delimiter 클래스에 불변 Set을 반환하는 getter 추가
holyPigeon ca9e340
refactor: Delimiter 클래스 적용 관련 변경사항 수정
holyPigeon ec8f471
refactor: InputValidator 클래스를 정적 클래스로 변경
holyPigeon 52a7b30
refactor: 검증 관련 로직을 정적으로 처리하도록 변경
holyPigeon 8ee1c49
refactor: InputParser 클래스를 정적 클래스로 변경
holyPigeon 578f312
refactor: 파싱 로직을 정적으로 처리하도록 변경
holyPigeon 1f5f76f
fix: 커스텀 구분자 추가 관련 로직 수정
holyPigeon e90fc39
feat: 커스텀 구분자 패턴 관련 Enum 구현
holyPigeon 9ecad45
feat: 커스텀 구분자 패턴 Enum 로직 적용
holyPigeon ca68a6d
docs: 리팩토링 목록 수정
holyPigeon ce48b60
refactor: 기존 InputParser 클래스에 있던 커스텀 구분자 처리 로직 CustomDelimiterProcess…
holyPigeon 4ea06f9
refactor: 에러 메시지를 가독성있게 분류
holyPigeon e96c725
feat: 커스텀 구분자 패턴 관련 에러 메시지 추가
holyPigeon b9ebb90
feat: 커스텀 구분자 패턴 관련 검증 로직 추가
holyPigeon 2256d1c
refactor: 기존 CalculatorController 클래스의 커스텀 구분자 처리 로직 변경
holyPigeon ac11202
refactor: 사용자 입력값으로부터 커스텀 구분자 패턴을 제거하는 로직 이동
holyPigeon 878c747
refactor: InputParser 클래스명을 InputFilter로 변경
holyPigeon cdf1ecc
refactor: 커스텀 구분자 제거 로직 직관적으로 변경
holyPigeon def0b17
refactor: 구분자 관련 클래스 디렉토리 변경
holyPigeon 6ea48ec
refactor: Calculator 클래스를 stateless하게 변경
holyPigeon a3e4748
refactor: InputView와 OutputView의 역할을 명확하게 분리
holyPigeon a5e41b9
refactor: CalculatorController 클래스 내부 로직을 가독성있게 메서드로 분리
holyPigeon a1ca666
docs: 리팩토링 목록 수정
holyPigeon 4d1b3dd
refactor: Delimiter 클래스명 Delimiters로 변경
holyPigeon 386a14f
refactor: CalculatorController 클래스 내 로직을 직관적으로 변경
holyPigeon afca529
refactor: 구분자 추가 메서드명 변경
holyPigeon 004c393
refactor: CalculatorController 클래스 내 덧셈 연산 관련 메서드명 직관적 변경
holyPigeon 3c2cd62
refactor: InputFilter 클래스를 일반 클래스로 변경
holyPigeon b6fc622
refactor: InputValidator 클래스를 제외한 모든 클래스 인스턴스화
holyPigeon 9c2e4bb
refactor: `ApplicationConfig` 클래스를 통해 여러 개의 인스턴스를 한 곳에서 관리하도록 구현
holyPigeon c0d9e9d
refactor: 메인 어플리케이션에 ApplicationConfig 클래스를 이용한 CalculatorController …
holyPigeon 5bdf81a
refactor: CalculatorController 클래스 개행 수정
holyPigeon 676ddc5
refactor: 숫자 및 구분자 리스트에 대한 불변 개념 적용
holyPigeon 4c5fc55
refactor: 커스텀 구분자 위치 관련 에러 메시지를 상수 처리
holyPigeon ecd9f37
feat: 구분자를 이용한 정규식 생성 관련 메서드 구현
holyPigeon 9641c28
refactor: 구분자를 이용한 정규식 생성 로직 적용
holyPigeon aaed52e
refactor: 계산기에 들어갈 숫자를 통합적으로 검증하는 메서드 구현
holyPigeon 6eae554
refactor: 숫자 추출 로직 및 세부 메서드명을 보다 직관적으로 변경
holyPigeon 01c03be
refactor: 코드 상의 주석 제거
holyPigeon b675b3f
docs: 미처 수정하지 못한 리팩토링 완료 사항 체크
holyPigeon 73602e9
docs: 리팩토링 목록 수정
holyPigeon f0250d2
refactor: 구분자 설정 관련 Enum 디렉토리 변경
holyPigeon 377f6bf
refactor: 출력 관련 메시지 상수 처리
holyPigeon 1e49ae7
feat: 출력 메시지 관련 Enum 구현
holyPigeon 9d857c0
refactor: 정수형 변환 메서드명 변경
holyPigeon 638e35e
refactor: 정수형 변환 메서드명 재변경
holyPigeon f89a2a0
refactor: 사용자 입력값이 빈 칸일 경우 숫자 추출 시 명시적으로 0이 담긴 리스트를 반환하도록 수정
holyPigeon d727f40
refactor: 계산기에 들어가는 숫자를 List가 아닌 Set 타입으로 저장하도록 수정
holyPigeon File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,34 @@ | ||
# java-calculator-precourse | ||
# java-calculator-precourse | ||
|
||
## 🚀 구현할 기능 목록 | ||
|
||
### ⌨️ 입력 | ||
|
||
- [x] 덧셈할 문자열을 입력받는 기능을 구현한다. | ||
- [x] 덧셈 문자열 입력 안내 메시지를 출력한다. | ||
- [x] 사용자로부터 덧셈할 문자열을 입력받는다. | ||
- [x] 입력된 문자열을 검증한다. | ||
- [x] 숫자가 하나라도 포함되어있지 않은 경우, 예외를 반환한다. | ||
- [x] 기본 구분자 중 하나라도 포함되어있지 않은 경우, 예외를 반환한다. | ||
- [x] 입력된 문자열을 파싱 및 추가 검증한다. | ||
- [x] 입력값에서 편리하게 숫자를 추출하기 위해 전처리를 진행한다. | ||
- [x] 문자열에 커스텀 구분자가 포함되어 있는지 확인한다. | ||
- [x] 문자열 앞 부분에 커스텀 구분자가 있는 경우, 이를 따로 저장한다. | ||
- [x] 커스텀 구분자를 뺸 문자열을 입력값으로 최종 저장한다. | ||
- [x] 문자열로부터 숫자들을 추출한다. | ||
- [x] 주어진 문자열에 구분자가 포함되어 있는지 확인한다. | ||
- [x] 만약 구분자가 포함되어 있는 경우, 구분자를 기준으로 문자열을 분리한다. | ||
- [x] 구분자를 통해 분리된 값이 빈 문자열일 경우, 결과로 0을 반환한다. | ||
- [x] 구분자를 통해 분리된 값이 숫자가 아닐 경우, 예외를 반환한다. | ||
- [x] 구분자를 통해 분리된 값이 음수일 경우, 예외를 반환한다. | ||
- [x] 최종적으로 분리된 숫자들을 리스트에 저장한다. | ||
|
||
### 🖥 출력 | ||
|
||
- [x] 덧셈 결과를 출력한다. | ||
- [x] "결과"라는 문자열와 덧셈 결과를 ":" 구분자를 통해 구분한다. | ||
|
||
### ⚙️ 로직 | ||
|
||
- [x] 리스트에 저장된 숫자들을 더하는 기능을 구현한다. | ||
- [x] 리스트에 저장된 숫자들을 모두 더한 결과를 반환한다. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,11 @@ | ||
package calculator; | ||
|
||
import calculator.controller.CalculatorController; | ||
|
||
public class Application { | ||
public static void main(String[] args) { | ||
// TODO: 프로그램 구현 | ||
} | ||
|
||
public static void main(String[] args) { | ||
CalculatorController calculatorController = new CalculatorController(); | ||
calculatorController.run(); | ||
} | ||
} |
33 changes: 33 additions & 0 deletions
33
src/main/java/calculator/controller/CalculatorController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package calculator.controller; | ||
|
||
import java.util.List; | ||
|
||
import calculator.model.Calculator; | ||
import calculator.model.InputParser; | ||
import calculator.validation.InputValidator; | ||
import calculator.view.InputView; | ||
import calculator.view.OutputView; | ||
|
||
public class CalculatorController { | ||
private final InputView inputView; | ||
private final InputValidator inputValidator; | ||
private final OutputView outputView; | ||
|
||
public CalculatorController() { | ||
this.inputView = new InputView(); | ||
this.outputView = new OutputView(); | ||
this.inputValidator = new InputValidator(); | ||
} | ||
|
||
public void run() { | ||
String input = inputView.readInput(); | ||
inputView.closeRead(); | ||
inputValidator.validateInput(input); | ||
|
||
InputParser inputParser = new InputParser(input); | ||
List<Integer> numbers = inputParser.extractNumbers(input); | ||
|
||
Calculator calculator = new Calculator(numbers); | ||
outputView.printResult(calculator.sum()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package calculator.model; | ||
|
||
import java.util.List; | ||
|
||
public class Calculator { | ||
private List<Integer> numbers; | ||
|
||
public Calculator(List<Integer> numbers) { | ||
this.numbers = numbers; | ||
} | ||
|
||
public int sum() { | ||
int sum = 0; | ||
for (int number : numbers) { | ||
sum += number; | ||
} | ||
|
||
return sum; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
package calculator.model; | ||
|
||
import java.util.ArrayList; | ||
import java.util.Arrays; | ||
import java.util.List; | ||
import java.util.Optional; | ||
import java.util.regex.Pattern; | ||
|
||
public class InputParser { | ||
List<String> delimiters; | ||
|
||
public InputParser(String input) { | ||
// 만약 사용자가 커스텀 구분자를 입력했다면, 커스텀 구분자를 따로 추출해서 구분자 목록에 추가한다.. | ||
List<String> delimiter = new ArrayList<>(List.of(",", ":")); | ||
extractCustomDelimiter(input).ifPresent(delimiter::add); | ||
this.delimiters = delimiter; | ||
} | ||
|
||
/** | ||
* 핵심 로직 | ||
*/ | ||
// 1차 가공된 입력값에서 숫자를 추출 | ||
public List<Integer> extractNumbers(String input) { | ||
String[] splitParts = splitInput(input, delimiters); | ||
|
||
return saveNumbers(splitParts); | ||
} | ||
|
||
// 구분자들을 이용해 정규식을 만들고, 이를 이용해 입력값을 분리 | ||
private String[] splitInput(String input, List<String> delimiters) { | ||
String processedInput = removeCustomDelimiter(input); | ||
validateInvalidDelimiter(processedInput); | ||
|
||
String regex = String.join("|", | ||
delimiters.stream() | ||
.map(Pattern::quote) // 구분자를 정규식에 안전하게 포함 (특수 문자의 경우 혼동의 여지가 있음) | ||
.toArray(String[]::new) | ||
); | ||
|
||
return processedInput.split(regex); | ||
} | ||
|
||
// 분리된 각 부분에서 숫자로 변환하여 리스트에 추가 | ||
private List<Integer> saveNumbers(String[] splitParts) { | ||
List<Integer> numbers = new ArrayList<>(); | ||
Arrays.stream(splitParts) | ||
.map(String::trim) | ||
.map(this::replaceBlankWithZero) | ||
.forEach(part -> { | ||
validateNumber(part); | ||
validateNumberPositive(part); | ||
numbers.add(Integer.parseInt(part)); | ||
}); | ||
|
||
return numbers; | ||
} | ||
|
||
private String replaceBlankWithZero(String part) { | ||
if (part.isBlank()) { | ||
return "0"; | ||
} | ||
|
||
return part; | ||
} | ||
|
||
private void validateNumber(String s) { | ||
try { | ||
Integer.parseInt(s); | ||
} catch (NumberFormatException e) { | ||
throw new IllegalArgumentException("구분자 사이에 숫자가 아닌 값이 포함되어 있습니다."); | ||
} | ||
} | ||
|
||
private void validateNumberPositive(String s) { | ||
if (Integer.parseInt(s) <= 0) { | ||
throw new IllegalArgumentException("음수는 계산할 수 없습니다."); | ||
} | ||
} | ||
|
||
/** | ||
* 문자열 전처리 | ||
*/ | ||
// 입력값에서 커스텀 구분자를 추출 (없을 수 있음) | ||
private Optional<String> extractCustomDelimiter(String input) { | ||
Optional<String> customDelimiter = Optional.empty(); | ||
|
||
if (hasCustomDelimiter(input)) { | ||
int delimiterStart = input.indexOf("//") + 2; | ||
int delimiterEnd = input.indexOf("\\n"); | ||
if (delimiterEnd == -1) { | ||
throw new IllegalArgumentException("커스텀 구분자의 끝을 의미하는 \\n이 없습니다."); | ||
} | ||
|
||
customDelimiter = Optional.of(input.substring(delimiterStart, delimiterEnd)); | ||
} | ||
|
||
return customDelimiter; | ||
} | ||
|
||
// 입력값에서 커스텀 구분자를 제거한 문자열을 반환 | ||
private String removeCustomDelimiter(String input) { | ||
if (hasCustomDelimiter(input)) { | ||
int delimiterEnd = input.indexOf("\\n"); | ||
|
||
return input.substring(delimiterEnd + 2); // \n 이후의 문자열 반환 | ||
} | ||
|
||
return input; // 커스텀 구분자가 없을 경우 원본 문자열 반환 | ||
} | ||
|
||
// 입력값에 커스텀 구분자가 있는지 확인 | ||
private boolean hasCustomDelimiter(String input) { | ||
return input.startsWith("//"); | ||
} | ||
|
||
private void validateInvalidDelimiter(String input) { | ||
String regex = "[\\d" + String.join("", delimiters) + "]*"; | ||
String filteredInput = input.replaceAll(regex, ""); | ||
|
||
if (!input.matches(regex)) { | ||
throw new IllegalArgumentException("허용되지 않은 구분자가 포함되어 있습니다: " + filteredInput); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package calculator.validation; | ||
|
||
import java.util.Arrays; | ||
import java.util.List; | ||
|
||
public class InputValidator { | ||
List<String> delimiters; | ||
|
||
public void validateInput(String input) { | ||
delimiters = Arrays.asList(",", ":"); | ||
validateHasNumber(input); | ||
} | ||
|
||
private void validateHasNumber(String input) { | ||
if (!hasNumber(input)) { | ||
throw new IllegalArgumentException("입력값에 숫자가 포함되어 있지 않습니다."); | ||
} | ||
} | ||
|
||
private boolean hasNumber(String input) { | ||
return input.chars() | ||
.anyMatch(Character::isDigit); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package calculator.view; | ||
|
||
import camp.nextstep.edu.missionutils.Console; | ||
|
||
public class InputView { | ||
public String readInput() { | ||
System.out.println("덧셈할 문자열을 입력해 주세요."); | ||
return Console.readLine(); | ||
} | ||
|
||
public void closeRead() { | ||
Console.close(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package calculator.view; | ||
|
||
public class OutputView { | ||
public void printResult(int result) { | ||
System.out.println("결과 : " + result); | ||
} | ||
} |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
제 생각에는 main 에서 new 를 통해 인스턴스를 만들기보다 인스턴스를 관리해주는 클래스를 하나 더 만드는게 좋아보여요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
모두 따로 객체 생성을 하는 게 아니라, 스프링의 DI처럼 의존성 주입이 야무지게 된다면 좋긴 하겠네요... 관련 자료를 한 번 찾아보겠습니다!