Java语言程序设计A实验2继承与多态.docx

上传人:b****6 文档编号:3049567 上传时间:2022-11-17 格式:DOCX 页数:12 大小:104.43KB
下载 相关 举报
Java语言程序设计A实验2继承与多态.docx_第1页
第1页 / 共12页
Java语言程序设计A实验2继承与多态.docx_第2页
第2页 / 共12页
Java语言程序设计A实验2继承与多态.docx_第3页
第3页 / 共12页
Java语言程序设计A实验2继承与多态.docx_第4页
第4页 / 共12页
Java语言程序设计A实验2继承与多态.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Java语言程序设计A实验2继承与多态.docx

《Java语言程序设计A实验2继承与多态.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计A实验2继承与多态.docx(12页珍藏版)》请在冰豆网上搜索。

Java语言程序设计A实验2继承与多态.docx

Java语言程序设计A实验2继承与多态

实验课程名称:

Java语言程序设计A

实验项目名称

实验成绩

实验者

专业班级

组别

同组者

开始日期

第一部分:

实验预习报告(包括实验目的及意义,实验基本原理与方法,主要仪器设备及耗材,实验内容及要求,实验方案与技术路线等)

一.实验目的及意义

1.根据实际需求,使用UML类图,合理设计父类、子类及其成员(实例变量、方法)。

2.编写抽象父类与抽象方法,并最终由具体子类实现抽象方法。

3.实现子类方法对父类方法的覆盖。

4.使用多态。

5.动态方法调度与向下强制类型转换。

6.设计、实现算法逻辑。

二.实验基本原理与方法

1.继承的概念、思想、层次、定义。

2.抽象类与抽象方法的概念、定义,抽象方法的最终实现。

3.方法覆盖的概念、实现。

4.多态的概念、优势、应用。

5.动态方法调度的概念、实现。

三.主要仪器设备及耗材

1.PC及其兼容机。

2.计算机操作系统。

3.程序编辑器EditPlus/Eclipse。

4.Java开发工具JDK。

四.实验内容及要求

实验2-1:

类Person定义了姓名name、出生年份birthYear,其子类CollegeGraduate定义了平均成绩gpa、毕业年份graduateYear。

设计完整的继承层次结构UML类图,并转换为Java代码。

编写测试类PersonTest,输出毕业生的姓名、年龄、毕业年份、平均成绩,一种可能的运行结果示例如下:

实验2-2(选做):

某小型企业销售部门共4名员工:

销售经理1名、专职销售员2名、兼职促销员1名。

员工工资的计算方法:

销售经理每月底薪3000元,销售提成为该部门当月销售总额的1%;专职销售员每月底薪2000元,销售提成为当月销售额的5%;兼职促销员时薪50元。

请从键盘输入每位员工的相关信息,计算工资。

五.实验方案及技术路线(设计思路、UML类图、算法、注意事项)

实验2-1的继承层次结构UML类图如下:

对于实验2-2,在父类中首先要定义抽象方法用于计算工资,再写两个子类,分别计算经理和销售员的工资,计算销售员的工资时需要区分全职和兼职,所以需要重载getWage()方法,而经理的工资需要统计部门的总销售额,所以测试类中最后创建Manager的实例。

简略的UML类图如下:

 

第二部分:

实验过程记录(可加页)(代码、运行结果、实验中出现的问题及解决过程)

实验2-1:

●Person类代码如下:

publicclassPerson

{

privateStringname;

privateintbirthYear;

publicPerson(Stringname,intbirthYear)

{

this.name=name;

this.birthYear=birthYear;

}

publicStringgetName(){

returnname;}

publicvoidsetName(Stringname)

{

this.name=name;

}

publicintgetBirthYear()

{

returnbirthYear;

}

publicvoidsetBirthYear(intbirthYear)

{

this.birthYear=birthYear;

}

}

●CollegeGraduate类代码如下:

publicclassCollegeGraduateextendsPerson

{

privatedoublegpa;

privateintgraduateYear;

publicCollegeGraduate(Stringname,intbirthYear,doublegpa,intgraduateYear)

{

super(name,birthYear);

this.gpa=gpa;

this.graduateYear=graduateYear;

}

publicdoublegetGpa()

{returngpa;}

publicvoidsetGpa(doublegpa)

{this.gpa=gpa;}

publicintgetGraduateYear()

{returngraduateYear;}

publicvoidsetGraduateYear(intgraduateYear)

{this.graduateYear=graduateYear;}}

●PersonTest类代码如下:

publicclassPersonTest

{

publicstaticvoidmain(String[]args)

{

CollegeGraduatestudent=newCollegeGraduate("姓名",出生年份,3.88,2016);

System.out.println("学生:

"+student.getName()+"\n出生年份为:

"+student.getBirthYear()+"\n毕业年份:

"+student.getGraduateYear()+"\n平均绩点为:

"+student.getGpa());

}

}

PersonTest类输出结果如下:

省略

实验2-2:

●SaleEmployee类代码如下:

publicabstractclassSaleEmployee{

privateStringemployeeNumber;

privateStringemployeeName;

privateStringstatus;

privateStringpost;

publicSaleEmployee(StringemployeeNumber,StringemployeeName,

Stringstatus,Stringpost)

{

this.employeeNumber=employeeNumber;

this.employeeName=employeeName;

this.status=status;

this.post=post;}

publicStringgetEmployeeNumber()

{

returnemployeeNumber;

}

publicStringgetEmployeeName()

{

returnemployeeName;

}

publicStringgetStatus()

{

returnstatus;

}

publicStringgetPost()

{

returnpost;

}

publicabstractdoublegetWage();

publicabstractdoublegetWage(inttempHour);

}

●Salesman类的代码如下:

publicclassSalesmanextendsSaleEmployee{

privatedoublesales;

publicSalesman(StringemployeeNumber,StringemployeeName,Stringstatus,Stringpost,

doublesales)

{

super(employeeNumber,employeeName,status,post);

this.sales=sales;

}

publicdoublegetSales()

{

returnsales;

}

@Override

publicdoublegetWage()

{

return2000+sales*0.05;

}

publicdoublegetWage(inthour)

{

doublewage=0;if(getStatus().equals("P")||getStatus().equals("p"))

{

wage=50*hour;

}

returnwage;

}

publicStringtoString()

{Stringshow;

if(getStatus().equals("P")||getStatus().equals("p"))

show="兼职销售员编号:

"+getEmployeeNumber()+"\n"

+"兼职销售员姓名:

"+getEmployeeName()+"\n"

+"销售额"+sales+"\n"+"时薪:

50元";

else

{

show="全职销售员编号:

"+getEmployeeNumber()+"\n"+"全职销售员姓名:

"+getEmployeeName()+"\n"+"销售额"+sales+"\n"+"底薪:

2000元";}

returnshow;

}

}

●Manager类的代码如下:

publicclassManagerextendsSaleEmployee{

privatedoubletotalSales;

publicManager(StringemployeeNumber,StringemployeeName,Stringstatus,Stringpost,

doubletotalSales)

{

super(employeeNumber,employeeName,status,post);

this.totalSales=totalSales;

}

@Override

publicdoublegetWage()

{

return3000+totalSales*0.01;}

publicStringtoString(){

return"销售经理编号:

"+getEmployeeNumber()+"\n"

+"销售经理姓名:

"+getEmployeeName()+"\n"

+"部门销售总额:

"+totalSales+"底薪:

3000元";

}

@Override

publicdoublegetWage(inttempHour)

{

//此类中不使用该方法

return0;

}

}

●EmployeeTest类的代码如下:

importjava.util.Scanner;

publicclassEmployeeTest{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

SaleEmployee[]employeeList=newSaleEmployee[4];

for(inti=0;i<3;i++)

{

System.out.println("请输入1名销售员的编号");

StringnumberTemp=sc.next();

System.out.pri

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1