随着程序的设计的复杂性增加,结构化程序设计方法又不够用了。不够用的根本原因是“代码重用”的时候不方便。面向对象的方法诞生了,它通过继承来实现比较完善的代码重用功能。很多学生在应聘工作,面试的时候,常被问及一个问题“你来谈谈什么是面向对象的程序设计”,学生无言,回来问我,这个问题应该怎么回答。我告诉他,你只要说一句话就够了“面向对象程序设计是对数据的封装;范式(模板)的程序设计是对算法的封装。”后来再有学生遇到了这个问题,只简单的一句对答,对方就对这个学生就刮目相看了(学生后来自豪地告诉我的)。为什么那?因为只有经过彻底的体会和实践才能提炼出这个精华。
面向对象的设计方法和思想,其实早在70年代初就已经被提出来了。其目的就是:强制程序必须通过函数的方式来操纵数据。这样实现了数据的封装,就避免了以前设计方法中的,任何代码都可以随便操作数据而因起的BUG,而查找修改这个BUG是非常困难的。那么你可以说,即使我不使用面向对象,当我想访问某个数据的时候,我就通过调用函数访问不就可以了吗?是的,的确可以,但并不是强制的。人都有惰性,当我想对i加1的时候,干吗非要调用函数呀?算了,直接i++多省事呀。呵呵,正式由于这个懒惰,当程序出BUG的时候,可就不好捉啦。而面向对象是强制性的,从编译阶段就解决了你懒惰的问题。
巧合的是,面向对象的思想,其实和我们的日常生活中处理问题是吻合的。举例来说,我打算丢掉一个茶杯,怎么扔那?太简单了,拿起茶杯,走到垃圾桶,扔!注意分析这个过程,我们是先选一个“对象”------茶杯,然后向这个对象施加一个动作——扔。每个对象所能施加在它上面的动作是有一定限制的:茶杯,可以被扔,可以被砸,可以用来喝水,可以敲它发出声音......;一张纸,可以被写字,可以撕,可以烧......。也就是说,一旦确定了一个对象,则方法也就跟着确定了。我们的日常生活就是如此。但是,大家回想一下我们程序设计和对计算机的操作,却不是这样的。拿DOS的操作来说,我要删除一个文件,方法是在DOS提示符下:c:>del文件名<回车>。注意看这个过程,动作在前(del),对象在后(文件名),和面向对象的方法正好顺序相反。那么只是一个顺序的问题,会带来什么影响那?呵呵,大家一定看到过这个现象:Filenotfound.“啊~~~,我错了,我错了,文件名敲错了一个字母”,于是重新输入:c:>del文件名2<回车>。不幸又发生了,计算机报告:Filereadonly.哈哈,痛苦吧:)。所以DOS的操作其实是违反我们日常生活中的习惯的(当然,以前谁也没有提出过异议),而现在由于使用了面向对象的设计,那么这些问题,就在编译的时候解决了,而不是在运行的时候。obj.fun(),对于这条语句,无论是对象,还是函数,如果你输入有问题,那么都会在编译的时候报告出来,方便你修改,而不是在执行的时候出错,害的你到处去捉虫子。
同时,面向对象又能解决代码重用的问题——继承。我以前写了一个“狗”的类,属性有(变量):有毛、4条腿、有翘着的尾巴(耷拉着尾巴的那是狼)、鼻子很灵敏、喜欢吃肉骨头......方法有(函数):能跑、能闻、汪汪叫......如果它去抓耗子,人家叫它“多管闲事”。好了,狗这个类写好了。但在我实际的生活中,我家养的这条狗和我以前写的这个“狗类”非常相似,只有一点点的不同,就是我的这条狗,它是:卷毛而且长长的,鼻子小,嘴小......。于是,我派生一个新的类型,叫“哈巴狗类”在“狗类”的基础上,加上新的特性。好了,程序写完了,并且是重用了以前的正确的代码——这就是面向对象程序设计的好处。我的成功只是站在了巨人的肩膀上。当然,如果你使用VC的话,重用最多的代码就是MFC的类库。
分享到:
相关推荐
Java面向对象程序设计---课件PPT,希望给能够学习者提供帮助,实现对计算机Java基础知识的掌握与理解,为后续学习做好铺垫,实现Java知识的灵活运用
c++马石安-面向对象程序设计-习题答案.zip
面向对象程序设计教程与visual c++6.0教程 经典课件与试题 期末考试 本科 面向对象程序设计教程与visual c++6.0教程 经典课件与试题 期末考试 本科
JAVA 面向对象程序设计教程 第13章 Java网络编程 第13章-Java网络编程-Java面向对象程序设计教程-微课视频版-程杰-清华大学出版社全文共17页,当前为第1页。 第13章 Java网络编程 第13章-Java网络编程-Java面向对象...
面向对象程序设计-Java(张白一).rar,很好的Java学习教程,让Java更简单!
Visual C++与面向对象程序设计教程
面向对象程序设计答案-马石安
Ch09-面向对象程序设计-Python程序设计与算法基础教程(第2版)-江红-清华大学出版社.ppt该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~
JAVA面向对象程序设计实训教程,课件详细,一解就通。 很难找的呀
c++ppt电子教程 C++面向对象程序设计-电子教案
本书内容丰富,结构合理,写作风格严谨,深刻论述了C++语言的面向对象程序设计的各种技术。内容包括:面向对象编程方法、C++语言的各种特性、STL C++输入/输出流、MFC等。本书配备了大量的习题,并列举了易犯的错误...
面向对象程序设计教程(C++语言描述) ppt课件
同《面向对象程序设计(C++语言描述)》马石安、魏文平编著教材同步 源于科任老师,在此备份,需要的可看看
C++面向对象程序设计教程(第3版)——陈维兴、林小茶编著 清华大学出版社 这个是对应的PPT课件,文件为压缩包,里面每章一个PPT文件。
面向对象程序设计与C++教程,欢迎下载!
资源名称:上海交大Java面向对象程序设计视频教程(全31集)资源目录:【】[上海交大][面向对象技术java]上(01-05集)【】[上海交大][面向对象技术java]上(06-10集)【】[上海交大][面向对象技术java]下(21-25集)【】...
此为清华大学出版社陈维兴等人编写的《C++面向对象程序设计教程》习题答案,仅供学习参考
1.2 Java的特点 1.3 三种平台简介 1.4 Java JDK的安装和配置 1.5 Java 运行系统与开发流程 1.6 常用开发工具简介 1.7 注释 第1章 Java语言概述 第1章-Java语言概述-Java面向对象程序设计教程-微课视频版-程杰-清华...
Java面向对象程序设计教程,包括课件和源代码文件夹
《应用基础与面向对象程序设计教程》书籍.pptx