`
canonical
  • 浏览: 368165 次
  • 性别: 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  
看来有必要从集合论的角度看面向对象技术了

相关推荐

    面向对象系统分析与设计.pdf

    面向对象系统分析与设计是软件工程领域的一个重要部分,它涉及如何使用面向对象的方法来分析和设计软件系统。面向对象方法强调的是用现实世界中的概念来模拟软件系统中的实体和它们之间的交互。以下是一些在面向对象...

    面向对象系统分析参考文献

    面向对象系统分析(Object-Oriented Analysis,简称OOA)是一种软件开发方法,它强调将现实世界中的问题转化为计算机系统中的模型,通过这种方式,能够更好地理解和处理复杂的问题。本资料集中探讨了OOA的关键概念、...

    面向对象系统分析与设计.ppt

    面向对象系统分析与设计是一种现代的软件开发方法,它的出现是为了应对传统结构化程序设计方法带来的挑战,如数据和操作的分离导致的不一致性、软件的复杂性和维护困难,也就是所谓的“软件危机”。面向对象方法强调...

    面向对象数据库系统讲义

    面向对象数据库系统是一种先进的数据管理技术,它将传统的数据库系统与面向对象编程的概念相结合,以更好地处理复杂的数据结构和现实世界中的实体。本讲义旨在深入探讨这一主题,帮助学习者理解并掌握面向对象数据库...

    软件工程学生成绩管理系统的面向对象分析.docx

    《软件工程学生成绩管理系统的面向对象分析》 在当今信息化时代,教育领域的管理也逐渐走向数字化,学生成绩管理系统便是其中的关键一环。本文档旨在详细阐述一个面向对象的学生成绩管理系统的分析过程,涵盖了系统...

    门禁系统的面向对象设计 accp北大青鸟S2项目实战 参考代码

    门禁系统是一种常见的安全管理设施,广泛应用于各类场所,如办公楼、住宅区、...通过这个项目,学员可以提升自己的面向对象编程能力,理解如何将实际问题转化为计算机可处理的形式,为未来开发更复杂的系统奠定基础。

    (管理信息系统第七版-第8章)面向对象的系统开发.pptx

    面向对象的系统开发是现代软件工程中的核心方法论,它基于面向对象的思维方式来理解和建模复杂的系统。在管理信息系统领域,面向对象方法被广泛应用于系统分析、设计和实施过程中,以提高软件的可维护性、可扩展性和...

    信息系统面向对象方法2

    面向对象方法是一种在信息系统设计中广泛采用的编程范式,它以对象为核心,强调数据和操作数据的方法的封装。这种方法论在处理复杂系统时特别有效,因为它允许我们将现实世界中的实体和它们的行为映射到代码中。面向...

    在线购物系统面向对象

    ### 在线购物系统面向对象分析 #### 一、引言 随着互联网技术的快速发展与普及,电子商务已成为现代商业的重要组成部分。在线购物系统作为电子商务的一种典型应用形式,为消费者提供了便捷的购物体验。本文将从...

    面向对象的系统分析与设计原版课件

    面向对象的系统分析与设计是软件工程领域中的一个重要主题,它涵盖了如何利用面向对象方法来理解和构建复杂的软件系统。在本课程中,我们将深入探讨这一关键概念,通过原版课件的学习,帮助你掌握面向对象的思维方式...

    面向对象分析设计参考案例-在线考试系统OnlineTesting

    1. **封装**:封装是面向对象编程的基础之一,其核心思想是将数据和操作这些数据的方法绑定在一起,并对外部隐藏实现细节,只提供接口供外部调用。这样做的好处是可以保护内部状态,避免外部误操作导致数据不一致的...

    面向对象UML教学楼管理系统

    在详细介绍面向对象UML教学楼管理系统之前,首先需要了解什么是面向对象(Object-Oriented)和统一建模语言(UML)。面向对象是一种编程范式,它使用“对象”来设计软件。对象可以包含数据(以字段、或属性的形式...

    C++面向对象图书管理系统设计及代码

    本系统是一个基于C++语言的面向对象图书管理系统,采用多文件形式组织,主要包括图书类、用户类、读者类、读者管理类和图书管理类五个部分。下面是对每个类的详细介绍: 图书类(CBook) 图书类是本系统的核心类,...

    超市管理系统软件需求分析和设计说明书面向对象方法

    ### 超市管理系统软件需求分析和设计说明书面向对象方法 #### 一、用例和用例图 ##### 1.1 什么是用例和用例图 在面向对象的软件开发过程中,用例(Use Case)是描述系统功能的重要工具之一。它是一种行为者与...

    面向对象的小项目[好友管理]

    面向对象编程是软件开发中的核心概念,它基于真实世界中的对象和类来构建软件系统。在本项目"面向对象的小项目[好友管理]"中,我们将深入探讨如何利用C#语言来实现面向对象的设计,以及如何应用序列化和文件访问技术...

    软件工程学生成绩管理系统面向对象设计文档.docx

    "软件工程学生成绩管理系统面向对象设计文档.docx" 面向对象设计是软件工程中的一种重要设计方法,它将面向对象分析阶段所建立的模型转换为相应的设计模型。面向对象设计的主要目标是构建出满足用户需求又能够实现...

    面向对象JavaScript精要(英文原版pdf)

    Zakas编写,是面向对象编程领域中的权威指南之一,尤其针对JavaScript这门语言。作者深入浅出地介绍了面向对象编程的基本原理以及如何将这些原理应用于JavaScript中。 #### 二、面向对象编程基础 面向对象编程...

    java面向对象的设计方法

    封装是面向对象的三大特性之一,它隐藏了对象内部的实现细节,只对外提供公共接口进行交互。在Java中,我们使用访问修饰符(public, private, protected等)来控制类成员的可见性,从而实现封装。这样可以防止代码的...

Global site tag (gtag.js) - Google Analytics