面向对象程序设计几点入门级认识

原创 2007年10月13日 09:48:00

面向对象,这是一个相对的概念,相对于面向过程。
       面相对象(Object-Oriented ),这个在台湾被翻译成的词组“面相物件”更能让人明白。OO是要把需要处理的问题的参与者(实体)用一个一个的物件(对象, object)来表示,当然,少不了给出一个一个具体物件的具体处理过程。而面向过程的处理方式就是关注处理的问题中数据的改变,无视涉及数据中的操作 者,其实呢,面相过程里有一个超级大boss——它隐式的把整个问题都看成了一个大物件(对象)。

面相对象的三个特征
        封装Encapsulation,继承Inheritance,多态Polymorphism
程序要有以上三个特征才能说是面向对象,语言要能实现上面三个特征才是面向对象的语言。封装 就是要保持各个对象的独立性,让它成为对象,譬如人虽然骑着自行车,但人和自行车是分开,要分别用不同的对象来描述。虽然能在一定情况下把人和自行车看成一个物件,但是,但是,他妈的人机结合的怪物不会是常态——变态!继承 ,实际上是说的两种,一种类扩展(extend),一种是对所谓接口的实现。前者不过是方便代码的重用,不是重点,后者才是体现面相对象特点的重要特征。郁闷,我对这点还体会不深。多态 ,这个使用上和接口继承有很大关系。多态实际上是接口定义行为种类,而具体工作类去定义行为的具体实现,因为工作类可能很多不同,所以具体行为也就千差万别了,貌似面相过程不太方便做到这一点。
       说起来,面向对象的语言,比如Java直接就支持上面三个特征,既然如此,用Java就能很自然写出面相对象的程序了。以前在网上看到一些牛人,居然能用C写出面向对象的程序,真牛啊,牛啊,佩服之情,如滔滔江水,又如黄河泛滥……

面向对象的设计的重点是对类的设计,而不是对对象的设计
       对类的设计到当然是重点——程序运行的对象的生成模具嘛,对对象设计——还不是要去设计类?
       说点别的。写Java程序(或其它面相对象的程序?)有个特点,就是要注意推迟实现,也就是具体的事情,不到最后不要去搞,比如,先定义一个空泛的接口, 再设计几个不如它空泛的抽象类,再是具体类,而对象的创建这是在程序运行的时候的事情了。这个处理问题的方式还是比较有意思的:远期规划其实最不确定,越 近越清晰。

模块设计追求的是强内聚,弱耦合
      许多功能尽量在类的内部完成,不让外面干预,并且提供给外部尽量少的方法调用。这个就是要使对象世界中的各个对象强壮,独立的意思。

构造函数不能有返回类型
       这个其实不过是语言上的限制罢了,我想。完成对象的构造以后,返回一个状态标志,也不是不可以嘛,我想。


附记:
      回家时候在旧硬盘上拷贝了一些文档,有一篇是我在2004年9月4日, 20:20:45保存过的笔记,就是上面的黑体部分,今天整理的时候顺便把它们都展开一下,真是感慨啊,时间过得真快!

对面向对象编程的理解

“假设我是女娲,我准备捏一些人, 首先,人应该有哪些基本特征: 1.有四肢 2.有大脑 3.有器官 4.有思想 我们就有了第一个模型,这就是抽象。(非常模糊、笼统的一个概念)  其次,我和西...
  • dongguan_123
  • dongguan_123
  • 2016-10-15 07:25:39
  • 101

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

抽象、封装、继承、多态1.抽象 抽象是人们认识事物的常用方法,比如地图的绘制。抽象的过程就是如何简化、概括所观察到的现实世界,并为人们所用的过程。 抽象是软件开发的基础。软件开发离不开现实环境,但需要...
  • gengkunpeng
  • gengkunpeng
  • 2010-11-24 19:19:00
  • 3914

对面向对象程序设计(OOP)的认识

前言   本文主要介绍面向对象(OO)程序设计,以维基百科的解释: 面向对象程序设计(英语:Object-oriented programming,缩写:OOP),指一种程序设计范型,同时也是一...
  • jirongzi_cs2011
  • jirongzi_cs2011
  • 2013-07-29 19:21:53
  • 1567

HDFS入门了解心得

HDFS入门了解心得: 在对Hadoop有了一个框架的基本了解之后,我就已经知道了HDFS就是Hadoop Distribution File System. Hadoop的一套分布式文件管理系统。...
  • dantebl0608
  • dantebl0608
  • 2016-05-26 22:01:59
  • 352

什么是面向对象的设计思想?

什么是面向对象的设计思想? 也许有不少初学者对这个概念还有许多不明白的地方,特别是这个处于新旧思想交替的时代,许多人刚刚学完现在看来是快要淘汰的只是面向过程的语言。他们的脑子还没有脱...
  • lin111000713
  • lin111000713
  • 2013-12-07 10:58:33
  • 1377

java 人事管理系统

  • 2012年05月09日 17:00
  • 819KB
  • 下载

面向对象程序设计课件

  • 2011年04月26日 20:06
  • 597KB
  • 下载

个人对程序员的看法

1.巴菲特曾经评论盖茨说过:比尔盖茨如果转行去卖狗,那他一定是全世界最大的狗贩。在无数个领域内,除了那些极少数的天才外,成功的人往往是那些专注做一件事的人,坚持不一定会成功,但放弃注定失败。 2.程...
  • zhao849443636
  • zhao849443636
  • 2015-08-15 11:00:23
  • 1077

Wicket概括

  • 2011年09月16日 16:19
  • 1KB
  • 下载

C++——谈谈你对面向对象编程的认识

面向对象编程的特点:封装、继承、多态
  • Linux_ever
  • Linux_ever
  • 2015-12-25 11:45:18
  • 1406
收藏助手
不良信息举报
您举报文章:面向对象程序设计几点入门级认识
举报原因:
原因补充:

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