关于面向对象设计的相关讲解
设计模型的元素很多都是在分析模型中使用的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的使用与性能分析
php文件包含目录配置open_basedir的使用与性能分析
以上是关于面向对象设计的相关讲解的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

如何使用Go语言实现面向对象的事件驱动编程引言:面向对象的编程范式被广泛应用于软件开发中,而事件驱动编程是一种常见的编程模式,它通过事件的触发和处理来实现程序的流程控制。本文将介绍如何使用Go语言实现面向对象的事件驱动编程,并提供代码示例。一、事件驱动编程的概念事件驱动编程是一种基于事件和消息的编程模式,它将程序的流程控制转移到事件的触发和处理上。在事件驱动

当对象在Jackson库中具有父子关系时,将使用@JsonIdentityInfo注释。@JsonIdentityInfo 注解 用于在序列化和反序列化过程中指示对象身份。ObjectIdGenerators.PropertyGenerator是一个抽象占位符类,用于表示要使用的对象标识符来自POJO属性的情况。语法@Target(value={ANNOTATION_TYPE,TYPE,FIELD,METHOD,PARAMETER})@Retention(value=RUNTIME)public

Go语言支持面向对象编程,通过类型定义和方法关联实现。它不支持传统继承,而是通过组合实现。接口提供了类型间的一致性,允许定义抽象方法。实战案例展示了如何使用OOP管理客户信息,包括创建、获取、更新和删除客户操作。

PHP中OOP最佳实践包括命名约定、接口与抽象类、继承与多态、依赖注入。实战案例包括:使用仓库模式管理数据,使用策略模式实现排序。

在Golang(Go语言)中并没有传统意义上的类的概念,但它提供了一种称为结构体的数据类型,通过结构体可以实现类似类的面向对象特性。在本文中,我们将介绍如何使用结构体实现面向对象的特性,并提供具体的代码示例。结构体的定义和使用首先,让我们看一下结构体的定义和使用方式。在Golang中,结构体可以通过type关键字定义,然后在需要的地方使用。结构体中可以包含属

解析PHP面向对象编程中的享元模式在面向对象编程中,设计模式是一种常用的软件设计方法,它可以提高代码的可读性、可维护性和可扩展性。享元模式(Flyweightpattern)是设计模式中的一种,它通过共享对象来降低内存的开销。本文将探讨如何在PHP中使用享元模式来提高程序性能。什么是享元模式?享元模式是一种结构型设计模式,它的目的是在不同对象之间共享相同的

Go语言支持面向对象编程,通过struct定义对象,使用指针接收器定义方法,并通过接口实现多态。面向对象特性在Go语言中提供了代码重用、可维护性和封装,但也存在缺乏传统类和继承的概念以及方法签名强制类型转换的局限性。

通过掌握追踪对象状态、设置断点、追踪异常和利用xdebug扩展,可以有效调试PHP面向对象编程代码。1.追踪对象状态:使用var_dump()和print_r()查看对象属性和方法值。2.设置断点:在开发环境中设置断点,调试器将在执行到达断点时暂停,便于检查对象状态。3.追踪异常:使用try-catch块和getTraceAsString()获取异常发生时的堆栈跟踪和消息。4.利用调试器:xdebug_var_dump()函数可在代码执行过程中检查变量的内容。
