21.06.08 - 생활코딩 JAVA 공부

·2021년 6월 28일
0

생활코딩JAVA

목록 보기
6/12

1. 나의 앱 만들기 - 조건문


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를 그대로 따라 써보긴 했는데 아직 뭐가 뭔지 모르겠다. 조건문 맛보기!

2. 나의 앱 만들기 - 배열

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개로 줄어들었고, 변수가 오염될 가능성이 현저하게 줄어들었다! 코딩에서도 정리정돈이 중요!



3. 나의 앱 만들기 - 반복문

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;
}

반복문을 사용해서 코드의 양이 줄어 효율적인 코딩을 할 수 있다.

배열과 함께 쓰면 더 폭발적인 효과가 있다!



4. 나의 앱 만들기 - 메소드

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 메소드 만들고나서 와....입틀막.... 이래서 메소드를 사용하는구나 눈을 떠버림...!!



5. 나의 앱 만들기 - 클래스

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 = ...;
	}
}

클래스 : 서로 연관된 변수와 메소드를 그룹핑하여 이름을 붙인 것이다. 클래스도 역시 정리정돈의 상자! 클래스와 메소드는 뼈대(구조)와 같은 역할을 함.

  • Window - Show View - Outline > 클래스 안에 소속되어 있는 여러가지 멤버들(변수/메소드) 리스트를 보여줌
  • class Accounting {} 을 최상단에 생성해서 메소드를 어카운팅 클래스로 옮겨줌
  • 클래스만 다르다면 같은 이름이어도 공존할 수 있음




6. 나의 앱 만들기 - 인스턴스

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();
		
	}
}

인스턴스 : 하나의 클래스를 복제해서 서로 다른 데이터의 값과 서로 같은 메소드를 가진 복제본을 만드는 것이다.

인스턴스가 제일 어렵다🤯🤯🤯🤯🤯 전에 인스턴스 배울 때 했었는데 왜 이렇게 초면인 것 같아ㅎㅎ 따라하는 것조차 어려워서 반복재생하면서 어찌저찌 완강!



오늘 학습은 조건문, 배열, 반복문, 메소드 맛보기! 이고잉님이 따라하기보단 구경하라고 하신 것을 보면 이런 식으로 사용한다~라는 것을 보여주려고 한 것 같다. 나도 말로만 듣던 조건문, 반복문 같은 것들을 구경하기 식으로라도 알게 돼서 좋았다. 나중에 내가 공부할 것들을 미리보기로 봤으니, 마음의 준비도 단단히!


0개의 댓글