- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Java程序设计基础面向对象基本特征
面向对象基本特征主要内容18.1抽象和封装(重点)8.2继承(重点)8.3多态(重点、难点)
教学目标2能理解抽象的概念能正确使用抽象的思想设计程序能理解继承的概念能正确描述无法使用继承的两种情况能描述final关键字的作用能正确区分super与this关键字的作用能理解多态的概念能正确使用多态简化程序能理解面向基类的编程思想能理解向上转型和向下转型的概念能正确区分向上转型和向下转型
什么是抽象3有些资料把抽象和封装、继承、多态一起并称为面向对象的四大特征(但主流的说法,仍然是三大特征)。面向对象设计首先要做的就是抽象,也就是根据用户的业务需求抽象出类,并关注这些类的属性和方法,将现实世界中的对象抽象成程序设计中的类。程序员开发出来的软件是需要满足用户需求的,所以程序员做分析和设计的依据是用户需求,这通常就是软件开发前期形成的“需求规格说明书”。面向对象设计时,首先要阅读用户需求,找出需求中名词部分用来确定类和拥有静态特征的属性,找出动词部分确定动态行为的方法。
“租车系统”需求抽象分析4分析一个“租车系统”的部分需求。在控制台输出“请选择要租车的类型:(1代表轿车,2代表卡车)”,等待用户输入。如果用户选择的是轿车,则在控制台输出“请选择轿车品牌:(1代表红旗,2代表长城)”,等待用户输入。如果用户选择的是卡车,则在控制台输出“请选择卡车吨位:(1代表5吨,2代表10吨)”,等待用户输入。在控制台输出“请给所租的车起名:”,等待用户输入车名。所租的车油量默认值为20升,车辆损耗度为0(表示刚保养完的车,无损耗)。具有显示所租车辆信息功能,显示的信息包括车名、品牌/吨位、油量和车损度。
“租车系统”需求抽象分析5首先我们进行抽象,发现需求里的类并定义类的属性和方法:发现名词。通过阅读需求,发现需求中有类型、轿车、卡车、品牌、红旗、长城等名词。确定类和属性。通过分析,车名、油量、车损度、品牌这些名词依附于轿车这个名词,车名、油量、车损度、吨位依附于卡车这个名词,所以可以将轿车、卡车抽象成类,依附于这些类的名词抽象成属性。确定方法。通过分析需求的动词,发现显示车辆信息是轿车和卡车的行为,所以可以将这个行为抽象成类的方法。同样地,不是所有依附于类名词的动词都需要抽象成类的方法,只有需要参与业务处理的动词才能确定成方法。
“租车系统”需求抽象分析6据对轿车和卡车的抽象,可以得到如图所示的结果
封装“租车系统”的轿车类和卡车类7把所有的属性都设置为私有属性,每个私有属性都提供getter和setter公有的方法,封装后的类图如下图所示
封装“租车系统”的轿车类和卡车类8上述封装过于简单,没有考虑需求,接下来进一步阅读需求,可以发现以下几点。租车时可以指定车的类型和品牌(或吨位),之后不允许修改。油量和车损度租车时取默认值,只有通过车的加油和行驶的行为改变其油量和车损度值,不允许修改。根据需求,应对轿车类和卡车类做如下修改。由于要求了车的属性值不允许修改,因此去掉所有的setter方法,但保留所有的getter方法。提供addOil()、drive()这两个公有的方法,实现车的加油和行驶的行为。至少需要提供一个构造方法,实现对类型和品牌(或吨位)的初始化。
封装“租车系统”的轿车类和卡车类9调整后的类图如图所示
抽象和封装的具体体现10抽象,实际上是一个分析的过程,是根据需求的表述归纳实体的类型、属性和行为,其产出物是类图。类图勾勒了实体应该具备哪些属性和行为,但未涉及细节。封装,实则就是将抽象得到的模型转变为具体实现。它的要点是,尽可能对外隐藏细节,Java中的手段就是使用private,所以在前面案例中所有的属性都是private。抽象,是归纳提炼;封装则是在实现中依据业务需求尽量隐藏细节。
为什么要使用继承11用继承可以大大减少冗余代码,提高代码的复用性。我们之间添加的Car.java和Truck.java中的代码,可以发现现有代码存在着以下的不足Car类和Truck类中的代码大量重复:例如二者都存在name、oil、loss属性,相应的getter方法,以及addOil()、drive()等方法。对于整体结构相似的Car类和Truck类,如果要修改其中的一个类的方法,另外一个类的方法要不要修改呢?例如,如果要将Car类中的addOil()方法改为fuelUp()方法,那么Truck类中是否也需要做相应的修改呢?显然,目前这种做法给后期的代码维护带来了麻烦。
为什么要使用继承12上述的问题可以使用继承解决。继承可以使得子类沿用父类的成员(属性和方法)。当多个子类具有相同的成员时,
您可能关注的文档
- 硬件电路设计与电子工艺基础(第2版) 集成芯片汇总 课件 第2章 八路NPN达林顿晶体管阵列-ULN2803A ---整流二极管-1N400X.pdf
- 硬件电路设计与电子工艺基础(第2版) 集成芯片汇总 课件 第3章 OCL集成功放-TDA2030-- 双电压比较器-LM393.pdf
- 硬件电路设计与电子工艺基础(第2版) 集成芯片汇总 课件 第4章 3线-8线二进制译码器-74hc138 --- 同步加计数器-74hc160、74hc161.pdf
- 硬件电路设计与电子工艺基础(第2版) 集成芯片汇总 课件 第5章 低压差LDO三端固定电压集成稳压器-1117-3.3 ---- 正电压三端固定集成稳压器-lm78XX.pdf
- 《Java 程序设计基础》 课件 第九章-抽象类和接口.pptx
- 《Java 程序设计基础》 课件 第六章-类和对象.pptx
- 《Java 程序设计基础》 课件 第四章-方法与数组.pptx
- 《Java 程序设计基础》 课件 第五章-String 字符串.pptx
- 《Java 程序设计基础》 课件 第一章-初识 Java.pptx
- 初中历史课堂中历史人物精神与文化自信培育实践教学研究课题报告.docx
- 从仿制到理解初中生制作唐三彩与陶瓷文化认知教学研究课题报告[001].docx
- 25 《山居秋暝》《蜀道难》助记、默写(新高中语文课标60篇)解析版.docx
- 2024秋新冀少版生物7年级册教学课件 第1单元 第1章 细胞 第1节 显微镜的使用.pptx
- 小学体育游戏教学中批判性思维的融入与实践教学研究课题报告.docx
- 《财产险理赔流程优化中的科技与保险业风险管理风险意识》教学研究课题报告.docx
- 二零二五押金房屋买卖合同书.docx
- 土石方工程承包合同书样本.docx
- 业委会秘书劳务合同范本.docx
- 26 《梦游天姥吟留别》《将进酒》助记、默写-解析版.docx
- T_NMSP .MZB01.46—2024(“蒙”字标农产品认证要求内蒙古饲用燕麦干草).pdf
文档评论(0)