if (income > 10000.0) {
dividend1 = income * 0.5;
dividend2 = income * 0.3;
dividend3 = income * 0.2;
} else {
dividend1 = income * 1;
dividend2 = income * 0;
dividend3 = income * 0;
}
배열이란 마치 서로 연관된 것을 함께 넣어두는 수납장처럼, 비슷한 값/같이 사용할 값들/ 등등을 '하나의 공간'에 묶어 넣어놓은 공간이다.
이 배열이 유용한 이유는 '어떤 것 용'의 한 수납장 안에 넣어놓기 때문에 '그 어떤 것'과 관련된 값을 쉽게 찾을 수 있고, 한 공간에 넣어놓기 때문에 값이 변질되거나, 다른 이름과 겹쳐 오염되는 것을 방지할 수 있다.
그리고 값 하나 하나에 일일이 변수를 지정해야하는 번거로운 일을 피할 수 있다.
double[] dividendRates = new double[3];
// double형 데이터로 이루어진 배열 의미 // double형 데이터 3개를 담을 수 있는 수납 상자
dividendRates[0] = 0.5 ;
dividendRates[1] = 0.3 ;
Dividend1 : 3500.0
Dividend2 : 2100.0
Dividend3 : 1400.0
int i = 0 ;
while ( i < dividendRates.length ) {
System.out.println( "Dividend" + (i+1) + " : " + income * dividendRates[i] );
i++ ;
}
메소드란 서로 연관된 코드들을 그룹핑해 이름지은 정리정돈해놓은 상자이다. 동시에 클래스 안의 함수이다.
메소드를 사용하는 이유는 필요한 기능을 담은 코드를 일일이 다 쓰지 않고, 해당 기능을 메소드로 구현해 따로 빼놓고 메소드명만으로 호출해서 쓰면, 전체 스크립트를 훨씬 더 간결하고 이해하기 쉽게 작성할 수 있기 때문이다.
double vat = getVAT(valueOfSupply, varRate);
private static double getVAT(double valueOfSupply, double varRate) {
return valueOfSupply * varRate;
}
public class AccountingMethodApp {
public static double valueOfSupply;
public static double varRate;
private static double expenseRate;
public static void main(String[] args) {
valueOfSupply = 10000.0 ;
varRate = 0.1;
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( "Dividend 1 : " + getDividend1() );
System.out.println( "Dividend 2 : " + getDividend2() );
System.out.println( "Dividend 3 : " + getDividend3() );
}
private static double getDividend1() {
return getIncome() * 0.5;
}
private static double getDividend2() {
return getIncome() * 0.3;
}
private static double getDividend3() {
return getIncome() * 0.2;
}
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 * varRate;
}
}
클래스란 비슷한 종류의 멤버들(변수,메소드)을 묶어 놓아 이름붙여 정리해놓은 상자이다.
클래스를 사용하는 이유는
class Accounting { // 이 안에 다 넣어버리고
}
Accounting.valueOfSupply = 10000.0 ;
// 아래에서는 Accounting. (클래스 이름.) 붙이기
class Accounting {
public static double valueOfSupply;
public static double varRate;
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() );
System.out.println( "Dividend 2 : " + getDividend2() );
System.out.println( "Dividend 3 : " + getDividend3() );
}
// 근데 얘는 왜 private 으로 놔도 실행되 거지?
private static double getDividend1() {
return getIncome() * 0.5;
}
private static double getDividend2() {
return getIncome() * 0.3;
}
private static double getDividend3() {
return getIncome() * 0.2;
}
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 * varRate;
}
}
public class AccountingClassApp {
public static void main(String[] args) {
Accounting.valueOfSupply = 10000.0 ;
Accounting.varRate = 0.1;
Accounting.expenseRate = 0.3;
Accounting.print();
// anotherVariable = ... ;
// anotherMethod = ... ;
}
}
인스턴스는 클래스를 복제한 복제본이다.
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() );
System.out.println( "Dividend 2 : " + getDividend2() );
System.out.println( "Dividend 3 : " + getDividend3() );
}
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 = 이걸 이용하려면 public 뒤 'static'은 없애야
Accounting a1 = new Accounting() ;
a1.valueOfSupply = 10000.0 ;
a1.vatRate = 0.1 ;
a1.expenseRate = 0.3 ;
Accounting a2 = new Accounting() ;
a2.valueOfSupply = 20000.0 ;
a2.vatRate = 0.05 ;
a2.expenseRate = 0.2 ;
a1.print() ;
}
}
import java.util.Scanner;
class Accounting1 {
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() );
System.out.println( "Dividend 2 : " + getDividend2() );
System.out.println( "Dividend 3 : " + getDividend3() );
}
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 AccountingScannerApp {
public static void main(String[] args) {
Scanner in = new Scanner( System.in ) ;
System.out.print( "물건의 공급가를 입력해주세요: " );
double inVal = in.nextDouble() ;
System.out.print( "부가세율을 입력해주세요 (기본:0.1): " );
double inVat = in.nextDouble() ;
System.out.print( "물건 생산에 소요되는 비용의 비율을 입력해주세요 (기본:0.3): ");
double inExpense = in.nextDouble() ;
Accounting1 a1 = new Accounting1() ;
a1.valueOfSupply = inVal ;
a1.vatRate =inVat ;
a1.expenseRate = inExpense ;
a1.print() ;
}
}