版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验报告课程名称面向对象技术(Java)实验项目类和对象实验仪器个人计算机学院计算机学院专 业计算机大类班级/学号学生姓名实验日期2019A)4/03指导教师实验项目二类和对象一、实脸目标1 .掌握类的定义和对象的创迂以及使用方法;掌握UML类图的绘制。2 .掌握实例变黄与静态变玄、实例方法与静态方法的区别与使用。3 .掌握成员变至与局部变莹的定义与使用。4 .理解和掌握面向对象技术的封装性,能够运用面向对象思想、术语和相关技术正确表达 一般工程问题。二、实险要求1. 上机实脸前,按照每一个实脸题目的具体要求提前完成准备工作,如:查找资料、设计 算法、写出全部源程序,做好预习笔记,做到有准备地
2、上机。2. 上机实脸课内,积极调试及修改程序。上传程序到过程化考核平台 /52:8008/3. 上机实脸课后,学生应根据实脸数据及结果,完成实脸报告。实脸报告是评定实脸成绩 的重要组成部分。完成的实脸报告交给课代表,课代表收齐本班的实脸报告后统一交指 导教师申阅评定。三、实验环境硬件环境:个人电脑一台软件环境:JDKL8及以上版本,NsB6ns8.0及以上版本四、实验内容任务1、定义一个名为Circlu的类表示圆形。这个Circle类包括:(1) 一个名为radius的私有double型数据域,表示网的半径。radius的象认值为1。(2) 一个名为numbu
3、rOR)bj«ts的私有静态数据域,用于记录创建的网对象的个数。(3) 一个无参构造方法。(4)一个能指定radius的构造方法°(5) 一个名为gtcAruaO的方法返回这个圆形的面积。(6) 一名为gctNumbcrOfObjccts的类静态方法,返回已创建网的个数0(7) radius 的 set/get 方法。然后,编写一个测试程序。妥求在测试程序中:(1)创建一个半径为5.0的词对象myCirc匕 井榆出这个词的半径及面积。(2)修改这个词的半径,将其半径扩大到1.1倍后,重新榆出它的半径及面积。解题要求:使用Math.PI,计算圆面积。榆出参考样例如图所示。程序
4、输入参数如下本题没有要求手动愉入蝴程序运行结果如下The area of the circle of radius 5.0 is 78.53981633974483The area of the circle of radius 5 5 is 95.03317777109125实险步骤:程序清单:public class Circle public Circle() 无参的构造方法private double radius;类私有的 double 型数据 radiusprivate static int numberOfObjects;静态数据域private double area;publ
5、ic void setRadius(double radius)this, radius=radius;)public double getRadiusO return radius; /radius 的 set/get 方法 public Circle(double radius)public double getArea(double radius) area = radius*radius*Xath. PI; 面积方程System, out. println(zzThe area of the circle of radius "+radius+" is "
6、+area);/输出圆而积 return area;)public double getArea(Circle circlel)area = circlel. getRadius 0 *circlel. getRadius 0 *Math. PI;System, out. printlnC'The area of the circle of radius "+this. radius+" is /z+this. area);return area;)public static int getNumberOfObjects0 return 2;)public stat
7、ic void main(Stringargs) Circle circlel = new Circle(5. 0);circlel. getArea(5. 0);Circle circle2 = new Circle(5. 5);circle2. getArea(5. 5);)测试类7任务1实睑小结:1 .主要谈谈你在该实验中用到了哪些具体技术或知识点?该技术或知识点解决了什麽问 题?你的设计的优缺点?2 .你在实验中遇到的问题,你是如何解决的?技术和知识点:类的定义和对象的创建,全局变量的使用,使用Math. PI。遇到的问题:开始没有使用Math. PI,导致输出结果不匹配JAVA全局变
8、量(或称成员变量)可分两种,一种是静态变量,另一种是实例变量,即在类 体中定义的变量,有三点得注意:一、成员变量不能在类体中先声明(定义)后赋值,但 静态变量可以先在类体中声明,然后在方法中腻值。二、成员变量可以在类体中声明同时进 行赋值。三、在数据类型转换上,有隐式转换和显式转换(即强制类型转换),隐式转换只的精确度,如果要能从高字节的数据类型向低字节的数据类型转换,这样不会丢失原有 将变量从低字节的数据类型转换成高字节的数据类型,只能使用显式转换任务2、设计一个名为Fan的类来表示一个风扇。这个类包括:(1)三个名为SLOW、MEDIUM和FAST其值分别是1、2和3的常莹,表示风扇的速度
9、 的三个等级。(2) 一个名为spuud的int类型的私有数据域,表示风扇的速度(默认值为SLOW')。(3) 一个名为。n的booluui类型私有数据域,表示风扇是否打开(默认值为falsu)。(4) 一个名为radius的dmibk类型私有数据域,表示风扇的半径(默认值为5)。(5) 一个名为color的String类型数据城,表示风扇的颜色(或认值为bluer)。(6)这四个数据域的访问器和修改署。(7) 一个创迂默认风扇的无参构造方法。(8) 一个名为tcString ()的方法,返回描述风扇的字符串。如果风扇是打开的,该方法返 回风扇的速度、颜色和半径。如果风扇没有打开,该方
10、法就会返回“风扇没有开启”及风扇 颜色与半径。要求:(1)画出该类的UML图。(2)实现这个类。(3)编写一个测试程序,创建两个Fan对象,并分别从键叁输入两个风扇的半径、颜色和 状态,按照如下的样例输出。程序福入势数如下 5 red true 6 yenow false 程序运行结果如下 孩风扇的速度为3 ©百色是red 半径是5.0 风院没有开启 该风质的奥面色罡ye»ow 半径是6.0 代巧运行成功UML 图:Fan十speed: int(SLOW) +radius:double(5) +color:String(blue) +on:boolean(false) +
11、FanQ+setRadius( double radius )+getRadius()+setSpeed( int speed )+getSpeed()+setColor( String color)+getColor()+setOn( boolean on )+toString实险步骤:程序清单:import java. util. Scanner;public class Fan private String color;private int speed=3;private double radius;static private boolean on;public FanO /Fan类
12、的无参构造方法public void setRadius( double radius ) this, radius = radius; /radius 的 set 方法public void setSpeed( int speed ) this, speed = speed;/speed 的 set 方法public void setColor( String color ) this, color = color;/color 的 set 方法public void setOn( boolean on ) this. on = on;on的set方法public double getRad
13、ius( )System, out. printin (“半径是"+ radius );return radius; /radius 的 get 方法public int getSpeed( ) System. out. println("该风扇的速度为"+ speed ); return speed;/speed 的 get 方法public String getColor( )System. out. print In ("该风扇的颜色是"+ color ); return color;/Fan 类public static void ma
14、in(String args) Scanner input = new Scanner(System, in );Fan fanl = new FanO ;fanl. radius = input. nextDoubleO ;fanl. color=input. next () ;/输入 color 与 radiusFan. on=input. nextBoolean0;(if(on=true)fanl. getSpeedO ;System. out. print In ("颜色是"+ fanl. color);fanl. getRadiusO ;)else if (on=
15、false) System, out. println("风扇没有开启“);System. out. print In (“该风扇的颜色是"+ fanl. color);fanl. getRadius 0;System, out. printin ;)Fan fan2 = new FanO ;fan2. radius = input. nextDoubleO ;fan2. color=input. next 0 ;Fan. on=input. nextBoolean0;(if(on=true)System, out. printin("该风扇的速度为 2"
16、;);System. out. print In (“颜色是"+ fan2. color);fan2. getRadiusO ;)else if(on=false) System, out. printing风扇没有开启“);System. out. printin("该风扇的颜色是"+ fan2. color);fan2. getRadius 0;)任务2实验小结:3 .主要谈谈你在该实验中用到了哪些具体技术或知识点?该技术或知识点解决了什麽问 题?你的设计的优缺点?4 .你在实验中遇到的问题,你是如何解决的?知识点:boolean型函数的使用,toString
17、 ()方法的运用;遇到的问题:主类代码书写不熟练。6任务3、根据下列洽出的测试类TustPNnt代码及样例,设计二维平面上的点(Point)类, 并用下列洽定的测试类TestPoint,测试自己设计的Point类。import java.utiLScamicr;public class TestPoint public static void main(String0 a)Seamier in = new Scanncr(System.in);Point pl = new Point。;pl .sctX(inncxir)oublcO);pl .setY(in.nextDouble0);Poin
18、t p2 = new Point(in.ncxtr)oublc(),in.nextDoubleO);Systcm.out.printf(Mn 两点距离为.2,pl.distance(p2);System.outprintffn 两点距离为.2/,pl.distance(2030);|程序输入参数如卜3456两点距离为2.83两点距高为31.06代码运行成功实验步骤:程序清单:import java. util. Scanner;class Point double X;double Y;double distance;public Point() 无参构造方法public Point(doub
19、le X, double Y) this. X=X;this. Y=Y;)public double getXO public void setX(double X) this.X = X;/X 的 setget 方法public double getY0 return Y;)public void setY(double Y) this. Y = Y;/Y 的 setget 方法public double distance(double a,double b) distance=Math, sqrt(a-X)*(a-X) + (b-Y)*(b-Y); return distance;)pub
20、lic double distance(Point p2) distance=this. distance(p2. getXO, p2. getY0); return distance;)public class TestPoint public static void main(String a)Scanner in = new Scanner(System, in);Point pl = new Point 0;pl. setX(in. nextDoubleO);pl. setY(in. nextDoubleO);Point p2 = new Point(in. nextDouble 0,
21、 in. nextDouble 0);System, out. printf ("n 两点距离为%. 2f” , pl. distance (p2);System, out. printf Cn 两点距离为%. 2f” , pl. distance (20, 30); ) 测试类任务3实验小结:主要谈谈你在该实验中用到了哪些具体技术或知识点?该技术或知识点解决了什麽问题? 你的设计的优缺点?你在实验中遇到的问题,你是如何解决的?主类修饰符为public成员变量声明8成员变量是类的属性,声明的一般格式为:变量修饰符 成员变量类型)成员变量名)构造函数具有如下特点:(1)构造方法的方法名
22、必须与类名相同,其它方法不能和类名相 同。(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。(3) 构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。(4)构造方法不能由编程人员调用,而由系统调用。(5) 一个类可以定义多个构造方法, 如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个 构造器不执行任何代码。(6)构造方法可以重载,以参数的个数,类型,或排列顺序区分任务4、根据下面的类图,编写课程Course类和学生Siudunt类。Course类说明如下:(1) addStudunt方法用于添加一个选课的
23、学生;(2) teString方法用于返回课程的所有信息,包括课程名称和选保学生。Studum类说明如下:(1) teString方法用于返回学生的信息。注意:图中省略了两个类所有数据域的修改若和读取若。CourseolHStudent-name:String-stuList:Student*numberOfStudents:int-stuNo:int-name:String,Student。Student(stuNo:int, name:String)*toString(): String4 Course ()4Course(name:String)+Course(na me :Stri n
24、g, statist: Student! h numberOfStudents:int)+addStudent(stu:Student)+toString(): String最后编写测试类,创建一门课程和两个学生对象,并为该课程添加两个选课学生,面向对象技术1张三2李四程序运行结果如下型程名称面向对受技术选医学生名单学号1姓名张三学号2姓名李四实险步臊:程序清单:import java. util. Scanner;import java, uti1. Arrays;public class TestStudentCourse 9public static void main(String a
25、rgs) Scanner input=new Scanner(System, in); String s;Student st=new Student2;int n= n=st. length;长度trys=input. next 0 ;for(int i=0;i<st. length;i+)stLi.=new Student(input, nextlnt0, input, next 0);Course c=new Course(s, st, n);System. out. println(c. toStringO) ;/循环 finallyinput. closeO ;)class S
26、tudent (private int stuNo;private String name;public Student () /student的无参构造方法public Student(int stuNo, String name) this. stuNo=stuNo;this, name=name;)public int getStuNoO return stuNo;)public void setStuNo(int stuNo) this. stuNo = stuNo;/StuNo 的 setget 方法public String getName0 return name;)public
27、 void setName(String name) this, name = name;/name 的 setget 方法public String toStringO return n 学号”+ stuNo + “姓名"+ name ;)class Course private String name;private int numberOfStudent;private StudentstuList ;public Course0 /course的无参构造方法public Course(String name, Student stuList, int numberOfStudent) this, name=name;this. stuList=stuList;this. numberOfStudent=numberOfStudent;)public String getName0 return name;)public void setName(String name) this, name = name; /name 的 getset 方法public int getNumberOfStudent0 return numberOfStudent;)public void setNumberOfStudent(int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课题申报参考:金代民族交往交流交融的考古学观察
- 课题申报参考:减税降费政策实施效果评估和策略优化研究
- 二零二五版环保项目临时工劳动合同4篇
- 基于2025年度计划的环保项目合作协议3篇
- 2025年智能水电表更换与数据采集服务合同4篇
- 2025年度个人退房协议书范本(适用于商业地产)4篇
- 二零二五版建筑工程公司资质借用与施工监督服务协议3篇
- 二零二五年度商业综合体场地租赁合同范本6篇
- 专利授权事务全权委托合同书版B版
- 2025年度排水沟施工安全协议书范本
- GB/T 45107-2024表土剥离及其再利用技术要求
- 2024-2025学年八年级上学期1月期末物理试题(含答案)
- 商场电气设备维护劳务合同
- 2023年国家公务员录用考试《行测》真题(行政执法)及答案解析
- 全国教学设计大赛一等奖英语七年级上册(人教2024年新编)《Unit 2 Were Family!》单元教学设计
- 2024智慧医疗数据字典标准值域代码
- 年产12万吨装配式智能钢结构项目可行性研究报告模板-立项备案
- 【独家揭秘】2024年企业微信年费全解析:9大行业收费标准一览
- 医疗器械经销商会议
- 《±1100kV特高压直流换流变压器使用技术条件》
- 1-1 拥抱梦想:就这样埋下一颗种子【2022中考作文最热8主题押题24道 构思点拨+范文点评】
评论
0/150
提交评论