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

原创 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保存过的笔记,就是上面的黑体部分,今天整理的时候顺便把它们都展开一下,真是感慨啊,时间过得真快!

SVM的一些总结与认识-入门级

from http://blog.csdn.net/coder_oyang/article/details/46932097 写在前面的话,大家不要被下面的公式吓到,仔细一看,你会发现其实,他们是环环...
  • distsau
  • distsau
  • 2015年07月19日 10:30
  • 149

SVM的一些总结与认识-入门级

支持向量机的一些总结,一整套的推导,浅显易懂,适合入门
  • coder_oyang
  • coder_oyang
  • 2015年07月17日 20:31
  • 1029

关于CABAC的几点认识

一,自适应二进制算术编码 CABAC采用自适应二进制算术编码方式,自适应即信源符号的概率根据编码时符号出现的频繁程度动态进行修改,在编码过程中需要对信源符号概率进行更新,该过程称为建模。 假设有一个随...
  • journeymm
  • journeymm
  • 2016年12月14日 16:13
  • 105

近来对财富的几点认识

近来对财富的几点认识 ■liebert 两年前,我就开始思考什么是“泡沫”,真的会有泡沫产生吗?结合对这个问题的思考,我打算从财富的定义、财富的创造、财富的转移、财富的仓储、财富的消费这五个方面出...
  • liebert
  • liebert
  • 2017年06月11日 22:15
  • 119

关于web service的几点认识

soap 和rest ,现在更有轻量级的restful,改天再写
  • llfylwg
  • llfylwg
  • 2016年05月25日 08:29
  • 100

关于C/C++的几点认识

从学习C语言开始,已经接触这门语言好几年了,不敢说有多精通,本文就本人以往遇到过的几个问题做一个说明。 1、认识C语言的安全隐患。   首先,我们来看一个简单的例子。  int nData = 50;...
  • zhouxuguang236
  • zhouxuguang236
  • 2013年07月22日 20:26
  • 1965

关于物理内存的几点认识

今天小敏(化名)问了一些关于计算机内存的问题,其实我也是似懂非懂。只是平时写程序知道这些内存大概是怎么在计算机怎么分配的,怎么去使用,但还不能给一个新人完全系统的去讲解,计算机内存和程序之间完成的关系...
  • Spwper
  • Spwper
  • 2017年03月22日 15:10
  • 189

前端的几点认识

1. 要有比较好的计算机基础这里的计算机基础指的是数据结构与算法,操作系统,编译原理,计算机网络等等。虽然相对于其他方向而言,前端在工作中用到计算机基础的地方可能少一点,但是无论大小厂,招实习生其实都...
  • mingqingyuefeng
  • mingqingyuefeng
  • 2017年04月28日 15:28
  • 178

我对垂直搜索引擎的几点认识

据说垂直搜索现在很热,那么什么是垂直搜索呢,下面是我的几点认识,欢迎大家讨论。 1、垂直搜索引擎不是什么? 垂直搜索不只是类google的行业通用搜索。以房产行业为例,如果我们按照google...
  • xiangxizhishi
  • xiangxizhishi
  • 2017年07月06日 17:46
  • 157

对项目管理的几点认识

自2007年参加工作以来,参与的项目也有好几个了,但都是以项目成员的角色参与,从来没有以项目经理的角色参与项目。中国有句古话叫“旁观者清”,同一个问题站的角度不同,可能会形成不同的结论。下面我就以一个...
  • muyutingfeng2008
  • muyutingfeng2008
  • 2015年09月01日 16:13
  • 132
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象程序设计几点入门级认识
举报原因:
原因补充:

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