생활코딩 Java 강의에서 진행하는 실습에 따라
공급가액, 마진율, 수익 분배율을 입력하여 관련 값들을 출력하는 어플을 만들면서
클래스, 변수, 메소드, 인스턴스의 개념을 배워나갔다.
해당 개념을 배워서 다시 프로젝트에 도입하고 수정할 수록 코드가 더 명확하고 깔끔해졌다.
진행하는 동안에는 깃, 깃허브를 이용하여 코드가 변경되는 과정을 기록했다.
1) 단순히 연산되는 변수를 정의하여 나열하고 println()에 입력하기
public class account_app {
public static void main(String[] args) {
double valueOfsupply = Double.parseDouble(args[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);
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);
}
}
2) 값을 반환하는 메소드로 정리하여 코드의 의미를 명확하게 하기
public class account_app {
public static double valueOfsupply = 10000;
public static double vatrate = 0.1;
public static double expenseRate = 0.3;
public static double[] dividend = {0.5, 0.3, 0.2};
public static double getVAT() {
return valueOfsupply * vatrate;
}
public static double getTotal() {
return valueOfsupply + getVAT();
}
public static double getExpense() {
return valueOfsupply * expenseRate;
}
public static double getIncome() {
return valueOfsupply - getExpense();
}
public static double getDividend(int i) {
return getIncome() * dividend[i];
}
public static void main(String[] args) {
System.out.println("Value of supply: " + valueOfsupply);
System.out.println("VAT: " + getVAT());
System.out.println("Total: " + getTotal());
System.out.println("Expense: " + getExpense());
System.out.println("Income: " + getIncome());
System.out.println("Dividend1: " + getDividend(0));
System.out.println("Dividend2: " + getDividend(1));
System.out.println("Dividend3: " + getDividend(2));
}
}
3-1) 별도 클래스, 그에 따른 생성자 정의를 통해 메인 코드의 내용을 단순화 및 변수 입력 쉽게 하기: accounting()
3-2) 인스턴스 정의를 통해 변수(공급가, 마진율)만 다른 경우 쉽게 출력하기: a1, a2 ..
* case 1 / * case 2
이렇게 쓰고 싶은 것이라면* case
도 메소드 정의에서 처리하는 것이 더 좋았을 것 같다.class accounting{
//class 변수와 instance 변수 정의
public double valueOfsupply;
public double expenseRate;
public static double vatrate = 0.1;
public static double[] dividend = {0.5, 0.3, 0.2};
//생성자 정의
public accounting(double valueOfsupply, double expenseRate){
this.valueOfsupply = valueOfsupply;
this.expenseRate = expenseRate;
}
//메소드 정의
public double getVAT() {
return valueOfsupply * vatrate;
}
public double getTotal() {
return valueOfsupply + getVAT();
}
public double getExpense() {
return valueOfsupply * expenseRate;
}
public double getIncome() {
return valueOfsupply - getExpense();
}
public double getDividend(int i) {
return getIncome() * dividend[i];
}
public void print(String caseName) {
System.out.println(caseName);
System.out.println("Value of supply: " + valueOfsupply);
System.out.println("VAT: " + getVAT());
System.out.println("Total: " + getTotal());
System.out.println("Expense: " + getExpense());
System.out.println("Income: " + getIncome());
System.out.println("Dividend1: " + getDividend(0));
System.out.println("Dividend2: " + getDividend(1));
System.out.println("Dividend3: " + getDividend(2));
System.out.println("\n");
}
}
public class account_app {
public static void main(String[] args) {
accounting a1 = new accounting(10000, 0.3);
accounting a2 = new accounting(20000, 0.5);
a1.print("* case 1");
a2.print("* case 2");
}
}