방법
메서드는 클래스의 동작을 나타내는 함수입니다.
메서드를 사용하여 프로그램을 구성해 봅시다.
하나) 추출 방법
· 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의 인쇄 방법을 실행해도 같은 결과가 나옵니다.