`
FansUnion
  • 浏览: 153388 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

对象的构成模型和关系模型

 
阅读更多
1.对象的构成模型
作为面向对象编程最基本的构成元素,对象是由一个叫做类(Class)的概念来描述的。因此,针对对象构成分析的研究,也就转化为针对编程语言中类的构成分析。以Java语言为例,我们可以对Java语言中类的定义进行一些构成上的分析。

public class Human{//签名区
.....................................................
//属性区
private String name;
private Head head;
private Body body;
private Leg leg;
......................................................
//方法区
public void printName(){
System.out.println(name);
}
public void work(){
leg.shift();
}
......................................................
}
我们可以看到构成一个对象的基本元素主要有:
签名(Signature) -----对象的核心语义概括,它的作用实际上是界定我们所描述的事物的范畴。
属性(Property) -----对象的内部特征和状态的描述
方法(Method) -----对象的行为特征的描述
在对象的内部,作为对象内部构成的重要元素,属性和方法刚好从两个不同的角度对事物的内在特性给予了诠释。其中,属性所勾勒的是一个对象的构成特性和内部状态的特性;而方法则表达了一个对象的动态行为特性。这就像我们人一样,人有头、躯干、四肢构成,它们可以看作是人这个对象的“属性”。与此同时,人具有“直立行走”的行为特性,我们可以定义一个“方法”来模拟这一行为。
以上这些分析,我们还停留在语法这个层面,因为无论是属性还是方法,它们都是Java语言的原生语法支持。将事物抽象成对象,并且赋予这个对象属性和方法,是一个很自然的编程逻辑,这也符合面向对象编程语言的基本思路。
不过我们也同时发现在实际编程中,对象将表现为三种不同的形态和运行模式。-->参见《对象的3种形态和运行模式》

2.对象的关系模型
对象的构成模型是从对象内部结构的角度来对面向对象编程中的基本元素进行分析,对象的关系模型则由“内”转向“外”,考虑对象与对象之间的关系。
谈到对象之间的关系,我们很容易想到两个不同的层次:
从属关系:一个对象在逻辑语义上隶属于另外一个对象。
协作关系:对象之间通过协作来共同表达一个逻辑语义。
这两种关系在面向对象编程语言中分别拥有不同的表达形式和逻辑语义,这两者构成了绝大多数的对象关系模型。
对象的从属关系
对象的从属关系,主要是指一个对象在逻辑语义上隶属于另外一个对象。逻辑上的隶属主要有两种不同的含义:
归属:归属的逻辑含义很直观。比如,一个人总是归属于一个国家,一本书总是有作者。当我们把人和国家、书和作者都映射成面向对象编程语言中所定义的一个个对象时,它们之间自然就形成了归属关系。这种归属关系是由外部世界的逻辑关系映射到编程元素之上而带来的。
结论:“归属”关系在面向对象编程语言中,主要是以对象之间互相引用的形式存在。
public class Book{
private String name;
private List<Author> authors;
}
继承:继承的逻辑含义就有点晦涩。比如,马、白马和千里马之间的关系。首先,白马和千里马都是马的一种,然而白马和千里马却各自拥有自己的特性;白马是白色的,千里马一日可行千里。此时,我们可以说白马和千里马都属于马,它们都继承了马的基本特性,却又各自扩展了自身独有的特质。

结论:“继承”关系在面向对象编程语言中,主要以原生语法的形式获得支持。
public class Horse{
public void run();
}
public class WhiteHorse extends Horse{
}
public class ThousandMileHorse extends Horse{
}

对象的协作关系
对象的从属关系从现实世界逻辑语义的角度描述了对象与对象之间的关系。从之前的分析中,我们可以发现,无论是“归属”关系还“继承”关系,它们都在围绕着对象构成的属性做文章。那么我们不禁去想,围绕着对象的行为动作特征,对象之间是否能够建立起关系模型呢?
从哲学的观点来看,万事万物都存在着普遍而必然的联系。从对象的行为特性分析,一个对象的行为特征总是能够与另外一个对象的行为特征形成依赖关系。而这种依赖关系,在极大程度上影响着对象的逻辑行为模式。例如,一个人“行走”这样一个动作,需要手脚的共同配合才能完成,具体来说就是“摆手”和“抬脚”。而当我们把手和脚分别看作一个对象时,“摆”和“抬”就成为手和脚的行为动作了。
这样一说,似乎对象之间的协作关系就非常容易理解了。
结论:当对象的行为动作需要其它对象的行为动作进行配合时,对象之间就形成了协作关系。
可以想象,一个对象在绝大多数情况下都不是孤立存在的,它总是需要通过与其它对象的协作来完成其自身的业务逻辑。
对象的协作关系在对象运行在行为对象模式时显得尤为突出。因为当使用一个具体的方法来进行动作响应时,我们总是会借助一些辅助对象的操作来帮助我们共同完成动作的具体逻辑。也就是说,我们会将一个动作从业务上进行逻辑划分,将不同的业务逻辑分派到不同的对象之上去执行。也就成为我们所熟知的分层开发模式的理论基础。

以下是Java Web开发 三层架构的代码示例:

public class MessageAction {
private Message message;// 某个留言
private IMessageService messageService = new MessageService();//可以改进
/**
* 增加一条留言
*/
public String add() {
messageService.add(message);
return SUCCESS;
}
public interface IMessageService {
/**
* 增加一条留言
* @param message 留言对象
*/
public abstract void add(Message message);
public class MessageService implements IMessageService {
private IMessageDAO dao = new MessageDAO();
//此处可以改进
public void add(Message message) {
//开启事务
Transaction tx = dao.getSession().beginTransaction();
dao.save(message);
//提交事务
tx.commit();
}
}
//MessageDAO的save方法
public void save(Message transientInstance) {
try {
getSession().save(transientInstance);
} catch (RuntimeException re) {
throw re;
}
}
-->>很多地方值得改进。(*^__^*) 谢谢阅读,多多包涵。@Fans @雷文 2012-2-17
分享到:
评论

相关推荐

    数据库系统原理——ER模型与关系模型(1).pdf

    ER模型 ER模型的基本元素是:实体、联系和属性 实体:是⼀个数据对象,指应⽤中可以区别的客观存在的事物。(ER模型中的实体往往是指实体集) 实体集:指同⼀类实体构成的集合 实体⽤⽅框表⽰表⽰,⽅框内注明实体...

    IFC架构及模型构成分析

    摘要: 针对 IFC( 建设和...利用一个矩形梁实例,从建筑实体对象、材料属性、关系组织和几何表达等方面, 对 IFC 标准表达 BIM 模型的 过程进行了深入分析,通过分析得到了 IFC 标准描述建筑信息模型的 4 个关键要素。

    探索FrontPage中的对象模型CHM格式

    资源名称:探索FrontPage中的对象模型 CHM格式内容简介: Microsoft FrontPage 对象模型由三个分离的对象模型构成:Application 对象模型、Web 对象模型和基于 Microsoft Internet Explorer 4.0 的 Document 对象...

    论文研究-智能决策支持系统中模型管理系统的面向对象程序设计.pdf

    本文从面向对象方法的基本原理和面向对象程序设计的技术特征出发, 基于实际问题域概念建模, 确立和构成智能决策支持系统的模型对象体系及对象间相应的关联模式, 即消息...

    GM_1_1_模型的改进及其应用

    可认为是指数预测模型,因此其预测精度与被预测对象的递变规律以及数据序列 的光滑度有关;(2)灰色微分拟合法建立的离散拟合方程是一个近似差分方程, 因而很难保证拟合方程与待拟合系统的微分方程严格近似,也就无法...

    Web前端开发技术-认识BOM对象.pptx

    BOM:浏览器对象模型(Brower Object Model,BOM)提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window。 作用:操作浏览器窗口及窗口上的控件,实现用户和页面的动态交互。 浏览器对象:浏览器提供...

    深入理解C++对象模型

    MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了...

    BS模式系统权限控制模型研究

    摘$ 要$ 将权限定义为由访问类型、信息对象、操作范畴和约束条件构成的四元组,并在此基础上建立包含权限编码 生成器、权限编码分析器和权限编码库的基于权限四元组的权限控制模型* +,-!./(* +,0123 -45652373 !893...

    论文研究-利用弹簧质点模型和隐式方法的布料模拟研究.pdf

    根据最大风能捕获原理,额定风速以下风能的最大追踪可以通过控制双馈感应发电机(DFIG)跟踪最优转速来实现。...仿真结果验证了所采用的预测模型具有比较好的抗干扰能力和泛化能力,预测控制算法能够实现控制目标。

    巨大的超质量不变性和巨大的超旋半模型中的障碍物,该模型由手性点状超旋点超场构成

    可以从两个手性点状超旋子和两个手性点状超旋子超场构造一个复杂的不可约的大规模超旋12多重态的作用。 为了使这一动作明智,需要附加的“现实约束”,并且需要BRST循环的概念来找到具有这些附加约束的理论的超对称...

    论文研究-面向产品造型设计的形态风格描述模型构建.pdf

    选择风格作为研究用户感性需求与设计元素关系的突破口,采用系统论的方法从功能、结构、组成要素等方面分析了产品...通过面向对象技术建立了风格基类和操作方法,结合风格形态设计过程探讨了风格描绘模型的应用模式。

    常见数学建模模型总结对分类、回归等模型进行总结

    数学建模-模型整理 ...它可以通过不同的算法来实现,这些算法在理解集群的构成以及如何有效地找到它们等方面有很大的不同。 神经网络分类:BP 神经网络是一种神经网络评价四个维度将常见的数学模型进行分类。

    面向对象的系统设计.part1

    全书分为7章,第1章介绍OOD的发展历史、现状和几种典型的OOA&D方法,论述OOA和OOD的关系。第2章介绍本书提出的OOD方法概貌。第3~6章分别介绍OOD模型各个组成部分的设计方法。第7章介绍统一建模语言(UML),并分析和...

    矿用搅拌车在虚拟路面模型中的仿真分析

    假设矿用搅拌车4个轮胎相互独立并中心对称,取单个车轮、悬挂系统以及车身构成的两自由度1/4车辆振动系统作为模拟对象,建立动力学模型,将路面模型和车辆模型导入到Simulink中进行仿真,得到车辆振动加速度,并对车辆...

    响应式架构 消息模式Actor实现与Scala.Akka应用集成.rar

    《响应式架构:消息模式Actor实现与Scala、Akka应用集成》由10章构成,详细介绍了使用Actor模型中的响应式消息传输模式的理论和实用技巧。其中包括:Actor模型和响应式软件的主要概念、Scala语言的基础知识、Akka...

    响应式架构 消息模式Actor实现与Scala.Akka应用集成

    本书由10章构成,详细介绍了使用Actor模型中响应式消息传输模式的理论和实用技巧。其中包括:Actor模型和响应式软件的主要概念、Scala语言的基础知识、Akka框架与Akka集群功能、Actor模型中的通道机制和技术、降低...

    数据库模型设计.doc

    同理,"公司员工"表和其他5个表之间也都 分别构成了"一对一"的关系。 对于主表来说,从表既可以没有记录,也可以有唯一一条记录来对主表进行扩展说明 ,这就是"主扩展模式"。 (二)主从模式 连载之3 原创:胖子刘...

    停车场管理系统(软件建模)

    (4)交互图:显示一个交互,由一组对象和它们之间的关系构成,其中包括在对象间传递的消息,包括顺序图和协作图。 1)顺序图:是强调消息的时间顺序的交互图。 2)协作图:是强调发送和接收消息的对象之间的结构...

    python决策树代码

    在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy = 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法使用熵。这一度量是基于信息学理论中熵的概念。

    QStringListModel作为QListView的数据模型,实现界面上显示和编辑字符串列表

    实例samp5_2采用QStringListModel作为数据模型,QListView组件作为视图组件,演示了QStringListModel和QListView构成Model/View结构编辑字符串列表的功能, 程序运行界面窗口左侧是对QStrmgListModel的一些操作,...

Global site tag (gtag.js) - Google Analytics