클래스
Class
객체(object)는 클래스(Class)라는 표현을 쓰기도 하는데 같은 내용은 아니다.
클래스는 서로 연관된 변수와 메소드를 그룹핑한 것이다. 그리고 거기에 이름을 붙인 것이다.
그래서 메소드, 클래스 이러한 것들이 중요한 이유는 우리가 소프트웨어를 만들어 가는데 있어서 구조를 결정하기 때문이다. 마치 우리의 신체에서 뼈대와 같은 역할을 메소드와 클래스가 하기 때문에 뒤로 갈수록 상당히 중요하다.
eclipse - outline 실행하기
window - Show View - Outline (Alt + Shift +Q, O)
outline은 해당 클래스 안에 소속되어 있는 여러가지 맴버들, 즉 클래스에 소속되어 있는 변수 또는 메소드의 리스트를 보여준다.
아래와 같이 AccountingClassApp 클래스의 변수 또는 메소드의 리스트를 볼 수 있다.
public class AccountingClassApp {
public static double valueOfSupply;
public static double vatRate;
public static double expenseRate;
public static void main(String[] args) {
valueOfSupply = 70000.0;
vatRate = 0.1;
expenseRate = 0.3;
print();
// anotherVariable = ...;
// anotherMethod = ...;
}
public static void print() {
System.out.println("Value of supply : "+valueOfSupply);
System.out.println("VAT : "+getIncome());
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 getDividend1() {
return getIncome()*0.5;
}
public static double getDividend2() {
return getIncome()*0.3;
}
public static double getDividend3() {
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;
}
}
위의 예제에는 회계에 관한 메소드만 존재한다.
그러나 상상력을 동원하여 회계와 상관없는 메소드와 변수들이 존재할 수 있다.
그렇게 되면 무수히 많은 메소드와 변수가 엉망진창이 되면서 결국에 우리가 프로그램을 만드는 생산성을 급격히 떨어뜨리는 방해 요소가 될 수 있다.
// anotherVariable = ...;
// anotherMethod = ...;
여기서 클래스가 필요하다. 파일로 치면 디렉토리와 같은 역할을 한다.
Accounting 클래스를 만들어 보자.
- 전역변수(Filed)들을 Accounting 클래스 안으로
- 메소드들도 Accounting 클래스 안으로
- Main 클래스 안의 메소드들 앞에 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 : "+getIncome());
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 getDividend1() {
return getIncome()*0.5;
}
public static double getDividend2() {
return getIncome()*0.3;
}
public static double getDividend3() {
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 = 70000.0;
Accounting.vatRate = 0.1;
Accounting.expenseRate = 0.3;
Accounting.print();
// anotherVariable = ...;
// anotherMethod = ...;
}
}
Accounting 클래스 안에 코드를 넣음으로 소속관계를 명확히 하였다.
그럼 이제 다른 취지의 코드와 뒤섞여도 상관없고 같은 이름의 메소드를 사용해도 공존할 수 있게 되었다.
이것이 바로 객체지향의 핵심이라고 할 수 있는 클래스(Class) 이다.
'youtube.com|user|egoing2 > JAVA1' 카테고리의 다른 글
JAVA1 - 16.1 나의 앱 만들기 (메소드) (8) | 2022.01.24 |
---|---|
JAVA1 - 15.3 나의 앱 만들기 (반복문) (4) | 2022.01.24 |
JAVA1 - 15.2 나의 앱 만들기 (배열) (2) | 2022.01.23 |
JAVA1 - 15.1 나의 앱 만들기 (조건문) (2) | 2022.01.22 |
JAVA1 - 14.3 나의 앱 만들기 (입력값 도입) (2) | 2022.01.22 |