什么是面向对象-[2010-09-02]

  什么是面向对象?很多程序员有都搞不清楚这个问题的答案,包括我自己也不能有一个很确定的答案。其实面向对象并不局限于编程,还存在面向对象的分析,面向对象的设计等,不过接下来探讨的是面向对象的编程。为了避免我将来对现在的想法有疑议,所以我在标题后增加了时间作为版本号。

  要搞清楚什么是面向对象,首先要弄明白到底什么是对象?我认为对象就是某一事物,一个具体的物体可以为对象,某个抽象的事情也可以为对象,例如时间、事情、空间都可以作为一个对象。对象拥有自己的状态和行为,在面向对象的编程中我们时时刻刻都在操作对象并使其状态发生变化,可以这么理解,面向对象的编程就是在程序中建立并操作对象从而完成某项任务或者功能,对象也就成了编程的重要角色。

  面向对象是一种软件开发的思想,它解决了传统软件开发的种种弊端,特别是传统软件开发在重用性可维护性的不足。解决这些问题的正是面向对象的三大特性:封装、继承和多态。

  封装,将说明与实现分离,这样对象的信息得到了隐藏,用户只需要了解对象成员如何使用,而不必关心其真正实现。当要改变其功能时,所有引用此对象的功能都会得到相应的改变,使得程序更加紧凑更加容易维护。

  继承,使得程序拥有良好的重用性,当子类继承父类时,子类将共享来自父类非私有的成员,通过一层层的继承,我们的类库也会越来越丰富多彩,当然继承的弊端就是存在太大的耦合,继承得越多对象与对象间存在的耦合也越紧密,由此违反软件开发中类的功能单一性原则,所以只有合理的使用继承,才能发挥其更大的用处。

  多态,让同样的行为在不同的对象中产生不同的操作结果,实现多态的方法有两种,重载和重写。重载使得同一个类中某一方法产生不同的功能,而重写可以让子类重新定义了父类的方法,这样看起来好像是子类的方法得到了进化。多态的运用可以解耦对象间的关系,在我们的设计模式中会常常用到这一特性。

  由此看来面向对象的编程并不在于我们所编写的代码,而是我们编写程序的思想,特别是在使用三大特性。整个程序好像现实生活中的例子,如何创建一些事物,并且让它们共同完成一项任务。

posted @ 2010-09-03 08:51  佳佳李  阅读(446)  评论(3编辑  收藏  举报