์ํ์ฝ๋ฉ JAVA1
- 9. ๋์ ์ฑ ๋ง๋ค๊ธฐ - ๋ฉ์๋ -
- 10. ๋์ ์ฑ ๋ง๋ค๊ธฐ - ํด๋์ค -
- 11. ๋์ ์ฑ ๋ง๋ค๊ธฐ - ์ธ์คํด์ค -
9. ๋์ ์ฑ ๋ง๋ค๊ธฐ - ๋ฉ์๋
๋ฉ์๋๋ ์๋ก ์ฐ๊ด๋ ์ฝ๋๋ฅผ ๊ทธ๋ฃนํํด์ ์ด๋ฆ์ ๋ถ์ธ ์ ๋ฆฌ์ ๋์ ์์์ด๋ค.
ํ์ฌ ์ฐ๋ฆฌ์ ์ฝ๋์์๋ ๋๋ผ๋งํฑํ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง๋ ์๊ฒ ์ง๋ง ์์์ ํด๋ณด๋ฉด ๋ง์ฝ ๋ณ์ vat ๋ผ๊ณ ํ๋ ๋ถ๊ฐ์ธ๋ฅผ ๊ตฌํ๋ ๊ณต์์ด ํ์ค์ง๋ฆฌ๊ฐ ์๋๋ผ ์ผ์ต์ค ์ด์์ด๋ผ๋ฉด vat์ ๋ฐ๋ก ์ผ์ต์ค์ง๋ฆฌ ๊ณต์์ ๋ฃ๋ ๊ฒ๋ณด๋จ ๋ค๋ฅธ ๊ณณ์ ๋ถ๊ฐ์ธ๋ฅผ ๊ตฌํ๋ ๊ณต์์ ์์ฑํ๊ณ vat์์ ํด๋น๊ณต์์ ๋ด์ ์์๋ฅผ ๋ถ๋ฌ์ค๋ ๊ฒ์ด ์ข ๋ ํธ๋ฆฌํ ์ฑ์ด ๋ ์ ์์ ๊ฒ์ด๋ค.
ํน์ ๊ณต์์ ๋ฉ์๋๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ ์์ผ๋ก ์ง์ ์ ๋ ฅํ๋ ๋ฐฉ๋ฒ์ด ์์ง๋ง ๊ณต์์ ๋๋๊ทธํด์ค๋ค์์ Extract Method... (option + command + M)์ ๋๋ฌ์ ๋ฉ์๋๋ช ์ ์ง์ ํ๊ณ ๋ง๋ค ์ ์๋ค.
๋ถ๊ฐ์ธ๋ฅผ ๊ตฌํ๋ ๊ณต์์ getVAT๋ผ๋ ๋ฉ์๋ ์์ ๋ฃ๊ณ ๋ณ์ vat์๋ ๋ฉ์๋๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ์ผ๋ก ์์ฑ๋ ์ฝ๋์ด๋ค.
์ด๋ ๊ฒ ๋๋ฉด ๊ณต์์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ ธ๋ ๋ฉ์๋์์ ๋ด๊ฒจ์ ธ ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ getVAT๋ง ํธ์ถํ๋ฉด ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ ์ง๊ธ ๋ฉ์๋๋ valueOfSupply๋ผ๋ ๊ณต๊ธ๊ฐ์ vatRate๋ผ๋ ์ธ๊ธ๋น์จ์ ๊ฐ์ ธ๊ฐ์ผ๋ง ์ฑ์ด ์ ์์ ์ผ๋ก ์คํ๋์ด ์ง๋ค.
๊ทธ๋ฌ๋ฉด getVAT์์ ์ด๋ ํ ๊ฐ๋ ๊ฐ์ ธ๊ฐ์ง ์๊ณ ๋ฐ๋ก ์คํ๋์ด์ง๊ฒ ํ๋ ๋ฐฉ๋ฒ์ด ์์๊น?
๋ง์ฝ ๋ฉ์๋์์ ์ธ์๋ฅผ ๋ฃ์ด์ฃผ์ง ์๋๋ค๋ฉด ๊ณต๊ธ๊ฐ์ ์ธ๊ธ๋น์จ์ ๋ฐ์์ค์ง ์์ valueOfSupply*vatRate๋ฅผ ๋ฆฌํดํ ์ ์๋ค.
ํด๋น ๊ฐ์ ๋ฆฌํดํ ์ ์๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ ๊ณต๊ธ๊ฐ์ ์ธ๊ธ๋น์จ์ด ๋ฉ์ธ๋ฉ์๋์์ ์ ์ธ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฉ์ธ๋ฉ์๋ ๋ฐ์ ์๋ getVAT๋ ํด๋น ๋ณ์์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด๋ค.
์ฐ๋ฆฌ๋ ์ด๋ฌํ ๋๋ณ์ valueOfSupply, vatRate๋ฅผ ์ง์ญ๋ณ์๋ผ๊ณ ํ๋ค.
๊ทธ๋ฌ๋ฉด ์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผํ๋๋ฐ ๋ฐฉ๋ฒ์ ๋ ๋ณ์๋ฅผ AccountingMethodApp ํด๋์ค ์์ ์ ์ญ๋ณ์๋ก ์ง์ ํด์ ๋ชจ๋ ๋ฉ์๋์์ ์ ๊ทผํ ์ ์๋๋ก ํด์ผํ๋ค.
์ด๋ฐ์์ผ๋ก ๋ชจ๋ ๋ฉ์๋๊ฐ ์ฌ์ฉํ ์ ์๊ฒ ํด๋์ค ๋ฐ๋ก์์ ์ ์ธํด์ฃผ๋ฉด getVAT๋ ํด๋น ๋ณ์๋ฅผ ์ด์ฉํ ์ ์๋ ๊ฒ์ด๋ค.
์ด์ ์ด ์ฝ๋๋ค์ ๋ชจ๋ ๋ฉ์๋๋ฅผ ์ ์ฉ์์ผ์ ์ ๊ทธ๋ ์ด๋๋ฅผ ์์ผ๋ณด๋๋ก ํ์.
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 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("Dividend 1 : " + getDividend1() ); // ๋ฐฐ๋น1
System.out.println("Dividend 2 : " + getDividend2() ); // ๋ฐฐ๋น2
System.out.println("Dividend 3 : " + getDividend3() ); // ๋ฐฐ๋น3
}
public static double getDividend1() {
return getIncome() * 0.5;
}
public static double getDividend2() {
return getIncome() * 0.3;
}
public static double getDividend3() {
return getIncome() * 0.2;
}
public static double getIncome() {
return valueOfSupply - getExpense();
}
public static double getExpense() {
return valueOfSupply*expenseRate;
}
public static double getTotal() {
return valueOfSupply + getVAT();
}
public static double getVAT() {
return valueOfSupply * vatRate;
}
}
์ด๋ฐ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํด ์ฃผ๋ฉด ์ฝ๋์ ๊ธธ์ด๋ ๊ธธ์ด์ก์ง๋ง ๊ฐ๋ฐํ๋๋ฐ์ ์์ด์๋ ํจ์ฌ ๋จ์ ํ ์ฝ๋๊ฐ ๋ ๊ฒ์ด๋ค.
10. ๋์ ์ฑ ๋ง๋ค๊ธฐ - ํด๋์ค
ํด๋์ค๋ ์๋ก ์ฐ๊ด๋ ๋ณ์์ ๋ฉ์๋๋ค์ ๊ทธ๋ฃนํํ ๊ฒ์ ์ด๋ฆ์ ๋ถ์ธ ๊ฒ์ผ๋ก ๋ฉ์๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋ฆฌ์ ๋์ ์์์ด๋ค.
์ฐ๋ฆฌ๋ ์ง๊ธ๊น์ง ๋๊ณ์ฐ๊ณผ ๊ด๋ จ๋ ํ๊ณ์ ๋ํ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ณ ์๋ค.
์ง๊ธ๊น์ง๋ ํ๊ณ์ ๊ด๋ จ๋ ๋ณ์์ ๋ฉ์๋๋ค์ด ์กด์ฌํ์ง๋ง ๋ง์ฝ ํ๋ก๊ทธ๋จ์ด ํ์ฅ๋์ด์ ํ๊ณ์ ๊ด๋ จ์๋ ๋ฉ์๋์ ๋ณ์๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธธ์๋ ์๋ค.
๋ง์ฝ ์ฝ๋์ ์์ด ๋ฐฉ๋ํด์ง๋ฉด ์ฐ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ์์ฐ์ฑ์ด ๋ฎ์ ์ง ์ ์๋๋ฐ ์ด๋ฅผ ํด๊ฒฐํ ์ ์๋ ๊ฒ์ด ๋ฐ๋ก ํด๋์ค ์ด๋ค.
class Accounting { // ํ๊ณ ๊ด๋ จ ์์
public static double valueOfSupply;
public static double vatRate;
public static double expenseRate;
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("Dividend 1 : " + getDividend1() ); // ๋ฐฐ๋น1
System.out.println("Dividend 2 : " + getDividend2() ); // ๋ฐฐ๋น2
System.out.println("Dividend 3 : " + getDividend3() ); // ๋ฐฐ๋น3
}
public static double getDividend1() {
return getIncome() * 0.5;
}
public static double getDividend2() {
return getIncome() * 0.3;
}
public static double getDividend3() {
return getIncome() * 0.2;
}
public static double getIncome() {
return valueOfSupply - getExpense();
}
public static double getExpense() {
return valueOfSupply*expenseRate;
}
public static double getTotal() {
return valueOfSupply + getVAT();
}
public static double getVAT() {
return valueOfSupply * vatRate;
}
}
public class AccountingClassApp {
public static void main(String[] args) {
Accounting.valueOfSupply = 10000.0;
Accounting.vatRate = 0.1;
Accounting.expenseRate = 0.3;
Accounting.print();
// anotherVariable = ... ;
// anotherMethod = ...;
}
}
๊ธฐ์กด์ AccountingClassApp ํด๋์ค์ ์๋ ํ๊ณ๊ด๋ จ ๋ณ์์ ๋ฉ์๋๋ค์ Accounting์ด๋ผ๊ณ ํ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ํ ๊ณณ์ ๋ฃ์ด์ฃผ๊ฒ ๋๋ฉด ๊ธฐ์กด ํด๋์ค์์ ํ๊ณ์ ๊ด๋ จ์๋ ๋ณ์์ ๋ฉ์๋๋ค์ด ์๋ค๊ณ ํ๋๋ผ๋ ์คํธ๋ ์ค๋ฅผ ๋ฐ์ ํ์๊ฐ ์์ด์ง๋ค.
๋ํ ์์ ์ฝ๋์ฒ๋ผ print()๋ผ๋ ๋น๊ต์ ๊ฐ๋จํ ์ด๋ฆ์ด๋๋ผ๋ Accounting์ด๋ผ๋ ํด๋์ค์์ ์์๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์์์ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ๋ฉ์๋๊ฐ ์กด์ฌํ๋๋ผ๋ ๋ฌธ์ ๋ ์ผ์ด ์๋ค.
11. ๋์ ์ฑ ๋ง๋ค๊ธฐ - ์ธ์คํด์ค
์ธ์คํด์ค๋ ํ๋์ ํด๋์ค๋ฅผ ๋ณต์ ํด์ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ์ ๊ฐ๊ณผ ์๋ก ๊ฐ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง ๋ณต์ ๋ณธ์ ๋ง๋๋ ๊ฒ์ด๋ค.
ํด๋น์ฝ๋๋ ๋ฌธ์ ๋ ๊ฒ ์๋ ์ฝ๋์ด๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ฝ Accounting์ ์์๋์ด ์๋ ๋ณ์์ ๋ฉ์๋๋ค์ด ๊ต์ฅํ ๋ง์ด ์๋๋ฐ ์ด์ฉ๋ค ํ๋ฒ ๋ค๋ฅธ ์กด์ฌ๊ฐ ๋ฉ์๋๋ค์ ๊ฐ์ ๋ณ๊ฒฝํด ์ถ๋ ฅํด์ ์ฐ๋ฆฌ๊ฐ ๊ธฐ์กด์ ์ ๋ ฅํ๋ ๊ฐ์ผ๋ก ๋ค์ ๋ฐ๊ฟ์ ํ๋ฆฐํธ๋ฅผ ํด์ผํ๋ ์ํฉ์ด ๊ฝค๋ ๋น๋ฒํ๊ฒ ์ผ์ด๋๊ฒ ๋๋ค๋ฉด ํด๋์ค์ ๋ด๋ถ์ ์ธ ์ํ๋ฅผ ๊ณ์ ๋ฐ๊พธ๋ ํ์๋ก ์ธํด ๋ฒ๊ทธ๊ฐ ์ผ์ด๋ ํ๋ฅ ์ด ๋์์ง๊ฒ ๋๋ค.
๋ง์ฝ ์ด๋ฌํ ์ค๋ฅ์ ๋ฒ์์ ๋ฒ์ด๋๊ธฐ ์ํด์ Accounting ํด๋์ค์ ๋ฒํธ๋ฅผ ๋ถ์ฌ์ Accountingํด๋์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ณต์ ํ ๋ค์์ ๊ฐ ๊ฐ์ ๋ฃ์ด์ฃผ๋ ๋ฐฉ๋ฒ์ ์๊ฐํด๋ผ ์๋ ์๊ฒ ์ง๋ง ๋ง์ฝ ํด๋์ค์์ ๋ฉ์๋๋ ๋ณ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋์์ ๊ฒฝ์ฐ์ ์ผ์ผํ ๊ฐ์ ๋ณ๊ฒฝํด์ฃผ์ด์ผ ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ฐ๋ฆฌ๋ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํด ๋ณผ ๊ฒ์ด๋ค.
๋ฐฉ๋ฒ์ ์๊ฐ๋ณด๋ค ๊ฐ๋จํ๋ค.
Accounting์ด ๋ค์ด๊ฐ์ผํ ๋ณ์ a1์์ new Accounting()์ ์ ๋ ฅํด ์ธ์คํด์ค๋ฅผ ์์ฑํด ๊ธฐ์กด ํด๋์ค๋ฅผ ๋ณต์ ํด ์ฃผ๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ฐ๋ฆฌ๋ ์ฌ๋ฌ๊ฐ์ ํด๋์ค๋ฅผ ๋ฐ๋ก ๋ณต์ ํด์ค ํ์๊ฐ ์๋ค.
class Accounting {
public double valueOfSupply;
public double vatRate;
public double expenseRate;
public 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("Dividend 1 : " + getDividend1() ); // ๋ฐฐ๋น1
System.out.println("Dividend 2 : " + getDividend2() ); // ๋ฐฐ๋น2
System.out.println("Dividend 3 : " + getDividend3() ); // ๋ฐฐ๋น3
}
public double getDividend1() {
return getIncome() * 0.5;
}
public double getDividend2() {
return getIncome() * 0.3;
}
public double getDividend3() {
return getIncome() * 0.2;
}
public double getIncome() {
return valueOfSupply - getExpense();
}
public double getExpense() {
return valueOfSupply*expenseRate;
}
public double getTotal() {
return valueOfSupply + getVAT();
}
public double getVAT() {
return valueOfSupply * vatRate;
}
}
public class AccountingClassApp {
public static void main(String[] args) {
// instance
Accounting a1 = new Accounting();
a1.valueOfSupply = 10000.0;
a1.vatRate = 0.1;
a1.expenseRate = 0.3;
a1.print();
Accounting a2 = new Accounting();
a2.valueOfSupply = 20000.0;
a2.vatRate = 0.5;
a2.expenseRate = 0.2;
a2.print();
a1.print();
}
}
๊ฒฐ๊ณผ๋ฅผ ํ์ธํด๋ณด๋ฉด ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋์ด ๋์ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ด ๊ณผ์ ๋ค์ ํตํด ์ ์ ์๋ ๊ฒ์ ์๋ฐ์์๋ ๋ฉ์๋๋ก ๊ตฌ์กฐ๋ฅผ ์ก๊ณ , ๋ฉ์๋์ ๋ณ์๋ฅผ ๊ทธ๋ฃนํํด์ ํด๋์ค๋ก ๊ตฌ์กฐ๋ฅผ ์ก์ ๋ค์, ๊ทธ ํด๋์ค๋ฅผ ๋ณต์ ํ ์ธ์คํด์ค๋ฅผ ํตํด์ ๋ ๋ค๋ฅธ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๋ฐฉ์์ผ๋ก ํ๋ก๊ทธ๋จ์ ์์ฑ๋๋ฅผ ๋์ฌ๋๊ฐ ์ ์๋ค.
'๊ฐ์ธ๊ณต๋ถ > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ํ์ฝ๋ฉ] JAVA1 - 15. ์์ ์ ๋ง์น๋ฉฐ (1) | 2022.09.18 |
---|---|
[์ํ์ฝ๋ฉ] JAVA1 - 14. ๋์ ์ฑ ๋ง๋ค๊ธฐ 2 (1) | 2022.09.18 |
[์ํ์ฝ๋ฉ] JAVA1 - 14. ๋์ ์ฑ ๋ง๋ค๊ธฐ 1 (0) | 2022.09.18 |
[์ํ์ฝ๋ฉ] JAVA1 - 13. ์๋ฐ ๋ฌธ์ ๋ณด๋ ๋ฒ 2 (0) | 2022.09.17 |
[์ํ์ฝ๋ฉ] JAVA1 - 13. ์๋ฐ ๋ฌธ์ ๋ณด๋ ๋ฒ 1 (0) | 2022.09.16 |
๋๊ธ