当前位置:首页计算机类软件水平考试初级程序员->阅读以下说明和Java代码,填补Java代码中的空缺(1)~

阅读以下说明和Java代码,填补Java代码中的空缺(1)~(6),将解答写在答题纸的对应栏内。

【说明】

已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按52周计算);另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。

下面是实现该工资系统的Java代码,其中定义了四个类:工资系统类PayRoll,员工类Employee,正式工类Salaried和计时工类Hourly,Salaried和Hourly是Employee的子类。

【Java代码】

abstract class Employee {

protected String name; //员工姓名

protected int empCode; //员工号

protected double salary; //周发放工资

public Employee(int empCode, String name) {

this.empCode=empCode;

this.name=name,

}

public double getSalary(){

return this.salary;

}

public abstract void pay() ;

}

class Salaried (1) Employee {

private double annualSalary;

Salaried(int empCode, String name, double payRate) {

super(empCode, name) ;

this.annualSalary=payRate;

}

public void pay () {

salary= (2) ; //计算正式员工的周发放工资数

System.out.println(this.name+":"+this.salary);

}

}

class Hourly (3) Employee {

private double hourlyPayRate;

private int hours;

Hourly(int empCode, String name, int hours, double payRate) {

super(empCode, name);

this.hourlyPayRate=payRate;

this.hours=hours;

}

public void pay () {

salary= (4) ; //计算计时工的周发放工资数

System.out.println(thisname+":"+this.salary);

}

}

public class PayRoll {

private (5) employees[]={

new Salaried(1001, "Zhang San", 58000.00),

//此处省略对其他职工对象的生成

new Hourly(1005, "Li", 12, 50.00)

};

public void pay(Employee e[]) {

for (int i=0; i<e.length; i++) {

e[i]pay();

}

}

public static void main(String[] args)

{

PayRoll payRoll=new PayRoll();

payRoll.pay( (6) );

double total=0.0;

for (int i=0;i<payRoll.employees.length; i++){ //统计周发放工资总额

total+=payRoll.employees[i].getSalary();

}

System.out.println(total);

}

}

查看答案 纠错
答案:
本题解析:

(1)extends

(2)annualSalary/52

(3)extends

(4)hourlyPayRate * hours

(5)Employee 或 static Employee

(6)employees(空(5)只能为static Employee)或payRoll.employees

本题考查Java语言程序设计能力,涉及类和抽象类、对象、方法及抽象方法的定义和相关操作,以及继承关系和多态。要求考生根据给出的案例和执行过程说明,认真阅读理清程序思路,然后完成题目。

根据本题中说明中描述,需要记录每名员工的员工号、姓名和工资等信息。公司员工分为正式工和计时工两类,正式工和计时工的工资支付方式不同,根据面向对象设计的概念,这两种员工都是员工,设计时将公有属性和行为封装成抽象类,并使用继承关系设计两种不同员工类作为子类。因此,系统设计了四个类:工资系统类PayRoll,员工类Employee,正式工类Salaried和计时工类Hourly,Salaried和Hourly继承了Employee类。Employee中定义两类员工公有属性和方法,以及支付方式的接口标识,Salaried和Hourly需要在各自的类中有具体支付方式的实现。

根据类定义及其之间的关系,将Employee类定义为抽象类,其中支付工资定义为抽象方法,public abstract void pay();,这样就定义了支付方式的接口,子类中必须实现各自具体的支付方法。这样,在PayRoll中对Salaried和Hourly两类的对象使用同样的调用方式e[i].pay()达到不同支付效果,也就达到了多态。Salaried和Hourly均继承了Employee,其语法为extends后加类名,在两者的构造方法中调用父类的构造方法,进行相应的员工公共信息初始化操作,所以均在构造方法的第一句(必须是第一句)采用super调用父类构造方法。Salaried的工资发放方式为“按年薪分周发放(每年按52周计算)”,因此在pay()方法的实现中,每周发放工资采用“年薪/52”进行计算。Hourly的工资发放方式是“以小时工资为基准,按每周工作小时数核算发放”,即“小时工资×周工作小时”进行计算。

在PayRoII中创建了一组员工,用数组存储,由于数组元素包括Salaried和Hourly两种,因此其声明类型采用父类类型Employee,可以定义为静态数组,对象的创建采用new关键字加类名。在PayRoll中支付时,集中对所有负工进行支付,将数据作为payRoll的pay()的参数,在Java中用数组引用名直接作为参数,即payRoll.pay(payRoll.employees)。

因此空(1)和(3)处添加继承父类,即extends。空(2)和(4)处补充通过使用计算得到所发放的工资数,空(2)处为计算正式员工的周发放工资数,即annuaISalary/52;空(4)处为计时工的周发放工资数,即hourlyPayRate*hours。空(5)处定义员工数组的类型,即Employee或static Employee。空(6)处将员工数组的引用传递给pay()方法,即employees(空(5)只能为static Employee)或payRoll.employees。

更新时间:2021-11-20 01:23

你可能感兴趣的试题

单选题

( )is that it provides guidance and direction on how quality will be managed and verified throughout the project.

  • A.Plan Quality Management
  • B.Manage Quality
  • C.Control Quality
  • D.Project Charter
查看答案
单选题

( )the process of determining,documenting,and managing stakeholder needs and requirements to meet Project objectives.

  • A.Plan Scope Management
  • B.Collection Requirements
  • C.Validate Scope
  • D.Control Scope
查看答案
单选题

The information security management system preserves the confidentiality,integrity and availability of information by applying a( ).

  • A.technology management process
  • B.resource management process
  • C.quality management process
  • D.risk management process
查看答案
单选题

( )is a decentralized database,ensure that the data will not be tampered with and forged.

  • A.Artificial intelligence
  • B.Blockchain
  • C.Sensing technology
  • D.Big datA
查看答案
单选题

( )puts computer resources on the web,and must meet the requirements of super capacity,super concurrency,super speed and super security.

  • A.Cloud computing
  • B.Big datA
  • C.Blockchain
  • D.Internet of things
查看答案
单选题

分配甲、乙、丙、丁四个人去完成五项任务。每人完成各项任务时间如表所示。由于任务多于人数,故规定其中有一个人可兼完成两项任务,其余三人每人完成一项。为了花费时间最少,( )应该完成两项任务。

高级信息系统项目管理师,历年真题,2021年下半年《信息系统项目管理师》真题

  • A.甲
  • B.乙
  • C.丙
  • D.丁
查看答案
单选题

已知某公司生产AB两种产品,其中生产1件A产品需要1个单位的甲资源,3个单位的丙资源;生产1件B产品需要2个单位的乙资源和2个单位的丙资源。已知现有甲乙丙三种资源4个单位、12个单位和18个单位。通过市场预测,可知A产品的单位市场利润为2元,B产品的单位市场利润为5元。该公司获得最大的市场利润应生产A产品(68)件,此时(69)资源仍有剩余。

  • A.甲
  • B.乙
  • C.丙
  • D.甲及丙
查看答案
单选题

已知某公司生产AB两种产品,其中生产1件A产品需要1个单位的甲资源,3个单位的丙资源;生产1件B产品需要2个单位的乙资源和2个单位的丙资源。已知现有甲乙丙三种资源4个单位、12个单位和18个单位。通过市场预测,可知A产品的单位市场利润为2元,B产品的单位市场利润为5元。该公司获得最大的市场利润应生产A产品(68)件,此时(69)资源仍有剩余。

  • A.0
  • B.2
  • C.4
  • D.6
查看答案
单选题

某项目2016年投资额12万元,2018年开始取得项目的净收益(产品一原料辅料及公用工程)6万元/年,2018-2021年每年还会产生其他成本(包括人员工资、管理成本、制造成本等)1.1万元/年;増值税0.35万元/年、营业税金及附加0.05万元/年。则该项目的静态投资回收期为(66)年,截止到2021年底该项目的投资收益率是(67)。

  • A.0.25
  • B.0.33
  • C.0.35
  • D.0.6
查看答案
单选题

安全审计的手段主要包括( )。

  • A.①②③
  • B.②③④
  • C.①②④
  • D.①③④
查看答案