https://www.youtube.com/watch?v=mphrv80VaQI&list=PLuHgQVnccGMAIluRRVsC1e79ri-dwnBmR&index=39
이름 바꾸기 : 오른쪽 버튼 - refactor - extract local variable => alt + shift + L
변수 설정
public class accountingappp {
public static void main(String[] args) {
double valueofsupply = 10000.0;
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 = (valueofsupply - expense*0.5);
double dividend2 = (valueofsupply - expense*0.3);
double dividend3 = (valueofsupply - expense*0.2);
System.out.println("Value of supply : " + valueofsupply);
System.out.println("VAT : " + vat);
System.out.println("Total : " + total) ;
System.out.println("Expense : " + vat) ;
System.out.println("Income : " + income ) ;
System.out.println("Dividend1 : " + dividend1 );
System.out.println("Dividend2 : " + dividend2 );
System.out.println("Dividend3 : " + dividend3);
}
}
입력값 도입
public class accountingappp {
public static void main(String[] args) {
double valueofsupply = Double.parseDouble(args[0]);
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 = (valueofsupply - expense*0.5);
double dividend2 = (valueofsupply - expense*0.3);
double dividend3 = (valueofsupply - expense*0.2);
System.out.println("Value of supply : " + valueofsupply);
System.out.println("VAT : " + vat);
System.out.println("Total : " + total) ;
System.out.println("Expense : " + vat) ;
System.out.println("Income : " + income ) ;
System.out.println("Dividend1 : " + dividend1 );
System.out.println("Dividend2 : " + dividend2 );
System.out.println("Dividend3 : " + dividend3);
}
}
run - run configurations - arguments 에 입력값 적기
Launch4J 소프트웨어 이용 시 자바 미이용 사용자도 사용 가능
조건문(if)
public class accountingapppif {
public static void main(String[] args) {
double valueofsupply = Double.parseDouble(args[0]);
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 : " + vat) ;
System.out.println("Income : " + income ) ;
System.out.println("Dividend1 : " + dividend1 );
System.out.println("Dividend2 : " + dividend2 );
System.out.println("Dividend3 : " + dividend3);
}
}
=> 처음에 계속 arguments에 5000 입력해도 5:3:1 비율이 떠서 뭔가 했는데 run configuration 들어가니 main class 가 이전 파일로 돼있었다 변경하니 반영됨 휴
배열(같은 카테고리 값 정리정돈)
public class accountingarrayappp {
public static void main(String[] args) {
double valueofsupply = Double.parseDouble(args[0]);
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[] 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]);
System.out.println("Value of supply : " + valueofsupply);
System.out.println("VAT : " + vat);
System.out.println("Total : " + total) ;
System.out.println("Expense : " + vat) ;
System.out.println("Income : " + income ) ;
System.out.println("Dividend1 : " + dividend1 );
System.out.println("Dividend2 : " + dividend2 );
System.out.println("Dividend3 : " + dividend3);
}
}
반복문(반복되는 구조 한 줄로 축약하기)
public class accountingarrayloopappp {
public static void main(String[] args) {
double valueofsupply = Double.parseDouble(args[0]);
double vatrate = 0.1;
double expenserate = 0.3;
double vat = valueofsupply * vatrate;
double total = valueofsupply + vat;
double expense = valueofsupply * expenserate;
double income = valueofsupply - expense;
System.out.println("Value of supply : " + valueofsupply);
System.out.println("VAT : " + vat);
System.out.println("Total : " + total) ;
System.out.println("Expense : " + vat) ;
System.out.println("Income : " + income ) ;
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]);
int i =0;
while(i < dividendrates.length) {
System.out.println("Dividend1 : " + income*dividendrates[i] );
i = i + 1;
}
}
}
메소드(서로 연관된 코드를 그룹핑해서 이름 붙인 정리정돈 상자)
- 메소드화
public class accountingmethodappp {
public static double valueofsupply = 10000.0 ;
public static double vatrate = 0.1;
public static void main(String[] args) {
double expenserate = 0.3;
double vat = getvat();
double total = valueofsupply + vat;
double expense = valueofsupply * expenserate;
double income = valueofsupply - expense;
double dividend1 = (income*0.5);
double dividend2 = (income*0.3);
double dividend3 = (income*0.2);
System.out.println("Value of supply : " + valueofsupply);
System.out.println("VAT : " + vat);
System.out.println("Total : " + total) ;
System.out.println("Expense : " + vat) ;
System.out.println("Income : " + income ) ;
System.out.println("Dividend1 : " + dividend1 );
System.out.println("Dividend2 : " + dividend2 );
System.out.println("Dividend3 : " + dividend3);
}
private static double getvat() {
return valueofsupply * vatrate;
}
}
=> 메소드화 하려는 코드 블록 후 오른쪽 마우스 - refactor - extract method
- 지역변수 전역변수로 convert
public class accountingmethodappp {
public static double valueofsupply;
public static double vatrate;
public static void main(String[] args) {
vatrate = 0.1;
valueofsupply = 10000.0;
double expenserate = 0.3;
double vat = getvat();
double total = valueofsupply + vat;
double expense = valueofsupply * expenserate;
double income = valueofsupply - expense;
double dividend1 = (income*0.5);
double dividend2 = (income*0.3);
double dividend3 = (income*0.2);
System.out.println("Value of supply : " + valueofsupply);
System.out.println("VAT : " + vat);
System.out.println("Total : " + total) ;
System.out.println("Expense : " + vat) ;
System.out.println("Income : " + income ) ;
System.out.println("Dividend1 : " + dividend1 );
System.out.println("Dividend2 : " + dividend2 );
System.out.println("Dividend3 : " + dividend3);
}
private static double getvat() {
return valueofsupply * vatrate;
}
}
=> 코드 블록 후 오른쪽 마우스 - refactor - convert local variable to field...
- 전반적 메소드화
public class accountingmethodappp {
public static double valueofsupply;
public static double vatrate;
public static double expenserate;
public static void main(String[] args) {
vatrate = 0.1;
valueofsupply = 10000.0;
expenserate = 0.3;
print();
}
private 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("Dividend1 : " + getdividend1() );
System.out.println("Dividend2 : " + getdividend2() );
System.out.println("Dividend3 : " + getdividend3());
}
private static double getdividend3() {
return getincome()*0.2;
}
private static double getdividend2() {
return getincome()*0.3;
}
private static double getdividend1() {
return getincome()*0.5;
}
private static double getincome() {
return valueofsupply - getexpense();
}
private static double getexpense() {
return valueofsupply * expenserate;
}
private static double gettotal() {
return valueofsupply + getvat();
}
private static double getvat() {
return valueofsupply * vatrate;
}
}
클래스(서로 연관된 변수, 메소드 그룹핑&연결)
class accountingg{
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("Dividend1 : " + getdividend1() );
System.out.println("Dividend2 : " + getdividend2() );
System.out.println("Dividend3 : " + getdividend3());
}
public static double getdividend3() {
return getincome()*0.2;
}
public static double getdividend2() {
return getincome()*0.3;
}
public static double getdividend1() {
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();
}
public static double getvat() {
return valueofsupply * vatrate;
}
public class accountingclassappp {
public static void main(String[] args) {
accountingg.vatrate = 0.1;
accountingg.valueofsupply = 10000.0;
accountingg.expenserate = 0.3;
print();
}}}
인스턴스(하나의 클래스를 복제-> 서로 다른 데이터값과 서로 같은 메소드값을 가진 복제본 생성)
class accountingg{
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("Dividend1 : " + getdividend1() );
System.out.println("Dividend2 : " + getdividend2() );
System.out.println("Dividend3 : " + getdividend3());
}
public static double getdividend3() {
return getincome()*0.2;
}
public static double getdividend2() {
return getincome()*0.3;
}
public static double getdividend1() {
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();
}
public static double getvat() {
return valueofsupply * vatrate;
}
public class accountingclassappp {
public static void main(String[] args) {
accountingg.valueofsupply = 10000.0;
accountingg.vatrate = 0.1;
accountingg.expenserate = 0.3;
accountingg.print();
//...
accountingg.valueofsupply = 20000.0;
accountingg.vatrate = 0.05;
accountingg.expenserate = 0.2;
accountingg.print();
//..
accountingg.valueofsupply = 10000.0;
accountingg.vatrate = 0.1;
accountingg.expenserate = 0.3;
accountingg.print();
//..
}}}
=> 클래스 내부 상태 변화 많아 버그 유발 가능성 높아짐
- 클래스 복제-> 하나의 클래스 돌려막기 대신 여러 복제클래스 따로 사용
class accountingg1{
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("Dividend1 : " + getdividend1() );
System.out.println("Dividend2 : " + getdividend2() );
System.out.println("Dividend3 : " + getdividend3());
}
public static double getdividend3() {
return getincome()*0.2;
}
public static double getdividend2() {
return getincome()*0.3;
}
public static double getdividend1() {
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();
}
public static double getvat() {
return valueofsupply * vatrate;
}
class accountingg2{
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("Dividend1 : " + getdividend1() );
System.out.println("Dividend2 : " + getdividend2() );
System.out.println("Dividend3 : " + getdividend3());
}
public static double getdividend3() {
return getincome()*0.2;
}
public static double getdividend2() {
return getincome()*0.3;
}
public static double getdividend1() {
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();
}
public static double getvat() {
return valueofsupply * vatrate;
}
public class accountingclassappp {
public static void main(String[] args) {
accountingg1.valueofsupply = 10000.0;
accountingg1.vatrate = 0.1;
accountingg1.expenserate = 0.3;
accountingg1.print();
//...
accountingg2.valueofsupply = 20000.0;
accountingg2.vatrate = 0.05;
accountingg2.expenserate = 0.2;
accountingg2.print();
//..
}}}
- 클래스 복제 단순화
class accountingg{
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("Dividend1 : " + getdividend1() );
System.out.println("Dividend2 : " + getdividend2() );
System.out.println("Dividend3 : " + getdividend3());
}
public static double getdividend3() {
return getincome()*0.2;
}
public static double getdividend2() {
return getincome()*0.3;
}
public static double getdividend1() {
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();
}
public static double getvat() {
return valueofsupply * vatrate;
}
public class accountingclassappp {
public static void main(String[] args) {
// accountingg1.valueofsupply = 10000.0;
// accountingg1.vatrate = 0.1;
// accountingg1.expenserate = 0.3;
// accountingg1.print();
// //...
// accountingg2.valueofsupply = 20000.0;
// accountingg2.vatrate = 0.05;
// accountingg2.expenserate = 0.2;
// accountingg2.print();
// //..
//
accountingg a1 = new accountingg();
a1.valueofsupply = 10000.0;
a1.vatrate = 0.1;
a1.expenserate = 0.3;
a1.print();
accountingg a2 = new accountingg();
a2.valueofsupply = 10000.0;
a2.vatrate = 0.1;
a2.expenserate = 0.3;
a2.print();
}}}
=> a1, a2 는 인스턴스
- static 키워드 삭제
class accountingg{
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("Dividend1 : " + getdividend1() );
System.out.println("Dividend2 : " + getdividend2() );
System.out.println("Dividend3 : " + getdividend3());
}
public double getdividend3() {
return getincome()*0.2;
}
public double getdividend2() {
return getincome()*0.3;
}
public double getdividend1() {
return getincome()*0.5;
}
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 accountingclassappp {
public void main(String[] args) {
accountingg a1 = new accountingg();
a1.valueofsupply = 10000.0;
a1.vatrate = 0.1;
a1.expenserate = 0.3;
a1.print();
accountingg a2 = new accountingg();
a2.valueofsupply = 10000.0;
a2.vatrate = 0.1;
a2.expenserate = 0.3;
a2.print();
}}}
'Programming > 자바' 카테고리의 다른 글
생활코딩 자바 - 숫자와 문자열 (0) | 2022.02.28 |
---|---|
생활코딩 자바 - 이클립스 사용 방법 (0) | 2022.02.28 |
생활코딩 자바 리뉴얼 12. 자바 문서 보기 (0) | 2022.02.23 |
생활코딩 자바 11. 직접 컴파일 & 실행 (0) | 2022.02.22 |
생활코딩 자바 리뉴얼 10. 입출력 (0) | 2022.02.22 |