본문 바로가기
☕Java

[Java 이해하기] 10. Java로 계산기 만들기 (1)

by Luvbit 2024. 5. 18.


 

➕ ➖ ✖️ ➗ 🟰 ❓

이번 시간에는 지금까지 학습한 내용을 토대로 Java를 활용하여 사칙연산 계산기를 만들어보도록 하겠습니다.

계산기에 객체라는 개념을 적용하여, main에서 계산기를 만들고 사용자에게 입력받아서 결과를 출력해 보겠습니다.

 

 

 

 

💡 계산기의 조건은 다음과 같습니다.

1. 계산기는 두 개의 피연산자를 가집니다.
2. 계산기는 하나의 연산자를 가집니다.
3. 계산기는 사용자로부터 피연산자와 연산자를 입력받습니다.
4. 입력받은 연산자로 계산한 결괏값을 반환합니다.
5. 사용자가 "exit"를 입력할 때까지 계산기 작동이 종료됩니다.

 

 

 

 

1. 우선, Calculator라는 패키지를 생성해 주세요. 저는 이클립스를 사용했지만, 툴은 아무거나 사용하셔도 무방합니다. 

 

 

 

2. Calculator라는 패키지 아래에 계산기의 틀을 짜고, 계산기를 찍어내서 나만의 계산기를 만들어 이용할 예정입니다. 이는 객체 지향의 개념입니다.  Calculator.java , Main.java 클래스를 2개 만들어주세요.

 

 

 

 

 

 

3. Calculator는 두 개의 피연산자와 하나의 연산자를 가집니다. 필드에 선언해 줍니다. 데이터 타입은  double로 선언하겠습니다.

private double num1;
private double num2;
private char operator;

 

 

 

4. 아직 생성자의 개념을 배우진 않았지만, 계산기를 만들어낼 때 피연산자와 연산자를 초기화시켜 줍니다. 생성자와 this의 개념은 다음에 다시 설명드리겠습니다 🙂

public Calculator() {
	this.num1 = 0;
	this.num2 = 0;
	this.operator = ' ';
}

 

 

자바는 보안성과 데이터 무결성을 높이고자, 외부에서 직접적으로 객체의 변수(=필드)에 접근할 수 없도록 되어있습니다 (캡슐화).

필드는 private으로 선언하는 것도 이 때문입니다. 

 

객체의 변수의 값을 설정하거나, 받고 싶다면 getter와 setter를 사용해야합니다.

 

 

 

5. getter , setter 메소드 선언 

public double getNum1() { //num1을 반환하는 getter 메소드.
	return num1;
}

public void setNum1(double num1) { //num1의 값을 설정하는 setter 메소드
	this.num1 = num1;
}

//이하 동일
public double getNum2() {
	return num2;
}

public void setNum2(double num2) {
	this.num2 = num2;
}

public char getOperator() {
	return operator;
}

public void setOperator(char operator) {
	this.operator = operator;
}

 

 

 

 

6. 계산 값을 반환해 주는 메소드 선언

public double calculate() {
	double result = 0; //반환할 result 변수 선언
		
	switch(operator) {  //switch문을 활용하여 연산자에 따른 다른 결과값 저장
		case'+' :
			result = num1 + num2;
			break;
		case'-' :
			result = num1 - num2;
			break;
		case'*' :
			result = num1 * num2;
			break;
		case'/' :
			result = num1 / num2;
			break;
	}
	
	return result; //결과 리턴
}

 

 

 

이렇게 계산기 틀 만드는 작업은 끝났습니다! 다음 게시글에서는 계산기 틀로 계산기를 만들어 내고, 계산기를 사용해 보겠습니다.

아래 전체 코드를 첨부해 드리겠습니다.

 

 

 

 

package Calculator;

public class Calculator {
	
	private double num1;
	private double num2;
	private char operator;
	
	public Calculator() {
		this.num1 = 0;
		this.num2 = 0;
		this.operator = ' ';
	}

	public double getNum1() {
		return num1;
	}

	public void setNum1(double num1) {
		this.num1 = num1;
	}

	public double getNum2() {
		return num2;
	}

	public void setNum2(double num2) {
		this.num2 = num2;
	}

	public char getOperator() {
		return operator;
	}

	public void setOperator(char operator) {
		this.operator = operator;
	}
	
	
	public double calculate() {
		double result = 0;
		
		switch(operator) {
			case'+' :
				result = num1 + num2;
				break;
			case'-' :
				result = num1 - num2;
				break;
			case'*' :
				result = num1 * num2;
				break;
			case'/' :
				result = num1 / num2;
				break;
		}
		
		return result;
	}
	
	
}

 

 

 

 

 

 

 

 

getter와 setter는 정말 중요한 개념이니,
왜 사용하는가(=캡슐화)와 어떻게 사용하는가를 꼭 숙지해 주세요!
질문은 언제나 환영입니다 
🩵🐰🩵