`
FansUnion
  • 浏览: 172604 次
  • 性别: 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
分享到:
评论

相关推荐

    5-第五章:面向对象的数据模型和对象关系数据模型.pdf

    本章内容主要围绕面向对象的数据模型和对象关系数据模型展开,详细讲解了对象数据库管理系统(OODBMS)的特点、优势与劣势,以及与传统数据库管理系统(DBMS)之间的区别。同时,也涉及了对象关系数据库系统(ORDBMS...

    AE对象模型

    AE对象模型中包含了多种类型和关系,它们共同构成了AE软件的内部逻辑架构。 - **类型**: - 抽象类:抽象类不能直接用于创建新对象,但可以作为子类继承的基础,通过类型继承规定了子类的特性。 - CoClass:可以...

    Documentum 6 对象关系模型图

    对象关系模型(ORM)描绘了这些对象之间的关系,包括继承、关联和依赖等。 在Documentum 6中,有几类主要的对象: 1. **内容对象**:这是Documentum的核心,包括DmObject(基础对象)、DmDocument(文档)、...

    面向对象分析与设计模型

    * 服务层:定义了对象之间的交互关系和服务。 在 OOA 中,还有五个活动:标识对象类、标识结构、定义主题、定义属性和定义服务。这些活动都是在分析和设计系统时需要完成的重要步骤。 OOA 的设计模型还包括分类...

    拓扑关系和九交模型.pdf

    拓扑关系和九交模型 拓扑关系是研究空间对象之间的拓扑关系的数学模型,以结点、弧段、三角形和多边形作为描述空间物体的最简化元素。该模型运用数学领域中的组合拓扑学来实现对空间简单与复杂物体几何位置和属性...

    面向对象分析与设计PPT(对象模型-动态模型-功能模型)

    OOA的核心在于识别并理解问题域中的实体(对象)、它们的属性以及相互间的关系,从而形成一个简洁、精确且易于理解的模型。这一过程主要包括三个关键模型的构建: 1. **对象模型**:用于描述系统中静态结构的信息。...

    JavaScript对象模型-执行模型

    JavaScript对象模型(Object Model)和执行模型是理解JavaScript工作原理的关键概念。JavaScript是一种基于原型的动态类型语言,其对象模型是其核心特性之一。本文将深入探讨JavaScript的对象模型和执行模型,以及...

    excel对象模型

    Excel 对象模型 Excel 对象模型是 Excel 中最重要的概念之一,它是 Excel 的核心架构。...Excel 对象模型是一个复杂的架构,它由多个对象组成,了解这些对象的关系和方法对于使用 Excel 开发应用程序非常重要。

    ArcGIS+Engine对象模型图+阅读指南

    这些接口和属性构成了对象模型的核心,使开发者能够通过统一的方式访问和操作对象。 ### 总结 ArcGIS Engine的对象模型是GIS二次开发的基础,它通过CoClass、接口、类和关系类型构建了一个复杂的系统。理解这些...

    ExcelVBA编程系列之对象模型

    Excel VBA的对象模型是由一系列相互关联的对象构成的层次结构。每个对象都有自己的属性、方法和事件,这些组成部分定义了对象的功能和行为。下面我们将分别解释这些关键术语: 1. **对象**:在Excel VBA中,对象...

    浅谈Excel开发:三 Excel 对象模型

    Excel对象模型是Excel开发的核心部分,它包含了众多用于与Excel应用程序进行交互的类、属性、方法和事件。本文主要关注四个关键对象:Application、Workbook、Worksheet和Range。 1. **Application对象** ...

    UML 的九种模型图与"4+1" 视图模型对应关系

    - 协作图(Collaboration Diagram):类似顺序图,但更侧重于对象间的结构和合作关系。 - 活动图(Activity Diagram):用于表示工作流或业务流程,适用于描述过程视图中的并发和决策。 - 状态图(State Diagram):...

    UML面向对象建模--静态模型.docx

    软件系统也是由对象构成的。要理解对象世界,首先要进行对象分析,建立对象类模型。 UML 的对象类模型把类分解为属性和操作,属性也可以按照这种方法再进行分解,这是解决问题的一种基本原理。操作与系统的改变有关...

    深度探索C++对象模型读书笔记

    数据成员是构成对象的重要组成部分,其绑定、布局和存取机制对于理解对象模型至关重要。 ##### 4.1 数据成员绑定 - **静态数据成员**:每个类只有一份,通过类名加作用域解析运算符访问。 - **非静态数据成员**:...

    关系模型及oracle对象关系数据库.pptx

    关系模型由三部分构成:关系数据结构、关系操作和关系完整性约束。关系数据结构就是上述的二维表,由行(元组)和列(属性)组成。关系操作涵盖了查询和更新操作,查询操作如选择(select)、投影(project)、连接...

    关系模型和关系运算PPT学习教案.pptx

    关系模型中的关键概念包括数据模型、关系和关系模式。数据模型是描述数据的抽象方式,它定义了数据的结构、操作和约束。关系模型的数据结构就是关系,通常是一个表格,包含若干行和列。关系模式则描述了关系的结构,...

    分析模式-可重用对象模型

    在面向对象的设计中,概念模型尤为重要,因为它构成了软件架构的基础。本书首先介绍了什么是概念模型以及如何创建有效的概念模型。 ##### 2.2 模式的宇宙 “模式”是指在特定上下文中解决常见问题的解决方案。模式...

    uml面向对象建模与设计的用例模型

    标题和描述中提及的“uml面向对象建模与设计的用例模型”是IT行业中软件工程领域的核心概念之一,尤其对于初学者而言,掌握这一知识点至关重要。用例模型是统一建模语言(UML)的一部分,用于描述系统的行为,特别是...

Global site tag (gtag.js) - Google Analytics