版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6单元对象和类主讲人:龚迅炜Java程序设计实践教程实验2变量的作用域和this关键字目录2实验目标4拓展训练3实验内容1
知识要点变量作用域、this引用成员变量成员变量的作用域是类内;编译器自动对成员变量进行初始化;成员变量的定义位置可以在类内的任意位置;局部变量语句块内声明的变量、方法内声明的变量;这些变量都需要程序员初始化;变量有效范围从定义位置开始到变量所在的语句块结束。成员变量和局部变量同名时,遵循局部变量优先的原则,程序员也可以在局部使用this显示使用成员变量。this可以指代构造方法,仅可以出现在构造方法中,并且要求是构造方法的首句。不可变类和单例类创建一个对象后不希望被改变,则需要生成它的类为不可变类。不可变类的所有实例数据都是私有的,而且不能包含针对任何一个数据域的公共设置方法。例如银行卡一旦创建就不允许更改其信息。importjava.util.Date;publicclassBankCard{ privateStringbankName; privateStringcardID; privateDatecreateTime; publicBankCard(StringbankName,StringcardID,DatecreateTime){ super(); this.bankName=bankName; this.cardID=cardID; this.createTime=createTime; } publicStringgetBankName(){ returnbankName; } publicStringgetCardID(){ returncardID; } publicDategetCreateTime(){ returncreateTime; }}不可变类和单例类在某些场景下,不允许自由创建类对象,仅能在一个应用中创建一个实例对象。为了避免程序员随意创建这种类的对象,应该把该类的构造器设置为私有的。同时提供一个公有的静态方法用于创建对象。publicclassMonitor{ privatestaticMonitorinstance; privateMonitor(){} publicstaticMonitorgetInstance(){ if(instance==null){ instance=newMonitor(); } returninstance; }}知识目标:掌握this关键字的使用;掌握初始化块的作用和使用;组合类的定义和使用;理解单例类的实现。能力目标:能够合理使用this关键字,能够建立符合业务需求的对成员属性的访问控制方式;综合运用静态、访问控制方式等类设计的细节元素,理解类封装的保护和开放的辩证关系,能够在不同业务场景下,设计出符合要求的类;能够处理多类间的关系和理解特殊类设计模式。素质目标:培养自律自学能力,明确职业发展目标,构建合理的发展路径。123验证性实验--三角形类Triangle的定义和使用(1)定义名为Point的点类,该类中包括横坐标x和和纵坐标y,提供包含x,y的构造方法;(2)定义名为Triangle的类,其中包含p1,p2,p3表示三角形的三个顶点;(3)显示声明Triangle的默认构造方法,声明Triangle的带参构造方法;(4)观察p1,p2,p3的构造和Triangle对象的构造之间的先后关系;(5)提供判断这个三点能都构成三角形的方法isTriangle;(6)提供计算这个三角形的周长的方法perimeter和面积的方法area;(7)编写应用程序让用户输入三个点的坐标,生成Triangle对象,判断这三个点能否构成三角形,如果可以输出他们的周长和面积;如果不可以请用户重新输入三个点。思考:如果要求三角形的一个点必须是原点,这个类又该如何设计?验证性实验--三角形类Triangle的定义和使用根据题目要求绘制UML类图1验证性实验--三角形类Triangle的定义和使用根据UML类图实现Java代码2根据题目要求绘制UML类图1原点0xy验证性实验--三角形类Triangle的定义和使用3编写测试代码,对实现的类进行测试根据UML类图实现Java代码2根据题目要求绘制UML类图1publicclassTriangleDemo{ publicstaticvoidmain(String[]args)throwsUnsupportedEncodingException{ //TODOAuto-generatedmethodstub Scannerinput=newScanner(System.in,"UTF-8"); PrintStreamout=newPrintStream(System.out,false,"UTF-8"); out.println("请输入三角形的三个顶点坐标:"); double[]coord=newdouble[6]; for(intidx=0;idx<3;idx++){ out.print("第"+idx+"个顶点的横坐标是:"); coord[2*idx]=input.nextDouble(); out.print("第"+idx+"个顶点的纵坐标是:"); coord[2*idx+1]=input.nextDouble(); } Pointp1=newPoint(coord[0],coord[1]); Pointp2=newPoint(coord[2],coord[3]); Pointp3=newPoint(coord[4],coord[5]); Trianglet=newTriangle(p1,p2,p3); if(t.isTriangle()){ out.println("三角形的周长是:"+t.perimeter()); out.println("三角形的面积是:"+t.area()); } else out.println("这三个点无法组成三角形。"); }}验证性实验--学生类的定义和使用国内某高校iUniversity要设计一个学生成绩管理系统,其中需要设计学生类:(1)该学生类(Student),需要包含学号(Stringsno)、姓名(Stringname)、学分(doublecredit)属性,学生具备听voidlisten(Stringmsg)、说voidsay()、读voidread(Stringmsg)、写voidwrite(Stringmsg)的能力。(2)使用默认的构造方法创建Student的类对象,然后对其成员属性进行赋值;重载构造方法,在创建Student类对象时同步设置其成员属性的值。(3)增加国籍属性(Stringnationality)。同时注意到该校招收的大部分学生都来自中国。为此,我们在该类中提供初始化块,以便后期使用该类时减少该属性的频繁设置。结合上面的要求和测试代码完成Student类的实现,并补充完成test02和test03两个方法的实现。下面提供测试程序,其实例化来自中国的学生zhangsan、lisi和来自美国的学生mike,分别调用他们的听、说、读、写和显示学生的个人信息进行测试。验证性实验--学生类的定义和使用根据题目要求绘制UML类图1根据UML类图实现Java代码23编写测试代码,对实现的类进行测试验证性实验--学生类的定义和使用根据题目要求绘制UML类图1根据UML类图实现Java代码23编写测试代码,对实现的类进行测试验证性实验--学生类的定义和使用根据题目要求绘制UML类图1根据UML类图实现Java代码23编写测试代码,对实现的类进行测试验证性实验--单例Scanner工具类的设计与实现某系统要求所有的输入动作都必须要求由一个Sacnner对象进行操作,为此需要为系统设计一个Scanner类对象的唯一获取入口。验证性实验--单例Scanner工具类的设计与实现设计性实验--加法器类Calculator的设计和使用该加法器能提供如下特性:(1)包含一个number表示本位值,包含一个carry表示进位;(2)再提供一个add运算,能够实现两个一位二进制数的加运算,结果存放在number和carry中;(3)提供一个clear方法,能够实现number和carry清零;(4)提供isDisplay属性和display方法,当isDisplay为true时,display方法用于显示一位二进制运算的工作示意图;当isDisplay为false时,display方法不工作;(5)利用初始化块实现二进制一位加法器的初始化工作。编写这个Calculator类,能够满足下面应用程序测试要求。测试程序实现了加一个一位二进制数运算和使用设计好的一位二进制加法器实现一个两位二进制数加法器。设计性实验--加法器类Calculator的设计和使用二进制的一位加法器是计算机硬件逻辑的基础,本题要求我们使用软件模拟该加法器。Ai、Bi为两个加数,Ci-1为低位来的进位;Si为本位值,Ci为本位产生的进位值。加法器是由逻辑电路构成,逻辑电路只会做与、或、非。我们给出它们之间的逻辑关系如下:Si=Ai^Bi^Ci-1Ci=Ai&Ci-1|Bi&Ci-1|Ai&Bi设计性实验--加法器类Calculator的设计和使用根据题目要求绘制UML类图1根据UML类图实现Java代码23编写测试代码,对实现的类进行测试设计性实验--加法器类Calculator的设计和使用根据题目要求绘制UML类图1根据UML类图实现Java代码23编写测试代码,对实现的类进行测试设计性实验--加法器类Calculator的设计和使用根据题目要求绘制UML类图1根据UML类图实现Java代码23编写测试代码,对实现的类进行测试设计性实验--产品类Product的设计和实现(1)Product包含与业务无关的id,id是一个13位数字组成的字符串;产品名称Stringname;产品类型编号Stringpid;产品的状态intstatus;(2)Product包含产品的生产日期MyDatedateInProduced,其中MyDate类需要自行定义一个包含年、月、日、时、分、秒属性的日期类,并提供构造方法、getter、setter方法和toString方法,并根据各个时间要素检查设置时参数的逻辑性是否正确;(3)Product提供方法构造方法、getter、setter方法、toString方法;(4)完成测试程序,验证各个功能点是否达到设计要求。设计性实验--产品类Product的设计和实现根据题目要求绘制UML类图1根据UML类图实现Java代码23编写测试代码,对实现的类进行测试设计性实验--产品类Product的设计和实现根据题目要求绘制UML类图1根据UML类图实现Java代码23编写测试代码,对实现的类进行测试设计性实验--产品类Product的设计和实现根据题目要求绘制UML类图1根据UML类图实现Java代码23编写测试代码,对实现的类进行测试设计性实验--产品类Product的设计和实现根据题目要求绘制UML类图1根据UML类图实现Java代码23编写测试代码,对实现的类进行测试(1)构造方法和setter方法都需要检查赋值参数是否符合赋值规范要求;(2)产品的toString方法需要将pid和status转换为对于的中文含义,而不是简单输出值;(3)MyDate类中,如果只有年月日信息时,输出仅包含年月日信息;如果有时分秒,则输出年月日时分秒。设计性实验--Tea茶叶类的设计与实现某茶厂,需要利用信息化来管理茶叶的生产过程,为此需要设计一个名为Tea的类来代表茶叶。这个类包括:(1)茶分类绿茶(GREENTEA,0)、红茶(BLACKTEA,1)、乌龙茶(OOLONGTEA,2)、白茶(WHITETEA,3)、黄茶(YELLOWTEA,4)、黑茶(DARKGREENTEA,5),设置为静态常量;(2)茶叶的类型、生产日期、保质期、品牌、价格等属性,设置为私有的;要求类型只能选择a)中提到的分类类型;生产日期为Date类型;保质期为long类型,表示多少天;品牌为String类型。(3)提供上述参数的设置和获取方法。(4)茶厂出厂的茶叶的参数需要通过初始化块进行初始化,同时提供给经销商时,允许经销商通过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年第十三师中级人民法院聘用制书记员招聘备考题库及参考答案详解1套
- 临泉县面向2026届公费师范毕业生招聘教师备考题库完整参考答案详解
- 企业采购管理制度
- 中学学生社团活动经费管理执行制度
- 中学教师职称晋升制度
- 养老院收费标准及退费制度
- 2026年重庆医科大学附属康复医院关于党政办公室党建、宣传干事、医保办工作人员招聘备考题库及一套答案详解
- 2026年龙岩市武平县招聘动物防疫专员的备考题库及参考答案详解一套
- 交通设施安全检测制度
- 2026年西藏招商交建电子备考题库有限公司招聘备考题库及完整答案详解1套
- 半导体产业人才供需洞察报告 202511-猎聘
- 电梯救援安全培训课件
- 2025年青岛市国企社会招聘笔试及答案
- 2026届江西省抚州市临川区第一中学高二上数学期末考试模拟试题含解析
- 云南省大理州2024-2025学年七年级上学期期末考试数学试卷(含解析)
- 物业管理法律法规与实务操作
- (16)普通高中体育与健康课程标准日常修订版(2017年版2025年修订)
- 电力工程施工组织措施
- 五年级数学上册计算题专项练习
- 人工智能赋能制造业的变革
- 腹腔镜下前列腺癌根治术护理查房课件
评论
0/150
提交评论