관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

상속 6 - 월급 계산 프로그램 만들기 1 : 클래스와 생성자를 사용해 문제 풀기 본문

프로그래밍 언어/자바

상속 6 - 월급 계산 프로그램 만들기 1 : 클래스와 생성자를 사용해 문제 풀기

huenuri 2024. 12. 1. 07:30

그동안 배운 내용을 정리하며 문제를 풀어보려고 한다. 문제는 월급을 계산하는 프로그램이다. 이 문제는 6월 중순 무렵에는 어려워서 문제 자체도 이해하지 못했었다. 지금은 한번 도전해 볼 만할 것 같다.


 

 

 

 

월급 계산 프로그램 만들기 문제 설명

주어진 문제가 많은데 3개의 클래스를 만드는 것이다. RegularEmployee, TempEmployee, PartTimeEmployee이다. 이 세 개의 클래스에는 모두 getMoneyPay라는 메서드를 갖고 있는데 이 기능은 월급을 계산해서 결과값으로 돌려주는 것이다. 이들의 공통적인 부분을 모아서 Employee라는 클래스를 하나 더 생성해야 한다.

 

중복되는 부분은 필드, 메서드가 있다. 

 

 


 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

정리해보면 이렇게 된다.


 

 

 

 

 

월급 관리 프로그램 실습 문제 풀어보기

 

RegularEmplyee 클래스

 

1. 필드 생성하기

먼저 패키지를 만들고 클래스를 생성한 후 필드를 만들어 준다.

 

 

이 필드는 4개의 매개변수를 초기화하는 생성자를 갖고 있다.


 

 

 

 

 

2. 생성자 만들기

단축키를 눌러 자동 완성으로 생성자를 추가해 주겠다. 

 

 

 

 


 

 

 

 

 

3. 나머지 매서드 만들기

월 급여를 return 값으로 돌려주는 메서드를 만든다. 결과값은 pay와 bonus를 더한 금액을 12로 나눈 것이다.

 

 

 

그런 다음 사원의 결과값을 출력하는 메서드로 만든다. pay는 int지만 문자열과 int를 더하면 뒤에 있는 int는 문자열로 자동 형 변환된다. 결국 이 값은 문자열이 된다.


 

 

 

 

Main 클래스

 

1. 메인 클래스 만들고 regular 객체 생성하기

Main 클래스를 만들고 객체 생성을 한다.

 

 

 

 

 

객체는 매개변수가 있는 생성자이므로 이를 지정해서 초기화한다.


 

 

 

 

 

 

2. 사원의 정보와 월 급여 출력하기

String으로 출력하는 기능은 없으므로 regular에서 가져와서 출력한다.

 

 

왜 regular.print()와 regular.getMoneyPay()를 호출할 수 있을까?

  1. RegularEmployee 클래스가 정의된 메서드 사용
    • RegularEmployee 클래스의 생성자로 생성된 객체 regular는 해당 클래스에서 정의된 모든 인스턴스 메서드필드에 접근할 수 있다.
    • regular.print() 및 regular.getMoneyPay()는 RegularEmployee 클래스에서 정의된 메서드이므로, regular 객체를 통해 해당 메서드를 호출할 수 있다.
  2. 메서드의 실행
    • 객체를 생성한 후, 그 객체에 정의된 메서드를 호출하면 해당 객체가 메서드를 실행하고 결과를 반환한다.
    • 예를 들어, System.out.println(regular.print())는 다음 단계를 거친다:
      1. regular 객체의 print() 메서드가 실행된다.
      2. print() 메서드가 반환하는 값을 System.out.println()으로 출력한다.
  3. getMoneyPay()와 같은 다른 메서드 호출
    • 마찬가지로, regular.getMoneyPay()는 regular 객체에 있는 getMoneyPay() 메서드를 실행하고 결과 값을 반환한다.
    • 해당 메서드는 월 급여를 계산하거나 반환하는 로직을 포함하고 있다.

 

가능한 이유: 객체와 클래스

객체를 통해 메서드에 접근할 수 있는 이유는 클래스와 객체의 관계 때문이다:

  1. 클래스와 객체
    • RegularEmployee는 클래스이고, regular는 이 클래스의 인스턴스 객체이다.
    • 클래스는 객체가 어떤 데이터(필드)를 가지고 어떤 동작(메서드)을 수행할지를 정의한다.
    • 객체(regular)는 이 클래스에서 정의한 필드와 메서드를 포함하고 있으며, 이를 통해 기능을 사용할 수 있다.
  2. 메서드 호출
    • 객체가 생성되면, 그 객체에 정의된 메서드를 호출하여 해당 객체의 데이터에 접근하거나 동작을 수행할 수 있다.

 

 

출력 결과는 이렇게 된다.


 

 

 

 

 

TempEmplyee 클래스

 

1. 필드 생성하고 생성자 만들기

조금 전에 똑같은 작업을 했으므로 설명은 안 해도 되겠다.

 


 

 

 

 

 

2. 메서드와 출력문 만들기


 

 

 

 

 

 

3. 메인에서 비정규직 직원 객체 생성하고 출력하기

 

 

결과도 잘 출력되고 있다.


 

 

 

 

 

PartTimeEmployee 클래스

 

1. 필드와 생성자 만들기

 


 

 

 

 

 

2. 메서드와 출력문 만들기


 

 

 

 

 

3. 메인에서 일용직 근로자 객체 생성하고 출력하기

 

 

출력이 잘 되고 있다.


 

 

 

 

 

 

학습을 마치고

혼자서 풀기에는 많이 어려운 문제였다. 선생님이 과제로 내주시기는 했어도 이 문제를 푼 사람은 몇 명 안 되는 것 같았다. 그래도 수업 영상을 통해서라도 문제를 이해하고 풀 수 있다는 것이 놀라운 변화였다. 여기서부터는 여기서부터는 공부를 포기하고 프로젝트 파일도 하나도 만들지 않았었다.

 

이번에 코드를 치고 다시 공부해보니 정말 선생님이 참 잘 가르치시는 것을 느낄 수 있었다. 자바 수업이 짧아서 정말 아쉬웠다. 책에 있는 내용의 반의 반도 진도를 나가지 않아 나머지 부분은 혼자서 공부해 볼 것이다.