본문 바로가기
Language/Java

공부내용 정리 Java :: 입문III

by Cs.Woo 2021. 5. 6.

# 기초 어플리케이션 제작

 지금까지 학습한 내용을 토대로, 계산을 하는 어플리케이션을 제작해보도록 한다.

 

가정 :: 실제 한국에선 공급가와 부가가치세가 존재한다. 판매자가 자신이 얻은 이익을 계산하기 위해서는 이러한 공급가 그리고 부가가치세, 지출비용(expense), 그리고 배당까지 존재한다. 이것을 계산할 수 있는 어플리케이션을 제작하자

여기서, 부가가치세는 10%, 지출비용은 30% 그리고 배당은 5:3:2로 가정한다.

 

쟁점 :: 

1. 판매하고자 하는 물건이 존재할 때, 그 물건의 10%에 해당하는 부가가치세는 얼마인가

2. 공급가에서의 지출은 얼마인가

3. 순이익 은 얼마인가

4. 동업자의 배당금은 얼마인가

 

## 변수를 사용하지 않은채로 계산을 하는 프로그램

 

public class AccountingApp {

	public static void main(String[] args) {
		
		System.out.println("Value of Supply : " + 12345.0);
		// 공급가액을 작성 여기서 가격은 Double 자료형이다.
		System.out.println("VAT : " + ( 12345.0 * 0.1 ));
		// 부가가치세는 공급가액에서 10%를 곱하여 구한다.
		System.out.println("Total : " + (12345.0 + 12345.0 * 0.1));
		// 소비자가는 공급가액에 부가가치세를 합산한 가격이다.
		System.out.println("Expense : " + (12345.0 * 0.3));
		// 지출은 공급가액에서 30%를 곱하여 구한다.
		System.out.println("Income : " + (12345.0 - 12345.0 * 0.3));
		// 순이익은 공급가액에서 지출을 제한만큼의 액수다.
		System.out.println("Dividend : " + (12345.0 - 12345.0 * 0.3) * 0.5);
		// 첫번째 배당은 순이익에서 50%을 곱한 액수이다.
		System.out.println("Dividend : " + (12345.0 - 12345.0 * 0.3) * 0.3);
		// 첫번째 배당은 순이익에서 30%을 곱한 액수이다.
		System.out.println("Dividend : " + (12345.0 - 12345.0 * 0.3) * 0.2);
		// 첫번째 배당은 순이익에서 20%을 곱한 액수이다.
	}

}

 계산기로 계산하는 것 보다는 간편하지만 다소 불편한 점이 존재한다.

 

## 변수화 한 프로그램

public class AccountingApp {

	public static void main(String[] args) {
		double valueOfSupply = 10000.0;
		// 유지 보수의 효율을 올리기 위하여 변수를 사용.
		double vatRate = 0.1;
		// 부가가치세율을 변수화 함
		double expenserate = 0.3;
		// 지출비율을 변수화함.
		// 일괄변경을 할 경우, 배당에서 두번쨰 사람과 값이 겹친다.
		// 그럴경우 배당율과 지출비율은 다른 항목인데 같은 값으로인하여
		// 같은항목으로 변경되어버리는 수가 있으니 일괄변경은
		// 주의해서 사용하여야 한다.
		double vat = valueOfSupply * vatRate;
		// 부가세를 변수화함
		double total = valueOfSupply + vat;
		// 소비자가를 변수화함
		double expense = valueOfSupply * expenserate;
		// 지출을 변수화함
		double income = valueOfSupply - expense;
		// 순이익을 변수화함
		double dividend1 = income * 0.5;
		// 첫번째 배당금
		double dividend2 = income * 0.3;
		// 두번째 배당금
		double dividend3 = income * 0.2;
		// 세번째 배당금
		
		System.out.println("Value of Supply : " + valueOfSupply);
		// 공급가액을 작성 여기서 가격은 Double 자료형이다.
		System.out.println("VAT : " + vat);
		// 부가가치세는 공급가액에서 10%를 곱하여 구한다.
		System.out.println("Total : " + total);
		// 소비자가는 공급가액에 부가가치세를 합산한 가격이다.
		System.out.println("Expense : " + expense);
		// 지출은 공급가액에서 30%를 곱하여 구한다.
		System.out.println("Income : " + income);
		// 순이익은 공급가액에서 지출을 제한만큼의 액수다.
		System.out.println("Dividend : " + dividend1);
		// 첫번째 배당은 순이익에서 50%을 곱한 액수이다.
		System.out.println("Dividend : " + dividend2);
		// 첫번째 배당은 순이익에서 30%을 곱한 액수이다.
		System.out.println("Dividend : " + dividend3);
		// 첫번째 배당은 순이익에서 20%을 곱한 액수이다.
	}

}

 값을 바꾸고 싶을 때 변수를 사용하지 않았을 때 보다 훨씬 빠르고, 효율적으로 바꿀 수 있으며 그것은 곧 프로그램(애플리케이션)의 유지/ 보수의 효율이 증가했다는 것을 의미하게 된다.

 

## 값을 인자로서 받도록 조치

 

public class AccountingApp {

	public static void main(String[] args) {
		double valueOfSupply = Double.parseDouble(args[0]);
		// 현 체계에선 공급가액이 변경되었을 경우
		// 값을 바꿔주기 위하여 체계를 변경해야 하는
		// 번거로움이 발생한다.
		// 이를 해결해기 위해서는 공급가액을 변수에
		// 할당하는 것이 아니라 이 어플리케이션을 이용하는
		// 이용자에게 계산하고자 하는 값을 입력 받으면 된다.
		
		// 이클립스를 통하여 자동으로 인자(args에 값을 줌)에 값을
		// 부여하는 방법은 다음과 같다
		// 상단바에 run -> run configurations 에서 
		// arguments에 인자로 넣을 값을 주고,
		// name에 -를 한 후 값을 넣으면된다
		// 이 때, 값은 배열로 들어옴으로,
		// Double형 자료형으로 바꿔주어야 하기의 코드가 실행된다.
		double vatRate = 0.1;
		double expenserate = 0.3;
		double vat = valueOfSupply * vatRate;
		double total = valueOfSupply + vat;
		double expense = valueOfSupply * expenserate;
		double income = valueOfSupply - expense;
		double dividend1 = income * 0.5;
		double dividend2 = income * 0.3;
		double dividend3 = income * 0.2;
		
		System.out.println("Value of Supply : " + valueOfSupply);
		System.out.println("VAT : " + vat);
		System.out.println("Total : " + total);
		System.out.println("Expense : " + expense);
		System.out.println("Income : " + income);
		System.out.println("Dividend : " + dividend1);
		System.out.println("Dividend : " + dividend2);
		System.out.println("Dividend : " + dividend3);
	}

}

  변경된 값을 저장하기 위하여 이클립스에게 자동으로 값을 부여 할 수 있도록 조치를 취하였다. 하지만 역시 값을 사용자에게 직접 받지는 못하고 이클립스를 통하여 값을 받을 수 있는 반자동화 되어있는 상태이다.

 

## 이클립스 없이 윈도우로만 실행하여 인자의 값 부여

 

명령프롬프트(윈도우의 경우 찾기->cmd)에서 현재 예제의 디렉토리(파일 위치)로 이동하여 javac AccountingApp.java를 입력하여 컴파일을 하고, class파일이 정상적으로 생성되었다면, 다시 java Accounting 인자값(더블형)을 입력하여 실행을 시킬 수 있다. 

 

 이 때 인자값을 계산하고자 하는 값으로 수정하여 입력한다면, 사용자가 원하는 값을 즉시 처리할 수 있으므로 전단계보다 더욱 능동적인 어플리케이션이 되었다고 할 수 있다.