- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
抽象和建模抽象实现简化.ppt
软件设计核心思想;一、 抽象和建模;抽象的例子:交通图。并未标明地面上的所有对象。
相同地区的交通图、气象图和人口密度分布图:提炼出的特征完全不同,它与使用地图的人的要求相对应。
同一个地方:艺术家欣赏的可能是它的色彩、纹理等;建筑师欣赏的可能是它的位置,一个建筑工程可能要铲掉一些树;而生态学家欣赏的可能是动植物的品种和特征;小孩子欣赏的则可能是在哪棵树上最适宜放一个小风车。;抽象实现概括
通过抽象去掉细节,可形成用于特殊环境下的普遍知识。; 这个简化图并不包含一个真正的细胞的全部组成,但是,课堂上常用这样的图来描述细胞的结构。实际上,细胞还分成许多种类,如神经元细胞、肌肉细胞或白细胞等等,图中的特征是所有细胞共有的。;分级分类抽象
现实中抽象出来的东西往往非常多,为了应付这种复杂性,我们通常??信息分类。 ; 给定的时刻只考虑一个层次,也就是一个子集(或子树)。如果只关心哺乳动物,则集中在哺乳动物子树上。进一步简化的分类图涉及的对象只有4个,而不是原来的13个。不论分层的对象多复杂,这样都可以处理。;抽象是软件开发的基础
软件系统开发是从搜集信息开始的,要判断哪些是可以实现的,哪些是不能实现的。
如果不能抓住重要的特征,包含的细节太多,会使未来的软件系统过于复杂,给设计、编程、调试、测试、文档编制、维护和扩展带来困难。;抽象的复用
当我们学习新知识的时候,会在大脑中有哪些信誉好的足球投注网站已有的知识,以便能够找到可利用的相似性。
例如,第一次学习骑两轮自行车时,可能会利用小时侯骑三轮童车的经验:它们都有控制方向的手把,驱动自行车的脚踏板。但是这两种车并不完全一样,两轮车需要更高的身体平衡技巧。这样,在原来已经掌握的技能基础上,还要学习身体平衡的新技能。; 这种通过对特性进行比较发现相似的抽象,并再次成功使用该抽象的技术称为模式匹配和复用。模式重用对于面向对象软件开发来说是一个非常重要的技术,它可以使我们避免对每一个工程从头做起。如果能够重用前面工程中的抽象或模型的话,那么,就可以把重点放在新工程与老工程不同的地方上,从而节省大量的时间。;挑战
虽然抽象是认识事物的很自然的过程,但是,获得一个好的抽象,建立一个正确的软件系统模型也许是软件工程中最困难的问题:
抽象有很多可能性。不同的人肯定得出不同抽象模型,谁的模型最好?
最好的和正确的模型可能不只一个。对一个具体问题的模型,很难说是最好的,只是更好或更差的。
;很难测试一个模型是不是满足了用户的全部需求。
软件开发初期,很难保证开发人员与用户对相同问题的理解是一致的。
开发人员内部,也很难对同一问题的理解是一致的。
软件开发期间修改软件比在软件完成后修改,代价小得多。抽象建模,应尽可能满足软件可能发生的变化。;二、 对象和类; 功能分解
面向对象之前的软件设计方法称为(自顶向下)功能分解。。; 然后各功能模块分派给不同的程序员进行编码和测试。最后将这些功能以模块的形式自底向上装配到一起,并在装配过程中测试各个阶段的结果,直到建立一个完整的程序。
使用功能分解方法进行软件设计时,首先关注的是应用程序将要执行的功能,数据只是事后的想法。
数据从一个函数传递到另一个函数
数据结构在贯穿应用程序的很多地方都必须能够理解(即被很多函数理解)。; 如果在程序投入使用后需要修改数据结构,通常会在整个应用程序中引起显著的连锁反应。Y2K危机是一个数据结构变化而产生连锁效应的例子。在2000年1月1日前,几十亿美元的资金被用来找出和修补那些可能会造成惨重损失的连锁效应。
在一个应用程序投入使用前,不管怎样测试,bug总会蔓延到未经测试的部分。在应用程序已经被完全整合后,要精确地查明错误可能发生的地方是非常困难的,因为该数据已多次从一个函数传递到另一个函数。;面向对象的方法
面向对象的方法很大程度上弥补了上述缺点:
首先关注的是数据结构,其次才是功能。
数据被封装在对象内部,因此数据结构只需要其所属对象理解。
如果应用程序投入使用后数据结构必须修改,不会产生连锁效应,只需修改受影响对象的内部逻辑。
每个对象负责保证自己数据的完整性。; 什么是对象
现代汉语词典是这样定义的:① 行动或思考时作为目标的人或事物。② 特指恋爱的对方。
第一种定义说明对象是可以被看到、触摸到并占一定物理空间的实实在在的东西。如果前者称为物理对象,在软件中的对象还包括不能通过视觉、听觉、味觉或触觉器官感觉到的东西,称为概念对象,例如学生选修了什么课程,教师在哪一个系等。; 软件对象指的是将数据(或状态、属性)和功能(或行为、操作、方法)封装为一体的结构,合在一起代表现实世界(包括物理的和概念的)对象的一个抽象。;类
类是一组有共同特性的对象的抽象的描述。一个类
文档评论(0)