Java 상속을 이용한 직원 관리 시스템 예제

Soozoo·2024년 6월 18일

JAVA

목록 보기
11/41

상속은 객체지향 프로그래밍의 핵심 개념 중 하나로, 코드의 재사용성과 유지보수성을 높이는 데 중요한 역할을 합니다. 이번 블로그에서는 상속을 이용하여 직원 관리 시스템을 구현하는 방법을 설명하겠습니다. 이 예제에서는 Employee 클래스를 기반으로 Parttime, Wage, 및 Sales 클래스를 상속받아 구현합니다.

code 예시:

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
profile
넙-죽

0개의 댓글