统一建模语言UML第二版课件

上传人:飞*** 文档编号:52579090 上传时间:2018-08-23 格式:PPT 页数:32 大小:457.50KB
返回 下载 相关 举报
统一建模语言UML第二版课件_第1页
第1页 / 共32页
统一建模语言UML第二版课件_第2页
第2页 / 共32页
统一建模语言UML第二版课件_第3页
第3页 / 共32页
统一建模语言UML第二版课件_第4页
第4页 / 共32页
统一建模语言UML第二版课件_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《统一建模语言UML第二版课件》由会员分享,可在线阅读,更多相关《统一建模语言UML第二版课件(32页珍藏版)》请在金锄头文库上搜索。

1、课程计划,课程名称:面向对象分析与设计 学 时:32学时 学 分:2学分 课程性质:专业选修课程 选用教材:袁涛 孔蕾蕾编著统一建模语言UML 清华大学出版社. 2012. 9,教学计划,主要参考书: 1、郭宁编著:UML及建模清华大学出版社,北京交通大学出版社 2007年1月 2、王少锋编著:面向对象技术UML教程 清华大学出版社. 2006.7,教学大纲,本课程根据计算机科学与技术专业本科教学的需要,总结与吸收国内外有关研究成果,从理论与实践相结合方面介绍面向对象技术,在阐述面向对象的理论的同时,采用UML语言进行实例分析与设计,使学生学完本课程,既掌握了面向对象的理论,又能用标准的面向对

2、象的方法解决实际问题。,教学大纲,课程的要点有:面向对象思想的由来;面向对象的理念;面向对象系统的特性;UML基本元素;UML用例图;交互作用图;活动图;类图与对象图;状态图;组件图与配置图;图形语义、功能和应用。,教学大纲,学完本课程,学生在面向对象理论的基础上可采用统一建模语言(UML)来对软件系统进行描述、构造、可视化和文档编制,进入计算机应用软件开发的前沿。,考核方式,研究论文: 结合实际课题,依照本课程所学的技术方法,进行软件分析设计,撰写相应的文档,争取发表一篇论文。,第1章 面向对象技术概述,11 软件危机及软件工程 12 对软件开发的基本认识 13 软件的固有复杂性 14 控制

3、软件复杂性的基本方法 15 面向对象技术 16 面向对象领域中的基本概念,11 软件危机及软件工程,20世纪60年代中期开始爆发的软件危机 , 经过五十多年的探索和发展,软件工程这门学科有了长足进展,但软件危机依然存在,而且有越来越严重的趋势。大量事实说明,软件的质量和生产率问题远没有得到解决,与五十多年前的软件相比,现在的软件在规模、复杂性等方面远远超过以前的软件,大型软件开发中许多问题,如开发效率低、产品质量差、产品难以维护、软件可移植性差、开发费用超过预算、开发时间超期等依然存在。,11 软件危机及软件工程,就国内外软件开发现状而言,对于小型软件系统,有比较好的开发方法,成功率也较高,但

4、对于中大型软件系统的开发,情况则不尽如人意,在开发效率、开发费用、产品质量等重要方面部不能令人满意。,11 软件危机及软件工程,针对大型软件系统开发中存在的问题,人们提出了各种各样的软件开发方法,如瀑布式软件开发方法、快速原型方法、螺旋式软件开发方法、变换式软件开发方法、增量式软件开发方法、净室(cleanroom)软件开发方法、喷泉式软件开发方法等。但这些方法并未完全解决软件危机的问题,都存在这样或那样的问题,软件危机依然存在。,12 对软件开发的基本认识,大型软件系统的特点是:开发代价高,开发时间长,参加开发的人员多,软件生命周期长。采用传统的软件工程方法开发大型软件存在开发效率低、产品质

5、量差、产品难以维护、软件可移植性差、软件可重用性低等问题。,12 对软件开发的基本认识,一个软件系统的开发可以从两个方面进行刻画,一方面是软件开发过程,从软件需求、总体设计、详细设计、代码实现、测试到最终产品的提交,以及后期的软件维护及再开发过程,这方面要求软件开发具有连续性,开发各阶段得到的产品要求在理辑上相互一致:另一方面是软件开发过程中所涉及的各种资源,它们包括参与开发的各种工作人员、硬件资源和软件资源,这些资源在使用过程中需要进行协调和管理。,12 对软件开发的基本认识,正是这两个方面之间的相互作用,形成了完整的软件开发话动。目前软件开发中存在的问题,究其原因,往往是由于在这两个方面上

6、控制不当,或协调不一致造成的。 软件工程的目的就是要在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统。,13 软件的固有复杂性,软件具有与硬件表现形式不同、生产方式不同、产品要求不同及维护方式不同的特点。 软件的特点说明了软件开发的复杂性和因难性。著名的计算机专家、被称之为IBM 360系列计算机之父的FBrooks认为软件的复杂性是固有的,软件可能是人类所能制造出来的最复杂的实体。导致软件复杂性的原因很多,下面列出一些主要的原因。,13 软件的固有复杂性,首先,软件的复杂性和计算机的体系结构有关。其次,软件开发是人的一种智力活动,软件系统从本质上来说是由许多相互联系的概念所

7、组成的结构。 第三,造成软件系统复杂性的另一个原因是,软件系统中各元素之间的相互作用关系具有不确定性。 第四,由于软件没有固定的形式与坚硬的外壳,人们普遍认为软件系统是软”的,似乎可以随意扩充和修改。 第五,规模较大的软件系统的生命周期一般都超过相应硬件系统的生命周期。,14 控制软件复杂性的基本方法,软件的复杂性不是因为某个软件系统要解决一个特定的复杂问题而偶然产生的,它是大型软件系统的一个固有的本质特征,软件的开发过程必然会受到软件复杂性的影响。 正因为软件的复杂性是固有的,人们无法彻底消除这些复杂性,因此只能采用控制复杂性的方法,尽量减少软件复杂性对软件开发过程的影响,而分解、抽象、模块

8、化、信息隐蔽等是控制软件复杂性的有效方法。,15 面向对象技术,面向对象(object-oriented,OO)技术充分体现了分解、抽象、模块化、信息隐蔽等思想,可以有效地提高软件生产率、缩短软件开发时间、提高软件质量,是控制软件复杂性的有效途径。 与传统的结构化软件开发方法相比,面向对象软件开发方法在描述和理解问题域时采用截然不同的方法。其基本思想是,对问题域进行自然分割,以更接近人类思维的方式建立问题域模型,从而使设计出的软件尽可能直接地描述现实世界,具有更好的可维护性能适应用户需求的变化。,15 面向对象技术,在面向对象方法中,分析和设计阶段采用一致的概念和表示法,面向对象的分析和面向对

9、象的设计之间不存在鸿沟,这是与结构化分析和设计方法的一个很大区别。,15 面向对象技术,一般认为,面向对象分析和设计是以对象的观点看待问题域,其解决问题的思维过程和结构化分析及设计方法在本质上是有区别的,但早期提出的适用于结构化分析和设计的一些概念,如高内聚、低耦合、有意识地推迟设计决策等,同样可适用于面向对象分析和设计。也就是说,面向对象方法和结构化方法还是存在一定的联系。目前学术界关于面向对象方法对结构化方法来说究竟是“革命性”的还是“演化性”的不同的人有不同的观点。一般来说,认为是“演化性”的人多一些。,16 面向对象领域中的基本概念,面向对象软件开发方法中有很多传统软件开发方法所没有的

10、概念和术语。这些概念和术语包括:对象、实例、类、属性、方法、封装、继承、多态、消息等。,161 对象和实例,对象(object)是系统中用来描述客观事物的一个实体,它是构成系统的基本单位。一个对象由一组属性和对这组同性进行操作的一组方法组成。 对象只描述客观事物本质的、与系统目标有关的特征,而不考虑那些非本质的、与系统目标无关的特征。 对象之间通过消息通信。一个对象通过向另一个对象发送消息激活某一个功能。实例(instance)这个概念和对象很类似。在UML中,会经常遇到实例这个术语。一般来说,实例这个概念的含义更广泛一些,它不仅仅是对类而言,其他建模元素也有实例。如类的实例就是对象,而关联的

11、实例就是链 。,162 类,类(class)是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。类是静态的,类的语义和类之间的关系在程序执行前就已经定义好了,而对象是动态的,对象是在程序执行时被创建和删除的。,163 封装,封装(encapsu1ation)就是把对象的属性和方法结合成独立的系统单位,并尽可能地隐蔽对象的内部细节。封装使一个对象形成两个部分:接口部分和实现部分。对于用户来说,接口部分是可见的,而实现部分是不可见的。 封装提供了两种保护。首先封装可以保护对象,防止用户直接存取对象的内部细节;其次封装也保护了客户端,防止对象实现部分的变化可能产生的副作

12、用,即实现部分的改变不会影响到相应客户端的改变。,164 继承,利用继承(inheritance),子类可以继承父类的属性或方法。类父类称作特殊类/一般类、子类超类、派生类基类等。 继承增加了软件重用的机会,可以降低软件开发和维护的费用,而继承是OO技术和非OO技术的一个很明显的区别。所以很多人认为OO技术的目的就是为了重用,这是一个很流行的关于面向对象技术和软件重用的误解。确实,采用OO技术可以增加软件重用的机会,但OO技术并不等于软件重用技术,软件重用技术也不等于OO技术 。,164 继承,两者之间并不存在相互包含的关系,OO技术既不是重用技术的充分条件,也不是重用技术的必要条件。,164

13、 继承,利用继承可以开发更贴近现实的模型,使得模型更简洁。继承的另一个好处是可以保证类之间的一致性,父类可以为所有子类定制规则,子类必须遵守这些规则。许多面向对象的程序设计语言提供了这种实现机制,如c+中的虚函数,Java中的接口等。,164 继承,在子类中可以增加或重新定义所继承的属性或方法,如果是重新定义,则称为覆盖(override)。与覆盖很类似的一个概念是重载(overload),重载指的是一个类中有多个同名的方法,但这些方法在操作数或和操作数的类型上有区别。覆盖和重裁是OO技术中很常见的两个术语,也很容易混淆。,164 继承,继承可分为单继承和多继承。单继承指的是子类只从一个父类继

14、承,而多继承指的是子类从多于一个的父类继承。,165 多态,从字而上理解,多态(polymorphism)就是有多种形态的意思。在面向对象技术中,多态指的是使一个实体在不同上下文条件下具有不同意义或用法的能力。多态往往和覆盖、动态绑定(dynamic binding)等概念结合在一起。多态属于运行时的问题,而重载(overload)是编译时的问题。,165 多态,如图16所示是多态的例子。在图16的继承结构中,可以声明一个graph类型对象的变量,但在运行时,可以把circle类型或Rectangle Rectangle类型的对象赋给该变量。,165 多态,也就是说,该变量所引用的对象在运行时

15、会有不同的形态。如果调用draw()方法,则根据运行时该变量是引用Circle还是Rectangle,来决定调用Circle中的draw()方法还是Rectangle中的draw()方法。 多态是保证系统具有较好适应性的一个重要手段,也是使用OO技术所表现出来的一个重要特征。,166 消息,消息(message)就是向对象发出的服务请求。它包含了提供服务的对象标识、服务(方法)标识、输入信息和回答信息等。面向对象方法的一个原则就是通过消息进行对象之间的通信。初学面向对象方法的人往往把消息等同于函数调用,事实上两者之间存在区别。 消息可以包括同步消息和异步消息,如果消息是异步的,则一个对象发送消息后,就继续自己的活动,不等待消息接收者返回控制,而函数调用往往是同步的,消息的发送者要等待接收者返回。 使用消息这个术语更接近入们日常思维,且其含义更具有一般性。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 其它考试类文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号