面向对象系统设计部分的数据管理和构建部分的设计、活动图
来源:互联网 发布:avxcl新域名 编辑:程序博客网 时间:2024/06/06 04:33
面向对象系统设计部分的数据管理和构建部分的设计
数据管理部分是负责在特定的数据管理系统中存储和检索对象的组成部分。其目的是,存储问题域的持久对象、封装这些对象的查找和存储机制,以及为了隔离数据管理方案的影响。
对象在永久性存储介质上的存储只存储对象的属性部分可能只有一部分对象需要长久存储
永久对象:需要长期存储的对象。目前来说持久对象的保存只能是通过保存到硬盘上实现。
数据库管理部分主要有两种工作。一要进行这个数据管理部分的设计,需要考证这个数据管理系统的选择。如文件系统、数据库系统(用得比较多的是关系数据库管理系统)
文件系统
文件
物理结构:文件的数据在存储空间的存放方法和组织关系
逻辑结构:文件数据排列方式和组织方式
流式:字节
记录式:字符
其他:树型
文件系统
文件系统通常作为操作系统的一部分
采用统一、标准的方法对辅助存储器上的文件进行管理
优点是几乎可以存储任何类型的数据
缺点是操作低级、数据操纵功能贫乏,缺少数据完整性的支持,缺少多用户及多应用共享,什么都要自己编程实现,不能借用已经存在的一些接口,数据完整性和数据共享支持不够(效率优先系统选用)
数据库系统
数据库系统是存储、管理、处理和维护数据的软件系统,由数据库、数据库管理系统和有关软件组成。
数据库是长期存在计算机内、有组织、可共享的数据的集合。
数据库管理系统是用于建立、使用和维护数据库的软件,它对数据库进行统一管理和控制,以保证数据库的完整性和安全性。
可提供一些非常完整的借口,支持并发
数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的大量数据集合
关系数据库系统
关系数据库是采用关系模型的数据库。
关系模型用二维表结构来表示各类实体及其间的联系。
二维表由行和列组成。一个关系数据库由多张表组成
对数据存储、数据共享、数据完整性的维护、故障恢复、事务处理等功能的支持是强有力的。但是效率不高
面向对象的数据库
是面向对象的,应支持对象、类、操作、属性、继承、聚合、关联等面向对象的概念;
另一方面它具有数据库系统所应具有的特定和功能。
存储的是对象,而不仅仅是数据
同一类对象被组织在一起
对象是以对象标识来惟一标识的对象的属性可以是复杂的数据类型
第一点就是关系数据库是一个非常优秀的数据存储,将所有的增、删、改、查各种业务逻辑影射到一些增、删、改、查,连接,投影等等这些运算中
面向对象实际上至今为止建立起一个非常完备的形式化的理论表示,即使有的话也过于繁琐,实用性不高,用来进行这个商业或者这种使用的这些大型数据的一些优化。
第二点呢就是关系型数据库它是早于面向对象数据库发展起来的,迁移到面向对象数据库,会出现数据的丢失或者各种问题
第三个问题就是关系数据库也是不断发展的,在与面向对象数据库的并行发展的过程中它也借鉴了面向对象数据库中的一些特点
所以目前看来主流的数据库管理系统还是关系型数据库,而面向对象数据库还是处在一个原型化或者说对一些实验性的系统来说呢还是可以使用的
(总结)
文件系统
廉价\对被存储的数据没有特别的类型限制
缺少数据完整性和数据共享的支持\自行开发工作量大
关系数据库管理系统
技术成熟
需要较多的计算机资源,处理速度较慢,不适合非结构化的数据存储
具有数据模型的鸿沟
对象数据库管理系统
没有鸿沟
原则上适合任何数据
技术不成熟,没有标准
数据管理系统的选择之后就是要针对选择的这个系统进行存储方案和数据接口两方面的设计
针对文件系统的设计
对象在内存空间和文件空间的映射
设计对象存储方案
设计数据接口
针对关系数据库系统的设计
设计对象存储方案
设计数据接口
为了节省内存空间, 一个对象对应于文件系统中的多个记录
设计对象存储方案
基本原则
类映射为文件,对象的属性作为一个存储单元
具有一般特殊关系的类作为两个文件或一个文件
策略
对象名成规律分布
对象关键字成规律分布
构件图
构件
一个构件是系统中遵从一组接口且提供其实现的物理的、可替换的
部分。
可以利用构件为可能存在于节点上的物理事物(如可执行程序、库、
表、文件及文档等)进行建模。
一般情况下,构件表示将类、接口和协作等逻辑元素打包而形成的
物理模块。
构件与部署一方面就是可以是建立这个模型可以使我们预演或者说是描述在这个系统开发完之后,我们各种各样的一些软件制品是如何部署的,以及它们之间的依赖关系。主要是用在这个方面,对于分布式系统来讲,尤为必要。
构件种类有很多,比如说有部署构件,工作产品构件和执行构件。
构件的种类
部署构件
这类构件是构成一个可执行系统必要和充分的构件,如动态连接库(DLLs)和可执行程序(EXEs)。如COM+、CORBA及企业Java Beans等,也可以表达可选对象模型,可能涉及动态WEB页,数据库表,以及利用通讯机制的可执行程序的构件。
工作产品构件
这类构件主要是开发过程的产物,包括创建部署构件的源代码文件及数据文件等。这些构件并不是直接地参加可执行系统,而是开发过程中的产品,它用来产生可执行系统。执行构件
这类构件是由一个正在执行的系统创建的结果,例如由DLL实例化形成的COM+对象。
构件图 显示软件构件的组织和依赖关系
类是一种逻辑,逻辑上的一种抽象。而构件呢是一种物理上的抽象
构件与类
相同点
二者都有名称;
都能实现一组接口;
都可以参与依赖、一般特殊和关联关系;
都可以被嵌套;
都可以有实例;
都可以参与交互。
不同点
(1)类表示逻辑抽象,而构件表示存在于比特空间中的物理抽象。简言之,构件可存在于节点上,而类不能。
(2)构件表示的是物理模块而不是逻辑模块,与类处于不同的抽象级别。特别是,构件是一组其它逻辑元素(如类及其协作关系)的物理实现。
(3)类可以直接拥有属性和操作;一般情况下,构件仅拥有可以通过其接口访问的操作。
节点和构件区别,就是一个是硬件的,一个是软件的。
部署图可以对嵌入式系统建模,也可以对分布式系统建模部署图显示运行时进行处理的节点和在节点上活动的构件的配置。在多数情况下,用于对系统运行于其上的硬件拓扑结构的建模。
一个节点是在运行时存在并代表一项计算资源的物理元素,一般至少拥有一些内存,通常具有处理能力。利用节点可以为系统在其上运行的拓扑结构建模,一个节点通常表示一个可以在其上部署构件的处理器或设备。
节点与构件的区别
构件是参与系统执行的事物,而节点是执行构件的事物。
构件代表逻辑元素的物理打包,而节点表示构件的物理部署情况。
一个类可以被一个或多个构件实现,而一个构件可以部署在一个或多个节点上。节点之间最常见的关系是关联关系,在这种语境中,关联表示节点之间的物理连接。
节点的最常见的用处是对形成单机式、嵌入式、客户/服务器式和分布式的系统拓扑结构的处理器和设备进行建模。
UML2.0中的构件图
表示法的变动
接口的变动
其他新概念的加入
接口是一组操作的集合,指明了类或构件请求或提供的服务
供接口(provide interface)
向其他构件提供的作为一个服务的接口
需接口(required interface)
向其他构件请求服务时所遵守的接口
其他新概念的加入
端口(port)
是被封装的特定窗口,遵循指定接口的构件通过它来发消息,是构件与其环境的链接点。
内部结构(internal structure)
以特定方式连接起来的一组部件来表示的构件实现
部件(part)
构件的实现单元
连接件
是在构件语境中的两个部件或端口之间的通讯关系
活动图的适用范围
适用于需要控制流和对象/数据流模型的应用…
... 不是事件驱动的模型(事件驱动只能用状态图表示).
例如:业务处理模型与工作流.
动作 (状态)
动作用来表示不直接开始另一活动图的任何事件,如激发对象上的一个操作,或者运行用户描述的动作
.然而,动作可以引起将另一个活动图作为方法的操作(多态).
什么时候使用活动图呢,就是,业务或者行为非常按部就班的,不依赖于事件驱动,而是一种混流和数据的驱动这种情况下
对行为建模时,下列情况适合活动图...
不依赖于外部事件.
通常具有趋于完整的步骤,而不是被事件所打断
步骤之间要求对象/数据流.
当建模者更关心发生什么活动,而不是那些对象对其负责的时
候构建活动图(分区除外).。
- 面向对象系统设计部分的数据管理和构建部分的设计、活动图
- 面向对象系统设计部分的数据管理和构建部分的设计
- 数据管理部分的设计
- 面向对象的部分几点设计原则
- 《设计模式解析》第二部分 传统面向对象设计的局限性
- 《设计模式解析》第二部分 传统面向对象设计的局限性
- 流程设计器开发四(改变活动的位置部分)
- 人机交互部分的设计
- 基于面向对象(OO)的数据库设计模式探讨 第 1 部分
- 基于面向对象(OO)的数据库设计模式探讨,第 2 部分
- delphi面向对象的部分
- 设计模式(第一部分--面向对象设计原则)
- 面向对象的系统分析和系统设计的区别是什么?
- 需求建模 第 2 部分: 构建您的新设计
- 分布式集群系统的设计开发--设计部分
- 面向对象系统的六大设计原则
- 面向对象设计原则之三(里氏替换原则)-构建扩展性更好的系统
- 面向对象的设计
- 上篇的GridView要是看不懂,请复制下面的连接
- 手机游戏加密那点事儿_前言_0
- 华为练习 对象管理器
- CSS :active 伪类
- MariaDB和MySQL比较
- 面向对象系统设计部分的数据管理和构建部分的设计、活动图
- Github for Windows使用图文教程
- 求助各位大神,关于数组
- 面向对象系统设计部分的数据管理和构建部分的设计
- Machine Learning(Andrew)Week8(下)
- HDOJ 1421 搬寝室
- 求Fibonacci数的三种方法和时间复杂度解析
- 单件模式,如何灵活应付单例的生命周期。
- 求最小公倍数