软件的模型
在软件开发领域,模型用来表示真实世界的实体。在软件开发的不同阶段,需要为目标系统创建不同类型的模型。在分析阶段,需要创建概念模型。在设计阶段,需要创建与模型(面向对象)和数据模型(面向关系)。
概念模型
概念模型用来模拟问题域的真是实体。描述了每个实体的概念和属性,以及实体之间的关系。在这个阶段,并不描述实体的行为。
创建概念模型的目的是帮助更好的理解问题域,识别系统中的实体,这些实体在设计阶段很有可能变为类。
实体与实体之间存在三种关系:一对一,一对多,多对多。
关系数据模型
到目前为止,关系数据库仍然是使用最广泛的数据库,它存储的是关系数据。关系数据模型是在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构,它由以下内容组成:
1、 一个或多个表
2、 表的所有索引
3、 试图
4、 触发器
5、 表与表之间的参照完整性
域模型
在设计阶段,需要在概念模型的基础上创建域模型,域模型是面向对象的。域模型也可称设计模型。域模型由以下内容组成:
1、 具有状态和行为的域对象
2、 域对象之间的关系
域对象
构成域模型的基本元素就是域对象。域对象,即Demain Object,是对真是世界的实体的软件抽象。域对象还可以叫做业务对象,即Business Object(BO)。域对象可以代表业务领域中的人、地点、事务或概念。域对象分为以下几种。
1、 实体域对象
通常,可以把业务领域中的名词作为实体域对象。在J2EE应用中,这些名词可以作为实体EJB。对于普通的Web应用,这些名词可以作为包含状态和行为的JavaBean。采用JavaBean形式的实体域对象也称为POJO(Plain Old Java Object)。
为了使实体域对象与关系数据库表中的记录对应,可以为每个实体域对象分配唯一的OID(Object Identifier,即对象标识符),OID是关系数据库表中的主键(通常为代理主键)
2、 过程域对象
代表应用中的业务逻辑或流程。它们通常依赖于实体域对象。
3、 事件域对象
代表应用中的一些事件(如异常、警告或超时)
域对象之间的关系
在域模型中,类之间存在四种关系
1、 关联(Association)
关联指的是类之间的引用关联,这是实体域对象之间最普遍的一种关系。关联可分为一对一、一对多、多对多关联。
2、 依赖(Dependency)
依赖指的是类之间的访问关系。
3、 聚集(Aggregation)
聚集指的是整体与部分之间的关系,在实体域对象之间也很常见。
4、 一般化(Generalization)
一般指的是类之间的继承关系。
域对象的持久化概念
狭义的理解,“持久化”仅仅指把域对象永久保存到数据库中;广义的理解,“持久化”包括和数据库相关的各种操作。
保存:把域对象永久保存到数据库中
更新:更新数据库中域对象的状态
删除:从数据库中删除一个域对象
加载:根据特定的OID,把一个域对象从数据库加载到内存中
查询:根据特定的查询条件,把符合查询的条件一个或多个域对象从数据库加载到内存中。