본문 바로가기
문제 풀이/Java

[Java] 추상클래스를 적용하여 급여관리 시스템 만들어보기

by 찐코딩 2021. 9. 2.

 

package Exam2;

import java.util.Scanner;

// 부모클래스_추상클래스
abstract class Employee {
	
	String name;
	
	// 기본 생성자
	public Employee() {}			
	
	// 인자 생성자
	public Employee(String name) { 
	 	this.name = name;
	}						
	
	public String getName() {
		return name;
	}
	
	// 급여를 계산하는 메소드
	// 정규직과 비정규직의 급여 계산법과 변수가 다르므로 추상메소드로 작성한다.
	abstract int getPays(); 		// 추상 메소드

}


// 정규직 클래스
class Permanent extends Employee {
	
	// 멤버 변수 선언
	int salary;			// 기본급
	int bonus;			// 보너스
	
	// 기본 생성자
	public Permanent() {} 	
	
	// 인자 생성자
	public Permanent(String name, int salary, int bonus) {
		this.name = name;
		this.salary = salary;
		this.bonus = bonus;
	}
	
	// 게터와 세터
	public int getSalary() {
		return salary;
	}

	public int getBonus() {
		return bonus;
	}

	// 추상클래스의 추상메소드를 재정의
	@Override
	int getPays() {
		return salary + bonus; 
	}
}

// 임시직 클래스
class Temporary extends Employee {
	
	// 멤버변수
	int time;		// 작업 시간
	int pay;		// 시간당 급여
	
	// 기본 생성자
	public Temporary() {}		
	
	// 인자 생성자
	public Temporary(String name, int time, int pay) {
		this.name=name;
		this.time=time;
		this.pay=pay;
	}
	
	
	// 게터와 세터
	public int getTime() {
		return time;
	}

	public int getPay() {
		return pay;
	}
	
	// 추상클래스의 추상메소드 재정의
	@Override
	int getPays() {			
		return time * pay;
	}

}



public class Exam_01 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		System.out.println("고용형태 - 정규직<P>, 임시직<T>를 입력하세요.  ");
		String type=sc.next();
		
		// 정규직
        // equalsIgnoreCase() : 대소문자 구분없이 같은 문자인지 판별
		if(type.equalsIgnoreCase("P")) {
			type="정규직";
			System.out.println("이름, 기본급, 보너스를 입력하세요.");
			
			Permanent permanent =
				new Permanent(sc.next(), sc.nextInt(), sc.nextInt());
			System.out.println("================================");
			System.out.println("고용형태 : " + type);
			System.out.println("이      름 : " + permanent.getName());
			System.out.printf("급       여 : %,d원" , permanent.getPays()); }
		
		// 임시직
		else if(type.equalsIgnoreCase("T")) {
			type="임시직";
			System.out.println("이름, 작업 시간, 시간당 급여를 입력하세요.");
			
			Temporary temporary =
				new Temporary(sc.next(), sc.nextInt(), sc.nextInt());
			System.out.println("================================");
			System.out.println("고용형태 : " + type);
			System.out.println("이      름 : " + temporary.getName());
			System.out.printf("급       여 : %,d원" , temporary.getPays()); }

	}
}

결과

정규직

고용형태 - 정규직<P>, 임시직<T>를 입력하세요.  
P
이름, 기본급, 보너스를 입력하세요.
김아무개
2000000
500000
================================
고용형태 : 정규직
이      름 : 김아무개
급       여 : 2,500,000원

 

임시직

고용형태 - 정규직<P>, 임시직<T>를 입력하세요.  
t
이름, 작업 시간, 시간당 급여를 입력하세요.
이아무개
52
12000
================================
고용형태 : 임시직
이      름 : 이아무개
급       여 : 624,000원

댓글