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

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

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

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

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

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


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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值