面向对象程序设计札记(1)

类别:编程语言 点击:0 评论:0 推荐:


        面向对象是一门很有趣的设计哲学,它试图依据人们对问题的看法来解释软体的架构,并力求将问题域中的问题映像到分析模型中,再转成相对的程序代码。目前使用面向对象技术的软件如雨后春笋般地蓬勃发展,因此无论你是不是专业的工程师,都应该对面向对象有所了解。

一、 面向对象的起源
        现今,面向对象(Object-Oriented)一词已成为计算机业界的宠儿,然而在八十年前面向对象是作为认识世界的哲学思想被提出的。这种思想由本世纪最伟大的哲学家维特根斯坦阐述于1922出版的《逻辑哲学论》(Tractatus Logico-Philosophicus)这一著作中。
维特根斯坦认为:世界是由简单的基本的对象构成的,这就是面向对象设计的基石。
        在计算机业界面向对象思想起源于六十年代的Simula语言,并在Smalltalk语言中得到完善和标准化。

二、 面向对象的模型
        面向对象技术在计算机业界大行其道,并且越来越来流行,但是知其然者未必知所以然,那么面向对象设计的精髓是什么呢?
        其实,面向对象是对现实世界的一种抽象。
我们知道现实世界是由物质(存在物、事物)构成的。在信息领域或者计算机业界我们由此抽象出:某一问题域是由对象构成的,这样对象就映射了现实世界中的存在物。
现实世界中事物是由它的性质和功能来表征的。例如,我的自行车是铝合金的车架,可以前进、刹车,铝合金就是自行车的性质,前进、和刹车就是自行车的功能。这些都是我们捕获(抽象)现实世界中存在物(事物、物质)的信息。对这些信息编码就成为了数据。数据是计算机能识别的信息。
        我们终于可以把现实世界中的事物映射为信息领域中的对象,并进一步映射为数据领域中的类。

 
        对象(Object)是对问题域中事物的抽象。因为对象一词出自于哲学又映射了现实世界中的事物,所以对象也就具有了事物所具有的特性:同一性。
那么,什么是同一性( identity)呢?
        哲学家们认为事物都有一个共同的特点:它们都分别与自身同一,并且彼此相异。就是事物之为事物的必要条件之一。

三、 面向对象的编程
        面向对象编程是一种高级的编程范型。我们使用面向对象的理论对问题域建模。
传统的软件设计方式是将问题抽象分析之后,采取适当的数据结构来表示,并以相对的程序函数算法来处理数据,两者看起来似乎独立而无关。减少了数据冗余,提高了数据的依赖性,整个程序围绕着函数的过程调用来组织设,这也是结构化程序设计的好处。但对于复杂的大型程序这种过程调用会使程序层次过于混乱。
而现在我们则以「对象」将相关的数据和过程函数结合为一体,使得两者的关系看起来更明白,这是面向对象程序设计最大的特点之一。
        面向对象编程最基本的概念、机制是对象。对象是由属性(数据)和操作这些数据的方法(代码)组成的软件单元。

特性1:封装
         对象的属性(数据)不能被对象的使用者直接访问,只允许通过由对象提供的方法访问数据,这就是封装。
         通过封装对象成为一个统一的整体。对象既包含数据又包含操作数据的方法。
特性2:信息隐藏
         对象的方法(行为、操作)可以公开被任何使用者使用;也可以私有被限定的使用者使用。
         通过信息隐藏对象可以限定使用者的访问范围。
特性3:消息传递(方法的调用)
        对象之间通过对象提供的接口协议进行通信的一种消息传递机制。与函数调用不同的是消息传递必须指定特定的对象。
特性4:类
        对于具有类似性质、相同的行为、意义及共同关系的对象的描述就称为类。
浅白的说,类就是具相同性质对象的集合;反之,对于类而言,对象就是它的实例(instance)。
特性5:继承
         对象的继承是将对象组织为从一般到特殊的层次结构。
特性6:多态
        多态是被多个类定义的同名方法并在每个类中都有不同的实现,这样同一个变量就可以不同时间指向不同的类对象,并可以调用它们的同名方法的特性。

本文地址:http://com.8s8s.com/it/it25935.htm