Method와 Class, Instance

hanahana·2022년 7월 29일

JAVA 생활코딩

목록 보기
8/8
post-thumbnail

Method

public class MyApp {
public static void main(String[] args) {
	
	
	double valueOfSupply= 10000;
	double vatRate = 0.1;
	double espeseRate=0.3;
	double vat = valueOfSupply*vatRate;
	double totla = valueOfSupply+vat;
	double expense = valueOfSupply*espeseRate;
	double income = valueOfSupply -expense;
	double dividend1 = income*0.5;
	double divideend2 = income*0.3;
	double dividend3 = income*0.2;
	
	System.out.println("Value of supply : "+valueOfSupply);
	System.out.println("VAT : "+vat);
	System.out.println("Totla : "+totla);
	System.out.println("Expencse : "+expense);
	System.out.println("Income : "+income);
	System.out.println("Dividend 1 : "+dividend1);
	System.out.println("Dividend 2 : "+divideend2);
	System.out.println("Dividend 3 : "+dividend3);
}
}

이건은 기본값으로 작성한 코드이다 출력값은 아래와 같다

Value of supply : 10000.0
VAT : 1000.0
Totla : 11000.0
Expencse : 3000.0
Income : 7000.0
Dividend 1 : 3500.0
Dividend 2 : 2100.0
Dividend 3 : 1400.0

Method를 활용한 코드이다

public class MyMethodApp {
	public static double valueOfSupply;
	public static double vatRate;
	public static double espeseRate;
public static void main(String[] args) {
	
	
	valueOfSupply= 10000;
	vatRate = 0.1;
	espeseRate = 0.3;
	double vat = getVAT();
	double totla = getTotal();
	double expense = getExpense();
	double income = getIncome();
	double dividend1 = getDividend1();
	double divideend2 = getDividend2();
	double dividend3 = getDividend3();
	
	print();
}

private static void print() {
	System.out.println("Value of supply : "+valueOfSupply);
	System.out.println("VAT : "+getVAT());
	System.out.println("Totla : "+getTotal());
	System.out.println("Expencse : "+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 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* espeseRate;
}

private static double getTotal() {
	return valueOfSupply+getVAT();
}

private static double getVAT() {
	return valueOfSupply*vatRate;
}
}

결과값

Value of supply : 10000.0
VAT : 1000.0
Totla : 11000.0
Expencse : 3000.0
Income : 7000.0
Dividend 1 : 3500.0
Dividend 2 : 2100.0
Dividend 3 : 1400.0

코드는 달라진듯 보이나 결과값은 똑같다

변수를 정의한 값을 메소드로 만들어 정의 하여 main에 불러오는 것으로 값을 똑같이 출력하는 것이다

일견 복잡해 보이나 코드가 길어지고 다양해질수록 method를 활용하는 것이 코드를 단순하게 만들어준다.

정의하고자 하는 값에 드래그를 하고 Refactor->Extract Method→메소드 이름 입력을 하면 메소드를 자동으로 만들어준다

단축키는 Alt+Shift+M 이다

이렇게 만들어진 매소드가 상위에 Main에서 정의된값을 불러와야 한다면 main위에 클래스 안에서 정의하고 값을 main에서 입력하면 된다

Class

class Acounting{
public static double valueOfSupply;
public static double vatRate;
public static double espeseRate;

double vat = getVAT();
double totla = getTotal();
double expense = getExpense();
double income = getIncome();
double dividend1 = getDividend1();
double divideend2 = getDividend2();
double dividend3 = getDividend3();

static void print() {
	System.out.println("Value of supply : "+valueOfSupply);
	System.out.println("VAT : "+getVAT());
	System.out.println("Totla : "+getTotal());
	System.out.println("Expencse : "+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 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* espeseRate;
}

private static double getTotal() {
	return valueOfSupply+getVAT();
}

private static double getVAT() {
	return valueOfSupply*vatRate;
}
}

public class MyClassApp {

public static void main(String[] args) {
	
	
	Acounting.valueOfSupply= 10000;
	Acounting.vatRate = 0.1;
	Acounting.espeseRate = 0.3;

	
	Acounting.print();
}}

class를 활용해 정의한 값이다 출력값은 아래와 같다

Value of supply : 10000.0
VAT : 1000.0
Totla : 11000.0
Expencse : 3000.0
Income : 7000.0
Dividend 1 : 3500.0
Dividend 2 : 2100.0
Dividend 3 : 1400.0

출력값도 동일함을 알수있다.

이 경우 간단하게 main에서 출력하고자 하는 값을 제외하고 정의한 모든값과 메소드를 다른 클래스로 옮긴것이다

그 뒤에 main에서 호출할 코드 앞에 (클래스이름).호출코드를 하기만하면 클래스에서 정의한것들을 불러올수있다.

이것은 한 파일안에서 class를 이동시켜 사용했지만 여러가지 다른 파일을 만들어 다른파일에서의 값을 내가 출력하고자 하는 main파일에서 출력시킬수 있어 매우 유용하다.

instance

Acounting a1=new Acounting();
	a1.valueOfSupply= 10000;
	a1.vatRate = 0.1;
	a1.espeseRate = 0.3;
	a1.print();
	
System.out.println();
	
	Acounting a2=new Acounting();
	a2.valueOfSupply= 20000;
	a2.vatRate = 0.2;
	a2.espeseRate = 0.5;
	a2.print();

값을 새롭게 입력해서 계속 다른결과 값을 내야 할때 instance를 사용한다

종류 정의할이름 =new 종류();

로 정의된 이 값은 새로운 class를 복제해주는것 같은 효과를 가진다

이 경우 출력된 값을 계속 새로불러오기 때문에 고정하는 값을 뜻하는 static이 포함된 메소드에서는 정상 실행되지 않기때문에 static를 삭제해주어야 한다

출력값

Value of supply : 10000.0
VAT : 1000.0
Totla : 11000.0
Expencse : 3000.0
Income : 7000.0
Dividend 1 : 3500.0
Dividend 2 : 2100.0
Dividend 3 : 1400.0

Value of supply : 20000.0
VAT : 4000.0
Totla : 24000.0
Expencse : 10000.0
Income : 10000.0
Dividend 1 : 5000.0
Dividend 2 : 3000.0
Dividend 3 : 2000.0
profile
hello world

0개의 댓글