들어가기 전에
지난 시간에는 메소드를 이용해서 프로그램을 정리정돈하는 방법에 대해서 알아보았습니다.
이번에는 아예 통째로 클래스로 격리시켜서 정리정돈하는 방법에 대해서 알아봅니다.
학습 목표
클래스로 코드를 정리하는 방법에 대해서 알아봅니다.
핵심 단어
- 클래스
강의 듣기
들어가기 전에
지난 시간에는 메소드를 이용해서 프로그램을 정리정돈하는 방법에 대해서 알아보았습니다.
이번에는 아예 통째로 클래스로 격리시켜서 정리정돈하는 방법에 대해서 알아봅니다.
학습 목표
클래스로 코드를 정리하는 방법에 대해서 알아봅니다.
핵심 단어
강의 듣기
클래스
클래스는 서로 연관된 변수와 메소드를 묶어 놓은 것이라는 것을 지난 시간에 알아보았습니다.
이번 시간에는 클래스를 이용해서 프로그램을 정리하는 방법에 대해서 알아봅니다.
MyApp 프로젝트에서 AccountingClassApp 클래스를 생성합니다.
AccountingClassApp.java
class Accounting{
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("Dividend 1 : " + getDiviend1());
System.out.println("Dividend 2 : " + getDiviend2());
System.out.println("Dividend 3 : " + getDiviend3());
}
public static double getDiviend1() {
return getIncome() * 0.5;
}
public static double getDiviend2() {
return getIncome() * 0.3;
}
public static double getDiviend3() {
return getIncome() * 0.2;
}
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 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을 클릭합니다.
클래스에 포함되어 있는 변수와 메소드들이 정리되어 나타나 있는 것을 알 수 있습니다.
다시 편집기로 올라와서 맨 위에 Accounting 클래스를 생성합니다.
class Accounting {
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("Dividend 1 : " + getDividend1());
System.out.println("Dividend 2 : " + getDividend2());
System.out.println("Dividend 3 : " + 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 AccountingClassApp {
....
}
이와 같이 Outline이 바뀌게 됩니다.
public class AccountingClassApp {
public static void main(String[] args) {
Accounting.valueOfSupply = 10000.0;
Accounting.vatRate = 0.1;
Accounting.expenseRate = 0.3;
Accounting.print();
}
}
AccountingClassApp의 main 메소드를 위와 같이 수정하면 똑같이 동작하는 것을 확인할 수 있습니다.
생각해보기
1) 클래스는 무엇인지 왜 사용하는지 댓글로 토론해 보세요
참고자료
https://docs.oracle.com
comment
수 많은 기능들과 데이터들을 공통 카테고리와 상위 하위 카테고리등으로 묶어서 정리하고 수정하고 사용하기위해
클래스는 객체지향의 핵심으로 서로 연관된 변수와 메소드를 그룹핑해 소속관계를 명확히 해서 이름을 붙여 놓은 것이다.
사용하는 이유는 소속관계를 명확학게 해 재사용성과 유지보수를 용이하게 하기 위해서 이다.
1) 비슷한, 또는 연관된 필드와 메소드들은 하나로 구성한 것
객체를 만들기 위한 청사진
코드의 관리를 편하게 하기 위해 사용한다
AccountingclassApp은 앞에 public이 붙고 Accounting클래서 앞에는 붙지 않는데 public이 붙은 것이 더 서열이 높은 거라고 보면 될까요?
한 클래스 안에 여러 클래스가 들어갈 수 있는 것이 이 public 때문인가요?