第2章 对象的概念

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第2章对象的概念学习目标:•理解对象的含义•理解对象使用消息进行交流以完成任务的方式•理解垃圾收集机制•理解类的含义•理解代码复用第2章对象的概念2020/2/1822.1引言使用面向对象的理由:•便于理解•便于交流•数据和过程(操作)不是人为分离的•代码更容易重用•面向对象是成熟的第2章对象的概念2020/2/1832.2什么是对象•对象(object)是一个实体,一个名词。•所有的对象都有属性(attribute)和行为(操作、behavior)•在面向对象的软件中,真实世界中的对象会转化为代码•万事万物皆对象•建立模型(model)-尽力模拟,而非全部第2章对象的概念2020/2/184实践1•在面向对象编程中如何创建对象?newPerson(“SueSmith”);aPerson=newPerson(“SueSmith”);指派第2章对象的概念2020/2/1852.3相同还是相等•对象具有独立存在性•在面向对象的系统中,一个软件对象仅表示一个真实世界中的物体第2章对象的概念2020/2/1862.4描述对象•把对象显示在图中,便于描述和分析•表示法:UML对象图anObjectattribute1attribute2operation1()operation2()operation3()第2章对象的概念2020/2/1872.4描述对象•一个咖啡机对象aCoffeeMachinedrinkPricesavaliableDrinksdrinkRecipesdisplayDrinks()selectDrink()dispenseDrink()acceptMoney()第2章对象的概念2020/2/1882.5封装•封装是指对象在其操作中隐藏属性•隐藏的属性称为私有属性•封装是编程语言防止程序员相互干扰的一种方式第2章对象的概念2020/2/1892.6关联和聚合•对象不是孤立的,对象间存在直接或间接、强或弱的联系•对象建模存在的对象关系:关联或聚合•二者的区别:–关联是一种弱连接,不完全相互依赖–聚合是一种强连接,成为一个更大的对象第2章对象的概念2020/2/18102.6关联和聚合•关联aCaraPassengeranotherPassengeraDriver第2章对象的概念2020/2/18112.6关联和聚合•聚合aHousefirstFloorsecondFloordiningRoomlivingRoomkitchenmainBedroomkidsBedroombathroom第2章对象的概念2020/2/1812练习1下面哪些是关联,哪些是聚合?•街道上的房子•书中的书页•交响乐中的音符•家庭娱乐系统中的组件(电视机、VCR、大型录音机、扩音器、游戏控制台)关联聚合或关联聚合关联第2章对象的概念2020/2/18132.7树和图•除了关联和聚合之外,对象还有树(tree)和图(graph)•树是层次结构的另一个名称•图是对象组之间连接的一个任意集合第2章对象的概念2020/2/18142.8链接和可导航性•对象图中的连接称为链接(link)•可导航性:如果要说明一个对象知道另一个对象的位置,则通过箭头加以说明aCustomeranAddresshouse=10streetcountypostcode=“TL510R”addressaStringname第2章对象的概念2020/2/18152.9消息•对象一旦建立联系,即可通过协作完成更复杂的任务•对象在协作时相互发送消息发送方接收方消息回应第2章对象的概念2020/2/18162.9消息aClock现在几点14:00aDriver你叫什么名字“Liz”aCar启动引擎第2章对象的概念2020/2/18172.9消息•注意:某些对象间的消息不能够被执行(表2-1)第2章对象的概念2020/2/18182.10启动操作•软件对象收到消息后,会启动操作•消息可以带参数(parameter,或argument)aPerson.getHeight(aUnit)第2章对象的概念2020/2/18192.11协作示例顾客面包师这儿有什么面包两种白面包,一种全麦面包我要一条全麦面包1.75欧元给你钱这是面包这是找零第2章对象的概念2020/2/18202.11协作示例顾客面包师getAvailableLoaves()两种白面包,一种全麦面包getPriceOf(wholemeal)1.75欧元buy(wholemeal)全麦面包0.25欧元pay(2.00l)第2章对象的概念2020/2/18212.12面向对象程序的工作原理•面向对象的程序在工作时,首先要创建对象,把它们连接在一起,让它们彼此发送消息,相互协作。•但谁启动这个过程?•为此,程序必修有一个入口点。例如:main函数第2章对象的概念2020/2/18222.12面向对象程序的工作原理object1datamain()object2dataaskForHelp()doSubTask()askForHelp()object3dataaskForMoreHelp()第2章对象的概念2020/2/18232.12面向对象程序的工作原理•main操作的理念不仅应用在控制台上执行的程序,也适用于更复杂的程序:–用户界面的main操作创建顶级窗口–Web服务器的main操作有一个无限循环,告诉socket对象监听某个端口的入站请求–servlet是Web服务器拥有的对象,它接收从Web浏览器传送来的请求第2章对象的概念2020/2/18242.13垃圾收集•每个新对象都要占用计算机内存的一个小区域•当创建对象的程序不再使用该对象,怎么办?•垃圾收集•运行时系统(run-timesystem)负责监视系统第2章对象的概念2020/2/18252.14类•类封装了一组对象的公共属性•对象是类的实例化•类之间也存在关系,如:组合、继承、多态等第2章对象的概念2020/2/18262.15类定义的内容•面向对象使用类来描述某种对象拥有的编程元素•参见Actor.java。第2章对象的概念2020/2/18272.16共享数据和共享操作•在面向对象的程序中,程序所需要的所有信息和服务都必须在某个地方可用–共享数据:作为类属性存在–单独数据:作为方法(操作)中的变量存在•对象之间可以相互使用数据和操作第2章对象的概念2020/2/18282.17类型•大多数面向对象的语言除了对象、类外,还有非对象类型,即原型(primitive)•例如:String(类),int(类型)•原型和对象的区别:原型可以相互赋值,但不能给原型发送消息第2章对象的概念2020/2/18292.18术语•本书所采用的说法,在授课过程中将逐一介绍•如:属性、方法、复合、继承等第2章对象的概念2020/2/18302.19重用代码•重用代码的目的:–开发更快速、简单–维护更容易(代码较少,人为错误就较少)–更健壮的代码(每次重用代码时,都会重复测试它,错误就会越来越少)第2章对象的概念2020/2/18312.19重用代码•常见的应用领域:–用户界面–数据库访问–分布式编程–输入/输出–网络访问–安全认证–2D/3D图形–电子邮件–图像处理、多媒体编码和解码等第2章对象的概念2020/2/18322.19重用代码•重用代码的形式:–重用系统中的函数–重用对象中的方法–重用系统中的类–在系统之间重用函数–在系统之间重用方法第2章对象的概念2020/2/18332.19重用代码•前提条件:–函数库–类库–设计模式–框架第2章对象的概念2020/2/18342.19重用代码•遵循的规则–样式规则–完整的文档说明–准备编写比需要更多的代码–使用模式和框架–设计客户-提供者对象–使每个对象只有一个目标:高聚合–把接口与业务行为分开–为问题和命令设计对象第2章对象的概念2020/2/18352.20小结•软件对象表示真实世界的物体,由属性来描述,可用执行行为•消息允许对象交流和协作,以完成人为•当创建对象的程序不再需要该对象时,垃圾收集会释放所占用的空间•类允许组合类似的对象,在相关对象之间共享元素的定义•重用代码可用使开发更快、更简单,获得更健壮的代码,更容易维护。

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功