数据对象名词解释

         在Java EE系统中各层次中对数据的处理是以对象形式进行的,而对于各层次中所处理的对象的名称是以其被赋予的功能所确定。以下界定了不同功能的对象在名称上和功能上的定义。

Value Object: 泛指用于表示和携带数据的对象。它其中又包含了一些特殊的,对我们的系统有特殊作用的对象,有Persistent ObjectDomain ObjectView Object对象。这些特殊对象将在以下做具体定义。

Persistent Object (PO)表示需要被持久化的Value Object

Domain Object (DO): 表示业务对象,指在业务操作时与业务流程直接相关的对象。本规范认为Domain ObjectBusiness Object表示的是相同的意思,因此在今后的沟通和开发中将不使用Business Object或其缩写BO对业务对象进行称呼。

View Object (VO): 展示对象,只用来负责存储用于页面展示数据的对象。不参与业务的流程。

在以上所定义的4种对象中,Value Object的定义比较泛,它包含了其它3种对象。而其它3种对象也不是相互独立的,一个对象可以同时为Persistent ObjectDomain ObjectView Object(见下图中的D区域),也可以只是Persistent ObjectDomain ObjectView Object。例如,一个购物车对象参与了业务流程,但是它通常并不需要被持久化,因此它是一个Domain Object却不是一个Persistent Object;而一个配置信息对象通常需要持久化却不参与业务流程,因此也只是一个Persistent Object;一个用户对象通常既参与业务流程也需要持久化其状态,所以它既是Domain Object也是Persistent Object,既A区域;而当我们需要直接将这个用户对象推送到页面去显示时它又同时肩负起了View Object的责任,既D区域。

一个对象的命名应遵循以下一些通用步骤:

1.     选定需要被命名的对象。

2.     将该对象与上述定义进行匹配并放入图中的相应位置

3.     如果该对象被放入了图中有交集的位置,按照Domain Object > Persistent Object > View Object > Value Object的优先级确定其名称。

对于WebX框架来说,我们所有业务对象都既是Persistent Object也是Domain Object,也就是说WebX框架中所有的业务对象都处于图中A区域。按照命名规则,Domain Object > Persistent Object,则在今后WebX的沟通和开发中我们以Domain Object的缩写DO进行统一称呼。在WebX框架中我们存在展现层对象View Object,对于该对象我们将使用其缩写VO进行称呼。这里需要注意的是由于Value Object的缩写与View Object的缩写相同,因此在今后的称呼时如需要对Value Object进行称呼时不可使用缩写。

### 数据结构的概念与定义 #### 数据结构的定义 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,是计算机存储数据组织的方式[^2]。 #### 数据结构的分类 数据结构主要分为两个方面: - **逻辑结构**:指数据对象中各元素之间的前后件关系的形式。常见的逻辑结构有线性结构、树形结构、图状结构等。 - **物理结构**:也称为存储结构,指的是数据的逻辑结构在计算机中的表示形式。主要包括顺序存储结构链式存储结构两种方式。 #### 数据类型的区分 数据类型是一个值的集合以及定义在这个值上的一组操作,可以进一步划分为两类: - **原子类型**:不可再分的基本数据单位,如整型、字符型等。 - **结构类型**:由若干成分按某种结构组成的复合数据单元,例如数组、记录、文件等。 #### 非线性线性的转换条件 从逻辑上看,某些非线性结构可以在特殊情况下退化成线性结构。比如当树的所有节点都只有单一子节点时(即度为1),这样的树就变成了类似于列表那样的线性序列;同样地,在广义表里如果所有的成员均为简单项而非嵌套表,则该广义表也会呈现出线性的特征[^1]。 #### 树的特性 作为一种重要的非线性数据结构,树具备如下特点: - 每个节点至少拥有零个至多个直接下属节点; - 存在一个唯一的根节点不隶属于任何其他节点之下; - 除根之外每一个节点恰好属于某一个上级节点之下; - 整棵树被划分成互斥独立的小分支,每一分支亦构成完整的子树形态[^3]。 ```python class TreeNode: def __init__(self, value=None): self.value = value self.children = [] root = TreeNode('A') child_b = TreeNode('B') child_c = TreeNode('C') root.children.append(child_b) root.children.append(child_c) def traverse_tree(node): if node is not None: print(node.value) for child in node.children: traverse_tree(child) traverse_tree(root) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值