일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- azure
- ISMS-P
- AWS SSA
- 정보보안
- 클라우드보안
- metasploit
- 파일시그니처
- 로그분석
- 로드밸런서
- AWS SAA
- isms
- EC2
- 클라우드 자격증
- 공개키
- 와이어샤크
- ncp
- RDS
- 개인정보보호법
- 보안컨설팅
- 클라우드
- AWS
- Burp Suite
- 취약점
- Iam
- 정보보호
- 인스턴스
- 네이버클라우드
- 클라우드서비스
- mysql
- 클라우드자격증
- Today
- Total
처음 만나는 클라우드 보안
[JAVA] 간단한 앱 만들기3 (객체와 클래스 개념) 본문
[이전 포스팅] 2022.07.05 - [분류 전체보기] - [JAVA] 간단한 앱 만들기 2 (기능 입히기)
[JAVA] 간단한 앱 만들기2 (기능 입히기)
[지난 내용] 2022.07.04 - [분류 전체보기] - [JAVA] 간단한 앱 만들기 (feat. 생활코딩) [JAVA] 간단한 앱 만들기 (feat. 생활코딩) 골목길에서 가장 중요한 것은 속도보다 목적지를 향한 경로이다. 목표: 판
cloudinfosec.tistory.com
지난 포스팅에 이어 이번 포스팅에선 지금까지 작성된 코드에 '클래스'라는 개념을 입힐 차례이다. 이 모든 것은 메서드(Method)라는 개념이 적립된 곳에서 시작되었고, 객체에 이어 클래스까지 개념을 이해하고 코드에 써 볼 것이다.
개념잡기
메소드: 서로 연관된 코드를 모아 이름을 붙인 정리 상자
객체 & 클래스: 서로 연관된 변수와 메서드를 모아 이름을 붙인 정리 상자
*객체와 클래스는 다른 개념이다.
1. 클래스(Class) 도입하기
상단에 class Accointing { } 추가 => 기존 메서드(Method)들을 새로 만든 Accountung클래스로 이동


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:" + getExp());
System.out.println("Income:" + getIncome());
System.out.println("Dividend 1:" + getDivend1());
System.out.println("Dividend 2:" + getDivend2());
System.out.println("Dividend 3:" + getDivend3());
}
private static double getDivend1() {
return getIncome()*0.5;
}
private static double getDivend2() {
return getIncome()*0.3;
}
private static double getDivend3() {
return getIncome()*0.2;
}
private static double getIncome() {
return ValueOfSupply - getExp();
}
private static double getExp() {
return ValueOfSupply*expenseRate;
}
private static double getTotal() {
return ValueOfSupply + getVAT();
}
private static double getVAT() {
return ValueOfSupply*vatRate; //메소드 생성부분
}
}
public class AccountingClassApp {
public static void main(String[] args) {
Accounting.ValueOfSupply = 10000.0; // Accounting 클래스에 속한 ValueOfSupply
Accounting.vatRate = 0.1; // Accounting 클래스에 속한 vatRate
Accounting.expenseRate = 0.3; // Accounting 클래스에 속한 expenseRate
Accounting.print();
}
}
2. 인스턴스
인스턴스란? 하나의 클래스를 복제해서 서로 다른 데이터의 값과 서로 같은 메서드를 가진 복제본을 만드는 것이다.
상황 가정
하나의 클래스 아래로 서로 다른 메서드 사용이 빈번하게 나타날 때, 클래스를 수정하는 것은 에러를 유발할 가능성이 매우 높음.

1. 클래스 복제
기존 클래스를 그대로 복사하여 적용시킨다.



다만 복사된 클래스를 사용할 경우, 메서드 수정 작업도 하나하나 진행되기 때문에 좋은 방법은 아니다.
2. 인스턴스 사용
원본 클래스를 그대로 유지하고 생성자인 'new'를 사용해 새로운 클래스 즉, '인스턴스'를 사용할 수 있다.


- 정적 변수 해제
요약: 인스턴스 사용시 'Static'은 지워야 한다.
Static을 가진 변수들은 모두 클래스 변수로 선언되어 메모리에 고유한 공간을 할당받게 된다. 따라서 프로그램이 종료될 때까지 어디서나 호출될 수 있는 전역 변수의 역할을 하게 되는데, 지금처럼 인스턴스 내부에서 변수가 각각 선언되는 경우 메모리를 차지하며 고정적인 변수를 사용할 필요가 없다.

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:" + getExp());
System.out.println("Income:" + getIncome());
System.out.println("Dividend 1:" + getDivend1());
System.out.println("Dividend 2:" + getDivend2());
System.out.println("Dividend 3:" + getDivend3());
}
public double getDivend1() {
return getIncome()*0.5;
}
public double getDivend2() {
return getIncome()*0.3;
}
public double getDivend3() {
return getIncome()*0.2;
}
public double getIncome() {
return ValueOfSupply - getExp();
}
public double getExp() {
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
Accounting a1 = new Accounting();
a1.ValueOfSupply = 10000.0;
a1.vatRate = 0.1;
a1.expenseRate = 0.3;
a1.print();
Accounting a2 = new Accounting();
a2.ValueOfSupply = 20000.0;
a2.vatRate = 0.05;
a2.expenseRate = 0.2;
a2.print();
}
}
자바 프로그래밍 정리
메서드로 구조 잡고 => 메소드와 변수로 이루어진 클래스로 구조잡고 => 클래스를 복제한 인스턴스로 구조를 잡는다.
[강좌 링크] http://www.boostcourse.org/certificate/A20220706-125805?langCode=ko
파트너 기업과 함께 설계하고, 7만명이 선택한 인증 교육
Connect Foundation by Naver
www.boostcourse.org
'JAVA' 카테고리의 다른 글
[JAVA] 프로그래밍 - 전위연산과 후위연산 & 포인터 개념 (0) | 2022.07.09 |
---|---|
[JAVA] 간단한 앱 만들기2 (기능 입히기) (0) | 2022.07.05 |
[JAVA] 간단한 앱 만들기 (feat. 생활코딩) (0) | 2022.07.04 |
[JAVA] 클래스란? 변수 타입의 이해 (with 원시형 & 참조형) (0) | 2022.06.26 |
[JAVA] JVM이란? JAVA컴파일과정 (0) | 2022.06.21 |