나는 개발자다/실전 자바

실전 코딩 #02. 상생소비지원금 계산기, 자바(JAVA)로 코딩해 보자.

강기원 2021. 10. 10. 05:55

이번 포스팅은 상생소비지원금 계산식을 자바로 프로그래밍하는 레슨이다. 함수 구현에서 자바 클래스로 리팩터링 하는 방법을 소개한다. 클래스는 객체 지향 프로그램의 시작이자 끝이라고 할 만큼 처음에는 쉽지만 갈수록 어려워진다. 오늘은 클래스의 맛만 보도록 하자.

 

이번 레슨의 주요 내용은 아래와 같다.

  • 1단계. 상생소비지원금 계산식을 자바 코드로 구현한다.
  • 2단계. 상생소비지원금 계산식을 자바 함수로 구현한다.
  • 3단계. 상생소비지원금 계산식을 자바 클래스로 구현한다.

 

 

 

 

이제 본격적으로 '상생소비지원금 계산식 자바 프로그래밍'을 시작하자.

 

1단계. 상생소비지원금을 자바로 구현하기

 

상생소비지원금-계산식

카드 회사에서 상생소비지원금 계산 방식을 알림톡으로 보내 줬다, 친절하기도 하다.

 

위의 계산법을 수식으로 정리하면 다음과 같다.

(상생소비지원금) = { (10월/11월 카드 사용 금액) - [ (2분기 사용 평균액) + (2분기 사용 평균액) * 0.03 ] } * 0.1  

 

초등학교 때 배운 산수로 수식을 단순화해 보자.

(상생소비지원금) = { (10월/11월 카드 사용 금액) - [ (2분기 사용 평균액) * 1.03 ] } * 0.1  

 

위의 수식을 자바 코드로 구현하면 아래와 같이 된다.

  • 입력 값: (10월/11월 카드 사용 금액), (2분기 사용 평균액)
  • 출력 값: (상생소비지원금)
int actualCardAmount = 153*10000;	// 카드 사용 금액
int secondQuarterAverageAmount = 100*10000; // 2분기 사용 평균액
int subsidyAmount = 0; // 상생 소비지원금
subsidyAmount = (int)((actualCardAmount - secondQuarterAverageAmount*1.03)*0.1);
System.out.println("subsidy amount: " + subsidyAmount);

 

너무 간단하다. 이제 코드를 실행해서 결과가 5만 원인지 확인하면 끝이다. (실행은 단축키를 사용하면 훨씬 편하다. ctrl + F11)

 

상생소비지원금-자바프로그램-1단계-계산식구현결과

 

다행이다. 한 번에 성공했다.

 

 

2단계. 상생소비지원금을 자바 함수로 구현하기

 

만일, 개발자로 취직했는데 위에처럼 메인 함수에 알고리즘을 구현해서 릴리즈한다면 주변 개발자가 당신을 바라보는 시선이 곱지 않을 것이다.

 

이제 상생소비지원금 계산식을 함수로 만들어 보자. 

actualCardAmount, secondQuarterAverageAmount를 입력으로 주고, subsidyAmount를 리턴하도록 구현하면 된다.

int calculateSubsidyAmount(int actualCardAmount, int secondQuarterAverageAmount)

 

전체 코드는 아래처럼 될 것이다.

package shawsk.tistory.com;

public class Main {

	static int calculateSubsidyAmount(int actualCardAmount, int secondQuarterAverageAmount) {
		int subsidyAmount = (int)((actualCardAmount - secondQuarterAverageAmount*1.03)*0.1);
		return subsidyAmount;
	}

	public static void main(String[] args) {

		int actualCardAmount = 153*10000;	// 카드 사용 금액
		int secondQuarterAverageAmount = 100*10000; // 2분기 사용 평균액
		int subsidyAmount = 0; // 상생 소비지원금
		subsidyAmount = calculateSubsidyAmount(actualCardAmount, secondQuarterAverageAmount);
		System.out.println("subsidy amount: " + subsidyAmount);
	}
}

각자 실행해서 결과가 5만 원이 나오는지 확인하자. 이 정도만 하면 개발자로서 기본은 갖춘 셈이다. 하지만, 이건 자바 코딩이 아니다. 자바의 탈을 쓴 C 언어 코드일 뿐이다.

 

 

3단계. 상생소비지원금을 자바 클래스로 구현하기

 

벌써, 이번 강의의 마지막이다. (나는 정말 오래 걸렸다. 코딩은 10분도 안 걸리는데 이걸 블로그로 쓰고 있자니 3시간이 넘게 걸리고 있다.)

 

클래스는 이름을 지어 주고, 생성자, 그리고 메쏘드를 구현해 주면 된다.

  • 이름: class SubsidyCalculator 
  • 생성자: public SubsidyCalculator()
  • 메쏘드: public int calculate(int secondQuarterAverageAmount, int cardAmount)

 

그리고 클래스를 사용할 때는 클래스의 객체를 생성하고 메쏘드를 호출하면 된다.

  • 객체 생성: SubsidyCalculator subsidyCalculator = new SubsidyCalculator();
  • 메쏘드 호출: subsidyCalculator.calculate(secondQuarterAverageAmount, actualCardAmount); // 메쏘드 호출

 

package shawsk.tistory.com;

class SubsidyCalculator {

	public SubsidyCalculator() {

	}
	
	public int calculate(int secondQuarterAverageAmount, int cardAmount) {
		int subsidyAmount = (int)((cardAmount - secondQuarterAverageAmount*1.03)*0.1);
		return subsidyAmount;
	}
}

public class Main {

	public static void main(String[] args) {

		int actualCardAmount = 153*10000;	// 카드 사용 금액
		int secondQuarterAverageAmount = 100*10000; // 2분기 사용 평균액
		int subsidyAmount = 0; // 상생 소비지원금
		SubsidyCalculator subsidyCalculator = new SubsidyCalculator();	// 객체 생성
		subsidyCalculator.calculate(secondQuarterAverageAmount, actualCardAmount); // 메쏘드 호출	
		System.out.println("subsidy amount: " + subsidyAmount);
	}
}

 

이 정도는 해 줘야 자바로 코딩했다고 말 할 수 있을 것이다. 자바 프로그래머로 입사했다면 자신이 맡은 영역은 클래스로 구현해서 릴리즈하는 것이 신상에 좋을 것이다. 물론, 인터페이스를 정의하고 클래스로 구현해서 릴리즈하는 것이 최고다. 인터페이스에 대해선 다음 레슨에서 설명하도록 하겠다.

 

오늘 레슨에 사용된 단계별 소스 코드는 파일로 첨부한다. 하지만, 가능하면 직접 코딩해 보기 바란다. 복붙해서는 절대 코딩 실력이 늘지 않는다.

Main.java.1
0.00MB
Main.java.2
0.00MB
Main.java.3
0.00MB

 

 

개발 툴은 이클립스를 사용했다. 혹시 없는 분은 아래 링크에서 다운로드 후 설치하면 된다.

https://www.eclipse.org/downloads/

 

상생소비지원금 계산용 구글 시트를 공유한다. 혹시 필요하신 분은 "복사"해서 사용하시기 바란다. (파일->사본 만들기)

https://docs.google.com/spreadsheets/d/1FECdRPz2fP5k6EtUejRdQ1Dh5y6WdVELoFtVX5SkIuk/edit?usp=sharing 

 

 

상생소비지원금 자바 클래스 레슨을 마치며

 

이것으로 상생소비지원금 계산식을 자바로 프로그래밍하는 레슨을 마친다. 자바로 계산식을 구현하고, 함수를 바꾼 후 자바 클래스로 리팩터링 하는 방법을 소개했다. 클래스는 객체 지향 프로그램의 시작이자 끝이다. 잘 배워 두기 바란다. 다음 편에서는 클래스를 이용해서 다형성(polymorphism)을 소개하는 시간을 갖도록 하겠다.

 

혹시 코딩으로 밥 먹고 살 생각이라면 다형성의 개념은 반드시 숙지해야 한다. 소프트회사 면접 시 질문받을 확률이 99% 이상이기 때문이다. 혹시 다형성을 물어보지 않는다면 그 회사의 수준을 심각하게 의심해 봐야 한다.

 


믿기 힘들 수도 있겠지만 개발자의 핵심 역량은 체력이다.

 

홈트레이닝, 케틀벨 스윙과 겟업

케틀벨은 홈트레이닝에 최적화된 운동기구라고 할 수 있다. 케틀벨 스윙과 겟업의 올바른 운동법을 익히고, 프로그램을 이용하여 짧은 시간에 최대의 홈트레이닝 효과를 얻을 수 있는 방법을

shawsk.tistory.com

혹시 운이 좋아서 개발자로 취직이 된다면 명품 시계를 차고 다닐 수도 있다.

 

티쏘 르 로끌 오토매틱 남자 시계 리뷰

이번 포스팅은 티쏘 르 로끌 오토매틱 남자 시계 리뷰다. 보증서를 살펴 보니 2016년 영등포 백화점에서 구입했다. 5년이 넘은 시간이 흘렀지만, 거의 처음 살 때의 상태를 유지하고 있다. 역시 '

shawsk.tistory.com

그리고, 남은 돈은 배당주를 사서 배당금을 받으면 제 2의 월급이 생긴다.

 

[2021-09-29] 존슨앤존슨, 록히드 마틴 배당금 입금

9월 3, 4주 배당금 입금 내역이다. 나의 배당 성장 포트폴리오, 올웨더 포트폴리오 계좌, 그리고 와이프의 배당 성장 계좌로 배당금이 입금되었다. 와이프의 배당 성장 계좌에 있는 존슨앤존슨과

shawsk.tistory.com