员工继承、多态性和抽象类

问题描述 投票:0回答:2

我必须制作一个涉及 6 个班级的程序。

  1. 抽象Employee类-超类
  2. 员工薪水-继承自 员工
  3. HOurlyEmployee-继承自员工
  4. 佣金 员工继承自员工
  5. employeeManager-包含数组 员工并提供实用程序来管理阵列和 员工存储在
  6. employeeDriver - 包含 main 方法和一个 菜单系统供用户使用。

所以我想除了

EmployeeManager
之外我都得到了。在这堂课中,我知道我需要
EmployeeDriver
中的方法。我不知道如何操作该数组,因为我需要输入
SalaryEmployee
HourlyEmployee
CommissionEmployee
的信息。用户还可以选择列出所有 HOurlyEmployees 或 SalaryEmployees 或
commisionEmployees
及其信息。我知道我必须循环遍历数组,但我不知道该怎么做。请帮助我!

java arrays polymorphism
2个回答
0
投票

这是一个开始:

import java.math.BigDecimal;
import java.util.*;
abstract class Employee {
    Employee(String name) {
        this.name = name;
    }
    final String name;
}
class SalariedEmployee extends Employee {
    SalariedEmployee(String name, BigDecimal salary) {
        super(name);
        this.salary = salary;
    }
    public String toString() {
        return getClass().getSimpleName() + " " + name + " " + salary;
    }
    final BigDecimal salary;
}
class HourlyEmployee extends Employee {
    HourlyEmployee(String name, BigDecimal hourlyRate) {
        super(name);
        this.hourlyRate = hourlyRate;
    }
    public String toString() {
        return getClass().getSimpleName() + " " + name + " " + hourlyRate;
    }
    final BigDecimal hourlyRate;
}
class CommissionEmployee extends Employee {
    CommissionEmployee(String name, BigDecimal percentage) {
        super(name);
        this.percentage = percentage;
    }
    public String toString() {
        return getClass().getSimpleName() + " " + name + " " + percentage + "%";
    }
    final BigDecimal percentage;
}
class Manager {
    public String toString() {
        return Arrays.asList(employees).toString();
    }
    Employee[] employees = new Employee[] { new SalariedEmployee("joe", BigDecimal.valueOf(4567.89)),
            new HourlyEmployee("mary", BigDecimal.valueOf(12.34)),
            new CommissionEmployee("bob", BigDecimal.valueOf(12.34)) };
}
public class Main {
    public static void main(String[] args) {
        System.out.println(new Manager());
    }
}

0
投票

10.17 LAB Payroll_Class(摘要) 一家公司每周向员工支付工资。员工分为四种类型:

SalariedEmployee 无论工作时长多少,都获得固定的周薪, 小时工按小时计酬,所有工作时间超过 40 小时的,可获得加班费, 佣金员工按其销售额的一定比例获得报酬, BasePlusCommissionEmployee 领取基本工资加上销售额的一定百分比。 抽象基类 Employee 声明层次结构的“接口”,即程序可以在所有 Employee 对象上调用的成员函数集。

请参阅 Payroll_Class.pdf,了解抽象类 Employee 和常规类 SalariedEmployee、CommissionEmployee、HourlyEmployee 和 BasePlusCommissionEmployee 的 UML 图以及更多详细信息。

预期输出:

员工多态处理:

受薪员工: 约翰·史密斯 社会安全号码:111-11-1111 周薪:800.0

小时工 凯伦·普赖斯 社会安全号码:222-22-2222 时薪:16.75;工作时间:40.0 总收入:670.0

佣金员工: 苏·琼斯 社会安全号码:333-33-3333 销售总额:10000.0;佣金率:0.06 总收入:600.0

基本加佣金员工: 鲍勃·刘易斯 社会安全号码:444-44-4444 销售总额:10000.0;佣金率:0.06 总收入:600.0 基本工资:500.0 总收入加基本工资:1100.0import java.util.ArrayList;

公共类主要{ 公共静态无效主(字符串[] args)

{
    // create derived-class objects
    SalariedEmployee salariedE=new 
                          SalariedEmployee("John", "Smith", "111-11-1111", 800 );
    HourlyEmployee hourlyE=new 
                          HourlyEmployee("Karen", "Price", "222-22-2222", 16.75, 40 );
    CommissionEmployee commissionE=new 
                          CommissionEmployee("Sue", "Jones", "333-33-3333", 10000, .06 );
    BasePlusCommissionEmployee basePlusCommissionE=new 
                          BasePlusCommissionEmployee("Bob", "Lewis", "444-44-4444", 10000, .06, 500 );

    // create ArrayList of four employees
    ArrayList<Employee> employees = new ArrayList<Employee>();
    employees.add(salariedE);
    employees.add(hourlyE);
    employees.add(commissionE);
    employees.add(basePlusCommissionE);

    // output each Employee's information and earnings 
    System.out.println("Employees processed polymorphically:\n");

    for ( int i = 0; i < employees.size(); i++ )
        System.out.println(employees.get(i));

}// end main

}

© www.soinside.com 2019 - 2024. All rights reserved.