




已阅读5页,还剩79页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 面向对象分析与设计方法,授课教师:张 强,内容提纲,1. 面向对象技术概述 2. 面向对象分析 3. 面向对象设计 4. 基于UML的面向对象分析、设计过程 5. 其它面向对象方法,1. 面向对象技术概述,1.1 面向对象的基本概念 1.2 面向对象的开发语言 1.3 面向对象的设计与开发工具,1.1 面向对象的基本概念,Coad和Yourdon: 面向对象 = 对象 + 类 + 继承 + 通信 类与对象:抽象与实例化 父类子类:继承与扩展 对象之间:通信与功能协同 类的重用:虚基类、抽象类、功能类等,积木式重用 整体协调:良好的面向对象结构 整体升级:可扩展的面向对象结构,1.1.1 面向对象技术,1.1 面向对象的基本概念,(1) 客观世界由对象组成,任何客观实体都是对象,复杂对象可以由简单对象组成; (2) 具有相同数据和操作的对象可归纳成类,对象是类的一个实例; (3) 类可以派生出子类,子类除了继承父类的全部特性外还可以有自己的特性; (4) 对象之间的联系通过消息传递来维系。,1.1 面向对象的基本概念,积木式重用,1.1 面向对象的基本概念,面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。 从程序设计方法上来讲,它是一种自下而上的程序设计方法,它不像面向过程程序设计那样一开始就需要使用一个主函数来概括出整个程序,面向对象程序设计往往从问题的一部分着手,一点一点地构建出整个程序。如何局部测试? 如何整合?,1.1 面向对象的基本概念,结构化程序设计的特征: (1) 以函数为中心,即以功能为中心描述系统; (2) 函数作为划分程序的基本单位; (3) 数据在过程式设计中处于从属的位置; (4) 逐步求精,易于理解和掌握; (5) 设计之初的良好框架构建困难,领域开发经验依赖性高。设计过程的特征如何? (6) 面向复杂问题,及需求多变情形,设计之初难以形成满足要求的层次模块划分。,1.1.2 面向对象与面向过程的区别,1.1 面向对象的基本概念,结构化程序设计的特征: (7) 相互依赖的数据和操作相互分离,使得大型程序难于编写、调试和修改(嵌入式系统); (8) 多人协同开发困难; (9) 代码重用困难(为何?); (10) 代码可维护性差; (11) 函数间存在深层次的逻辑依赖关系,使得最底层或中间层的函数发生变化时,引起一系列不可预知的变化及相应的程序修改、错误调试等问题(大型数据库的后台数据处理程序)。,1.1 面向对象的基本概念,面向对象程序设计的特征: (1) 自下而上的程序设计方法,从问题局部着手,逐步构建整体程序(局部测试); (2) 以数据为中心,使用类表现数据; (3) 以类为划分程序的基本单位,函数是类的接口; (4) 封装数据和操作,整体处理; (5) 类间继承、多态,实现重用; (6) 类集成度高,适合大型程序开发; (7) 事件驱动程序执行,而非按照预订顺序执行;,1.1 面向对象的基本概念,面向对象程序设计的特征: (8) 代码结构清晰,重用性好(相对而言); (9) 多人协同开发容易(以类进行任务划分、协同); (10) 代码可维护性好(依据功能需求和软件规约); (11) 程序结构包含类的定义和类的使用,基于消息传递的对象操作执行,当类的接口保持不变时,其内部实现的层次结构和功能函数发生变化,并不对程序整体的运行产生影响。(就这点而言,设计良好的函数接口,也可以实现类似功能)面向对象并非全面优于面向过程。,1.1 面向对象的基本概念,核心元素包括: (1) 对象 (object) (2) 封装 (encapsulation) (3) 消息 (message) (4) 类 (class) (5) 继承 (inheritance) (6) 多态性 (polymorphism ) (7) 结构与连接 (structure & connection),1.1.3 面向对象的核心元素,1.1 面向对象的基本概念,对象(object)是面向对象(Object-Oriented,OO)系统的基本构造块,是一些相关的变量和方法的软件集。 可以利用对象来代表现实世界中的对象:可用一个飞行试驾程序来代表现实世界中的正在飞行的飞机,或者用机床数控程序来代表现实世界的运行的机床。 同样可以使用对象来造型抽象的概念,比如,点击按钮事件就是一个用在GUI窗口系统的公共对象,它可以代表用户点击程序界面中的一个确定按钮的动作。,(1) 对象,1.1 面向对象的基本概念,(1) 客观世界里的任何实体都可以被称为对象; (2) 对象可以是具体的、有形的物(学生、计算机),也可以是无形的事物或概念(学生学号、图书编号); (3) 对象是问题域或实现域中某些事物的一个抽象; (4) 对象是一个封装数据属性和操作行为的实体; (5) 系统中的对象在软件生命周期的各个阶段可能有不同的表示形式。,1.1 面向对象的基本概念,封装(Encapsulation)是将对象的状态和行为绑到一起的机制,使得对象形成一个独立的整体,并且尽可能的隐藏对象的内部细节。封装有两个含义:一是把对象的全部状态和行为结合一起,形成一个不可分割的整体。对象的私有属性只能够由对象的行为来修改和读取。二是尽可能隐蔽对象的内部细节,与外界的联系只能够通过外部接口来实现。,(2) 封装,1.1 面向对象的基本概念,封装的信息屏蔽作用反映了事物的相对独立性,我们可以只关心它对外所提供的接口,即能够提供什么样的服务,而不用去关注其内部的细节问题。 比如说使用手机,我们关注的通常是这个手机能实现什么功能,而不太会去关心这个手机的是怎么一步步制造出来的。 关心手机的功能,方便与手机进行数据交换,并不关心功能实现方式,但关心运行方式,原因何在?,1.1 面向对象的基本概念,一个对象封装的实例图解,可能的数据是什么?,1.1 面向对象的基本概念,所谓消息(Message)是指描述事件发生的信息,是对象间相互联系和相互作用的方式。一个消息主要由5部分组成:消息的发送对象、消息的接收对象、消息传递方式、消息内容(参数)、消息的返回。传入的消息内容的目的有两个,一个是让接受请求的对象获取执行任务的相关信息,另一个是行为指令。 消息与事件紧密联系。 所谓事件通常是指一种由系统预先定义而由用户或系统发出的动作。事件作用于对象,对象识别事件并作出相应反应 。,(3) 消息,1.1 面向对象的基本概念,对象通过对外提供的方法在系统中发挥自己的作用,当系统中的其它对象请求这个对象执行某个方法时,就向该对象发送一个消息,对象响应这个请求,完成指定的操作。程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。 这类时间性很强的对象间交互,在缺乏有效的UML图形指导情形下,实现正确、高效的功能代码,对开发人员的要求很高,尤其是逻辑分析能力方面。,1.1 面向对象的基本概念,类(Class)是具有相同属性和操作的一组对象的组合,也就是说,抽象模型中的“类”描述了一组相似对象的共同特征,为属于该类的全部对象提供了统一的抽象描述。 类是对象的抽象。 客观世界实际存在的都是对象,而不是类 。 例如名为“学生”的类被用于描述为被学生管理系统管理的学生对象。,(4) 类,1.1 面向对象的基本概念,类的定义要包含以下的要素: 第一,定义该类对象的数据结构(属性的名称和类型) 第二,定义对象所要执行的操作,也就是类的对象要被调用执行那些操作,以及这些操作时对象要执行那些操作,比如数据库操作等等。,1.1 面向对象的基本概念,继承(Inheritance)是一种连接类与类的之间的层次模型。继承是指特殊类的对象拥有其一般类的属性和行为。 继承意味着“自动地拥有”,即在特殊类中不必重新对已经在一般类中所定义过的属性和行为进行定义,而是特殊类自动地、隐含地拥有其一般类的属性和行为。 继承对类的重用性,提供了一种明确表述共性的方法。即一个特殊类既有自己定义的属性和行为,又有继承下来的属性和行为。,(5) 继承,1.1 面向对象的基本概念,继承性是面向对象程序设计语言不同于其他语言的最主要特点。 父类(超类) 子类(派生类) 继承性又分为单重继承和多重继承两类。,1.1 面向对象的基本概念,继承的描述,1.1 面向对象的基本概念,继承的描述,子类继承父类的所有信息和行为吗?,1.1 面向对象的基本概念,单重继承和多重继承 应采用何种方式?,1.1 面向对象的基本概念,多态性(Polymorphism)是指在两个或多个属于不同类中同一函数名对应多个具有相似功能的不同函数,可以使用相同的调用方式来调用这些具有不同功能的同名函数。,(6) 多态性,1.1 面向对象的基本概念,(1) 通过接口实现多态性; (2) 通过继承实现多态性; (3) 通过抽象类实现的多态性。,多态性的实现方式,1.1 面向对象的基本概念,抽象类:抽取相近的多个类的共性部分,放入一个基类中,即可使用基类指针同时管理多个类的对象,实现多态。 使用抽象类使系统中类的继承关系设计更清晰,设计复杂度更低。举出实际应用中的抽象类实例?CAD 纯虚函数:基类中不能实现的虚函数,在声明结尾处加0。 virtual double Area() const = 0; 类似于函数指针。,抽象类,1.1 面向对象的基本概念,结构与连接方式: (1) 一般/特殊结构(员工经理,普通职员) (2) 整体/部分结构(宿舍楼门房、宿舍、配电房) (3) 实例连接(司机汽车) (4) 消息连接(系统消息,自定义消息),(7) 结构与连接,1.2 面向对象的开发语言,1.2.1 面向对象的建模语言 1.2.2 面向对象的程序设计语言,(1) Booch 1993(Grady Booch) (2) OOSE(Jim Rumbaugh) (3) OMT-2(Ivar Jacobson) (4) UML,1.2.1 面向对象的建模语言,1.2 面向对象的开发语言,1.2 面向对象的开发语言,四个基本的分支: (1) 基于Smalltalk的语言 (2) 基于C的语言 (3) 基于LISP的语言 (4) 基于PASCAL的语言,1.2.2 面向对象的程序设计语言,1.2 面向对象的开发语言,1.3 面向对象的设计与开发工具,1.3.1 面向对象的开发工具 1.3.2 面向对象的设计工具,1.3 面向对象的设计与开发工具,DOTNET 2008/2010 (C+, C#, VB, J#) Java (Jbuilder, Eclipse) C+ Builder ,1.3.1 面向对象的开发工具,1.3 面向对象的设计与开发工具,Rational Rose Visio Visual UML Magic Draw UML Object Domain Together Prosa,1.3.2 面向对象的设计工具,2. 面向对象分析(OOA),2.1 面向对象分析的层次 2.2 面向对象分析的基本过程 2.3 面向对象分析的基本原则 2.4 类图 2.5 发现对象和定义类 2.6 对象之间的通信 (消息),2. 面向对象分析(OOA),用面向对象方法分析项目需求,2.1 面向对象分析的层次,对象模型通常由五个层次组成(由粗至精): (1) 主题层(系统模块化,降低复杂度) (2) 类与对象层(类和对象) (3) 结构层(类间继承,“整体部分”) (4) 属性层(属性,类和对象间的实例连接) (5) 服务层(方法,类与对象的消息连接),2.1 面向对象分析的层次,对象模型的五个层次,2.2 面向对象分析的基本过程,基本过程: (1) 发现对象,从对象中抽象出类的定义; (2) 识别对象的内部特征(数据 ,方法); (3) 识别对象的外部关系(消息,调用); (4) 划分主题,建立主题图(模块); (5) 定义用例,建立交互图(需求与实现); (6) 建立详细说明(文档); (7) 原型开发(迭代,递增)。,周而复始的递增,面向对象分析过程模型,2.2 面向对象分析的基本过程,2.3 面向对象分析的基本原则,基本原则: (1) 抽象原则 (2) 分类原则 (3) 聚合原则 (4) 关联原则 (5) 消息通信原则,2.4 类图,类图的主要构成成分: (1) 类 (2) 属性 (3) 方法 (4) 一般/特殊结构 (5) 整体/部分结构 (6) 实例连接 (7) 消息连接,2.4 类图,类图分为三个层次: (1) 对象层:实现层,揭示软件的实现; (2) 特征层:说明层,描述软件的接口; (3) 关系层:概念层,描述问题域中的概念。 对象层是目前研究的主流,而特征层和关系层的研究体现一种设计思想。,2.4 类图,2.5 发现对象和定义类,2.5.1 发现对象 2.5.2 抽象出对象类,发现对象的根本出发点: 问题域和系统责任 需求的细化 正确运用抽象原则。 规范,经验,实际。,2.5.1 发现对象,2.5 发现对象和定义类,几种常见问题: (1) 类的属性或服务不适合该类的全部对象(不完全) ; (2) 出现属性和服务相似的类(冗余) ; (3) 出现对同一事物的重复描述。,2.5 发现对象和定义类,2.5.2 抽象出对象类,2.6 对象之间的通信,2.6.1 一般/特殊结构 2.6.2 整体/部分结构 2.6.3 实例连接 2.6.4 消息连接,2.6 对象之间的通信,一般/特殊结构均形成层次或网络,2.6.1 一般/特殊结构,2.6 对象之间的通信,2.6.2 整体/部分结构,2.6 对象之间的通信,实例连接用于表达对象之间的静态联系,2.6.3 实例连接,2.6 对象之间的通信,定义 两个对象之间存在的由于通信需要而形成的关系。 表示方法 使用箭头从发送消息的对象指向接收消息的对象。,2.6.4 消息连接,3. 面向对象设计(OOD),3.1 面向对象设计的模型 3.2 面向对象的高层设计 3.3 面向对象的类设计,3. 面向对象设计(OOD),用面向对象的方法设计系统 面向对象设计的准则包括模块化、抽象、信息隐藏、低耦合和高内聚等特征。 系统设计是问题求解及建立解答的高级策略。必须制定解决问题的基本方法,系统的高层结构形式包括子系统的分解、它的固有并发性、子系统分配给硬软件、数据存储管理、资源协调、软件控制实现、人机交互接口等等。 系统设计一般是先从高层入手,然后细化。 系统设计要决定整个结构及风格,这种结构为后面设计阶段的更详细策略的设计提供了基础。,3.1 面向对象设计的模型,瀑布模型 瀑布模型也被称为生存周期模型,其核心思想是按照相应的工序将问题进行简化,将系统功能的实现与系统的设计工作分开,便于项目之间的分工与协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。瀑布模型将软件生命周期划分为软件计划、需求分析和定义、软件设计、软件实现、软件测试、软件运行和维护这6个阶段,并且规定了它们自上而下的次序,如同瀑布一样下落。每一个阶段都是依次衔接的。,3.1 面向对象设计的模型,瀑布模型,3.1 面向对象设计的模型,喷泉模型 喷泉模型是一种以对象为驱动、以用户需求为动力的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上周期的各阶段是相互重叠和多次反复的,就像水喷上去又可以落下来,类似一个喷泉。,3.1 面向对象设计的模型,基于组件的开发模型 基于构件的开发模型利用模块化方法将整个系统模块化,并在一定构件模型的支持下复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程。,3.1 面向对象设计的模型,XP开发模型 敏捷方法强调适应性而非预测性、强调以人为中心,而不以流程为中心,以及对变化的适应和对人性的关注,其特点是轻载、基于时间、紧凑、并行并基于构件的软件过程。 在所有的敏捷方法中,XP(eXtreme Programming)方法是最引人注目的一种轻型开发方法。它规定了一组核心价值和方法,消除了大多数重量型开发过程中的不必要产物,建立了一个渐进型开发过程。,3.1 面向对象设计的模型,XP开发的价值观 交流、简化、反馈、勇气 XP开发的指导原则 快速反馈、简单性假设、逐步修改、拥抱变化、高质量工作,3.1 面向对象设计的模型,XP开发模型,3.2 面向对象的高层设计,3.2 面向对象的高层设计,3.2.1 高层设计的结构模型 3.2.2 高层设计的准则 3.2.3 问题域子系统的设计 3.2.4 人机交互子系统的设计 3.2.5 任务管理子系统的设计 3.2.6 数据管理子系统的设计,3.2 面向对象的高层设计,3.2.1 高层设计的结构模型,3.2 面向对象的高层设计,设计准则 (1) 弱耦合 (2) 强内聚 (3) 减少通信开销 (4) 良好的可扩充性,3.2.2 高层设计的准则,3.2 面向对象的高层设计,设计过程 (1) 复用已有的设计 (2) 把与问题论域相关的类关联,建立类的层次结构 (3) 创建一般化类 (4) 改进系统性能 (5) 加入较低层的构件(形式、内容 、服务),3.2.3 问题域子系统的设计,3.2 面向对象的高层设计,设计过程 (1) 用户分类 (2) 描述人及其任务的脚本 (3) 设计命令层 (4) 设计与用户的详细交互 (5) 继续进行原型设计 (6) 设计人机交互类,3.2.4 人机交互子系统的设计,3.2 面向对象的高层设计,设计过程 (1) 为任务命名,并简要说明这个任务 (2) 定义各个任务如何协调工作,指出它是事件驱动还是时钟驱动(Agent) (3) 定义各个任务之间如何通信,任务将从哪里取值,任务执行得到的结果将送往何方,3.2.5 任务管理子系统的设计,3.2 面向对象的高层设计,常用的数据管理方法有三种: (1) 文件管理 (2) 关系数据库管理系统 (3) 面向对象数据库管理系统,3.2.6 数据管理子系统的设计,3.3 面向对象的类设计,3.3.1 类设计的目标 3.3.2 类的设计准则,3.3 面向对象的类设计,设计目标: (1) 把类设计成可复用的“插接相容性”部件(困难) (2) 把类设计成健壮的部件 (3) 把类设计成可集成的部件(调用,测试),3.3.1 类设计的目标,3.3 面向对象的类设计,设计准则: (1) 类公共接口的单独成员应该是类的操作符 (2) 类A的实例不应该直接发送消息给类B的成员 (3) 操作符是公共的,当且仅当类实例的用户可用 (4) 属于类的每个操作符要么访问、要么修改类的某个数据,3.3.2 类的设计准则,3.3 面向对象的类设计,设计准则: (5) 类必须尽可能少地依赖其他类(弱耦合) (6) 两个类之间的互相作用应该是显式的 (7) 继承结构的父类应该是目标概念的抽象模型,4. 基于UML的面向对象分析设计过程,设计过程: (1) 识别系统的用例和角色 (2) 进行系统分析,并抽象出类 (3) 设计系统和系统中的类及其行为,5. 其它面向对象方法,5.1 OMT (Object Model
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 编辑部个人工作方案2025年演讲稿
- 商场国庆节促销活动方案2025年
- 2025年电子陶瓷热压铸机项目可行性研究报告
- 2025年电子健康记录软件项目可行性研究报告
- 2025年电动自行车专用轮胎项目可行性研究报告
- 2025年甲氨基乙醇项目可行性研究报告
- 2025年特针钳项目可行性研究报告
- 2025年牙龈分离剂项目可行性研究报告
- 江苏南京建邺区五校联考2024-2025学年初三4月高中教学质量检测试题物理试题试卷含解析
- 烟台文化旅游职业学院《设计创新技术基础》2023-2024学年第二学期期末试卷
- 超厚混凝土现浇板的高支模工程施工方案
- 市场主体住所(经营场所)申报承诺书
- 水龙头生产工艺及其设备
- 副主任药师考试模拟题1
- 传染病登记本
- 公路桥梁和隧道工程施工安全风险评估指南_图文
- 田径运动会各种用表、检录表、统计表(朱)
- 固体矿产勘查原始地质编录细则
- 奖励协议书范本
- IEC61215:2021-2地面光伏组件-测试内容,,中文
- 机械完整性管理ppt课件
评论
0/150
提交评论