第3章-面向对象程序设计-上机实验要求 (1).docx

上传人:h**** 文档编号:26955701 上传时间:2022-07-20 格式:DOCX 页数:19 大小:16.36KB
返回 下载 相关 举报
第3章-面向对象程序设计-上机实验要求 (1).docx_第1页
第1页 / 共19页
第3章-面向对象程序设计-上机实验要求 (1).docx_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《第3章-面向对象程序设计-上机实验要求 (1).docx》由会员分享,可在线阅读,更多相关《第3章-面向对象程序设计-上机实验要求 (1).docx(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第3章-面向对象程序设计-上机实验要求 (1) 第一题: 1.编写一个圆环类Ring的Java程序。圆环类有3个数据成员,分别是内半径innerRadius, 外半径outerRadius和颜色color,这些属性可以查看get也可以重新设置set。另外,圆环还可以返回其面积。程序运行效果如下图所示: 实验要求: A.现将下面的源程序补充完整 B.现在将Ring ring = new Ring(5,8,red);改成Ring ring = new Ring();编译运行有错误 发生吗?分析错误的原因 C.为程序添加一个默认构造函数,看一下运行结果 Public Ring() innerRadi

2、us=1.0; outerRadius=2.0; color=white; D.把程序中的如下语句: System.out.println(圆环的内半径: + ring.getInnerRadius( ); System.out.println(圆环的外半径: + ring.getOuterRadius( ); 改成: System.out.println(圆环的内半径: + ring.innerRadius ( ); System.out.println(圆环的外半径: + ring.outerRadius ( ); 编译运行,其结果如何?应如何修改这个错误? E.请为该圆环类再添加两个方法

3、以便能返回内圆和外圆的周长,然后在main()函数中 分别创建两个对象ring1,ring2以显示周长。 F.注:源代码Ring.java public class Ring private double innerRadius; private double outerRadius; public String color; public Ring(double iRadius, double oRadius, String c) innerRadius = iRadius; /初始化外半径 color = c; public double getInnerRadius( ) /返回内半径

4、public double getOuterRadius( ) return outerRadius; public void setInnerRadius(double iRadius) innerRadius = iRadius; public void setOuterRadius(double oRadius) outerRadius = oRadius; public void setColor(String c) /设置颜色 public double getArea() return (outerRadius * outerRadius - innerRadius * inner

5、Radius) * 3.1415; public static void main(String args) Ring ring = new Ring(5,8,red); System.out.println(圆环的内半径: + ring.getInnerRadius( ); System.out.println(圆环的外半径: + ring.getOuterRadius( ); System.out.println(圆环的颜色: + ring.color); System.out.println(圆环的面积: + ring.getArea() + n); ring.setInnerRadiu

6、s(4); /设置圆环ring的外半径为6 ring.setColor(blue); System.out.println(圆环的内半径: + ring.getInnerRadius( ); System.out.println(圆环的外半径: + ring.getOuterRadius( ); System.out.println(圆环的颜色: + ring.color); System.out.println(圆环的面积: + ring.getArea(); 第二题: 2.编写一个圆类Circle,其中有圆周率、半径和圆对象个数,其中圆周率和圆对象个数为 static成员。此外,Circl

7、e中还有两个static方法分别是设置圆周率和显示当前圆对象个数,其余都是实例成员,仔细体会静态成员与实例成员的差别和使用方法。程序运行效果如下: 实验要求: A.请将程序中的语句: System.out.println(cir1圆周率是: + cir1.pi); cir1.displayNo(); 改成 System.out.println(cir1圆周率是: + Circle.pi); Circle.displayNo(); 修改后编译运行,程序会报错吗?为什么?接着如果将语句cir1.setRadius(10);改成Circle.setRadius(10);情况又会怎样呢? B.现在将圆

8、周率Pi的static去掉,修改后编译运行,会报错吗?产生错误的原因是什 么? C.程序中的数据成员objectNo为什么要设置成static类型?它的作用是什么? D.注:源代码StaticTest.java class Circle static double pi = 3.14; static int objectNo = 0; int radius; Circle(int r) radius=r; objectNo+; Circle( ) radius = 2; objectNo+; double getArea( ) return pi*radius*radius; static v

9、oid setPI(double p) pi = p; void setRadius(int r) radius = r; static void displayNo( ) System.out.println(当前圆对象个数是: + objectNo); public class StaticTest public static void main( String args ) Circle cir1 = new Circle(5); System.out.println(cir1圆周率是: + cir1.pi); System.out.println(cir1的半径是: + cir1.ra

10、dius); System.out.println(cir1的面积是: + cir1.getArea(); cir1.displayNo(); cir1.setRadius(10); Circle cir2 = new Circle( ); cir2.setPI(3.1415); System.out.println(cir1圆周率是: + cir1.pi); System.out.println(cir1的半径是: + cir1.radius); System.out.println(cir2的半径是: + cir2.radius); System.out.println(cir2的面积是:

11、 + cir2.getArea(); cir2.displayNo(); 第三题: 3.查看如下源程序: 实验要求: A.请先分析程序的运行结果,然后再运行该源代码: 程序结果分析: B.将程序中的语句/z=20;前面的注释符去掉,编译会报错吗?为什么? C.程序中有两个方法setx()与setm(),它们分别是对类中的数据x和m进行设置。现 在将在方法setm()中的ScopeTest.m=m;改成this.m=m,编译程序是否会报错?如果 确实会报错,再将setm()方法前面的static修饰符去掉,看是否能编译成功,并解 释其中的原因。 D.在程序中方法show()中定义了一个循环语句,

12、在这个循环语句块里声明了一个变量 z,现将这个变量z的名字改成y,编译程序,看其运行情况 E.源代码:ScopeTest.java class ScopeTest int x; static int m=0; void show( ) int x=8, y; for (y=0; y2; y+) int z=5; System.out.println(z = + z); z = 10; System.out.println(z = + z); System.out.println(方法域中的X = + x + 在块内显示); / z = 20; System.out.println(方法域中的X

13、 = + x + 在块外显示); System.out.println(类域中的X = + this.x + 在块外显示); System.out.println(类域中的m = + this.m + 在块外显示); void setx(int x) this.x = x; static void setm(int m) ScopeTest.m = m; public static void main(String args) ScopeTest application = new ScopeTest( ); application.setx(2); application.setm(3);

14、application.show( ); 第四题: 4.查看如下源程序,其运行结果如下: 实验要求: A.现将下面的源程序补充完整 B.现向程序添加一个如下所示的新的add()方法 double add(int a,int b) System.out.println(整形加法但返回实型值+a+b+(a+b); return (double)(a+b); 编译时会出现什么情况,这说明了什么问题? C.源代码:Overload.java class Overload int m,n; Overload( ) m = 0; n = 0; Overload(int a, int b) /初始化变量m

15、/初始化变量n int add( ) System.out.println(无参加法+m+n+=+(m+n); return m+n; int add(int a, int b) System.out.println(整型加法+a+b+=+(a+b); return a+b; double add(double a, double b) System.out.println(实型加法+a+b+=+(a+b); return a+b; double add(int a, int b, double c) System.out.println(混合加法+a+b+c+=+(a+b+c); /返回加法

16、运算的结果 public static void main(String args) int ix,iy; double dx,dy; /声明一个Overload对象ov并初始化 ix = ov.add(); iy = ov.add(3,6); /调用实型加法函数,参数为2.1,5.3 dy = ov.add(3, 6, 2.2); 第五题: 5.查看如下源程序,其运行结果如下: 实验要求: A.现将下面的源程序补充完整 B.在Mobilephone类的display()方法中有如下语句: System.out.println(话费: + callCost( ); 试问这时调用的是子类自己的c

17、allCost( )还是其父类的callCost( );如果想要在此处调用父类的callCost( )应如何处理。 C.子类Mobilephone的构造函数中有语句super(b,num);请指出该语句的作用。接着将 该语句删除掉,编译运行程序,看看是否会出现下面的错误,并分析原因。 Inheritance.java:54: 找不到符号 符号:构造函数Telephone() 位置:类Telephone Mobilephone(String b, String num, String net) 1 错误 D.如果上面语句删除掉了,又想改正其错误,应如何修改? E.要调用父类的构造函数可以用sup

18、er,而要调用本类自身的构造函数可用this,请 试着在Telephone类中新加入一个构造函数如下: Telephone(String b, String n, double r) this(b,n); rate = r; 然后在主程序中用这个构造函数来创建一个Telephone对象,看看它能否起作用? F.现在在Telephone类为父类,设计一个新的子类叫做小灵通,这个小灵能继承了 Telephone类的属性,但又与移动电话有所区别。 G.源代码:Inheritance.java class Telephone String brand, number; double dialledTi

19、me; double rate; Telephone(String b, String n) brand = b; number = n; String getBrand( ) return brand; String getNumber( ) return number; /返回费率值 double getDialledTime( ) return dialledTime; void setBrand(String b) brand = b; void setNumber(String n) /设置电话号码 void setRate(double r) rate = r; void setD

20、ialledTime(double d) dialledTime = d; double callCost( ) return dialledTime * rate; void display( ) System.out.println(电话品牌: + brand + 电话号码: + number); System.out.println(通话时间: + dialledTime + 费率: + rate); System.out.println(话费: + callCost( ); class Mobilephone extends Telephone String network; doub

21、le receivedTime; Mobilephone(String b, String num, String net) super(b, num); network = net; String getNetwork( ) return network; double getReceivedTime( ) return receivedTime; void setNetwork(String n) network = n; void setReceivedTime(double d) /设置被叫时间 double callCost( ) return (dialledTime + 0.5*

22、receivedTime) * rate; void display( ) System.out.println(电话品牌: + brand + 电话号码: + number + 网络: + network); System.out.println(主叫时间: + dialledTime + 被叫时间: + receivedTime + 费率: + rate); System.out.println(话费: + callCost( ); public class Inheritance public static void main(String args) Telephone tel; Mo

23、bilephone mobile; tel = new Telephone(TCL, 8309600); mobile = new Mobilephone(Nokia, 130*,CDMA); tel.setRate(0.2); tel.setDialledTime(150); mobile.setRate(0.4); /设置主叫时间为80 mobile.setReceivedTime(120); tel.display( ); System.out.println( ); /显示移动电话的信息 第六题: 6.设计三个类分别是学生类Student、本科生类Undergraduate和研究生类Postgraduate。 其中Student类是一个抽象类,它包含一些基本的学生信息,如姓名、所学课程、课程成绩等,而Undergraduate和Postgraduate类都是Student类的子类,它们之间的差别是 假设某班级时既有本科生也有研究生,编写程序统计出全班学生的成绩等级并显示出来。查看如下源程序,其运行结果如下: 实验要求: A.现将下面的源程序补充完整 B.在Polymorphism类中有一个循环语句来计算每个学生的成绩等级: for (int i=0; i5 ;i+)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 策划方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁