# 기초 어플리케이션 제작
지금까지 학습한 내용을 토대로, 계산을 하는 어플리케이션을 제작해보도록 한다.
가정 :: 실제 한국에선 공급가와 부가가치세가 존재한다. 판매자가 자신이 얻은 이익을 계산하기 위해서는 이러한 공급가 그리고 부가가치세, 지출비용(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 인자값(더블형)을 입력하여 실행을 시킬 수 있다.
이 때 인자값을 계산하고자 하는 값으로 수정하여 입력한다면, 사용자가 원하는 값을 즉시 처리할 수 있으므로 전단계보다 더욱 능동적인 어플리케이션이 되었다고 할 수 있다.
'Language > Java' 카테고리의 다른 글
공부내용 정리 Java :: 기초 III (0) | 2021.06.14 |
---|---|
공부내용 정리 Java :: 기초 II (0) | 2021.06.12 |
공부내용 정리 Java :: 기초I (0) | 2021.06.11 |
공부내용 정리 Java :: 입문II (0) | 2021.05.06 |
공부내용 정리 Java :: 입문 I (0) | 2021.04.26 |