public class AccountingIFApp {
public static void main(String[] args) {
double valueOfSupply = Double.parseDouble(args[0]); // string to double
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;
double dividend2;
double dividend3;
if(income > 10000.0) {
dividend1 = income * 0.5;
dividend2 = income * 0.3;
dividend3 = income * 0.2;
} else {
dividend1 = income * 1.0;
dividend2 = income * 0;
dividend3 = income * 0;
}
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 1 : "+ dividend1); //배당1
System.out.println("Dividend 2 : "+ dividend2); //배당2
System.out.println("Dividend 3 : "+ dividend3); //배당3
}
}
Aguments 50000.0 입력
<결과>
if와 else를 그대로 따라 써보긴 했는데 아직 뭐가 뭔지 모르겠다. 조건문 맛보기!
double dividend1 = income * 0.5;
double dividend2 = income * 0.3;
double dividend3 = income * 0.2;
double[] dividendRates = new double[3];
dividendRates[0] = 0.5;
dividendRates[1] = 0.3;
dividendRates[2] = 0.2;double dividend1 = income * dividendRates[0];
double dividend2 = income * dividendRates[1];
double dividend3 = income * dividendRates[2];
배열 (Array) : 같은 타입의 여러 변수를 하나의 묶음으로 그룹화하는 것.
이전에 변수는 3개였는데 배열을 사용하고 변수가 1개로 줄어들었고, 변수가 오염될 가능성이 현저하게 줄어들었다! 코딩에서도 정리정돈이 중요!
System.out.println("Dividend 1 : "+ dividend1); //배당1
System.out.println("Dividend 2 : "+ dividend2); //배당2
System.out.println("Dividend 3 : "+ dividend3); //배당3배당받을 사람이 몇천 몇만명까지 늘어난다면?! 일일이 써줄 순 없지~!
//반복문
int i = 0;
while(i < dividendRates.length) {
System.out.println("Dividend : "+ (income *dividendRates[i])); //배당
i = i +1;
}
반복문을 사용해서 코드의 양이 줄어 효율적인 코딩을 할 수 있다.
배열과 함께 쓰면 더 폭발적인 효과가 있다!
double vat = valueOfSupply*vatRate;
이 코드를 getVAT() 메소드로 바꾸기 위해서
valueOfSupply*vatRate; 블럭 > 우측 마우스 클릭 > Refacter > Exfact Method > 이름 getVAT 입력 > OK
public class AccountingMethodApp {
public static double valueOfSupply; // 모든 메소드에서 접근 가능하게 main 바깥에서 선언 (전역변수)
public static double vatRate;
private 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 : "+ getDiviend1());
System.out.println("Dividend 2 : "+ getDiviend2());
System.out.println("Dividend 3 : "+ getDividend3());
}
public static double getDividend3() {
return getIncome() * 0.2;
}
public static double getDiviend2() {
return getIncome() * 0.3;
}
public static double getDiviend1() {
return getIncome() * 0.5;
}
public static double getIncome() {
return valueOfSupply - getExpense();
}
public static double getExpense() {
return valueOfSupply * expenseRate;
}
public static double getTotal() {
return valueOfSupply + getVAT();
}
private static double getVAT() {
return valueOfSupply*vatRate; //메소드를 만드는 코드
}
}
메소드 : 서로 연관된 코드를 그룹화해서 이름을 붙인 정리상자!
영상보면서 따라할 때는 이건 이렇게 메소드 만들면 되겠고~ 이건 이걸로 바꾸면 되겠고~ 하면서 따라하는데 막상 내가 혼자 하려고 하면 뭐부터 해야될지 모를 것 같다... 역시 많이 해보고 익숙해지면 금방 금방 하겠지?! 그래도 따라해보면서 메소드를 사용하니까 코드가 훅훅 줄어들고 보기 좋게 간결해져서 놀랍고 재밌다. 특히 print 메소드 만들고나서 와....입틀막.... 이래서 메소드를 사용하는구나 눈을 떠버림...!!
class Accounting {
public static double valueOfSupply;
public static double vatRate;
public static double expenseRate;
public static double getDividend3() {
return getIncome() * 0.2;
}
public static double getDiviend2() {
return getIncome() * 0.3;
}
public static double getDiviend1() {
return getIncome() * 0.5;
}
public static double getIncome() {
return valueOfSupply - getExpense();
}
public static double getExpense() {
return valueOfSupply * expenseRate;
}
public static double getTotal() {
return valueOfSupply + getVAT();
}
private static double getVAT() {
return valueOfSupply*vatRate;
}
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 : "+ getDiviend1());
System.out.println("Dividend 2 : "+ getDiviend2());
System.out.println("Dividend 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();
// anotherVariable = ...;
// anotherMethod = ...;
}
}
클래스 : 서로 연관된 변수와 메소드를 그룹핑하여 이름을 붙인 것이다. 클래스도 역시 정리정돈의 상자! 클래스와 메소드는 뼈대(구조)와 같은 역할을 함.
class Accounting {
//static 키워드는 사용하면 안되기때문에 삭제해줌
public double valueOfSupply;
public double expenseRate;
public double vatRate;
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 : "+ getDiviend1());
System.out.println("Dividend 2 : "+ getDiviend2());
System.out.println("Dividend 3 : "+ getDividend3());
}
public double getDividend3() {
return getIncome() * 0.2;
}
public double getDiviend2() {
return getIncome() * 0.3;
}
public double getDiviend1() {
return getIncome() * 0.5;
}
public double getIncome() {
return valueOfSupply - getExpense();
}
public double getExpense() {
return valueOfSupply * expenseRate;
}
public double getTotal() {
return valueOfSupply + getVAT();
}
private double getVAT() {
return valueOfSupply*vatRate;
}
}
public class AccountingClassApp {
public static void main(String[] args) {
// instanse
Accounting a1 = new Accounting(); //Accounting 클래스를 복제하는 명령
a1.valueOfSupply = 10000.0;
a1.vatRate = 0.1;
a1.expenseRate = 0.3;
a1.print();
Accounting a2 = new Accounting(); //Accounting 클래스를 복제하는 명령
a2.valueOfSupply = 20000.0;
a2.vatRate = 0.05;
a2.expenseRate = 0.2;
a2.print();
}
}
인스턴스 : 하나의 클래스를 복제해서 서로 다른 데이터의 값과 서로 같은 메소드를 가진 복제본을 만드는 것이다.
인스턴스가 제일 어렵다🤯🤯🤯🤯🤯 전에 인스턴스 배울 때 했었는데 왜 이렇게 초면인 것 같아ㅎㅎ 따라하는 것조차 어려워서 반복재생하면서 어찌저찌 완강!
오늘 학습은 조건문, 배열, 반복문, 메소드 맛보기! 이고잉님이 따라하기보단 구경하라고 하신 것을 보면 이런 식으로 사용한다~라는 것을 보여주려고 한 것 같다. 나도 말로만 듣던 조건문, 반복문 같은 것들을 구경하기 식으로라도 알게 돼서 좋았다. 나중에 내가 공부할 것들을 미리보기로 봤으니, 마음의 준비도 단단히!