상속은 객체지향 프로그래밍의 핵심 개념 중 하나로, 코드의 재사용성과 유지보수성을 높이는 데 중요한 역할을 합니다. 이번 블로그에서는 상속을 이용하여 직원 관리 시스템을 구현하는 방법을 설명하겠습니다. 이 예제에서는 Employee 클래스를 기반으로 Parttime, Wage, 및 Sales 클래스를 상속받아 구현합니다.
Employee 클래스 정의
package Quiz04;
public class Employee {
protected String name, position, workerId, phone;
// getter / setter methods
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getPosition() { return position; }
public void setPosition(String position) { this.position = position; }
public String getWorkerId() { return workerId; }
public void setWorkerId(String workerId) { this.workerId = workerId; }
public String getPhone() { return phone; }
public void setPhone(String phone) { this.phone = phone; }
}
Parttime 클래스 정의
package Quiz04;
import java.util.*;
public class Parttime extends Employee {
private int day;
private int money = 9350;
private int result = 0;
// getter / setter methods
public int getDay() { return day; }
public void setDay(int day) { this.day = day; }
public int getMoney() { return money; }
public void setMoney(int money) { this.money = money; }
public int getResult() { return result; }
public void setResult(int result) { this.result = result; }
public Parttime() {
Scanner sc = new Scanner(System.in);
System.out.print("이름을 입력하시오.");
this.name = sc.nextLine();
System.out.print("직책을 입력하시오.");
this.position = sc.nextLine();
System.out.print("사원ID를 입력하시오.");
this.workerId = sc.nextLine();
System.out.print("전화번호를 입력하시오.");
this.phone = sc.nextLine();
System.out.print("근무한 일자를 입력하시오.");
this.day = sc.nextInt();
}
public int Cal() {
this.result = day * money;
return result;
}
@Override
public void display() {
System.out.println("이름: " + name);
System.out.println("직책: " + position);
System.out.println("사원ID: " + workerId);
System.out.println("전화번호: " + phone);
System.out.println("근무한 일자: " + day);
System.out.println("파트타임 급여: " + Cal());
}
}
Wage 클래스 정의
package Quiz04;
public class Wage extends Employee {
protected int wage;
// getter / setter methods
public int getWage() { return wage; }
public void setWage(int wage) { this.wage = wage; }
}
Sales 클래스 정의
package Quiz04;
import java.util.Scanner;
public class Sales extends Wage {
private double result = 0;
// getter / setter methods
public double getResult() { return result; }
public void setResult(double result) { this.result = result; }
public Sales() {
Scanner sc = new Scanner(System.in);
System.out.print("이름을 입력하시오.");
this.name = sc.nextLine();
System.out.print("직책을 입력하시오.");
this.position = sc.nextLine();
System.out.print("사원ID를 입력하시오.");
this.workerId = sc.nextLine();
System.out.print("전화번호를 입력하시오.");
this.phone = sc.nextLine();
System.out.print("급여를 입력하시오.");
this.wage = sc.nextInt();
}
public double Cal() {
this.result = wage * 0.3;
return result;
}
@Override
public void display() {
System.out.println("이름: " + name);
System.out.println("직책: " + position);
System.out.println("사원ID: " + workerId);
System.out.println("전화번호: " + phone);
System.out.println("급여: " + wage);
System.out.println("커미션 = " + Cal());
}
}
MainEntry 클래스 정의
package Quiz04;
import java.util.Scanner;
public class MainEntry {
public static void main(String[] args) {
int num = 0;
Scanner sc = new Scanner(System.in);
System.out.println("1.정규직 2.파트타임");
num = sc.nextInt();
if (num == 1) {
Sales sa = new Sales();
sa.display();
}
if (num == 2) {
Parttime pt = new Parttime();
pt.display();
}
}
}
1.정규직 2.파트타임
2
이름을 입력하시오. 홍길동
직책을 입력하시오. 아르바이트
사원ID를 입력하시오. P12345
전화번호를 입력하시오. 010-1234-5678
근무한 일자를 입력하시오. 20
이름: 홍길동
직책: 아르바이트
사원ID: P12345
전화번호: 010-1234-5678
근무한 일자: 20
파트타임 급여: 187000