多态性和GUI.docx

上传人:b****7 文档编号:25300388 上传时间:2023-06-07 格式:DOCX 页数:29 大小:226.55KB
下载 相关 举报
多态性和GUI.docx_第1页
第1页 / 共29页
多态性和GUI.docx_第2页
第2页 / 共29页
多态性和GUI.docx_第3页
第3页 / 共29页
多态性和GUI.docx_第4页
第4页 / 共29页
多态性和GUI.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

多态性和GUI.docx

《多态性和GUI.docx》由会员分享,可在线阅读,更多相关《多态性和GUI.docx(29页珍藏版)》请在冰豆网上搜索。

多态性和GUI.docx

多态性和GUI

 

实验报告

(2015/2016学年第1学期)

 

课程名称

JAVA语言程序设计

实验名称

多态性

实验时间

2015

12

8

指导单位

软件工程系

指导教师

 

学院(系)

专业

学生姓名

班级学号

实验名称

多态性

指导教师

杨健

实验类型

验证

实验学时

2

实验时间

2015/12/8

一、实验目的

(1)、掌握多态性的实现。

(2)、掌握抽象类和抽象方法的定义和使用。

(3)、掌握接口的定义和实现。

二、实验环境(实验设备)

Eclipse

三、实验内容

(1)、人员类的多态性设计。

设计一个人员类(Person),其中包含一个方法pay,代表人员的工资支出。

再从Person类派生出助教类(Assistant)、讲师类(Instructor)、副教授类(AssistantProfesson)和教授类(Professon)。

其中,工资支出=基本工资+授课时数×每课时兼课金。

但助教基本工资为800元,每课时兼课金25元,讲师基本工资为1000元,每课时兼课金35元,副教授基本工资为1200元,每课时兼课金40元,教授基本工资1400元,每课时兼课金50元。

将Person定义为抽象类,pay为抽象方法,设计程序实现多态性。

将Person定义为接口,设计程序实现多态性。

(2)利用applet画出多个图,实现图形的多态性设计。

仔细阅读下面的5个程序,根据注解信息的提示,将程序中空缺的部分(由/*…..*/标注)补充完整,并上机调试正确,使程序运行的结果是在applet的容器中画出多种图形。

实验代码:

(1):

将Person定义为抽象类,pay为抽象方法,设计程序实现多态性。

package多态性;

publicclassaa{

publicstaticvoidmain(Stringargs[]){

Personps[]=newPerson[4];

ps[0]=newAssistant("张三",120);

ps[1]=newInstructor("赵二",130);

ps[2]=newAssistantProfesson("李四",125);

ps[3]=newProfessor("王五",134);

Stringoutput="";

for(inti=0;i

output+=ps[i].toString();

System.out.println(output);

}

}

package多态性;

abstractclassPerson{

protectedStringname;

protecteddoubleclasssum;

publicPerson(){

this.name="";

classsum=0;

}

publicPerson(Stringname,doubleclasssum){

this.name=name;

this.classsum=classsum;

}

publicabstractdoublepay();

}

classAssistantextendsPerson{

publicAssistant(Stringname,doubleclasssum){

super(name,classsum);

}

publicdoublepay(){

return800+classsum*25;

}

publicStringtoString(){

return"姓名:

"+this.name+"\t工资支出:

"+this.pay()+"\n";

}

}

classInstructorextendsPerson{

publicInstructor(Stringname,doubleclasssum){

super(name,classsum);

}

publicdoublepay(){

return1000+classsum*35;

}

publicStringtoString(){

return"姓名:

"+this.name+"\t工资支出:

"+this.pay()+"\n";

}

}

classAssistantProfessonextendsPerson{

publicAssistantProfesson(Stringname,doubleclasssum){

super(name,classsum);

}

publicdoublepay(){

return1200+classsum*40;

}

publicStringtoString(){

return"姓名:

"+this.name+"\t工资支出:

"+this.pay()+"\n";

}

}

classProfessorextendsPerson{

publicProfessor(Stringname,doubleclasssum){

super(name,classsum);

}

publicdoublepay(){

return1400+classsum*50;

}

publicStringtoString(){

return"姓名:

"+this.name+"\t工资支出:

"+this.pay()+"\n";

}

}

将Person定义为接口,设计程序实现多态性。

package多态性;

publicclassaa{

publicstaticvoidmain(Stringargs[]){

Personps[]=newPerson[4];

ps[0]=newAssistant("张三",120);

ps[1]=newInstructor("赵二",130);

ps[2]=newAssistantProfesson("李四",125);

ps[3]=newProfessor("王五",134);

Stringoutput="";

for(inti=0;i

output+=ps[i].toString();

System.out.println(output);

}

}

package多态性;

interfacePerson{

publicabstractdoublepay();

}

classAssistantimplementsPerson{

protectedStringname;

protecteddoubleclasssum;

publicAssistant(Stringname,doubleclasssum){

this.name=name;

this.classsum=classsum;

}

publicdoublepay(){

return800+classsum*25;

}

publicStringtoString(){

return"姓名:

"+this.name+"\t工资支出:

"+this.pay()+"\n";

}

}

classInstructorimplementsPerson{

protectedStringname;

protecteddoubleclasssum;

publicInstructor(Stringname,doubleclasssum){

this.name=name;

this.classsum=classsum;

}

publicdoublepay(){

return1000+classsum*35;

}

publicStringtoString(){

return"姓名:

"+this.name+"\t工资支出:

"+this.pay()+"\n";

}

}

classAssistantProfessonimplementsPerson{

protectedStringname;

protecteddoubleclasssum;

publicAssistantProfesson(Stringname,doubleclasssum){

this.name=name;

this.classsum=classsum;

}

publicdoublepay(){

return1200+classsum*40;

}

publicStringtoString(){

return"姓名:

"+this.name+"\t工资支出:

"+this.pay()+"\n";

}

}

classProfessorimplementsPerson{

protectedStringname;

protecteddoubleclasssum;

publicProfessor(Stringname,doubleclasssum){

this.name=name;

this.classsum=classsum;

}

publicdoublepay(){

return1400+classsum*50;

}

publicStringtoString(){

return"姓名:

"+this.name+"\t工资支出:

"+this.pay()+"\n";

}

}

(2):

MyShape接口:

package多态性1;

importjava.awt.Graphics;

publicinterfaceMyShape{

//intX1,Y1,X2,Y2;

//methodtodrawtheshape

/*Declareheaderformethoddraw*/

voiddraw(Graphicsg);

//setandgetmethodsforeachofthefourprivatevariables

voidsetX1(intx1);

voidsetX2(intx2);

voidsetY1(inty1);

voidsetY2(inty2);

intgetX1();

intgetX2();

intgetY1();

intgetY2();

}//endinterfaceMyShape

MyLine.java:

package多态性1;

importjava.awt.Graphics;

//MyLine.java

//DeclarationofclassMyLine

publicclassMyLineextendsObjectimplementsMyShape{

privateintX1,X2,Y1,Y2;

publicMyLine(intx1,inty1,intx2,inty2){

//TODOAuto-generatedconstructorstub

setX1(x1);

setY1(y1);

setX2(x2);

setY2(y2);

}

@Override

publicvoiddraw(Graphicsg){

//TODOAuto-generatedmethodstub

g.drawLine(getX1(),getY1(),getX2(),getY2());

}

@Override

publicvoidsetX1(intx1){

//TODOAuto-generatedmethodstub

X1=x1;

}

@Override

publicvoidsetX2(intx2){

//TODOAuto-generatedmethodstub

X2=x2;

}

@Override

publicvoidsetY1(inty1){

//TODOAuto-generatedmethodstub

Y1=y1;

}

@Override

publicvoidsetY2(inty2){

//TODOAuto-generatedmethodstub

Y2=y2;

}

@Override

publicintgetX1(){

//TODOAuto-generatedmethodstub

returnX1;

}

@Override

publicintgetX2(){

//TODOAuto-generatedmethodstub

returnX2;

}

@Override

publicintgetY1(){

//TODOAuto-generatedmethodstub

returnY1;

}

@Override

publicintgetY2(){

//TODOAuto-generatedmethodstub

returnY2;

}

}//endclassMyLine

MyOval.java:

package多态性1;

importjava.awt.Graphics;

importjava.awt.Graphics2D;

importjava.awt.geom.Ellipse2D;

importjava.awt.geom.Rectangle2D;

publicclassMyOvalextendsObjectimplementsMyShape{

privateintleftX,topY,width,height;

publicMyOval(intx1,inty1,intx2,inty2){

//TODOAuto-generatedconstructorstub

setX1(x1);

setY1(y1);

setX2(x2);

setY2(y2);

}

@Override

publicvoiddraw(Graphicsg){

//TODOAuto-generatedmethodstub

Graphics2Dg2=(Graphics2D)g;

//画矩形

Rectangle2Drect=newRectangle2D.Double(leftX,topY,width,height);

Ellipse2Dellipse=newEllipse2D.Double();

ellipse.setFrame(rect);

g2.draw(ellipse);

}

@Override

publicvoidsetX1(intx1){

//TODOAuto-generatedmethodstub

leftX=x1;

}

@Override

publicvoidsetX2(intx2){

//TODOAuto-generatedmethodstub

width=x2;

}

@Override

publicvoidsetY1(inty1){

//TODOAuto-generatedmethodstub

topY=y1;

}

@Override

publicvoidsetY2(inty2){

//TODOAuto-generatedmethodstub

height=y2;

}

@Override

publicintgetX1(){

//TODOAuto-generatedmethodstub

returnleftX;

}

@Override

publicintgetX2(){

//TODOAuto-generatedmethodstub

returnwidth;

}

@Override

publicintgetY1(){

//TODOAuto-generatedmethodstub

returntopY;

}

@Override

publicintgetY2(){

//TODOAuto-generatedmethodstub

returnheight;

}

}

 

MyRectangle.java:

package多态性1;

importjava.awt.Graphics;

importjava.awt.Graphics2D;

importjava.awt.geom.Ellipse2D;

importjava.awt.geom.Rectangle2D;

publicclassMyRectangleextendsObjectimplementsMyShape{

privateintleftX,topY,width,height;

publicMyRectangle(intx1,inty1,intx2,inty2){

//TODOAuto-generatedconstructorstub

setX1(x1);

setY1(y1);

setX2(x2);

setY2(y2);

}

@Override

publicvoiddraw(Graphicsg){

//TODOAuto-generatedmethodstub

Graphics2Dg2=(Graphics2D)g;

//画矩形

Rectangle2Drect=newRectangle2D.Double(leftX,topY,width,height);

g2.draw(rect);

}

@Override

publicvoidsetX1(intx1){

//TODOAuto-generatedmethodstub

leftX=x1;

}

@Override

publicvoidsetX2(intx2){

//TODOAuto-generatedmethodstub

width=x2;

}

@Override

publicvoidsetY1(inty1){

//TODOAuto-generatedmethodstub

topY=y1;

}

@Override

publicvoidsetY2(inty2){

//TODOAuto-generatedmethodstub

height=y2;

}

@Override

publicintgetX1(){

//TODOAuto-generatedmethodstub

returnleftX;

}

@Override

publicintgetX2(){

//TODOAuto-generatedmethodstub

returnwidth;

}

@Override

publicintgetY1(){

//TODOAuto-generatedmethodstub

returntopY;

}

@Override

publicintgetY2(){

//TODOAuto-generatedmethodstub

returnheight;

}

}

TestDrawWindow代码:

package多态性1;

//TestDrawWindow.java

//Programrandomlydrawsshapes

importjava.awt.*;

importjavax.swing.*;

publicclassTestDrawWindowextendsJFrame{

/**

*

*/

privatestaticfinallongserialVersionUID=1L;

privateMyShapeshape[]=newMyShape[15];

//Constructor

publicTestDrawWindow()

{super("Drawshapes");

intshapeType;//randomvaluetodetermineshapetocreateanddraw

intx1,y1,x2,y2;//randomlychosencoordinatesforanewshape

for(inti=0;i

x1=(int)(Math.random()*400);

x2=(int)(Math.random()*400);

y1=(int)(Math.random()*400);

y2=(int)(Math.random()*400);

shapeType=(int)(Math.random()*3)+1;

switch(shapeType){

case1:

//line

shape[i]=newMyLine(x1,y1,x2,y2);

break;

case2:

//oval

shape[i]=newMyOval(x1,y1,x2,y2);

break;

case3:

//rectangle

shape[i]=newMyRectangle(x1,y1,x2,y2);

break;

}//endswitch

}//endfor

}//endconstructor

//drawshapes

public

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

当前位置:首页 > 医药卫生 > 基础医学

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

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