第9章面向对象方法学引论.ppt

上传人:本田雅阁 文档编号:3137935 上传时间:2019-07-16 格式:PPT 页数:58 大小:912.03KB
返回 下载 相关 举报
第9章面向对象方法学引论.ppt_第1页
第1页 / 共58页
第9章面向对象方法学引论.ppt_第2页
第2页 / 共58页
第9章面向对象方法学引论.ppt_第3页
第3页 / 共58页
第9章面向对象方法学引论.ppt_第4页
第4页 / 共58页
第9章面向对象方法学引论.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《第9章面向对象方法学引论.ppt》由会员分享,可在线阅读,更多相关《第9章面向对象方法学引论.ppt(58页珍藏版)》请在三一文库上搜索。

1、第9章 面向对象方法学引论,计算机与信息工程学院 梁 颖,问题: 生产率发展缓慢 社会需求 软件重用程度低 软件难于维护 软件不能满足用户的需要 (不一致+不稳定),传统方法学存在的问题,原因: 僵化的瀑布模型 模糊的需求 + 缺乏沟通 + 过时 结构化技术的缺点偏差 用户需求-功能 软件设计-过程,传统方法学存在的问题,如果在软件工程过程的早期和全程采用面向对象技术,则该技术将产生更多的优势。仅仅使用面向对象程序设计(OOP)将不会产生最好的结果,软件工程师及其管理者必须考虑面向对象需求分析(OORA)、面向对象设计(OOD)、面向对象领域分析(OODA) 等。 Edward Berard,

2、面向对象方法学的引入,传统软件工程方法学,软件的生命周期为: 陈述需求阶段; 规格说明阶段; 设计阶段; 实现阶段; 维护阶段。 面向对象方法学,软件的生命周期为: 陈述需求阶段; 面向对象分析阶段; 面向对象设计阶段; 面向对象实现阶段; 维护阶段。,面向对象方法的出发点: 尽可能地模拟人的思维方式去解决问题 以对象为中心: 特殊 归纳 -一般 - 演绎 -特殊 问题空间与解空间的矛盾 客观世界的动态特性解空间的复杂算法 运动与实体的统一 解空间程序与数据的分离,面向对象方法学的引入,面向对象方法学的要点: 客观世界都是由对象组成的。 所有的对象都可以划分为抽象的类。 可按照子类与父类的关系

3、组成类的层次结构。 对象彼此间通过传递消息互相联系。,面向对象方法学的引入,Coad & Yourdon的定义(1991): OO=objects+classes+inheritance +communication with messages 面向对象方法:使用对象又使用类和继承机制,而且对象之间仅能通过传递消息实现彼此通信。 基于对象方法:使用 对象+消息。 基于类的方法:使用 对象+消息+类。,面向对象方法学的引入,面向对象方法学的优点: 与人类习惯的思维方法一致; 系统稳定性好; 可重用性好; 较易开发大型软件产品; 可维护性好。,面向对象方法学的引入,(1)与人类习惯的思维方法一致

4、传统的程序设计技术: 以算法为核心,数据和过程相分离。 面向对象的软件技术: 以对象为核心。对象是封装了描述内部状态表示静态属性的数据及这些对数据施加的操作。,面向对象方法学的引入,(2)系统稳定性好 传统的程序设计技术: 开发过程基于功能分析和功能分解,建立起来的软件结构紧密依赖系统功能,需求变化时引起软件结构的整体修改,因此软件系统不稳定。 面向对象的软件技术: 以对象为核心构造软件系统。对系统功能需求变化时不会引起软件结构的整体变化,仅需做一些局部性修改,软件系统稳定性较好。,面向对象方法学的引入,(3)可重用性好 传统的程序设计技术: 具有功能内聚性的模块,且其完成一个且只完成一个相对

5、独立的子功能,则该模块是理想的可重用模块。 面向对象的软件技术: 对象具有自含性、封装性和信息隐藏机制,使得对象内部与外界隔离,具有较强的独立性,对象是比较理想的模块和可重用的软件成分。,面向对象方法学的引入,思考:重用与重构的区别,面向对象方法学的引入,(4)较易开发大型软件产品 大型软件产品可分解成一系列相互独立的小产品来处理,降低了开发难度,同时开发管理变得很容易。,面向对象方法学的引入,(5)可维护性好 面向对象的软件稳定性比较好; 面向对象的软件比较容易修改; 面向对象的软件比较容易理解; 易于测试和调试。,面向对象方法学的引入,概念 对象(object): 一个包含数据结构和施加其

6、上的操作的封装体。 类(class): 对具有相同属性和行为的一个或多个对象的描述。 类中定义的数据(实体的性质),称为属性(Attribute) 类中的操作(服务),称为方法(Method) 实例(instance): 某个特定的类所描述的一个具体对象。 类是支持继承的抽象数据类型,对象是类的实例。,9.1 基本概念,9.1 基本概念,练习: 1.分析下列对象之间的关系 家具、沙发、衣柜、电视柜 服装、衬衣,裤子 家用电器、电视、DVD机、组合音响 2.为什么说夏利牌汽车是小汽车类的特化,而发动机不是小汽车类的特化?,基本概念,客观世界存在的两类关系:整体和部分的关系;一般和特殊的关系,消息

7、(message):消息是对象间交互的手段,消息刺激接收对象产生某种行为。 消息的构成:接收消息的对象;消息名;若干变元。 MyCircle.Show(GREEN) 方法(method): 对象所能执行的操作,即类中定义的服务。Show(int color)给出成员函数的实现代码 属性(attribute): 对客观世界实体所具有的性质的抽象。,基本概念,封装(encapsulation): 又称信息隐藏。用户只能见到对象封装界面上的信息,对象内部对用户是隐蔽的。封装的目的是将对象的使用者与设计者分开。封装有效的实现了模块化。 对象封装性的条件: 有一个清晰的边界; 有确定的接口; 受保护的内

8、部实现。,基本概念,继承(inheritance): 能够直接获得已有的性质和特征,而不必重复定义。软件重用的一种形式。,实现继承机制的原理,基本概念,一个子类从它的父类那里继承了所有的数据和操作,并扩充自己的特殊数据和操作。父类抽象出共同特征,子类表达差别。,基本概念,继承具有传递性: 若类C继承类B,类B继承类A,则类C继承类A。属于某类的对象除了具有该类所描述的性之外,还具有类等级中该类上层全部基类描述的一切性质。 采用继承机制的软件,进行修改: 扩充原有功能:在派生类中增加必要的程序代码; 改变原有操作:在派生类中实现一个与基类同名而算法不同的方法; 增加新的功能:在派生类中实现一个新

9、的方法。,基本概念,多态性(polymorphism): 类等级的不同层次可共享一个行为的名字,然后不同层次的类可按自己需要实现这个行为。 C+语言中,多态性是通过虚函数来实现的。虚函数机制可允许在一个类等级中使用相同函数的多个不同版本,运行时更具接收消息的对象所属的类决定执行哪个版本。,基本概念,重载(overloading) 函数重载:在同一个作用域内的若干个参数特征不同的函数可以使用相同的函数名字,表达了最简单的多态性。 如:void value(int); int value( ); 运算符重载:同一个运算符可以施加于不同类型的操作数上面。 如:两个整数使用+运算符表示它们要做加法,而

10、两个字符串可以使用+运算符则表示串连接。,基本概念,9.2 面向对象建模 模型:为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。 模型=图示符号+规则 利用符号和规则来定义和描述问题域中的术语和概念。,面向对象建模,面向对象方法开发软件,通常需要建立3种形式的模型: 对象模型:描述系统静态结构; 动态模型:描述系统控制结构; 功能模型:描述系统计算结构。,面向对象建模,9.3 对象模型描述系统数据结构 定义: 表示静态的、结构化的系统的“数据”性质。 是对模拟客观世界实体的对象以及对象彼此间关系的映射,描述了系统的静态结构。 表达: 建模语言:语言的优缺点;语言的细微差别,

11、面向对象建模,创始人 建模方法 James Rumbaugh OMT(对象建模技术) Ivar Jacobson OOSE(面向对象的软件工程) Grady Booch Booch(面向对象开发方法),面向对象建模,1996年6月,三位创始人设计出统一建模语言UML; 1997年,UML得到了业界的广泛采用,并被国际对象管理组织OMG采纳为基于面向对象技术的标准建模语言。,统一建模语言 (Unified Modeling Language,UML) UML是用来对软件密集系统进行可视化建模的一种语言。UML是为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。 UML贯穿软件开

12、发周期中的每一个阶段。UML最适于数据建模,业务建模,对象建模,组件建模。 最常用的UML图包括:用例图、类图、 状态图、 序列图、活动图、组件图和部署图。,面向对象建模,9.3 对象模型 UML中的类图 9.3.1 类图的基本符号 类图:描述类及类与类之间的静态关系。 类命名规则: (1)使用标准术语; (2)使用具有确切含义的名词; (3)必要时用名词短语作名字。,对象模型,表示类的图,表示,定义属性: UML描述属性的语法格式如下: 可见性 属性名: 类型名=初值性质串 公有的 + 表示属性的数据类型 私有的 - 保护的 #,对象模型,该属性所有可能取值,定义服务: UML描述操作的语法

13、格式如下: 可见性 操作名(参数表): 返回值类型性质串 公有的 逗号分隔 私有的 的形式参 保护的 数序列 描述参数的语法如下: 参数名:类型名=默认值,对象模型,9.3.2 表示关系的符号 类图由类及类与类之间的关系组成 类与类之间有4种关系: 关联;泛化(继承);依赖;细化。,对象模型,(1)关联 两个类的对象之间存在某种语义上的联系 普通关联:只要类与类之间存在连接关系就可以用普通关联表示。 符号:连接两个类之间的直线。,对象模型,普通关联示例,注:、:关联方向。通常关联是双向的,关联方向上可以起名字。, 关联的角色:关联的对象所扮演的角色(即所起的作用)。 注:若没有显式标出角色名,

14、则类名即角色名。,对象模型,(递归)关联的角色, 限定关联:在一对多或多对多的关联关系中,将模型的重数从一对多变成一对一或从多对多简化成多对一的关联。,对象模型,一个受限的关联,限定词, 关联类:为了说明关联的性质需要附加信息,这些信息均记录在关联类中。关联中的每个连接与关联类的一个对象相联系。,对象模型,关联类实例,(2)聚集(聚合) 关联的特例,表示类与类之间的关系 是整体与部分的关系 聚集可分为三类: 一般聚集;共享聚集;组合聚集。,对象模型, 一般聚集:陈述需求时使用“包含”、“组成”、 “分为.部分”表达的聚集关系。 共享聚集:如果在聚集关系中处于部分方的对象可同时参与多个处于整体方

15、对象的构成,则该聚集称为共享聚集。,对象模型,共享聚集示例, 组合聚集:如果部分类隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失,则该聚集称为组合聚集。,对象模型,组合聚集示例,(3)泛化(继承) 通用元素和具体元素之间的一种分类关系 具体元素完全拥有通用元素的消息,还可附加一些其他信息。 符号:用一端为空心三角形的连线表示,三角形的顶端紧挨着通用元素。 分类:普通泛化和受限泛化。,对象模型, 普通泛化(与“继承”概念基本相同) 概念: 抽象类:没有具体对象的类称为抽象类,通常作为父类,用于描述其他类(子类)的公共属性和行为。 具体类:有自己的对象,并且该类的操作都有具体的实现方法

16、。,对象模型,对象模型,抽象类示例,在操作标记后跟一个性质串标明,对象模型,复杂类图示例, 受限泛化 可以给泛化关系附加约束条件,以进一步说明该泛化关系的使用方法或扩充方法,这样的泛化关系称为受限泛化。 预定义的约束有4种:多重、不相交、完全和不完全。这些约束均是语义约束。,对象模型,多重泛化:一个子类可以同时多次继承同一个上层基类。 不相交泛化:一个子类不能多次继承同一个基类。若图中没有指定多重约束,则是不相交泛化,一般的继承都是不相交继承。 完全泛化:父类的所有子类都已在类图中穷举出来了,图示符号是指定完全约束。 不完全泛化:父类的子类并没有都穷举出来,随着问题的深入,可不断补充和维护,方

17、便系统日后的扩充和维护。,对象模型,多重继承示例,(4)依赖和细化 依赖关系 描述两个模型元素之间的语义连接关系:其中一个模型元素是独立的,另一个则依赖于独立的模型元素,若独立的模型元素改变了将影响依赖于它的模型元素。,对象模型,友元依赖关系,指向独立的类, 细化关系 当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。 细化用来写调不同阶段模型之间的关系,表示各个开发阶段不同抽象层次的模型之间的相关性,常用于跟踪模型的演变。,对象模型,细化关系示例,箭头方向,9.4 动态模型 UML中的状态图 表示瞬时的、行为化的系统的“控制”性质,规定了对象模型中的对象的合法变化序列 状态:对

18、象在生命(运行)周期中所处的阶段,状态是对对象属性值的一种抽象。状态代表时间间隔。 事件:对象之间的触发行为称为事件。事件表示时刻。 状态与事件密不可分,一个事件分开两个状态,一个状态分隔两个事件。,动态模型,表示,9.5 功能模型 UML中的用例图 表示变化的系统的“功能”性质,指明了系统应该“做 什么”,直接反映了用户对目标系统的需求 用例图:进行需求分析和建立功能模型的强有力的工具。由用例图建立的系统模型称为用例模型。 用例模型:描述的是外部行为者所理解的系统功能,描述了开发者和用户对需求规格所达成的一致。,功能模型,表示,9.5.1 用例图 模型元素:系统、行为者、用例及用例间的关系。

19、,功能模型,行为者,系统,用例,用于划定系统的功能范围,定义了系统所具有的功能。,可以被行为者感受到的、系统的一个完整的功能。,与系统交互的人或其他系统,代表外部实体,用例与行为者的联系,用例是一个类,代表一类功能而不是使用该功能的某个实例。 用例的实例是一种实际使用方法,称为脚本。脚本是系统的一次具体执行过程。 用例的特征: (1)代表某些用户可见的功能,实现一个具体的目标; (2)被行为者启动,并向行为者提供可识别的值; (3)用例必须是完整的。 行为者代表一种角色,而不是某个具体的人或物。,功能模型,用例之间的关系 UML用例之间主要有扩展和使用两种关系,他们是泛化关系的两种不同形式。,

20、功能模型,9.5.2 用例建模 创建用例模型:定义系统、寻找行为者和用例、描述用例、定义用例之间的关系、确认模型。,功能模型,9.6 3种模型之间的关系 功能模型:系统应该“做什么”; 动态模型:明确规定系统执行某功能的时间; 对象模型:定义了执行功能的实体。(最基本最重要的) 3种模型之间的关系:见P219。,功能模型,练习: 面向对象的编程语言的出现以60年代的(A)为标志;80年代Xerox研究中心推出了(B)语言。面向对象分析与设计的实质是一种(C)的技术,其实质并不是从(D)或算法方面考虑,而是从(E)上来进行分解。 备选答案: A、B C+ Smalltalk SIMULA OMT C 系统建模 系统分解 D、E 结构 功能 方法 系统的组成 答案 32124,面向对象方法学导论, The End ,面向对象方法学引论,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1