总结
2019-06-25 16:49:36 0 举报
AI智能生成
面向对象方法学
作者其他创作
大纲/内容
在数据库设计的"逻辑设计阶段"开始考虑具体的数据库管理系统(DBMS)的特性
第"三"代是80年代开始的以Smalltalk , C++等为代表的面向对象软件开发方法(OO)
C++是一种混合面向对象语言,既支持面向过程的程序设计方法,有支持面向程序的设计方法
面向对象技术最重要的基本特征 继承性
面向对象程序设计将事物的数据与"对数据的操作"封装在一起,作为一个相互依存,不可分割的整体来处理
面向对象优点
可重用性强
可维护性好
与人类习惯的思维方法比较一致
友元函数不是类的成员函数
继承机制的作用是派生新类
类模板经过实例化而生成具体的类
类的继承
用例图从用户使用系统的角度描述系统功能的图形表示法
类图是表达系统类及其相互联系的图示,是面向对象的核心设计,建立状态图,协作图,其他图的基础
序列图(顺序图)描述了一组交互对象的动态协作关系,表示完成某项行为的对象和这些对象之间传递消息的时间顺序
配置图就是用于表示构成分布式系统的节点集和节点之间的联系的图示.它可以表示系统中软件与硬件的物理架构
UML动态建模有四种图
活动图
时序图
协作图
状态图
UML中的5种视图
用例视图(Use Case View)
用例视图是其他视图的核心和基础。其他视图的构造和发展依赖于用例视图中所描述的内容。用例视图还可用于测试系统是否满足用户的需求和验证系统的有效性
逻辑视图(Logical View)
用来显示系统内部的功能是怎样设计的,它利用系统的静态结构和动态行为来刻画系统功能。
并发视图(Concurrency View)
显示系统的并发性,解决在并发系统中存在的通信和同步问题。供系统开发者和集成者使用。它由动态图(状态图、序列图、协作图、活动图)和执行图(组件图、展开图)构成。
组件视图(Component View)
用来显示代码组件的组织结构。它描述了实现模块和它们之间的依赖关系。组件视图主要供开发者使用
配置/部署视图(Deployment View)
描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。一个系统模型只有一个UML部署图,UML部署图通常用来帮助理解分布式系统
UML建模工具五大视图
用户视图
表示系统的目的和目标
结构视图
表示系统静态或空闲的状态
行为视图
表示系统的动态状态或状态的变动
实现视图
表示系统的逻辑元素的分布
环境视图
表示系统物理元素的分布
面向对象开发方法一改过去传统以"功能分析"为基础的"面向过程"的结构化分析与设计方法,它模拟人们理解和处理客观世界的方式分析问题,把系统视为一系列"对象"的集合,其"面向对象的设计"又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系.
对象是客观实体的抽象表示,是由描述"对象属性的数据"和"对这些数据进行的操作行为"两部分组成.而"类"是对具有相同属性和行为的一组对象的抽象描述,因此它可以作为一种用户自定义类型和创建对象的样板,而按照这种模板创建的就是类的"实例".通过"继承"关系又可形成一种类层次结构.面向对象的这种特性叫做"多态"
UML描述系统动态行为的视图称为动态视图,包括序列图 , 活动图 , 状态图 , 协作图
协作图必须标出消息顺序号
参与者与用例之间的关系是关联关系
构建对象的两个主要因素 属性 与 服务(行为)
复杂算法依赖活动图
业务逻辑的处理在客户端完成
在UML提供的图中,可以采用"类图"对逻辑数据库模式建模,"状态图"用于接口,类和协作的行为建模,并强调对象行为的时间顺序,"活动图"用于系统的功能建模,并强调对象间的控制流
CMM描述了五个级别的软件过程成熟度 ,即 初始级 , 可重复级 , 已定义 , 已管理 , 优先级
迭代开发是这样一种系统开发过程,它将一个过程划分为一系列的步骤也称迭代,每次迭代都会比前一次更为完善的逼近目标系统.迭代开发由一系列迭代所组成.迭代的次数和持续时间要根据项目的大小而定.每次迭代都必须始于一条公共基线,结束于一条新的公共基线
关联关系: 表示两个类的实例之间存在某种语义上的联系
聚集关系
表示一种整体和部分的关系
聚集关系是关联关系的特例,它是传递和反对称的
面向对象进行分析和设计的步骤与具体过程
1)识别系统的用例和角色。首先要对项目进行需求调研,分析项目的业务流程图和数据流程图,以及项目中涉及的各级操作人员,识别出系统中的所有用例和角色;接着分析系统中各角色和用例间的联系,使用UML建模工具画出系统的用例图;最后,勾画系统的概念层次模型,借助UML建模工具描述概念层的类和活动图。(2)进行系统分析并抽象出类。系统分析的任务是找出系统的所有要求并加以描述,同时建立特定领域模型。从实际需求抽象出类,并描述各个类之间的关系。(3)设计系统,并设计系统中的类及其行为。设计阶段由结构设计和详细设计组成。结构设计是高层设计,其任务是定义包(子系统)、包间的依赖关系和主要的通信机制。包有利于描述系统的逻辑组成以及各个部分之间的依赖关系。详细设计主要用来细化包的内容,清晰描述所有的类,同时使用UML的动态模型描述在特定环境下这些类的实例的行为。
分析是提取和整理用户需求,并建立问题域精确模型的过程。面向对象设计(OOD)则是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。从面向对象分析(OOA)到面向对象设计(OOD)是一个逐渐扩充模型的过程,也可以说面向对象设计是用面向对象观点建立求解域模型的过程。面向对象分析主要是模拟问题域和系统任务,而面向对象设计是面向对象分析的扩充,主要增加各种组成部分。面向对象设计的模型又五层组成,在设计期间主要扩充四个组成部分:人机交互部分、问题域、任务管理和数据管理。人机交互部分包括有效的人机交互所必须的实际显示和输入。问题域部分放置面向对象分析结果并管理面向对象分析的某些类和对象、结构、属性和方法。任务管理部分包括任务定义、通信和协调、硬件分配及外部系统。数据管理部分包括对永久性数据的访问和管理
状态图与活动图的区别
状态图
描述某一对象的状态转化的,主要表现的是该对象的状态,从状态图中可以看出,该对象在接受了外界的某种刺激后会做出怎上的反应.可以说是对类的一种补充,帮助开发者完善某一类,用来描述对象 , 子系统 , 系统的生命周期.通过状态图可以了解一个对象所能达到的所有状态,以及对象收到的事件对对象状态的影响.不同状态下行为有所不同的类才需要画状态图,更注重状态之间的转化
活动图
是描述系统在执行某一用例是的具体步骤.从活动图中可以看出,系统如何一步步的完成用例规约的,主要用于业务建模阶段.可以说活动图是对用例图的一种细化,帮助开发者理解业务领域. 着重于描述操作(方法)实现中所完成的工作以及用例或对象中的活动,它是状态图的一个变种
软件体系结构风格考虑的因素没有 数据分布与功能分布
定义属性的活动不能推迟到 OOD阶段
构成对象的两个主要因素是 属性与服务
对象之间的静态联系是实例连接
数据流图
需求规格说明描述基于计算机系统的功能,性能和约束
多态出现在 一般-特殊 结构的类里边
时序图
能够反映对象的生存周期
可以用来描述用例图中某个用例的时序行为
时序图显示了各对象的方法的执行顺序
几种典型的建模方法
功能分解法
结构化方法
信息建模法
面向对象方法
把问题域的事物抽象为对象,作为系统的基本构成单位其属性和操作刻画了事物的静态特征和动态特征---完整地刻画了问题域中事物
用类作为对象的抽象描述,建立他们之间的继承,聚合,关联,消息等关系---如实表达了问题域中事物之间的各种关系
封装 , 继承 , 聚合 , 关联 , 消息 等符合人类的日常思维-----使系统的复杂性得以控制
面向对象的分析(OOA)
运用面向对象的方法进行"系统"分析
OOD的特点
以面向对象的分析为基础,一般不依赖结构化分析
与相应的OOA方法共同构成一种OOA&D方法体系.OOA与OOD采用一致的概念与原则,但属于软件生存周期的不同阶段,有不同目标及策略
较全面的体现面向对象方法的概念及原则
大多数方法独立于编程语言,通过面向对象的分析与设计所得到的系统模型可以由不同的编程语言实现
面向对象方法的优势
对问题域和系统责任的复杂性具有较强的处理能力
提供了便于各类人员交流的共同语言
为实现分析与设计级别的软件复用提供了有力的支持
贯穿软件生存周期全过程的一致性
几种典型的OO方法
Booch方法
Coad-Yourdon方法
Firesmith方法
Jacobson方法(OOSE)
Rumbaugh(OMIT)方法
系统中的抽象是对现实世界事物的抽象
类是对象的抽象
一般类是对特殊类的进一步抽象
属性是事物静态特征的抽象
操作是事物动态特征的抽象
基本模型 ------ 类图
需求模型 ---- 用况图
模型规约
对各种模型图及其模型元素的详细的确切的定义和解释
一个类代表它的全部对象实例所构成的整体
一个类代表该类的任意一个对象实例
在类的抽象层次上建模
充分性: 模型中的一个类描述了它的全部对象
必要性:个别对象实例不能代表其它对象实例
符合人类的思维方式:在概念层次上表达事物规律
与OOPL保持良好的对应
消除抽象层次的混乱
活动图和状态图是对一个对象的生命周期进行建模,描述对象随时间变化的行为
顺序图由类角色,生命线,激活期和消息组成
组件时系统中遵从一组接口且提供实现的一个物理部件,通常指开发和运行时类的物理实现
接口是一组用于描述类或组件的一个服务的操作
组件是被节点执行的事物
消息序列可以用两种类来表示 分别是顺序图和协作图
构件图中可以包含接口 包 约束 依赖等建模元素
系统用例都由参与者激活
事件流用于规定用例的行为
在活动图中.动作状态表示了正在执行的不可分解的计算,而活动状态则是可分解且可中断的
顺序图和协作图都可以表示要重复发送的消息
接口与类的区别
接口不同于类或类型,它不描述任何结构(因此不包含任何属性),也不描写任何实现(因此不含任何实现操作的方法)
同类一样,接口可以有一些操作,这些操作可以用可见性,参数,返回值等约束来修饰
像类一样,一个接口可以参与泛化,关联和依赖关系
状态图与活动图的区别
活动图用来建模某个过程的活动序列,以活动为中心
状态图用来建模对象生命周期的所有阶段,以状态为中心
活动图中一个活动结束后将立即进入下一个活动,在状态图中状态的转移可能需事件的触发
类图与对象图的区别
类图描述了类的静态结构.类图不但定义了系统的类,表示了类之间的联系(关联 , 依赖 , 聚合),还描述了类的内部结构(类的属性与操作)
类图描述的是一种静态关系,在系统的整个生命周期都是有效的
对象图是类图的实例,使用与类图类似的标识
他们的不同点在于对象图显示类得多个对象实例,而不是实际的类.一个对象图是类图的一个实例.由于对象存在生命周期,因此对象图只能在系统的某一段时间存在
面向对象设计
问题域驱动部分的设计
人机交互部分的设计
控制驱动部分的设计
数据接口部分的设计
构件化与系统部署
OOA阶段类图的层次
对象层
特征层
关系层
OOA的五个层次
主题层
对象类层
结构层
属性层
服务层
0 条评论
下一页