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

原创 2004年11月04日 11:22:00


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

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

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

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

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

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

Android实习札记(6)---ViewPager使用详解

Android实习札记(6)---ViewPager使用详解                                    ——转载请注明出处:coder-pig 札记(5)中介绍...
  • u014450015
  • u014450015
  • 2016年01月12日 00:19
  • 451

【Android学习札记】Intent详解

一、Intent介绍Intent的中文意思是“意图,意向”,Intent是程序中各组件之间进行交互与通讯的一种重要方式,不仅可以指明当前组件要执行的动作,还可以在不同组件之间传递数据; Intent...
  • bt_xxx
  • bt_xxx
  • 2017年02月10日 19:21
  • 99

Git学习札记——进阶

(1)git blame 文件名 该命令会显示出该文件名的创建者,以及最后的提交和时间戳。 。 (2)git reflog 该命令显示的是head指针移动的信息。他是在本地的,而不是你仓库的一部分...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2015年11月11日 22:13
  • 2346

Java复习总结:Java面向对象程序设计 —面向对象(基础篇)

Java复习总结:Java面向对象程序设计 —面向对象(基础篇) 1.       面向对象的三大特征为:封装、继承、多态。 2.       类与对象的关系:类是对象的模板,对象是累的实例,类只...
  • chinaliuyan
  • chinaliuyan
  • 2011年11月17日 17:15
  • 664

java面向对象程序设计期末测试题

测试题一 1.The term wrapper classes refers to   A. the Java classes that contain at least two da...
  • mxx0526
  • mxx0526
  • 2015年11月16日 21:18
  • 1442

学习札记

师者,传道授业解惑也。在学习过程中,老师扮演了相当重要的角色。他是一位领路人,将你从一个懵懵懂懂的门外汉慢慢接触并了解一个精彩纷呈的世界。但是,在传授知识的过程中,为达到既定的教学目标和要求,老师到底...
  • u013755307
  • u013755307
  • 2014年02月25日 14:46
  • 437

面向对象程序设计的4个主要特点

1.封装性. 它包含两个方面的含义.  将有关的代码和数据封装在一个对象中,各对象间相对独立,互不干扰.将对象中的某些部分对外隐蔽,隐蔽内部细节,只留下少量接口.        对象的内部实现和外部行...
  • fangfei_119
  • fangfei_119
  • 2008年07月23日 10:31
  • 14613

最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用35

重新开始 自从吴言从星巴克与梁秀娟分手后,已经两周多了,中间只是收到了一个梁秀娟的短信,上面说:谢谢吴言,她不会再去做傻事了。然后就一直没有她的消息了,吴言虽然还是很有些担心,但是知道这件事情就这么...
  • Yt7589
  • Yt7589
  • 2011年09月22日 12:03
  • 20190

面向对象程序设计有哪些基本特征?

 面向对象程序设计的基本特征有:      1,封装性:          封装性是指将对象相关的信息和行为状态捆绑成一个单元,即将对象封装为一个具体的类。封装隐藏了对象的具体实现,当要操纵     ...
  • yezhouyong
  • yezhouyong
  • 2010年08月07日 15:56
  • 16237

面向对象程序设计基础总结

面向对象程序设计java基础总结
  • ivylingling123
  • ivylingling123
  • 2017年05月11日 19:58
  • 296
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象程序设计札记(1)
举报原因:
原因补充:

(最多只允许输入30个字)