结构化对象
软件系统中存在的对象都为结构化的对象,例如函数、类、模板类等都可以认为是一种具有某种特征的结构化对象。这里大家需要关注的是,这些结构化对象不关心所处的“质”的处理,而只关注于其“量”的关系,这点可能会导致大家的质疑,比如面向对象中类不是不同实质的物体用不同的类来进行表达,而为什么又不关心其“质”的区别呢?这是因为我们无法通过有线的步骤来描述一个对象的“实质”,我们只能通过“量”的描述来抽象(置换的一种特殊方式)和模拟一个对象,因此,这有些让人感到失望,但是,由于我们只是关心“量”的关系,所以我们才能够将对象的共性进行抽离和统一,这样才形成了与具体对象无关的抽象的“结构化”对象,而这些结构化对象可以帮助我们更好的进行软件系统的设计工作。简单来说,这些函数、类、模板等等已经形成的对象,能够适用于软件设计中与实体对象的“置换”和对应之中。从其中的一个角度来看,软件设计实际上就是研究这些结构化对象的科学。因此,在这个角度上软件设计和数学研究的方式和方法等效,此时,软件设计等于数学研究。
当然,不是说我们的任何的软件设计就是公式计算的推导和演绎,而对于基础和核心的原理和原则我们是能够建构起数学模型来进行研究,形式上我们可比喻为一个“花生”,“花生仁”是包含的数学方式构建的数学模型(例如“公理化体系下的置换方法”),而“花生壳”就是我们使用软件设计本身的一些方法和方式(例如结构化的设计模式、注册机制、MVC模型等等)进行研究和处理,而这两部分对于软件设计来说都非常重要,只是目前在“花生仁”的研究方面我们还显得非常的不足而已,希望本书能够开启这方面的研究^_^。
当结构对象能够以一种清晰明确的定义,通过构造性的活动,再通过一种演绎的方式来论证软件设计的基础,并通过脱离物理世界的特殊性和局限性,在抽象的层次上进行扩展。这种方式能够获取到值得信赖的构建方法,但是,我们其实一直以来并非通过这样的处理搭建软件设计的体系,而采用的是一种归纳总结的方式,给出一些定性方面的原则或理论,通过经验的方法,也获取到巨大的成功。只是,目前这种方式导致了软件设计领域越来越无法更好的进行超越式的发展,因此让人颇感失望。
同时,这些通过“逻辑构建”的结构对象,能够将我们的思想映射到具体的软件设计之中,让我们的思维活动转化为“外部的”独立存在,让我们的结论摆脱思维活动而形成客观的实体。这样不仅仅让软件设计能够具有广泛的“普遍性”,同时也能够在不同的设计者之中形成统一、客观的概念,从而消除软件设计一直以来的模糊性,能够让设计者更好的把握以及验证和推导。
软件设计的结构对象都是具有关系的结构对象,因为可以通过明确的映射关系来表达这些结构对象,而此处的映射关系就体现在“置换”的处理过程中,因此这些结构对象都是通过“置换”的处理建立了相关的关系,我们可以通过不同的“置换”的层次,不同“置换”的处理方式来对我们的结构对象进行分类。
结构对象通过关系将这些对象联系在一起,结构对象不是孤立存在的,每个对象都必须和其他的所有或者部分对象存在一种联系,有些属于包含、有些属于位置排序,而有些则属于对称或者非对称的关系。
原文地址:http://blog.51cto.com/13832308/2133032