https://computerreport.tistory.com/44
[Java]Lv1 계산기 만들기
문제1. 양의 정수(0포함)를 입력받기 2. 사칙연산기호(+,-,*,/)를 입력 받기 3. 위에서 입력받은 양의 정수 2개와 사칙연산 기호를 사용하여 연산을 진행한 후 결과값을 출력하기 4. 반복문을 사용
computerreport.tistory.com
Lv1 계산기 만들기에선 main 클래스 안에 모든 변수를 설정하고 기능을 구현했다.
더 나아가 이제는 클래스를 분리하고 모듈화를 통해 가독성과 확장성을 높이는 작업을 해볼려고 한다.
물론 계산기 만드는건 소규모 프로젝트긴 하지만 추후에 실무에서나 대규모 프로젝트를 진행할 때에는 모듈화,예제처리 등은 필수이기 때문에 습관을 길러두자.
문제
✅ 1. 사칙연산을 수행 후, 결과값 반환 메서드 구현 & 연산 결과를 저장하는 컬렉션 타입 필드를 가진 Calculator 클래스를 생성
연산자별로 결과값을 반환하는 클래스를 만들어 Calulate에 메소드로 저장
Calculate.java
public class Calculate {
private final Addition addition;
private final Subtraction subtraction;
private final Multiplication multiplication;
private final Division division;
int result = 0;
//생성자
public Calculate() {
addition = new Addition();
subtraction = new Subtraction();
multiplication = new Multiplication();
division = new Division();
}
//덧셈 메서드
public int add(int num1, int num2) {
addition.setAddition(num1, num2);
result = addition.getAddition();
return result;
}
//나눗셈 메서드
public int Div(int num1, int num2) {
division.setDivision(num1, num2);
result = division.getDivision();
return result;
}
//뺄셈 메서드
public int Sub(int num1, int num2) {
subtraction.setMSubtraction(num1, num2);
result = subtraction.getSubtraction();
return result;
}
//곱셈 메서드
public int Mul(int num1, int num2) {
multiplication.setMultiplication(num1, num2);
result = multiplication.getMultiplication();
return result;
}
}
Addition.java
public class Addition {
private int firstNum;
private int secondNum;
//세터
public void setAddition(int firstNum, int secondNum) {
this.firstNum = firstNum;
this.secondNum = secondNum;
}
//게터
public int getAddition() {
return firstNum + secondNum;
}
}
✅ 2. Lv 1에서 구현한 App 클래스의 main 메서드에 Calculator 클래스가 활용될 수 있도록 수정
Calculate의 객체를 생성하고 입력받은 숫자와 연산자를 메소드가있는 클래스에 저장한다.
//계산 메소드가 모여있는 Calculate 클래스 객체 생성
Calculate calculator = new Calculate();
Scanner sc = new Scanner(System.in);
//첫번째 숫자 입력
System.out.println("첫번째 숫자를 입력하세요");
int firstNumber = sc.nextInt();
//두번째 숫자 입력
System.out.println("두번째 숫자를 입력하세요");
int secondNumber = sc.nextInt();
//연산자 입력(+ , - , * , /)
System.out.println("사칙연산자를 입력하세요(ex)+)");
char operator = sc.next().charAt(0);
sc.nextLine();
//입력한 연산자에 따라 메서드 호출
if (operator == '+') {
result = calculator.add(firstNumber, secondNumber);
} else if (operator == '-') {
result = calculator.Sub(firstNumber, secondNumber);
} else if (operator == '*') {
result = calculator.Mul(firstNumber, secondNumber);
} else if (operator == '/') {
result = calculator.Div(firstNumber, secondNumber);
}
//값 출력
System.out.println("값=" + result);
✅ 3. App 클래스의 main 메서드에서 Calculator 클래스의 연산 결과를 저장하고 있는 컬렉션 필드에 직접 접근하지 못하도록 수정 (캡슐화)
Calculate 클래스에 저장되는 ArrayList 를 private제어자를 사용해 main 에서의 접근을 막고 결과값을 출력하고 수정할 수는 있는 세터(Setter) 와 게터(Getter) 코드 작성
Calculate.java
int result = 0;
//게산 결과를 저장할 ArrayList
private ArrayList<Integer> arrayList = new ArrayList<>();
//결과 리스트 수정(세터)
public void setResult(int result) {
this.arrayList.add(result);
}
//결과 불러오기(게터)
public int getResult() {
return arrayList.getFirst();
}
}
CalculatorApp.java
//계산 메소드가 모여있는 Calculate 클래스 객체 생성
Calculate calculator = new Calculate();
while (true) {
int result = 0;
/* 숫자와 연산자 입력을 받고 결과값을 출력하는 코드 */
//결과 calculaote 클래스에 있는 ArrayList에 추가
calculator.setresult(result);
//값 출력
System.out.println("값=" + calculator.getresult());
}
✅ 4. Calculator 클래스에 저장된 연산 결과들 중 가장 먼저 저장된 데이터를 삭제하는 기능을 가진 메서드를 구현한 후 App 클래스의 main 메서드에 삭제 메서드가 활용될 수 있도록 수정
arrayList 메소드 중 removeFirst()를 사용해 가정 첫 인덱스를 삭제하는 코드를 작성
Calculate.java
//처음 값 제거
public void removeResult() {
arrayList.removeFirst();
}
CalculaotrApp.java
//먼저 저장된 데이터 삭제
calculator.removeResult();
'TIL' 카테고리의 다른 글
[TIL]키오스크 만들기(2025-03-14) (0) | 2025.03.14 |
---|---|
[TIL]키오스크 만들기(2025-03-12) (1) | 2025.03.12 |
[TIL]키오스크 만들기(2025-03-10) (0) | 2025.03.10 |
[TIL]Lv3 계산기 만들기(2025-02-28) (0) | 2025.02.28 |
[TIL]Lv1 계산기 만들기(2025-02-25) (0) | 2025.02.25 |