[Java] 나의 앱 만들기 3

쉬운 목차

방법


메서드는 클래스의 동작을 나타내는 함수입니다.

메서드를 사용하여 프로그램을 구성해 봅시다.

하나) 추출 방법

· VAT 값을 블록으로 지정한 후 리팩터링 – 추출 방법클릭 또는 Alt+Shift+M


메서드 이름을 지정하고 공개 옵션을 선택한 다음 확인을 클릭합니다.


· getVAT 메서드를 생성하여 VAT를 가져옵니다.

public static double getVAT(double valueOfSuppyly, double vatRate) {
	return valueOfSuppyly*vatRate;
}

· vat 변수는 getVAT 메소드에서 값을 가져옵니다.

double vat = getVAT(valueOfSuppyly, vatRate); //부가가치세

getVAT는 valuesOfSupply 및 vatRate를 매개변수로 사용하며 이는 기본 메소드 내부의 변수(로컬 변수)입니다.

지역 변수를 전역 변수로 대체하여 메소드 매개변수를 제거할 수 있습니다.

2) 지역 변수를 전역 변수로 교체

· 변수 valueOfSupply 및 vatRate에서 리팩터링 – 로컬 변수를 필드로 변환 딸깍 하는 소리

** 전역 변수는 필드라고도 합니다.


· 변수 이름을 지정하고 공개합니다.



valueOfSupply는 클래스 어디에서나 접근할 수 있는 변수가 되었고, 그 변수의 값은 main 메서드에 할당됩니다.

이제 getVAT에서 매개변수를 제거할 수 있습니다.

public static double getVAT() {
	return valueOfSuppyly*vatRate;
}

마찬가지로 다른 변수에 대한 메서드가 생성되고 출력 조각도 메서드로 구성됩니다.

public class AccountingMethodApp {
	public static double valueOfSupply; //공급가
	public static double vatRate;
	public static double expenseRate;
	
	public static void main(String() args) {
		valueOfSupply=10000.0; 
		vatRate=0.1;
		expenseRate=0.3;

		print();
	}
    
	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 getDividend1() {
		return getIncome()*0.5;
	}
	
	public double getDividend2() {
		return getIncome()*0.3;
	}
	
	public double getDividend3() {
		return getIncome()*0.2;
	}
    
	public static void print() {
		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("Divididend 1: "+getDividend1());
		System.out.println("Divididend 2: "+getDividend2());
		System.out.println("Divididend 3: "+getDividend3());
	}
}

기본 메서드의 작업은 단순화되고 세부 작업은 다른 메서드에 정의되어 코드가 깔끔해집니다.

수업


클래스는 관련 변수 및 메서드의 그룹입니다.

클래스를 사용하여 프로그램을 구성합니다.

1) 변수 및 메소드 확인

· 일식 창 – 보기 표시 – 개요



클래스의 변수와 메서드를 볼 수 있습니다.

2) 클래스 생성

· 위의 계정 클래스를 만듭니다.

· 회계 클래스의 AccountingMethodApp에 작성된 메소드를 개발하십시오.

아래와 같이 아웃라인이 변경된 것을 확인할 수 있습니다.


main 메서드의 코드를 변경하면 이전과 동일하게 작동합니다.

class Accounting{
	public static double valueOfSupply; //공급가
	public static double vatRate;
	public static double 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 getDividend1() {
		return getIncome()*0.5;
	}
	
	public double getDividend2() {
		return getIncome()*0.3;
	}
	
	public double getDividend3() {
		return getIncome()*0.2;
	}
    
	public static void print() {
		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("Divididend 1: "+getDividend1());
		System.out.println("Divididend 2: "+getDividend2());
		System.out.println("Divididend 3: "+getDividend3());
	}
}

public class AccountingClassApp {	
	public static void main(String() args) {
		Accounting.valueOfSupply=10000.0;
		Accounting.vatRate=0.1;
		Accounting.expenseRate=0.3;
		Accounting.print();
	}
}

생성된 클래스를 인스턴스화하여 여러 프로그램을 실행할 수 있습니다.


인스턴스는 실제로 클래스를 실행하는 업데이트된 클래스라고 할 수 있습니다.

이를 통해 서로 다른 상태에서 여러 클래스를 실행할 수 있습니다.

여러 조건에 따라 다른 출력을 생성하려고 한다고 가정합니다.

1. 제품 A
– 배송비 10000
– 부가세 10%
– 공모가 대비 사업비율 30%


2. 제품 B
– 배송비 20000
– 부가세 5%
– 공모가 대비 사업비율 20%

기존 방식으로 프로그램을 실행하면 변수를 조정하면 프로그램이 왜곡될 수 있습니다.

Accounting.valueOfSupply=10000.0; 
Accounting.vatRate=0.1;
Accounting.expenseRate=0.3;
//...
Accounting.print();
//...
//anotherVariable=...;
//anotherMethod=...;
Accounting.valueOfSupply=20000.0;
Accounting.vatRate=0.05;
Accounting.expenseRate=0.2;
Accounting.print();
//...
Accounting.valueOfSupply=10000.0; 
Accounting.vatRate=0.1;
Accounting.expenseRate=0.3;
Accounting.print();

이 시점에서 각 상태에 대한 인스턴스를 생성하여 해결할 수 있습니다.

먼저 Accounting 클래스에서 모든 정적 키워드를 제거하십시오.

이 상황에서는 두 개의 상태가 있으므로 두 개의 인스턴스를 만듭니다.

Accounting a=new Accounting(); 
Accounting b=new Accounting();

상태에 따라 각 인스턴스를 조정합니다.

Accounting a=new Accounting();
a.valueOfSupply=10000.0;
a.vatRate=0.1;
a.expenseRate=0.3;
a.print();
		
Accounting b=new Accounting();
b.valueOfSupply=20000.0;
b.vatRate=0.05;
b.expenseRate=0.2;
b.print();

a.print();

a는 b의 작업이 완료된 후에도 여전히 존재합니다.

따라서 마지막에 a의 인쇄 방법을 실행해도 같은 결과가 나옵니다.