资源预览内容
第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
第9页 / 共40页
第10页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第十章 面向对象方法学引论,10.1.1 传统方法学 1僵化的瀑布模型 2传统结构化技术的缺点,10.1 传统方法学与面向对象方法比较,1僵化的瀑布模型 (1)有些类型的系统需求是模糊的 (2)项目参与者之间存在通信鸿沟 (3)预先定义的需求可能是过时的 2传统结构化技术的缺点 结构分析与结构设计技术的本质是功能分解,是围绕实现处理功能的过程来构造系统的。结构化方法强调过程抽象和模块化,是以过程(或操作)为中心来构造系统和设计程序的。 然而用户需求的变化大部分是针对加工的,因此这种变化对基于过程的设计来说是灾难 。,10.1.1 传统方法学,2传统结构化技术的缺点,结构分析与结构设计技术清楚地定义了目标系统的接口。当系统对外界的接口发生变动时,也就是说,这样的系统较难修改和扩充。 结构化方法把数据和操作作为分离的事实,以至在实现阶段,一些具有潜在可重用价值的软件部件(也称为软构件)已和具体应用环境密不可分。 上述种种原因都使得用结构分析与结构设计技术开发出的软件可重用性较差。,10.1.2 面向对象方法学 1为什么需要面向对象 2面向对象方法学的优点,10.1 传统方法学与面向对象 方法比较,从80年代后期开始,进行了面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)等新的系统开发方式模型的研究,在有些文献中统称为OO范型。 软件包括以下几方面的能力:,(1)计算的能力; (2)推理的能力; (3)人机交互的能力。 能同时支持这3种能力开发的技术是面向对象。 面向对象的需求分析方法通过提供对象、对象间消息传递等语言机制,从而削弱了语义断层。,1为什么需要面向对象,面向对象方法学核心概念,属性值规定了对象所有可能的状态。对象的操作是指该对象可以展现的外部服务。例如,大型客机可视为对象,它具有位置、速度、颜色、容量等属性,对于该对象可施行起飞、降落、加速、维修等操作,这些操作将或多或少地改变飞机的属性值(状态)。,(1)对象,在面向对象的系统中,对象是基本的运行时的实体, 它包括数据属性,也包括作用于数据的操作(行为)。 所以一个对象把属性和行为密封成一个整体。,面向对象方法学核心概念,(2)类。类是某些对象的共同特征(属性和操作)的表示,对象是类的实例。,例如,飞行器类包含位置、速度、颜色等属性, 以及起飞、降落、加速等操作。 是否建立了一个丰富的类库是衡量一个面向对象 程序设计语言成熟与否的重要标志。,(2)类,面向对象方法学核心概念,继承性是面向对象程序设计语言的最主要的特点,是其他语言(如面向过程语言)所没有的。,类之间的继承关系是现实世界中遗传关系的直接模拟,它表示类之间的内在联系以及对属性和操作的共享,即子类可以沿用父类(被继承类)的某些特征。当然,子类也可以具有自己独立的属性和操作。,(3)继承,例如,飞行器、汽车和 轮船可归于交通工具类, 飞行器类可以继承交通 工具类某些属性和操作。,除遗传关系外,现实世界中还普遍存在着部分整体关系。例如,飞机可由发动机、机身、机械控制系统、电子控制系统等构成。聚集关系。,面向对象方法学核心概念,消息传递是对象与其外部世界相互关联的唯一途径。对象可以向其他对象发出消息以请求服务,也可以响应其他对象传来的消息,完成自身固有的某些操作,从而服务于其他对象。 因为对象的操作主要用来响应外来消息并为其他对象提供服务,所以它们也被称作“外来服务”。,(4)消息,例如,直升飞机可以响应轮船的海难急救信号, 起飞,加速,飞赴出事地点并实施救助作业。,面向对象方法学核心概念,简而言之: 面向对象=对象+类+继承+消息,2面向对象方法学的优点,(1)符合人们通常的思维方式 面向对象方法强调把问题域的概念直接映射到对象以及对象之间的接口,符合人们通常的思维方式,减少了结构化方法从问题域到分析阶段的映射误差。 (2)高度连续性 面向对象方法从分析到设计再到编码采用一致的模型表示,后一阶段可以直接利用前一阶段的工作成果,弥合了结构化方法从数据流图到模块结构图转换的鸿沟,减少了工作量和映射误差。,2面向对象方法学的优点,(3)重用性好 由于可以像使用集成电路(IC)构造计算机硬件那样,比较方便地重用对象类来构造软件系统,因此,有人把类称为“软件IC”。 (4)可维护性好 在客观世界以及作为它的映射的软件系统中,实体的结构是相对稳定的。面向对象方法通过把属性和服务封装在“对象”中,当外部功能发生变化时,保持了对象结构的相对稳定,使改动局限于一个对象的内部,减少了改动所引起的系统波动效应。,10.2 面向对象的基本任务 10.2.1 抽象 1什么是抽象 2如何用面向对象的方法实现抽象 10.2.2 封装,10.2.1 抽象 1什么是抽象,客观世界的对象和操作,输出数据,程序设计语言对象和操作,客观世界的对象,计算机算法,解空间,数据,程序员对问题的表达,客观世界算法,问题空间,OOD方法提供了抽象数据类型机制,遵循软件设计的三条重要原则,即抽象、信息隐藏和模块化; OOD的不再仅仅局限于过程处理部分,而是通过将及封装在一起,共同完成和的双重模块化。面向对象的软件设计(00D)方法提供了对象、方法和消息等一整套概念,对数据的操作对于其他模块来说应该是隐蔽的。,(00D)方法提供了对象、方法和消息一整套概念,,问题 空间,解 空间,(变换)直观、合理,10.2 面向对象的基本任务,10.2.2 封装,将信息隐蔽的过程称为封装。,OOD方法提供了抽象数据类型机制,遵循软件设计的三条重要原则,即抽象、信息隐藏和模块化;,双重 模块化,数据,对数据的操作,信息,处理,+,封装,10.2 面向对象的基本任务,2如何用面向对象的方法实现抽象,10.3. 面向对象基础概念 10.3.1 对象 1对象的认定及特征 2目标系统对象认定及筛选 3筛选对象 10.3.2 其它概念 1类(class) 2属性(Attribute) 3方法(Method) 4消息(Message) 5继承(Inheritance) 6服务,10.3 面向对象基础概念,00分析方法的核心思想是利用00的概念和方法为软件需求建造模型,以使用户需求逐步精确化、一致化、完全化。 因此,00分析方法的大致步骤不外乎识别对象、属性及外部服务,识别类及其结构,定义对象之间的消息传递等。,1、提取外部服务 2、标识消息传递 3、外部服务表示,10.3 面向对象基础概念,对象,类,属性,1对象的认定及特征 2目标系统对象认定及筛选 3筛选对象,继承,消息,服务,10.3 面向对象基础概念,1对象的认定及特征,认定对象起步于对用户需求的正文描述进行 语法分析。找出所有的名词或名词短语并合 并同义词。除去有动作含义的名词,它们将 被描述为对象的操作而非对象本身。,对象在用户需求的正文描述中可能呈以下形式: (1)与目标系统交换信息的外部实体。例如,物理设备,操作人员或用户,其他有关的子系。 (2)现实问题信息域中的概念实体。例如信号、报表、显示信息。,10.3.1 对象,10.3 面向对象基础概念,2目标系统对象认定及筛选,(3)目标系统运行过程中可能出现并需要系统记忆的事件。例如核电站运转时的意外事故。 (4)与目标系统发生交互作用的人员所扮演的各种角色。例如管理人员,工程师,销售人员。 (5)作为系统环境或问题上下文的场所、位置。例如卫星地面接收站的安装位置(经度、纬度、海拔高度)。 (6)有关的组织机构。例如,单位、小组。 (7)表示一组成分对象的聚集对象。例如物理设备。,10.3.1 对象,10.3 面向对象基础概念,3.筛选对象,以下是识别有用对象的鉴别或筛选规则: (1)对象应具有记忆其自身状态的能力。并且,对象的属性应是目标系统所关心的,或者是目标系统正常运转所必须的。 (2)对象应进行有意义的操作,以某种方式修改其状态(属性值)。 (3)对象应具有多种有意义的属性。仅有一种属性的对象最好表示为其他对象的属性。,10.3.1 对象,10.3 面向对象基础概念,3.筛选对象,(4)为对象定义的有关属性应适合于对象的所有实例。如果对象的一个实例不具备某种属性,那往往意味着问题域中存在尚未发现的类继承关系。因此,应该利用继承关系将原有对象和该特殊实例区分为两类对象。例如,如果应用问题要求考虑所有的机动车辆,那么不能设置具有“柴油发动机”属性的“机车”对象,而应分别定义“柴油机车”和“汽油机车”对象,它们均为“机车”类的子类的实例。 (5)为对象定义的有关操作应适合于对象的所有实例。 (6)对象应是软件需求模型的必要成分,与设计和实现方法无关。,10.3.1 对象,10.3 面向对象基础概念,3.筛选对象,以下是有关对象命名的重要原则: (1)使用单个名词或名词短语, (2)对象名称必须简洁、精确、易于理解, (3)尽量使用用户熟悉的标准词汇。 对象在软件需求模型中的表示形式如图所示(说明:带虚线),框的圆角四边形表示类及其对象,不带虚线框的圆角四边形仅表示类,对象名称,对象的图示,10.3.1 对象,10.3 面向对象基础概念,1.类,在面向对象分析方法中,类是具有相同属性和服务的对象的集合。类作为模板,为属于该类的所有对象提供了相同的结构、相同的操作(集)、对其他对象具有相同的关系和相同的语义。对象是类的实例。,10.3.2 其它概念,10.3 面向对象基础概念,1.类,在程序设计语言中,一个数据类型被定义为: (1)一个抽象数据类型(ADT)的实现。在类定义时特别指明类的其他使用者能够使用的操作。这组操作叫做类的界面。 (2)类的界面由一组操作构成,可以用它们来操纵类的实例。 类加进了操作,给通常的记录赋予了语义,可提供各种级别的可访问性。,10.3.2 其它概念,10.3 面向对象基础概念,1.类,在程序设计语言中,一个数据类型被定义为: (1)一个抽象数据类型(ADT)的实现。在类定义时特别指明类的其他使用者能够使用的操作。这组操作叫做类的界面。 (2)类的界面由一组操作构成,可以用它们来操纵类的实例。 类加进了操作,给通常的记录赋予了语义,可提供各种级别的可访问性。,10.3.2 其它概念,10.3 面向对象基础概念,属性是对问题域中对象性质 的刻画,属性的取值决定了对象所有可能状态。 在识别属性的过程中,应注意以下问题,以免找出冗余的或不正确的属性: (1)对于问题域中的某个实体,如果不仅其取值有意义,而且它本身独立存在也有相当重要性,则应该将该实体作为一个对象,而不宜作为另一对象的属性。例如,在“家庭保安统”中,将电话作为传感器的属性是不妥的,因为一部电话可能同时与多个传感器连接。,2. 属性,10.3.2 其它概念,10.3 面向对象基础概念,(2)为了保持需求模型的简洁性,对象的导出属性往往可以略去。例如,“年龄”可通过“出生日期”和系统当前时间导出,因此,不应将“年龄”作为人的基本属性。要切记;基本属性完整地刻画了对象的性质,并决定了对象的状态,导出属性可由对象的外部服务通过对基本属性的计算来提供。 (3)在需求分析阶段,如果某属性描述对象的外部不可见状态,则应从需求模型中将其删除。,2.属性,10.3.2 其它概念,10.3 面向对象基础概念,标识对象的属性,传感器,类别 编号 位置 状态 警报值 采样频率,2.属性,10.3.2 其它概念,10.3 面向对象基础概念,前面曾经提到,00需求分析的各个阶段往往是迭代完成的。如果在标识属性的过程中发生以下情况,则应考虑调整对象识别阶段的结果: (1)如果属性只适应于对象的某些实例而不适应于另外的实例,往往意味着存在另一类对象。并且,这两类对象之间可能存在继承关系。 (2)仅有一种相关属性的对象可以表示为其他对象的属性。 (3)对于对象的某种属性,如果该对象的特定实例会有多重属性值,则应将该对象分裂为两个对象。,2.属性,10.3.2 其它概念
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号