关于面向对象设计的相关讲解


本文摘自PHP中文网,作者jacklove,侵删。

设计模型的元素很多都是在分析模型中使用的UML图。差别在于这些图被精化和细化为设计的一部分,并且提供了更多的与实现相关的特殊细节,突出了架构的结构和风格、架构内存在的构件以及构件和外界之间的接口。

1、面向对象设计模型
设计建模任务:
架构设计
包和子系统设计
类设计
持久化设计

(1)构件图
(2)部署图
(3)状态机图

2、架构设计
(1)4+1架构视图
逻辑视图,开发视图,进程视图,物理视图,场景视图
(2)逻辑视图设计
软件的逻辑结构,用于支持功能性需求。
(3)进程视图设计
软件的进程架构,针对非功能性需求。
构成进程的任务是彼此相互分隔的控制线程,这个软件被划分成这样一组彼此独立的任务。(部署图)
(4)开发视图设计
软件的开发架构,即如何分解成实现单元,是需求分配的基础也是开发组织结构的基础。
如图7-7水平分割方案,6个包分配给6个开发组且处于架构的不同层次,开发组可按技术层次分配人员。
下图垂直分割方案,按业务逻辑在多个开发组分配任务,每个开发组必须具备综合开发能力。
(5)物理视图设计
软件的物理架构,针对非功能性需求的可用性、可靠性、可扩展性等。(部署图)
(6)场景视图设计
场景是用例的实例,将4个视图有机第联系起来。它是发现架构元素的动力,担负起验证和说明的角色。

3、包设计原则
重用-发布等价:重用粒度等于发布粒度;
共同重用:包中所有类一起被重用;
共同封闭:包中的所有类对同类型的变更封闭;
无环依赖:包之间无环依赖结构;
稳定依赖:包应该依赖比他更稳定的包;
稳定抽象:最稳定的包即最抽象,不稳定包是具体包。

4、类设计
单一职责、李氏替换、依赖倒置、接口隔离、开发-关闭原则。

5、持久化设计
(1)实体对象建模;
(2)数据库设计;
(3)持久化框架。

6、面向对象设计过程
识别设计元素
确定架构风格,设计整体结构
构件级设计

7、子系统设计过程
(1)对子系统职责进行定义,即接口的定义;
(2)通过职责分配确定子系统中的元素,由构件等元素来实现职责;
(3)对子系统中各元素进行设计,即类设计(静态结构和动态结构);
(4)确定子系统间的依赖关系。

8、构件级设计的步骤
更新Use-case Realization
子系统的设计:对每个接口的每个操作设计交互图和VOPC类图,类似于系统的设计,即Use case realization
类的设计:
(1)创建设计类:将分析类映射成设计类;
(2)定义操作:实现单一的职责;
(3)定义方法:对操作的内部实现进行描述;
(4)定义状态:描述对象的状态对行为的影响,将对象的属性和操作关联起来;
(5)定义属性:包括方法中的参数、对象的状态等;
(6)定义依赖:类与类之间的存在关系,非结构关系;
(7)定义关联:对关联关系的细化,包括聚合与组合、导向性、多重性、关联类;
(8)形成设计类的规格说名书。

9、时序图
从用例事件流中提取出各类事件并确定事件交互行为的发送对象和接受对象,用时序图把事件序列以及事件与对象的关系表示出来。

10、状态机图
状态图描绘事件与对象状态的关系。当对象接受了一个事件以后,引起的状态改变称为“转换”。
  用一张状态图描绘一类对象的行为,它确定了由事件序列引出的状态序列。仅考虑具有重要交互行为的那些类。
  事件跟踪图中入事件作为状态图中的有向边(即箭头线),边上标以事件名。两个事件之间的间隔就是一个状态。
  事件跟踪图中的射出的箭头线,是这条竖线代表的对象达到某个状态时所做的行为(往往是引起另一类对象状态转换的事件)。

本文讲解了关于面向对象设计的相关内容,更多相关推荐请关注php中文网。

相关推荐:

php文件包含目录配置open_basedir的使用与性能分析

Linux 使用pwgen命令创建随机密码

php文件包含目录配置open_basedir的使用与性能分析

以上就是关于面向对象设计的相关讲解的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

关于面向对象设计的相关讲解

javascript面向对象的三个基本特征介绍

html5面向对象的游戏开发简单实例分享

更多相关阅读请进入《面向对象》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...