《面向对象分析与设计优秀PPT.ppt》由会员分享,可在线阅读,更多相关《面向对象分析与设计优秀PPT.ppt(108页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象分析与设计1 1第一页,本课件共有108页第一章第一章 绪论绪论1.1 1.1 面向对象方法基本思想面向对象方法基本思想1.2 1.2 面向对象方法发展简史面向对象方法发展简史1.3 1.3 面向对象方法的基本概念和原则面向对象方法的基本概念和原则1.4 1.4 面向对象软件系统模型面向对象软件系统模型2 2第二页,本课件共有108页1.1 1.1 面向对象方法基本思想面向对象方法基本思想 以以功能为中心功能为中心的软件开发方法(结构化方法)的软件开发方法(结构化方法)以以数据为中心数据为中心的软件开发方法(信息建模方法)的软件开发方法(信息建模方法)低内聚,高耦合,缺乏灵活性和可维护
2、性低内聚,高耦合,缺乏灵活性和可维护性分析与设计阶段采用的概念和表示不一致分析与设计阶段采用的概念和表示不一致对功能的处理较弱,不适合具有复杂功能的系对功能的处理较弱,不适合具有复杂功能的系统统3 3第三页,本课件共有108页n n以事物为中心以事物为中心以事物为中心以事物为中心 将数据与对数据的操作看作一个整体,即对象将数据与对数据的操作看作一个整体,即对象将数据与对数据的操作看作一个整体,即对象将数据与对数据的操作看作一个整体,即对象n n是一种认识论、方法论是一种认识论、方法论n n是一种运用是一种运用对象、类、继承、封装、聚合、关联、消对象、类、继承、封装、聚合、关联、消息和多态性息和
3、多态性等概念和原则来构造系统的软件开发方法,等概念和原则来构造系统的软件开发方法,等概念和原则来构造系统的软件开发方法,等概念和原则来构造系统的软件开发方法,其要点是其要点是其要点是其要点是 (1)认识事物及其相互关系)认识事物及其相互关系 (2)对事物归类,并实现继承)对事物归类,并实现继承 (3 3)强调事物的自主性)强调事物的自主性)强调事物的自主性)强调事物的自主性面向对象方法基本思想面向对象方法基本思想4 4第四页,本课件共有108页n n高可维护性:高可维护性:高可维护性:高可维护性:回避在不稳定的基础上建造系统。寻找可回避在不稳定的基础上建造系统。寻找可回避在不稳定的基础上建造系
4、统。寻找可回避在不稳定的基础上建造系统。寻找可构造的元素作为系统构造的基础,可构造元素的变化不会构造的元素作为系统构造的基础,可构造元素的变化不会构造的元素作为系统构造的基础,可构造元素的变化不会构造的元素作为系统构造的基础,可构造元素的变化不会涉及到系统的其它成分,不会影响到整体。涉及到系统的其它成分,不会影响到整体。涉及到系统的其它成分,不会影响到整体。涉及到系统的其它成分,不会影响到整体。n n可复用性:可复用性:功能复用是代码级的,它基于必要的功能理解,功能复用是代码级的,它基于必要的功能理解,功能复用是代码级的,它基于必要的功能理解,功能复用是代码级的,它基于必要的功能理解,然而功能
5、的语义是不一致的、多义的。软件复用是全方位的,然而功能的语义是不一致的、多义的。软件复用是全方位的,然而功能的语义是不一致的、多义的。软件复用是全方位的,然而功能的语义是不一致的、多义的。软件复用是全方位的,不但是代码级的复用,还应该有源程序级的复用,甚至包括分不但是代码级的复用,还应该有源程序级的复用,甚至包括分不但是代码级的复用,还应该有源程序级的复用,甚至包括分不但是代码级的复用,还应该有源程序级的复用,甚至包括分析和设计文档的复用。析和设计文档的复用。析和设计文档的复用。析和设计文档的复用。n n程序无关性:程序无关性:任何机器环境下,使用任意程序语言所编的任何机器环境下,使用任意程序
6、语言所编的任何机器环境下,使用任意程序语言所编的任何机器环境下,使用任意程序语言所编的程序,程序,程序,程序,都应该是逻辑通用的。与机器相关的成分应该与处都应该是逻辑通用的。与机器相关的成分应该与处都应该是逻辑通用的。与机器相关的成分应该与处都应该是逻辑通用的。与机器相关的成分应该与处理逻辑无关。理逻辑无关。理逻辑无关。理逻辑无关。面向对象软件开发方法的目标面向对象软件开发方法的目标5 5第五页,本课件共有108页1.2 1.2 面向对象方法发展简史面向对象方法发展简史 源于面向对象程序设计语言源于面向对象程序设计语言 1967,Simula67 1970s,Smalltalk,Modula
7、1980s-90s,C+,Objective-C,Eiffel,java 向分析、设计甚至测试、维护等整个软件生命向分析、设计甚至测试、维护等整个软件生命 周期扩展周期扩展 1990s,统一建模语言(,统一建模语言(Unified Modeling Language,UML)诞生)诞生6 6第六页,本课件共有108页1.3 1.3 面向对象方法的基本概念和原则面向对象方法的基本概念和原则 基本概念基本概念 类与对象,属性与操作,继承、聚合和关联类与对象,属性与操作,继承、聚合和关联 基本原则基本原则 抽象,分类,封装,消息,多态性抽象,分类,封装,消息,多态性7 7第七页,本课件共有108页
8、对象(属性与操作,封装与消息)对象(属性与操作,封装与消息)客观存在的事物,包括有形客观存在的事物,包括有形客观存在的事物,包括有形客观存在的事物,包括有形对象和无形对象对象和无形对象 在在面面向向对对象象的的系系统统模模型型中中,对对象象是是描描述述客客观观事事物的一个实体,由属性和操作构成。物的一个实体,由属性和操作构成。属性:描述对象静态特征属性:描述对象静态特征属性:描述对象静态特征属性:描述对象静态特征 操作:描述对象动态特征操作:描述对象动态特征操作:描述对象动态特征操作:描述对象动态特征 体体现现了了封封装装原原则则,目目的的是是实实现现信信息息隐隐蔽蔽(事事物物的的独立自主性)
9、。独立自主性)。可见性:暴露属性和操作的方式可见性:暴露属性和操作的方式可见性:暴露属性和操作的方式可见性:暴露属性和操作的方式 消息:请求其他对象提供服务的方式,如函数调用消息:请求其他对象提供服务的方式,如函数调用消息:请求其他对象提供服务的方式,如函数调用消息:请求其他对象提供服务的方式,如函数调用8 8第八页,本课件共有108页 类(抽象,分类)类(抽象,分类)类类是是具具有有共共同同属属性性和和操操作作的的对对象象的的集集合合,对对象象是类的一个实例,类用于创建对象。是类的一个实例,类用于创建对象。体体现现了了抽抽象象及及分分类类原原则则,是是人人们们分分析析问问题题的的基基本本方方
10、法法 抽象:忽略事物的非本质特征,抽取共同的本质特征抽象:忽略事物的非本质特征,抽取共同的本质特征抽象:忽略事物的非本质特征,抽取共同的本质特征抽象:忽略事物的非本质特征,抽取共同的本质特征 分类:把具有共性的事物划分为一类分类:把具有共性的事物划分为一类分类:把具有共性的事物划分为一类分类:把具有共性的事物划分为一类9 9第九页,本课件共有108页 抽象抽象 类是对象的抽象,一般类是对特殊类的抽象类是对象的抽象,一般类是对特殊类的抽象 数据抽象:数据抽象:数据抽象:数据抽象:根据施加在数据上的操作来定义数据的类型根据施加在数据上的操作来定义数据的类型根据施加在数据上的操作来定义数据的类型根据
11、施加在数据上的操作来定义数据的类型 过过程程抽抽象象:将将将将确确确确定定定定的的的的功功功功能能能能定定定定义义义义为为为为单单单单一一一一实实实实体体体体(确确确确定定定定的的的的功功功功能能能能是是是是由由由由一系列操作完成的)一系列操作完成的)一系列操作完成的)一系列操作完成的)抽象的好处:抽象的好处:1 1 1 1)复杂问题简单化)复杂问题简单化)复杂问题简单化)复杂问题简单化 2 2 2 2)实现可替换性)实现可替换性)实现可替换性)实现可替换性1010第十页,本课件共有108页例例2 2:对下列事物进行分类和抽象:对下列事物进行分类和抽象显微镜、摩天楼、望远镜、飞机、铆钉、显微镜
12、、摩天楼、望远镜、飞机、铆钉、管道、卡车、管道、卡车、单向阀、指数、过滤器、压力器、单向阀、指数、过滤器、压力器、自行车、正旋、自行车、正旋、岩洞、眼镜、车库、岩洞、眼镜、车库、滑翔机、平方根、铁钉、水龙头、滑翔机、平方根、铁钉、水龙头、螺钉、螺钉、余旋、螺栓、余旋、螺栓、帐篷、双筒镜、车棚、杂物堆房、帐篷、双筒镜、车棚、杂物堆房、摩托车、帆船、瞄准器摩托车、帆船、瞄准器例例1 1:数据抽象和过程抽象:数据抽象和过程抽象 数据抽象:数据抽象:学生、客户、电子邮件、汽车学生、客户、电子邮件、汽车过程抽象:交易、答辩、备课、开门过程抽象:交易、答辩、备课、开门1111第十一页,本课件共有108页光
13、学设备类:显微镜、眼镜、望远镜、瞄准器、双筒镜光学设备类:显微镜、眼镜、望远镜、瞄准器、双筒镜管道控制类:管道、单向伐、水龙头、过滤器、压力器管道控制类:管道、单向伐、水龙头、过滤器、压力器交通工具类:自行车、帆船交通工具类:自行车、帆船、卡车、飞机、滑翔机、摩托车、卡车、飞机、滑翔机、摩托车五金类:五金类:铁钉、螺钉、螺栓、铆钉铁钉、螺钉、螺栓、铆钉建筑类:建筑类:帐篷、岩洞、车棚、车库、杂物堆房、摩天楼帐篷、岩洞、车棚、车库、杂物堆房、摩天楼数学概念类:平方根、指数、正旋、余旋数学概念类:平方根、指数、正旋、余旋 光学设备类:聚焦度、变焦长度、单双镜形式、用途功能光学设备类:聚焦度、变焦长
14、度、单双镜形式、用途功能管道控制类:时速、功率,动力资源、消耗、用途、管道控制类:时速、功率,动力资源、消耗、用途、五金类:五金类:材料、直径、长度、硬度、用途材料、直径、长度、硬度、用途建筑类:建筑类:面积、高度、材料、用途面积、高度、材料、用途数学概念类:概念定义、公式内容、用途数学概念类:概念定义、公式内容、用途 抽取同类事物的共同性质:抽取同类事物的共同性质:分类:分类:1212第十二页,本课件共有108页继承继承 在不同程度上运用抽象和分类原则,可以得到较在不同程度上运用抽象和分类原则,可以得到较一般的类和较特殊的类。一般的类和较特殊的类。继承继承继承继承:特殊类自动拥有一般类所具有
15、的全部属性和操作,特殊类自动拥有一般类所具有的全部属性和操作,特殊类自动拥有一般类所具有的全部属性和操作,特殊类自动拥有一般类所具有的全部属性和操作,也可称为一般类对特殊类的泛化。也可称为一般类对特殊类的泛化。也可称为一般类对特殊类的泛化。也可称为一般类对特殊类的泛化。多重继承多重继承多重继承多重继承:一个特殊类同时继承两个以上一般类的属性和一个特殊类同时继承两个以上一般类的属性和一个特殊类同时继承两个以上一般类的属性和一个特殊类同时继承两个以上一般类的属性和操作操作操作操作 继承的继承的继承的继承的重要作用重要作用:1 1 1 1)简化对事物的认识和描述)简化对事物的认识和描述)简化对事物的
16、认识和描述)简化对事物的认识和描述 2 2 2 2)有利于软件复用)有利于软件复用)有利于软件复用)有利于软件复用1313第十三页,本课件共有108页学生学生姓名姓名年龄年龄研究生研究生导师导师研究方向研究方向本科生本科生班级班级专业专业人员人员姓名姓名年龄年龄研究生研究生导师导师研究方向研究方向职工职工部门部门职务职务在职研究生在职研究生运输工具运输工具轮船轮船车辆车辆飞机飞机卡车卡车轿车轿车继承:继承:多继承:多继承:继承层次:继承层次:1414第十四页,本课件共有108页多态性多态性 多态性:多态性:特殊类可以对继承来的属性和特殊类可以对继承来的属性和操作做出自己的解释,即在继承关系的类
17、操作做出自己的解释,即在继承关系的类层次结构中可以定义同名操作或属性,形层次结构中可以定义同名操作或属性,形成同一操作或属性的多种形态,这样可以成同一操作或属性的多种形态,这样可以按不同的行为响应同一个消息。按不同的行为响应同一个消息。多态性进一步体现了信息隐蔽的原则,多态性进一步体现了信息隐蔽的原则,可以实现接口的独立封装。可以实现接口的独立封装。1515第十五页,本课件共有108页关联关联 关联表示类之间的静态联系。关联表示类之间的静态联系。当当类类实实例例化化为为对对象象后后,关关联联实实例例化化为为对对象象之之间间的链。的链。可以通过属性来表达关联。可以通过属性来表达关联。职员职员公司
18、公司关联:关联:工作工作1616第十六页,本课件共有108页聚合聚合 聚聚合合表表示示对对象象之之间间的的整整体体部部分分关关系系,具具有有“有有 一个一个”或或“是一部分是一部分”的语义的语义 聚合也是一种关联。聚合也是一种关联。汽车汽车发动机发动机车轮车轮聚合:聚合:1717第十七页,本课件共有108页系统复杂性控制(包)系统复杂性控制(包)包包用用于于控控制制系系统统的的粒粒度度,将将系系统统组组成成元元素素组组织织到到不不同同的的包包中中,可可以以方方便便系系统统整整体体规规划划,减减小小系系统分析和设计的复杂性。统分析和设计的复杂性。系统行为分析(状态转换与交互)系统行为分析(状态转
19、换与交互)系系统统运运行行中中对对象象的的属属性性值值会会不不断断发发生生变变化化,从从而而形形成成对对象象的的不不同同状状态态。描描述述对对象象状状态态的的转转换换,可可以确定对象的行为完整性;以确定对象的行为完整性;系系统统中中对对象象必必须须相相互互协协作作以以完完成成某某项项功功能能,描描述述对对象象间间的的交交互互,可可以以表表示示系系统统实实现现功功能能的的整整体行为以及对象之间的并行性。体行为以及对象之间的并行性。1818第十八页,本课件共有108页 实现高可维护性:实现高可维护性:实现高可维护性:实现高可维护性:1 1 1 1)类是封装了操作的一个类是封装了操作的一个类是封装了
20、操作的一个类是封装了操作的一个“代码级复用代码级复用代码级复用代码级复用”程序模板程序模板程序模板程序模板 ,类的使用,如同数据变量一,类的使用,如同数据变量一,类的使用,如同数据变量一,类的使用,如同数据变量一样简单。类的对象可成为系统的构造元素。样简单。类的对象可成为系统的构造元素。样简单。类的对象可成为系统的构造元素。样简单。类的对象可成为系统的构造元素。2 2 2 2)对于对于对于对于“对象变量对象变量对象变量对象变量”的操作不同于程序调用,采用了消息,的操作不同于程序调用,采用了消息,的操作不同于程序调用,采用了消息,的操作不同于程序调用,采用了消息,“消息消息消息消息”是并发的机是
21、并发的机是并发的机是并发的机制,回避了功能调用的过程性,使系统成为可构造和高可维护的制,回避了功能调用的过程性,使系统成为可构造和高可维护的制,回避了功能调用的过程性,使系统成为可构造和高可维护的制,回避了功能调用的过程性,使系统成为可构造和高可维护的 实现可复用性:实现可复用性:实现可复用性:实现可复用性:1 1)对象语义的表示唯一,这使得代码级的复用简单且自然。)对象语义的表示唯一,这使得代码级的复用简单且自然。)对象语义的表示唯一,这使得代码级的复用简单且自然。)对象语义的表示唯一,这使得代码级的复用简单且自然。2 2)类继承性是源程序级的复用机制,允许用已有的程序构架,简单地构造新的应
22、)类继承性是源程序级的复用机制,允许用已有的程序构架,简单地构造新的应)类继承性是源程序级的复用机制,允许用已有的程序构架,简单地构造新的应)类继承性是源程序级的复用机制,允许用已有的程序构架,简单地构造新的应用,并仍保持易维护性。用,并仍保持易维护性。用,并仍保持易维护性。用,并仍保持易维护性。实现程序无关性:实现程序无关性:实现程序无关性:实现程序无关性:类的多态性以及动态绑定(动态联编)技术,是面向对象方法有别于结构化方类的多态性以及动态绑定(动态联编)技术,是面向对象方法有别于结构化方类的多态性以及动态绑定(动态联编)技术,是面向对象方法有别于结构化方类的多态性以及动态绑定(动态联编)
23、技术,是面向对象方法有别于结构化方法的实质性突破。它提供独立接口的实现技术,这样可以将与机器相关的成分法的实质性突破。它提供独立接口的实现技术,这样可以将与机器相关的成分法的实质性突破。它提供独立接口的实现技术,这样可以将与机器相关的成分法的实质性突破。它提供独立接口的实现技术,这样可以将与机器相关的成分独立出来,为程序无关性奠定了基础。独立出来,为程序无关性奠定了基础。独立出来,为程序无关性奠定了基础。独立出来,为程序无关性奠定了基础。面向对象方法实现其目标的途径面向对象方法实现其目标的途径1919第十九页,本课件共有108页1.4 1.4 面向对象软件系统模型面向对象软件系统模型系统模型系
24、统模型 为了理解和实现所要建造的软件系统,对系统及其工作为了理解和实现所要建造的软件系统,对系统及其工作 环境的环境的简化和形式化描述。简化和形式化描述。一个完整的软件系统模型通常包括若干不同层次、一个完整的软件系统模型通常包括若干不同层次、不同视角的模型不同视角的模型 层次:系统的抽象程度层次:系统的抽象程度 视角:系统的不同方面(交互、功能、实现、组织视角:系统的不同方面(交互、功能、实现、组织)2020第二十页,本课件共有108页面向对象模型视图面向对象模型视图用况视图用况视图进程视图进程视图部署视图部署视图设计视图设计视图实现视图实现视图结构视图结构视图2121第二十一页,本课件共有1
25、08页结构视图结构视图结构视图结构视图设计视图设计视图设计视图设计视图进程视图进程视图进程视图进程视图实现视图实现视图实现视图实现视图部署视图部署视图部署视图部署视图用况视图用况视图用况视图用况视图静态静态静态静态包图包图包图包图类、对象图类、对象图类、对象图类、对象图构件图构件图构件图构件图部署图部署图部署图部署图用况图用况图用况图用况图动态动态动态动态交互图、状态图、活动图交互图、状态图、活动图交互图、状态图、活动图交互图、状态图、活动图 用况视图:软件系统的内外交互情况用况视图:软件系统的内外交互情况 设计视图:软件系统的功能需求设计视图:软件系统的功能需求 进程视图:软件系统的控制与驱
26、动进程视图:软件系统的控制与驱动 实现视图:软件系统的配置与管理实现视图:软件系统的配置与管理 部署视图:软件系统的物理分布与安装部署视图:软件系统的物理分布与安装 结构视图:结构视图:软件系统的体系结构软件系统的体系结构面向对象模型视图的构成面向对象模型视图的构成2222第二十二页,本课件共有108页第二章第二章 面向对象的分析技术面向对象的分析技术2.1 2.1 分析面临的主要问题分析面临的主要问题2.2 2.2 面向对象的分析模型面向对象的分析模型2.3 2.3 面向对象的分析过程面向对象的分析过程2323第二十三页,本课件共有108页2.1 2.1 分析面临的主要问题分析面临的主要问题
27、 OOA OOA与与OODOOD的界限的界限 对问题域和系统责任的理解对问题域和系统责任的理解 人与人之间的交流人与人之间的交流 需求的不断变化需求的不断变化 软件复用的要求软件复用的要求2424第二十四页,本课件共有108页OOAOOA与与OODOOD的界限的界限 OOA OOA:运用面向对象方法,对问题域和系统责任进行分析和运用面向对象方法,对问题域和系统责任进行分析和理解,找出描述问题域和系统责任所需的对象,定义对象的理解,找出描述问题域和系统责任所需的对象,定义对象的属性和操作以及对象之间的关系,建立一个符合问题域,满属性和操作以及对象之间的关系,建立一个符合问题域,满足用户需求的足用
28、户需求的OOAOOA模型。模型。OOA OOA不考虑与系统具体实现有关的因素,而将其留不考虑与系统具体实现有关的因素,而将其留给给OODOOD去处理,因此去处理,因此OODOOD包括两方面的工作:包括两方面的工作:1 1)根据实现条件对)根据实现条件对OOAOOA模型作某些必要的修改和调整。模型作某些必要的修改和调整。2 2)针对具体实现条件,建立人机界面、数据存储和控)针对具体实现条件,建立人机界面、数据存储和控制驱动等模型。制驱动等模型。2525第二十五页,本课件共有108页问题域和系统责任问题域和系统责任软件分析人员必须尽快了解和明确:软件分析人员必须尽快了解和明确:1 1)问题域)问题
29、域-被开发系统的应用领域,现实世界中,被开发系统的应用领域,现实世界中,要求系要求系统处理的业务范围。统处理的业务范围。2 2)系统责任)系统责任-所开发的系统应该具备的功能。所开发的系统应该具备的功能。问题域不等于系统责任,但它们有很多重合部分问题域不等于系统责任,但它们有很多重合部分 金融业务金融业务 个人储蓄个人储蓄 代发工资代发工资收费业务收费业务 贷款业务贷款业务办公管理办公管理数据备份数据备份系统责任问题域2626第二十六页,本课件共有108页人与人之间的交流人与人之间的交流 交交流包括三部分人员之间:流包括三部分人员之间:1 1)开发人员与用户(需求方)开发人员与用户(需求方)2
30、 2)开发人员之间)开发人员之间 3 3)开发人员与管理人员)开发人员与管理人员 交流工具包括谈话和文档交流工具包括谈话和文档 用户文档,技术文档,管理文档用户文档,技术文档,管理文档2727第二十七页,本课件共有108页需求的不断变化需求的不断变化树立树立“需求变化是绝对的需求变化是绝对的”的观念,从分析的观念,从分析到设计,始终注意到设计,始终注意“易维护修改易维护修改”这一原则。这一原则。需求变化时,最容易变化的是系统功能。在面向需求变化时,最容易变化的是系统功能。在面向对象方法中,最容易变化的成分是对象中的操作,对象方法中,最容易变化的成分是对象中的操作,其次是对象间的交互与协作,第三
31、是对象的属性。其次是对象间的交互与协作,第三是对象的属性。对象本事是相对稳定的。对象本事是相对稳定的。隐蔽内部操作,抽取高层类,可以使系统稳隐蔽内部操作,抽取高层类,可以使系统稳定且易于应对需求变化。定且易于应对需求变化。2828第二十八页,本课件共有108页软件复用的要求软件复用的要求在已有的软件成分基础上建造系统,是新型软在已有的软件成分基础上建造系统,是新型软 件开发方法的一个重要原则。件开发方法的一个重要原则。复用已有的软件成分,不仅是提高开发效率的复用已有的软件成分,不仅是提高开发效率的资源集约化生产方式,更重要的原因在于复用资源集约化生产方式,更重要的原因在于复用已有软件成分可以保
32、证其相对正确性,回避不已有软件成分可以保证其相对正确性,回避不宜保证的软件质量问题。宜保证的软件质量问题。复用是多方面的,从执行代码、源代码到设计复用是多方面的,从执行代码、源代码到设计文档,乃至分析文档。文档,乃至分析文档。2929第二十九页,本课件共有108页2.2 2.2 面向对象的分析模型面向对象的分析模型目标:目标:用规范的面向对象图表和文字来描述所要建造的用规范的面向对象图表和文字来描述所要建造的软件系统,以便在用户与系统分析人员之间达成共识,软件系统,以便在用户与系统分析人员之间达成共识,同时使后续工作得以继续。同时使后续工作得以继续。内容:内容:需求描述需求描述 Use Cas
33、eUse Case 用况图用况图 辅助模型辅助模型 Sequence Sequence 交互图交互图 Collaboration Collaboration 协作图协作图 State Transition State Transition 状态转换图状态转换图 Component Component 包图包图基本模型基本模型 Class Class类图类图 详细说明详细说明对象层关系层特征层3030第三十页,本课件共有108页用况图(用况图(Use CaseUse Case)捕获与描述用户需求的工具捕获与描述用户需求的工具类图(类图(ClassClass)类图是系统模型的基础,描述系统的静态结
34、构。类图是系统模型的基础,描述系统的静态结构。三个层次:三个层次:对象层:描述问题域和系统责任所需的对象对象层:描述问题域和系统责任所需的对象 关系层:类之间的相互关系关系层:类之间的相互关系 特征层:类的属性和操作(分析阶段不用细化)特征层:类的属性和操作(分析阶段不用细化)3131第三十一页,本课件共有108页顺序图(顺序图(SequenceSequence)按时间顺序排列在完成某一功能过程中对象之间的交互行按时间顺序排列在完成某一功能过程中对象之间的交互行为。为。协作图(协作图(CollaborationCollaboration)以某一对象为中心描述对象之间的交互。以某一对象为中心描述
35、对象之间的交互。状态转换图(状态转换图(State TransitionState Transition)描述对象在生命周期内,响应事件的状态转换过程,以及响应描述对象在生命周期内,响应事件的状态转换过程,以及响应事件后所做的反映。事件后所做的反映。包图(包图(ComponentComponent)对关系密切的模型元素进行打包。对关系密切的模型元素进行打包。3232第三十二页,本课件共有108页2.3 2.3 面向对象的分析过程面向对象的分析过程分析过程中各个步骤不要求按固定顺序进行。所以,面向分析过程中各个步骤不要求按固定顺序进行。所以,面向对象的分析步骤经常被叫做对象的分析步骤经常被叫做“
36、活动活动”。建立建立Use CaseUse Case发现对象发现对象定义属性与服务定义属性与服务建立结构与连接建立结构与连接定义:顺序图、定义:顺序图、协作图、状态图协作图、状态图建立建立ClassClass详详细细说说明明原原型型开开发发3333第三十三页,本课件共有108页实施实施OOAOOA的几点建议:的几点建议:1 1)确定需求的工作放在前面;)确定需求的工作放在前面;2 2)建立)建立ClassClass图,可以随时切换到其他活动;图,可以随时切换到其他活动;3 3)建立顺序图、协作图和状态图的活动,放在对象)建立顺序图、协作图和状态图的活动,放在对象 识别之后,并与基本模型活动交错
37、进行,识别之后,并与基本模型活动交错进行,4 4)详细说明应分散在各项活动之中进行,最后做一次审)详细说明应分散在各项活动之中进行,最后做一次审查和补充;查和补充;5 5)原形可以反复地进行,早期的原型可以用来证实用户需)原形可以反复地进行,早期的原型可以用来证实用户需求;求;6 6)对于规模较小系统,分析时可以省略包图。)对于规模较小系统,分析时可以省略包图。3434第三十四页,本课件共有108页第三章第三章 面向对象的设计面向对象的设计 3.1 3.1 面向对象设计概述面向对象设计概述3.2 3.2 问题域设计问题域设计3.3 3.3 人机交互设计人机交互设计3.4 3.4 控制驱动设计设
38、计控制驱动设计设计3.5 3.5 数据管理设计数据管理设计3.6 3.6 构件和部署设计构件和部署设计3535第三十五页,本课件共有108页3.1 3.1 面向对象设计概述面向对象设计概述按照软件生命周期的规律,面向对象的方法学也包括分析活动按照软件生命周期的规律,面向对象的方法学也包括分析活动和设计活动。和设计活动。分析活动和设计活动并没有明显的阶段划分,对应喷泉式分析活动和设计活动并没有明显的阶段划分,对应喷泉式模型:模型:演化演化维护维护测试测试实现实现设计设计分析分析 体现认识事物的循环迭代性体现认识事物的循环迭代性 强调开发活动的无间隙性(无强调开发活动的无间隙性(无明显的阶段划分)
39、明显的阶段划分)强调开发活动的并发性强调开发活动的并发性3636第三十六页,本课件共有108页面向对象分析活动面向对象分析活动-针对问题域和系统责任,不考虑与实针对问题域和系统责任,不考虑与实现有关的因素,建立独立于实现的现有关的因素,建立独立于实现的OOA模型。模型。面向对象设计活动面向对象设计活动-考虑与实现有关的问题,建立针对具考虑与实现有关的问题,建立针对具体实现的体实现的OOD模型,设计内容包括:模型,设计内容包括:1)根据实现语言对类(属性与操作)进行描述)根据实现语言对类(属性与操作)进行描述 2)人机交互界面设计)人机交互界面设计 3)系统控制部分的设计)系统控制部分的设计 4
40、)数据管理部分的设计)数据管理部分的设计 5)系统构件部署)系统构件部署问题域问题域 部分部分 详细说明详细说明控制驱动部分控制驱动部分人人机机交交互互部部分分数数据据管管理理部部分分行行为为图图与与包包图图类类图图用用况况图图详详细细说说明明3737第三十七页,本课件共有108页面向对象设计准则面向对象设计准则 以设计元素的耦合性、内聚性以及复用性为主要准以设计元素的耦合性、内聚性以及复用性为主要准则则耦合性耦合性 衡量耦合度的两个方面:衡量耦合度的两个方面:成分之间的信息传输量成分之间的信息传输量成分之间传递信息的复杂程度成分之间传递信息的复杂程度 交互耦合:成分之间通过消息交互,越松散越
41、好交互耦合:成分之间通过消息交互,越松散越好 继承耦合:成分之间有继承关系,越紧密越好继承耦合:成分之间有继承关系,越紧密越好3838第三十八页,本课件共有108页 内聚性内聚性 操作内聚:完成单一功能的操作的内聚最高操作内聚:完成单一功能的操作的内聚最高 类内聚:类中没有多余的属性和操作,且所有属性和操类内聚:类中没有多余的属性和操作,且所有属性和操作应该是自身的责任,每个操作也是高内聚的。作应该是自身的责任,每个操作也是高内聚的。复用性复用性 执行代码级的复用执行代码级的复用 源代码级的复用和继承源代码级的复用和继承 分析和设计结果的复用和继承分析和设计结果的复用和继承 体系结构的复用和继
42、承(设计模式)体系结构的复用和继承(设计模式)3939第三十九页,本课件共有108页 清晰准则清晰准则统一的用语统一的用语一致的约定一致的约定消息模板要少消息模板要少类责任表达要明确类责任表达要明确独立处理算法和策略算法独立处理算法和策略算法继承关系层次不宜过深继承关系层次不宜过深 类简洁性准则类简洁性准则避免过多的属性,使用继承保持属性量避免过多的属性,使用继承保持属性量对象间协作最小化对象间协作最小化避免过多的操作避免过多的操作保持操作的高内聚保持操作的高内聚保持内部成员的私有性保持内部成员的私有性(包括属性和操作)(包括属性和操作)其他设计准则其他设计准则4040第四十页,本课件共有10
43、8页3.2 3.2 问题域设计问题域设计 3.2.1 3.2.1 引入可复用类引入可复用类 3.2.2 3.2.2 增设一般类增设一般类 3.2.3 3.2.3 调整继承关系调整继承关系 3.2.4 3.2.4 调整多态性调整多态性 3.2.5 3.2.5 为提高性能进行类调整为提高性能进行类调整 3.2.6 3.2.6 为对象存储增补属性与操作为对象存储增补属性与操作 3.2.7 3.2.7 关联的实现关联的实现 3.2.8 3.2.8 调整属性调整属性 3.2.9 3.2.9 设计算法设计算法 3.2.10 3.2.10 定义对象的可访问性定义对象的可访问性4141第四十一页,本课件共有1
44、08页3.2.1 3.2.1 引入可引入可复用类复用类目标目标-尽可能地使用可以利用的复用成分。尽可能地使用可以利用的复用成分。例:已经存在图书类,在书店管理系统和图书馆系例:已经存在图书类,在书店管理系统和图书馆系统中可以复用它。统中可以复用它。图书图书零售图书零售图书馆藏图书馆藏图书书店系统书店系统图书馆系统图书馆系统4242第四十二页,本课件共有108页 可可直接利用:把可复用的类加到问题域并做标记。直接利用:把可复用的类加到问题域并做标记。只满足部分利用:把可复用类加到问题域,用子类继承并重只满足部分利用:把可复用类加到问题域,用子类继承并重新定义或新添操作。新定义或新添操作。只有部分
45、可以利用:把可复用的类加到问题域,删除多余部只有部分可以利用:把可复用的类加到问题域,删除多余部分成为新的类。分成为新的类。注:注:重新重新规划问题域中的复用类与原有类之间的关联。规划问题域中的复用类与原有类之间的关联。复用方法复用方法 车辆车辆序号序号颜色颜色样式样式出厂日期出厂日期序号认证序号认证()()车辆车辆序号序号厂商厂商样式样式序号认证()序号认证()例:例:新建的类新建的类已有的类已有的类换名字换名字4343第四十三页,本课件共有108页3.2.2 3.2.2 增设一般类增设一般类 目标目标-把具有相同操作和属性的类组织在一起把具有相同操作和属性的类组织在一起形成超类,建立继承关
46、系。形成超类,建立继承关系。处理策略处理策略 1)若子类中不需要父类中的某些操作,可在子类中重新)若子类中不需要父类中的某些操作,可在子类中重新声明该操作为无方法的操作。声明该操作为无方法的操作。2)若在不同的类中的操作具有相同语义名字,但方法不同,)若在不同的类中的操作具有相同语义名字,但方法不同,可利用多态机制,在一般类中为该操作做一个虚函数。可利用多态机制,在一般类中为该操作做一个虚函数。3)若继承来的操作执行效果相同,只是缺少参数。在父类)若继承来的操作执行效果相同,只是缺少参数。在父类操作中加入必要的参数,执行时忽略该参数。操作中加入必要的参数,执行时忽略该参数。4444第四十四页,
47、本课件共有108页3.2.3 3.2.3 调整调整继承关系继承关系1)对不支持多继承的编程语言,需要将多继承关系调)对不支持多继承的编程语言,需要将多继承关系调整为单继承关系整为单继承关系 方法方法1:用聚合关系将多继承关系转换为单继承关系:用聚合关系将多继承关系转换为单继承关系手机手机照相机照相机照相手机照相手机手机手机照相机照相机照相手机照相手机方法方法1例例1:4545第四十五页,本课件共有108页学生学生职工职工在职学生在职学生人员人员学生学生职工职工身份身份人员人员方法方法1例例2:身份身份=在职学生在职学生=学生学生=职工职工4646第四十六页,本课件共有108页方法方法2例例1:
48、学生学生职工职工人员人员在职学生在职学生学生学生在职学生在职学生人员人员职工职工学生信息学生信息职工信息职工信息方法方法2:提升多继承子类的层次,将多继承转换为单继承:提升多继承子类的层次,将多继承转换为单继承方法方法2例例2:4747第四十七页,本课件共有108页学生学生职工职工在职学生在职学生方法方法1:取消继承:取消继承方法方法2:改为聚合:改为聚合手机手机照相机照相机手机照相机手机照相机手机手机照相机照相机2)对不支持继承的编程语言,需要将继承关系)对不支持继承的编程语言,需要将继承关系取消。取消。手机照相机手机照相机4848第四十八页,本课件共有108页3.2.43.2.4 对多态性
49、的调整对多态性的调整 若编程语言不支持多态,需修改与相关的属性和若编程语言不支持多态,需修改与相关的属性和 操作的操作的名字,并根据情况,重新进行对象分类。名字,并根据情况,重新进行对象分类。多边形多边形线条色线条色线形线形边数边数顶点坐标顶点坐标绘图绘图填充填充正多边形正多边形*顶点坐标顶点坐标*绘图绘图矩形矩形 边数边数*顶点坐标顶点坐标*绘图绘图多边形多边形线条色线条色线形线形填充填充不规则多边形不规则多边形边数边数顶点坐标顶点坐标绘图绘图正多边形正多边形顶点坐标顶点坐标绘图绘图矩形矩形顶点坐标顶点坐标绘图绘图 例:例:*表示多态表示多态新增的类新增的类virtual 表示不用表示不用4
50、949第四十九页,本课件共有108页3.2.5 3.2.5 为为提高性能进行类调整提高性能进行类调整 影响系统性能的因素影响系统性能的因素 为提高性能可以做的处理:为提高性能可以做的处理:1)调整对象的分布)调整对象的分布 2)增加保存中间结果的属性或类)增加保存中间结果的属性或类 3)调整系统功能的并发度)调整系统功能的并发度 4)合并通信频繁的类)合并通信频繁的类 5)缩小类范围,分解复杂对象)缩小类范围,分解复杂对象数据传输时间数据传输时间数据存取时间数据存取时间数据处理时间数据处理时间5050第五十页,本课件共有108页1)调整对象的分布:)调整对象的分布:频繁交换信息的对象,尽量集中