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

面向对象之形式系统

阅读更多
    面向对象技术中最重要的概念是什么?在面向对象理论发展的初期,几乎所有的正统声音都在鼓吹继承(inheritance)概念,言必称虚拟函数和多态性。但是依赖继承这种推导关系来构建庞大系统的弊病在实践中逐渐暴露出来,随着组件(Component)技术的发展,所谓的封装概念逐渐被推崇为面向对象思想的精华。在此过程中,接口(interface)概念作为系统细粒度正交分解的手段也逐渐发展起来。在软件系统结构的日益复杂化的今天,封装概念开始成为了质疑的对象。是否与一个概念相关的所有实现都要统一封装到一个具体的对象中?伴随着Java,C#等语言进入主流程序界的AOP(Aspect Oriented Programming)给出了不同的答案。在AOP的环境中,Object不再是牢不可破的黑箱模型,而是成为了外部嵌入的方面(Aspect)的容器。在应用AOP这种大范围结构操纵技术的对象构成体系中,封装不再是问题的核心,我们所关注的是面向对象技术中更为本原的概念:this指针。
    在纯粹的技术层面上,面向对象所指的首先是一组相关性的聚集:它指代了一组相关的数据和函数。为了配合这种相关性的表达,在调用形式上发生了重大变化。从全局函数的调用方式转变到了基于对象指针的调用方式:
    func(this) ==> this.func();
    这里关键性的区别在于从全局性的,绝对的表达方式转变为局域化的,相对的表达方式。this指针限定了一个知识域(domain),调用对象函数是在限定知识域的情况下提供一些相对信息,即调用的时候只需要相对知识。例如现在界面上有两个按钮,其中一个跳转到编辑页面,另外一个跳转到列表页面。为了表达出这两个按钮的不同,我们只需要提供非常少的信息。
    〈input value="编辑" onclick="stdPage.gotoEditPage('${pkValue}')" /〉
    〈input value="列表" onclick="stdPage.gotoListPage()" /〉
所有的公共知识集中在stdPage这个对象指针中。所谓组件技术,关键点也正在于这里。基于一个给定的组件对象,我们只需要知道如何调用它的函数,就可以使系统呈现不同的表现形态。我们所关心的并不是如何构造这个知识域(对象本身),而是如何使用相对知识构造出我们最终所需的系统。封装性使我们摆脱了对系统全局知识的依赖。
   从形式主义的角度上说,任何一种调用方式都只是一种表达,它的具体含义需要一个诠释的步骤。基于对象指针的调用形式直接导向了诠释的多样化:我们只需要替换this指针,就可以改变整个一组调用的具体含义。传统上,对象指针是封闭的,指代的是具体的实现,所有的信息都必须来自于对象指针本身,这造成诠释的局限性。但是在AOP的支持下,诠释可以不仅仅是源于其内的,而且可以是发自其外的。例如基于POJO的ORM框架中,我们只需要纯粹的基于对象自身的知识对其进行操作,ORM引擎通过enhance POJO对象来重新将其诠释为对数据库的持久化操作。
分享到:
评论
2 楼 Godlikeme 2006-12-22  
类这个词的原意与集合论联系非常紧密的。
1 楼 neooen 2006-12-04  
看来有必要从集合论的角度看面向对象技术了

相关推荐

    面向对象的思想

    带你理解面向对象的思想(有例子),面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:系统中一切事物皆为对象;对象是属性及其操作的封装体;对象可按其性质...

    设计模式:可复用面向对象软件的基础.[美]Erich Gamma(带详细书签)

    每一个设计模式系统地命名、解释和评价了面向对象系统中一个重要的和重复出现的设计。我们的目标是将设计经验以人们能够有效利用的形式记录下来。鉴于此目的,我们编写了一些重要的设计模式,并以编目分类的形式将...

    设计模式:可复用面向对象软件的基础--详细书签版

    实际上,当我评估一个面向对象系统的质量时,所使用的方法之一就是要判断系统的设计者是否强调了对象之间的公共协同关系。在系统开发阶段强调这种机制的优势在于,它能使所生成的系统体系结构更加精巧、简洁和易于...

    NET门禁系统使用面向对象实现

    面向对象的好东东,面向对象形式创建cccccccccccccc

    设计模式可复用面向对象软件的基础.zip

    本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用...

    设计模式可复用面向对象软件的基础 pdf(一文件)

    实际上,当我评估一个面向对象系统的质量时,所使用的方法之一就是要判断系统的设计者是否强调了对象之间的公共协同关系。在系统开发阶段强调这种机制的优势在于,它能使所生成的系统体系结构更加精巧、简洁和易于...

    MFC选课系统 面向对象作业

    用于选课,供管理员、老师、学生使用,简单方便。 VC++ 6.0 MFC

    php面向对象程序设计类

    PHP面向对象程序设计类的定义与用法,结合实例形式分析了php类的定义、实例化、__set()及__get()具体使用技巧

    设计模式:可复用面向对象软件的基础(中英双版)--非扫描清晰版

    这本书结合设计实作例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。书中分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下...

    《设计模式:可复用面向对象软件的基础》

    这本书结合设计实作例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。书中分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下...

    《Java面向对象程序设计》(第版)课后答案.docx

    《Java面向对象程序设计》(第版)课后答案 39 / 39 《Java面向对象程序设计》(第版)课后答案全文共39页,当前为第1页。《Java面向对象程序设计》(第版)课后答案全文共39页,当前为第1页。Java面向对象程序设计 《Java...

    嵌入式系统/ARM技术中的面向对象的嵌入式系统设计方法

    关键词:嵌入式系统 面向对象分析设计 UML 有限状态机1 概述随着我国装备制造业的发展,嵌入式系统已经成为制造业的核心技术。它被广泛地应用到工业控制、仿真系统、医疗仪器、信息家电、通信设备等众多领域。目前...

    2011年6月面向对象分析与设计试题B卷.doc附有详答案

    1. 面向对象分析与设计是面向对象软件开发过程中的两个重要阶段,下列活动中,_____ 不属于面向对象分析阶段。 A.构建分析模型 B.识别分析类 C.用例动态建模 D.评估分析模型 2. 在面向对象方法中,_____可看成...

    面向对象与C++试题.doc

    《面向对象程序设计》试题 一、单选题(每空2分,共40分) 1、关于C++与C语言关系的描述中,( )是错误的。 A.C语言是C++语言的一个子集 B.C语言与C++语言是兼容的 C.C++语言对C语言进行了一些改进 D.C++语言和...

    《C_面向对象程序设计》课程设计

    课程设计的目的是让学生掌握面向对象概念、原理基础上,能够熟练地运用C#程序设计语言实现编程。 二、课程设计要求 1.根据设计题目,独立进行分析和设计; 2.采用账户登陆的方式来进入系统; 3.用菜单的形式提供...

    面向对象形式建模的理论与方法

    尽管一些安全关键系统的国际标准强烈建议使用形式化方法(FMs),但是几乎所有有关FMs的现有... 最后,基于从混合自动机到VDM ++函数的转换,以及从UML模型到VDM ++数据结构的转换,建立了一个面向对象的VDM ++模型。

    从面向对象视角认识基于模型的系统工程

    软件工程经历了从面向过程(Process-Oriented)到面向对象(Object-Oriented)的转变,实践证明了这种转变的成功。相对软件工程更为一般化的系统工程,也遇到了系统日益复杂的问题。基于模型的系统工程(MBSE,Model...

    完成Java面向对象程序设计实验课的心得体会(1).doc

    真正的面向对象编程思想就是忘掉一切关于计算机的东西,从问题领域考虑问题, :-) 把问题从大到小都抽象成对象(指针只是对象的使用形式),在设计和编写程序的时候 把你设计的对象合理的编排组合就是面向对象编程了...

    吃货联盟订餐系统(Java+对象+数组)

    吃货联盟订餐系统,Java版本,用对象+数组的方法编写的,分为三个类:Food菜品类、Order订单信息类、OrderSystem具体使用逻辑类,全部源码。

Global site tag (gtag.js) - Google Analytics