본문 바로가기
Programming 기초/Java

[Java] 나의 앱 만들기 1

by 뭉제 2023. 3. 2.
목차
1. 문제 파악
2. 프로그램 만들기
3. 변수
4. 아규먼트
5. cmd 실행

 

문제 파악하기 


돈의 흐름을 빠르게 계산해야 하는 문제가 있다.

 

우선 현실을 분석해야 한다.

1. 판매자는 소비자에게 물건을 공급할 때 공급가를 받는다.

2. 공급가의 10%만큼 소비자는 부가가치세를 더 지불하고, 판매자는 국세청에 부가가치세를 납부한다.

3. 물건을 판매하기까지는 30%의 비용이 들고 나머지 70%가 이익이다.

4. 이익은 투자한 동업자들에게 5:3:2의 비율로 배당한다.

 

이 문제를 자바로 어떻게 해결할 수 있을까?

 

 

MyApp 만들기


프로그램은 시간의 순서에 따라 작업을 실행한다. 이 점을 이용해 문제를 해결한다.

 

AccountingApp 클래스를 생성해 물건을 판매할 때 발생하는 여러 계산을 확인한다.

 

public class AccountingApp {
	public static void main(String[] args) {
		System.out.println("Value of supply : " +10000.0); //공급가
        System.out.println("VAT: " +(10000.0*0.1)); //부가가치세
        System.out.println("Total: " +(10000.0+(10000.0*0.1))); //총 판매가
        System.out.println("Expense: " +(10000.0*0.3)); //비용
        System.out.println("Income: " +(10000.0-(10000.0*0.3))); //수익
        System.out.println("Dividend 1: " +(10000.0-(10000.0*0.3))*0.5);
        System.out.println("Dividend 2: " +(10000.0-(10000.0*0.3))*0.3);
        System.out.println("Dividend 3: " +(10000.0-(10000.0*0.3))*0.2);
	}
}

실행결과

 

· 공급가 = 10000.0

· 부가가치세 = 공급가의 10% -> 10000.0*0.1

· 총 판매가 = 공급가+부가가치세 -> 10000.0+(10000.0*0.1)

· 비용 = 판매가의 30% -> 10000.0*0.3

· 수익 = 판매가 - 비용 -> 10000.0-(10000*0.3)

· 첫번째 배당자 = 수익의 50% -> (10000.0-(10000*0.3))*0.5

· 두번째 배당자 = 수익의 30% -> (10000.0-(10000*0.3))*0.3

· 세번째 배당자 = 수익의 20% -> (10000.0-(10000*0.3))*0.2

 

공급가를 다르게 바꾸면서 공급가에 따른 여러 값들을 계산할 수 있다.

하지만 공급가를 일일이 모두 수정해줘야 하는 불편함이 존재한다.

 

 

변수 사용하기


변수는 코드의 재사용성을 높이고, 의미 있는 이름을 붙여서 코드의 가독성을 높일 수 있다.

 

위의 불편함을 해결하기 위해 AccountingApp에 변수를 적용한다.

 

· Extract Local Variable: 특정 값을 지역 변수로 바꾼다.

· 특정 값을 블록으로 지정한 후 Refactor -> Extract Local Variable 클릭 or Alt+Shift+L

 

· 변수 이름을 입력하고 OK 클릭 -> 변수 생성

 

· Preview 클릭 -> 변수 생성 전후를 비교 가능

 

또는 변수로 지정하려는 값을 지우고 이름을 바로 입력하면 이클립스에서 변수 생성을 도와준다.

· Create local variable 클릭

 

나머지 값들도 변수를 지정해서 바꿔 준다.

 

public class AccountingApp {
	public static void main(String[] args) {
		double valueOfSuppyly=10000.0; //공급가
		double vatRate=0.1;
		double expenseRate=0.3;
		double vat=valueOfSuppyly*vatRate; //부가가치세
		double total=valueOfSuppyly+vat; //판매가
		double expense=valueOfSuppyly*expenseRate; //비용
		double income=valueOfSuppyly-expense; //수익
		double dividend1=income*0.5; //첫번째 배당자
		double dividend2=income*0.3; //두번째 배당자
		double dividend3=income*0.2; //세번째 배당자
		
		System.out.println("Value of supply: "+valueOfSuppyly);
		System.out.println("VAT: "+vat);
		System.out.println("Total: "+total);
		System.out.println("Expense: "+expense);
		System.out.println("Income: "+income);
		System.out.println("Divididend 1: "+dividend1);
		System.out.println("Divididend 2: "+dividend2);
		System.out.println("Divididend 3: "+dividend3);
	}
}

 

이제 공급가만 바꾸면 다른 값들은 실행할 때 자동으로 계산된다.

 

이렇게 프로그램의 기능은 바꾸지 않으면서 이해하기 쉽게 바꾸는 과정을 리팩토링이라 한다.

* 리팩토링(refactoring): 결과의 변경 없이 코드의 구조를 재조정하는 것

 

 

 

아규먼트를 받는 프로그램으로 수정하기


아규먼트를 받아서 자동적으로 필요한 값들을 계산할 수 있게 만든다.

 

1) 공급가를 아규먼트로 받기

· Run -> Run Configurations 

· Arguments 탭에서 Program arguments에 공급가 입력

 

 

2) 코드 수정

· args는 문자열 배열 -> double 타입으로 변환 필요

double valueOfSuppyly=Double.parseDouble(args[0]); //공급가

또는 

double valueOfSuppyly=Double.valueOf(args[0]); //공급가

 

 

cmd에서 실행하기 


1) 경로 확인

· 프로젝트 폴더 우클릭 -> Property -> ResourceLocation

 

2) MyApp 프로젝트 폴더로 이동

 

3) AccountingApp.java 컴파일

 

4) AccountingApp 실행

· 아규먼트로 공급가 입력

 

 

'Programming 기초 > Java' 카테고리의 다른 글

[Java] 나의 앱 만들기 3  (0) 2023.03.04
[Java] 나의 앱 만들기 2  (0) 2023.03.03
[Java] 클래스, 인스턴스, 패키지, 상속  (0) 2023.02.27
[Java] 자바 API  (0) 2023.02.24
[Java] 직접 컴파일  (0) 2023.02.20

댓글