코린이 객체지향 3일차

Chapter 3. 클래스와 인스턴스의 활용

2022년 2월 28일 월요일
오후 5:51

클래스화

public class AccountingApp {
public static double valueOfSupply;
public static double vatRate = 0.1;
public static double getVAT() {
return valueOfSupply * vatRate;
}
public static double getTotal() {
return valueOfSupply + getVAT();
}
public static void main(String[] args) {
valueOfSupply = 10000.0;
System.out.println("Value of supply :" + valueOfSupply);
System.out.println("VAT : " + getVAT());
System.out.println("Total : " + getTotal());
}
}

이런 형식의 코드가 있다고 했을때, 지금이야 큰 코드개수가 적어서 문제가 없지만 관련 코드가 많아질수록 보기 난잡해 보일 수 있다.

관련 Method와 변수를 class화 시키면 정리가 되어서 편하게 만들수 있는데 그 과정이

class Accounting{
public static double valueOfSupply;
public static double vatRate = 0.1;
public static double getVAT() {
return valueOfSupply * vatRate;
}
public static double getTotal() {
return valueOfSupply + getVAT();
}
}
public class AccountingApp {
public static void main(String[] args) {
Accounting.valueOfSupply = 10000.0;
System.out.println("Value of supply :" + Accounting.valueOfSupply);
System.out.println("VAT : " + Accounting.getVAT());
System.out.println("Total : " + Accounting.getTotal());

}

}

이렇게 Class를 생성해서 이름을 적당히 붙이고, 여기서는 회계와 관련이 있다고 생각되는 {변수나 Method}들을 중괄호 안에 넣어 묶어준다. 뒤에 public class에서 관련 Accounting으로 class화 시킨것을 꺼내 쓸때 Accounting.만 적어도 관련 Method나 변수들이 자동으로 추천돼서 사용이 더욱 용이해지는 것을 확인할 수 있다.

인스턴스화
Class를 인스턴스화시키는 방법을 알아보자.
Accounting.valueOfSupply = 10000.0;
System.out.println("Value of supply :" + Accounting.valueOfSupply);
Accounting.valueOfSupply = 20000.0;
System.out.println("Value of supply :" + Accounting.valueOfSupply);

Accounting.valueOfSupply = 10000.0;
System.out.println("VAT : " + Accounting.getVAT());
Accounting.valueOfSupply = 20000.0;
System.out.println("VAT : " + Accounting.getVAT());

Accounting.valueOfSupply = 10000.0;
System.out.println("Total : " + Accounting.getTotal());
Accounting.valueOfSupply = 20000.0;
System.out.println("Total : " + Accounting.getTotal());

각각 다른 값을 뽑아내야 하고 순서에 따라 valueOfSupply의 값을 계속 바꿔야 한다면 귀찮으니 이런 경우에 instance를 만들어 각자의 내부 상태를 가지게 하는것이 효율적이다.

Ø   Accounting a1 = new Accounting();
	a1.valueOfSupply=10000.0;
	
	Accounting a2 = new Accounting();
	a2.valueOfSupply=20000.0;
	
	System.out.println("Value of supply : " + a1.valueOfSupply);
	System.out.println("Value of supply : " + a2.valueOfSupply);
	
	System.out.println("VAT : " + a1.getVAT());
	System.out.println("VAT : " + a2.getVAT());
	
	System.out.println("Total : " + a1.getTotal());
	System.out.println("Total : " + a2.getTotal());

이렇게 만들면 귀찮게 계속 valueOfSupply의 값을 지정해줄 필요없이 각 a1, a2에 지정하고 꺼내 쓰면 되니 매우 편해졌다.

여기에 더해 애초에 instance를 만들때 입력값 자체를 바로 valueOfSupply에 넣으려면

public double valueOfSupply
public Accounting(double valueOfSupply) {
	this.valueOfSupply = valueOfSupply;

이렇게 설정을 매개변수를 설정해주면

Accounting a1 = new Accounting(10000.0);
Accounting a2 = new Accounting(20000.0);
	

위처럼 instance 생설할때 입력된 값 바로 사용가능하다!

좋은 웹페이지 즐겨찾기