코린이 예습 10일차

조태연·2022년 2월 21일
0

코린이 예습

목록 보기
11/11

10일차 22.02.20~22.02.21

No.13 나의 앱 만들기

오리엔테이션

My App1을 만들어보자 지금까지 배운것을 통해!

어떤 앱을 만들것인가? > 판매자라고 가정을 해보자.

소비자에게 물건을 판매하는 가격> 공급가=Value of supply라고 함.

국세청이 소비자에게 소비에 대한 세금을 부과> 부가가치세=Value Added Tax,VAT

소비자가 판매자에게 세금을 얹어서 구매를 하면 판매자가 세금을 국세청에게 대신 전달하는 구조

판매자가 판매를 하기 위해 쓴 돈> 비용=expense

이것을 제한게 이익=income

이익을 배당에 따라 나누는 것을 dividend라고 한다.

기본 기능 구현

시간의 순서에 따라 진행된다는 구조만 가지고 문제를 해결하는 방법을 알아보자!

회계: Accounting

변수 도입

Edit> File/Replace를 통해 특정 단어를 교체할 수 있음. ‘Replace All’을 누르면 전부 교체 가능

Tip. [우클릭> Refactor> Extract Local Variable> “OOO” enter]하면 전부 교체됨

입력값 도입

입력값에 따라 서로 다른 출력값을 주는 것을 만들고 싶음

복습. Run configurations> arguments가 입력값과 관련된 카테고리임.

double valueOfSupply = 10000.0; 에서 공급가가 double 이였는데, 입력값 args[]는 string이기에 double로 바꿔주기 위해 Double.parseDouble(args[0]);로 바꿔줘야 함.

복습. Duplicate를 통해 입력값을 여러개 run configurations에 만들어 줄 수 있음.

실행할때마다 eclipse키는게 귀찮으니, 이거 없이 java APP을 쓰고 싶다고 생각한다면 폴더 자체(ex. MyApp)을 우클릭해서 properties를 눌러 경로를 복사하고 cmd를 켜서 cd 붙여넣은 후, dir or dir/w를 하면 파일들이 보임. 그럼 실행시키고자 하는 프로그램이 보일텐데,

java AccountingApp.java(예를들어) 하고 enter를 하면 에러가 난다. Args[0];값이 없어서 그런건데 띄어쓰기를 해서 입력값을 넣으면 결과값이 나온다

오리엔테이션 2

배우지 않을걸 사용해서 문제를 해결해보자.

조건문

제어문이라는 것을 우리 Project에 도입해서 개선시켜나가보자.

if(income > 10000.0) {

dividend1= income * 0.5; 

dividend2= income * 0.3; 

dividend3= income * 0.2; 

} else { 

dividend1= income * 1.0; 

dividend2= income * 0; 

dividend3= income * 0;	 

} 

수입이 10,000원 이상일때는 분배를 저렇게 아니라면 dividend1에게 몰아주는 식으로 조건을 걸어 봄.

배열

double dividend1= income * 0.5;

double dividend2= income * 0.3; 

double dividend3= income * 0.2; 

이런식으로 되어 있는 변수는 지금이야 이름도 비슷하고 갯수가 적어 다른것에 영향을 받지 않을 수 있으나 작업이 복잡해질수록 헷갈릴수도 있고 영향을 받을 수도 있어서 깔끔하게 정리하는 작업이 중요한데 이것을 배열이라고 한다.

double[] dividendRates = new double[3];

//double형의 데이터를 3개 담을 수 있는 수납상자가 띡 하고 만들어진것

dividendRates[0] = 0.5; 

dividendRates[1] = 0.3; 

dividendRates[2] = 0.2; 

이렇게 하면 double 데이터로 이루어져 있는 배열의 서로 연관된 값을 묶고 ‘divdiendRates’라는 이름을 붙인 것이다. 배열을 도입해서 각각의 값이 연관된 거라는 것을 알 수 있고, 이전에는 3개의 변수가 있었는데 하나로 묶어서 정리를 시킨것. 훨씬 가시성이 뛰어나졌다.

반복문-Loop

System.out.println("dividend1 1 : " + dividend1);

System.out.println("dividend1 2 : " + dividend2); 

System.out.println("dividend1 3 : " + dividend3); 

같은 작업을 반복하는데 그 개수가 3개가 아닌 몇십 몇백 몇천이라면 너무 길어질 것이다. 이것을 반복문을 사용해서 해결 가능하다.

int i = 0;

while(i < dividendRates.length) { 

System.out.println("Dividend : " + income * dividendRates[i]);  

i = i + 1; 

} 

While은 반복문에 사용되는데 저 중괄호{}안에 있는 코드들이 계속 반복된다.

I를 정수로 지정 후 반복될때마다 1씩 더하게 해서 i가 dividendRates.length를 넘기 전까지 반복되게 하는 Loop인 셈이다.

메소드

는 서로 연관된 코드를 그루핑해서 이름을 붙인 정리정돈의 상자다 <이것만 알아두면 됨.

Double vat = valueOfSupply * vatRate; 였는데, 드래그 해서 Refactor> Extract Method한 후 Method name을 지정한뒤 가장 아래 Replcae 1 addi...를 해제해서 ok하면

ex. getVAT(valueOfSupply, vatRate);로 바뀌는 것을 확인할 수 있다. 그리고 하단에

public static double getVAT(double valueOfSupply, double vatRate) {

	return valueOfSupply * vatRate; 

이렇게 나와 있는 것을 볼 수 있다. 이 부분은 Method를 만드는 code이다. / getVAT는 만들어진 Method를 호출하는 code라고 할 수 있다.

GetVAT() < 괄호 안에 값을 지우고 Public~의 괄호 안 값 역시 지우면 좀더 간단하게 할 수 있지만 과정에서 값을 불러와야 하는 경우 getOOOO을 붙여서 그 값을 불러와야 하고 몇개의 변수는 전역 변수로 지정해줘야 한다. Refactor> convert Local Variable to Fied로 해서 전역변수 지정!

클래스- 객체?

객체는 (class) 서로 연관된 변수와 Method를 grouping한 것이고 거기에 이름을 붙인것. 정리정돈의 상자

이것이 중요한 이유는 소프트웨어를 만드는데 구조를 결정하기 때문이다. 신체의 뼈대같은 것

Outline을 통해 Method등을 볼 수 있음. Window> show view> outline

현재 AccountingApp(예를들어)을 만들고 있는데, 작업이 복잡해질수록 자의가 아니여도 회계와 상관 없는 다른 취지의 변수가 있을 수도 있음. ex) anotherVariable = ...; 이런 다른게 있다면 생산성을 떨어뜨리는 방해요소가 될 수 있음.

이런 과정에서 우리를 구원해주는게 Class

class Accounting{

이렇게 열고 나서

각종 class들을 그 아래 붙여 놓으면 소속 자체가 달라지고 명확해지며, 다른 소속과 겹쳐도 상관이 없음

인스턴스

객체 지향의 양대산맥은 class와 instance

Instance: 하나의 Class를 복제해서 서로다른 data의 값과 서로 같은 Method를 가진 복제본을 만드는 것이다.

만일 수십 수백개의 method가 있고 호출이 되었다고 하는데 어쩌다 다른 제품(값을 가진)이 들어왔다고 치면

accounting.valueOfSupply = 20000.0; 
accounting.vatRate = 0.05; 등  

이거 조금 달라졌다고 전부 class의 내부 상태를 바꿔줘야하는데 귀찮고 버그를 마늘 가능성도 높음

New를 붙이면 되는 것이다! 라고 할 수 있음

Accounting A1 = new Accounting (); 이런식으로 new를 붙여 class를 Instance로 만들어주고

그 밑에 A1의 값을 지정해주면 된다. A1.valueOfSupply = 10000.0; 이런식으로 말이다.

profile
성장하는 코린이

0개의 댓글

관련 채용 정보