☕Java practice: Accounting app 만들기

yoondgu·2022년 3월 1일
0

Java practice

목록 보기
1/8
post-thumbnail

생활코딩 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) 값을 반환하는 메소드로 정리하여 코드의 의미를 명확하게 하기

  • 수익분배율에 따른 지분을 계산하는 dividend1~3의 경우,
    사용하는 메소드의 개수를 줄이고 싶어서
    각각의 지분을 원소로 하는 배열 dividend로 정리하여 메소드에 원소의 번호를 입력하도록 했다.
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 ..

  • 여러 줄에 걸쳐 작성되어 있던 출력을 위한 코드 또한 class accounting 내부로 넣어서
    인스턴스가 print()라는 메소드로 간단히 호출할 수 있도록 했다.
    그리고 각 출력값의 제목 (case 1, case 2..) 입력 및 줄바꿈도 함께 할 수 있도록 작성하였다.
  • 만약 반복되는 양식을 갖추어 * 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");
				
	}

}

0개의 댓글