求助,用Java编写这个怎么弄

道一尺,魔一仗 2018-09-11 05:00:35
13. Cola公司的雇员分为以下若干类: ColaEmployee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(int month)根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。 SalariedEmployee :ColaEmployee的子类,拿固定T资的员T.。属性:月薪。 HourlyEmployee :ColaEmployee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资.每月工作的小时数。 SalesEmployee :ColaEmployee的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率。 定义一个类Company ,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,写一个测试类TestCompany,在main方法中,把若干各种类型的员工放在一个ColaEmployee数组里,并输出数组中每个员工当月的工资。
...全文
710 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
国Q躺平中 2018-10-19
  • 打赏
  • 举报
回复
引用 5 楼 HinanaiTenshi 的回复:
从解题来说,2楼已经给出了可靠的回答。
多说一句,真实的人资系统一般不会把salary方法放到雇员类里面,这样实现的话转岗之类的涉及薪酬公式变化和支付方式变化的操作很难处理,从设计角度看,薪酬计算是人资的事情,和雇员主体无关。常见做法是给员工类加一个薪酬类型的属性,然后单独设立一个薪酬类。
另外人资不是一个高实时的系统,设计的时候更多考虑模型的灵活度,性能是个几乎不用考虑问题。



太认真了
这应该是考试题那种的
verejava 2018-10-01
  • 打赏
  • 举报
回复
Java 面向对象 之 关键字instanceof http://www.verejava.com/?id=16992811364048
HinanaiTenshi 2018-09-30
  • 打赏
  • 举报
回复
从解题来说,2楼已经给出了可靠的回答。
多说一句,真实的人资系统一般不会把salary方法放到雇员类里面,这样实现的话转岗之类的涉及薪酬公式变化和支付方式变化的操作很难处理,从设计角度看,薪酬计算是人资的事情,和雇员主体无关。常见做法是给员工类加一个薪酬类型的属性,然后单独设立一个薪酬类。
另外人资不是一个高实时的系统,设计的时候更多考虑模型的灵活度,性能是个几乎不用考虑问题。
  • 打赏
  • 举报
回复
引用 3 楼 qq_39256150的回复:
给楼主一个提示,可是考虑使用map数组这样效率速度都会有所提升
map还没学习啊。。。。
irez 2018-09-11
  • 打赏
  • 举报
回复
给楼主一个提示,可是考虑使用map数组这样效率速度都会有所提升
Braska 2018-09-11
  • 打赏
  • 举报
回复

import java.util.Arrays;

public class TestCompany {
    static class ColaEmployee {
        protected String name;
        protected int birthday;

        public ColaEmployee(String name, int birthday) {
            this.name = name;
            this.birthday = birthday;
        }

        public String getName() {
            return this.name;
        }

        public double getSalary(int month) {
            return birthday == month ? 100 : 0;
        }
    }

    static class SalariedEmployee extends ColaEmployee {
        private double salary;

        SalariedEmployee(String name, int birthday, double salary) {
            super(name, birthday);
            this.salary = salary;
        }

        @Override
        public double getSalary(int month) {
            return super.getSalary(month) + salary;
        }
    }

    static class HourlyEmployee extends ColaEmployee {
        private double workHours;
        private double hourlySalary;

        HourlyEmployee(String name, int birthday, int workHours, double hourlySalary) {
            super(name, birthday);
            this.workHours = workHours;
            this.hourlySalary = hourlySalary;
        }

        @Override
        public double getSalary(int month) {
            double more = workHours - 160;
            return super.getSalary(month) + (more > 0 ? (160 * hourlySalary) + (more * hourlySalary * 1.5) : workHours * hourlySalary);
        }
    }

    static class SalesEmployee extends ColaEmployee {
        private double sales;
        private double bonus;

        SalesEmployee(String name, int birthday, double sales, double bonus) {
            super(name, birthday);
            this.sales = sales;
            this.bonus = bonus;
        }

        @Override
        public double getSalary(int month) {
            return super.getSalary(month) + sales * bonus;
        }
    }

    static class Company {
        public void print(int month, ColaEmployee[] employees) {
            Arrays.stream(employees).forEach(employee -> System.out.println(String.format("%s月份,%s员工工资%s", month, employee.getName(), employee.getSalary(month))));
        }
    }

    public static void main(String[] args) {
        ColaEmployee[] colaEmployees = new ColaEmployee[3];
        colaEmployees[0] = new SalariedEmployee("salary employee", 2, 1800);
        colaEmployees[1] = new HourlyEmployee("hourly employee", 5, 100, 10);
        colaEmployees[2] = new SalesEmployee("sales employee", 6, 800, 1.5);

        Company company = new Company();
        company.print(6, colaEmployees);
    }
}
  • 打赏
  • 举报
回复
求助各位大佬帮帮忙。

23,405

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧