面向对象的开发方法(总结)

来源:互联网 发布:股票质押式回购 知乎 编辑:程序博客网 时间:2024/05/16 15:27

面向对象分为面向对象的分析(OOA),面向对象的设计(OOD)和面向对象的程序设计(OOP)。
OOA的是利用抽象构造问题的对象模型
OOD是设计对象和对象之间的关系,如层次和集成;对象之间的通信方式,例如消息。对OOA的结果进行细化,使其可以被OOP接收
OOP指对系统功能的编码

面向对象是当前主流的开发方法,拥有很多不同的分支体系,
如OMT(对象建模技术),OOSE(面向对象的软件工程)和booch方法所同意为的统一建模语言。除此之外,还有caod/yourdon方法
1、基本概念
对象,类。集成,封装,消息,多态。
在UML的通用机制中,包用于将元素组织承租,构件是系统中遵从一组接口规范且付诸实现的物理的,可替换的软件模块。
UML用关系把事务结合在一起,主要包括:依赖,关联,泛化, 实现
UML采用4+1视图来描述软件和软件开发过程

UML中的建模元素
UML中的事务也被称之为建模元素,包括:
结构事务:类,接口,协作(定义了交互操作),用例,活动类,构件和节点
行为事务:交互(消息,动作次序,连接),状态机
分组事务:只有包
注释事务

UML采用4+1视图来描述软件和软件开发过程
逻辑视图:以问题域的语汇组成的类和对象的集合
进程视图:逻辑视图的一次执行实例,描述了所设计的并发和同步结构
实现视图:对组成的物理代码文件进行建模
部署视图:把构建部署到一组物理上,可计算的节点上,表示软件和硬件的映射结构
用例视图:最简单需求分析模型
这里写图片描述
这里写图片描述
和下面讲的有如下对应关系
这里写图片描述
UML2.0中定义了14种图

静态模型建模图包括:
类图,构件图,对象图,组合结构图,部署图,包图

动态模型:
用例图,状态图,活动图,定时图,顺序图,通信图,交互概念图,制品图

类图:类图描述一组类,接口,写作和他们之间的关系,属于静态设计图
对象图:一组对象和他们之间的关系,描述了类图中所建立事务的实例的静态快照
这里写图片描述
构件图:描述了一个封装的类和他的接口端口,以及有内嵌的构件和连接件组成的内部结构。构件图是类图的变体
这里写图片描述
组合结构图:是一种静态视图,以结构化的方法给出类型的内部结构
这里写图片描述

用例图:描述一组用例,参与者和他们之间的关系

顺序图:是一种交互图,强调次序
这里写图片描述
通信图(协作图):也是一种交互图,强调对象和参与者的结构组织,顶视图和顺序图可以认为是同构的,既相互变换没有数据丢失
这里写图片描述
定时图:是一种交互图,强调消息跨越不同参与对象或者参与者的实际时间,而不仅仅关心消息的相对顺序。
这里写图片描述
状态图:描述了一组状态机,对系统行为进行组织建模
活动图:将进程展示位内部一步步的控制流和数据流。竖格被称之为泳道,表示吧这一组指定给每个负责这组活动的业务组织,即对象。活动图可以看做状态图的特殊情况,其状态是活动状态。对系统功能进行建模。
这里写图片描述
部署图:描述在运行时的处理节点和在节点中生存的构件的配置
这里写图片描述
制品图:制品包括文件,数据库,可执行程序,文档等。通常和部署图一起使用
包图:模型本身分解而成的组织单元,以及他们相互之间的依赖关系
这里写图片描述
交互概念图:是活动图和顺序图的混合物
这里写图片描述

常见模型如下
(1)用例模型:
用例图用来描述系统与外部系统用户之间的交互视图
用例模型中主要有包含关系,扩展关系,和泛化关系,下图中对其分别作了示例。用例图中有三种元素,分别是参与者,用例和通信关联(图中普通黑线)
参与者可以是人,也可以是其他系统,硬件设备,时钟
对于听力的命名,最好餐区动词短语和名词短语相连
这里写图片描述

(2)分析模型
类图用来描述系统的静态对象结构
首先应该定义概念类的选取,然后确定类和类之间的关系。
类之间的关系主要有关联关系,依赖关系,泛化关系,聚合关系,组合关系,实现关系等等
分别如下图所示:
泛化关系:
泛化关系
依赖关系
这里写图片描述
是一种比较弱的依赖关系,反映在代码中,比如说一个类向另一个类发送消息,一个类是另一个类的数据成员,一个类是另一个类中某个方法的操作参数等
关联关系
这里写图片描述
是一种强依赖关系,反映在代码中,比如说类B的对象是类A的数据成员。或者类A中的方法中使用了作为全局变量的类B的对象
聚合关系
这里写图片描述
聚合关系是关联关系的特例,体现整体与部分的关系
组合关系
这里写图片描述
组合关系是关联关系的特例,是一种更强聚合关系,两者是不可分割的
实现关系
这里写图片描述
就是类实现接口

2、面向对象的分析方法
一般在软件需求工程中完成,面向对象分析中类分为三种类。
边界类:对外部系统环境和内部交互进行建模
控制类:对控制行为进行建模,多用来实现业务逻辑
实体类:存储信息和对相关行为进行建模

3、面向对象的设计
一般在系统设计中完后才能
一般包括实体类,软件类和边界类
设计原则有:
开闭原则:软件实体应该对扩展开放,对修改关闭,即尽量在不修改原有代码的情况
里氏替换原则:如果使用基类对象满足要求,那么使用子类一定也可以
依赖导致原则:抽象不应该依赖于细节,细节应该依赖于抽象,对接口编程,而不是对实现编程,当程序代码在中传递参数时,或者在使用组合或者聚合关系是,尽量使用层次更高的抽象了
组合/聚合复用原则:尽量使用组合和聚合的关系来使用一些原有的对象,使之成为新对象的一部分
接口隔离原则:使用多个专门的接口,而不是单一的总接口
最少知识原则(迪米特法则):软件尽可能的减少和其他实体的相互作用。

4、面向对象测试
OO方法将开发分为OOA,OOD,OOP,测试亦可以分为OOA测试,OOD测试,OOP测试
OOA测试:,分别测试分析模型是否满足软件的需求,以及分析模型是否满足OO方法要求
OOD测试:从设计模型本身,设计模型和分析模型的一致性,设计模型对编程的支持等方面测试。以上两种测试主要用文档审查的方式来完成
OOP测试:也分为单元测试和集成测试
整个面向对象的测试层次可以分为四层
算法层,测试大哥算法:相当于传统的单元测试
当个对象类:类层
测试对象集群,测试一组协同工作类之间的相互作用:模板层
测试整个面向对象系统:系统层

(1)面向对象系统的单元测试:
方法层次的测试:等价类划分测试,组合功能测试,递归函数测试,多态消息测试
类层次的测试:不变式边界测试和模态测试和非模态测试
类树层次的测试:多态服务测试和展评测试

(2)面向对象系统的集成测试
可以采用传统的大突击测试,自底向上和自顶向下集成,夹层式集成。
协作集成:针对系统已经完成的功能,将相互协作完成特定功能的类一起测试
基于使用的集成:先测试那些基本上不依赖其他类的类,在逐步测试依赖较多的类
类之间的连接性测试:如:类的关联的多重性测试,受控异常测试,往返场景测试,模态机测试。

1 0
原创粉丝点击