随着程序的设计的复杂性增加,结构化程序设计方法又不够用了。不够用的根本原因是“代码重用”的时候不方便。面向对象的方法诞生了,它通过继承来实现比较完善的代码重用功能。很多学生在应聘工作,面试的时候,常被问及一个问题“你来谈谈什么是面向对象的程序设计”,学生无言,回来问我,这个问题应该怎么回答。我告诉他,你只要说一句话就够了“面向对象程序设计是对数据的封装;范式(模板)的程序设计是对算法的封装。”后来再有学生遇到了这个问题,只简单的一句对答,对方就对这个学生就刮目相看了(学生后来自豪地告诉我的)。为什么那?因为只有经过彻底的体会和实践才能提炼出这个精华。
面向对象的设计方法和思想,其实早在70年代初就已经被提出来了。其目的就是:强制程序必须通过函数的方式来操纵数据。这样实现了数据的封装,就避免了以前设计方法中的,任何代码都可以随便操作数据而因起的BUG,而查找修改这个BUG是非常困难的。那么你可以说,即使我不使用面向对象,当我想访问某个数据的时候,我就通过调用函数访问不就可以了吗?是的,的确可以,但并不是强制的。人都有惰性,当我想对
i
加1的时候,干吗非要调用函数呀?算了,直接i++多省事呀。呵呵,正式由于这个懒惰,当程序出BUG的时候,可就不好捉啦。而面向对象是强制性的,从编译阶段就解决了你懒惰的问题。
巧合的是,面向对象的思想,其实和我们的日常生活中处理问题是吻合的。举例来说,我打算丢掉一个茶杯,怎么扔那?太简单了,拿起茶杯,走到垃圾桶,扔!注意分析这个过程,我们是先选一个“对象”------茶杯,然后向这个对象施加一个动作——扔。每个对象所能施加在它上面的动作是有一定限制的:茶杯,可以被扔,可以被砸,可以用来喝水,可以敲它发出声音......;一张纸,可以被写字,可以撕,可以烧......。也就是说,一旦确定了一个对象,则方法也就跟着确定了。我们的日常生活就是如此。但是,大家回想一下我们程序设计和对计算机的操作,却不是这样的。拿DOS的操作来说,我要删除一个文件,方法是在DOS提示符下:c:>
del
文件名<回车>。注意看这个过程,动作在前(del),对象在后(文件名),和面向对象的方法正好顺序相反。那么只是一个顺序的问题,会带来什么影响那?呵呵,大家一定看到过这个现象:File
not found. “啊~~~,我错了,我错了,文件名敲错了一个字母”,于是重新输入:c:> del
文件名2<回车>。不幸又发生了,计算机报告:File read only.
哈哈,痛苦吧:)。所以DOS的操作其实是违反我们日常生活中的习惯的(当然,以前谁也没有提出过异议),而现在由于使用了面向对象的设计,那么这些问题,就在编译的时候解决了,而不是在运行的时候。obj.fun(),对于这条语句,无论是对象,还是函数,如果你输入有问题,那么都会在编译的时候报告出来,方便你修改,而不是在执行的时候出错,害的你到处去捉虫子。
同时,面向对象又能解决代码重用的问题——继承。我以前写了一个“狗”的类,属性有(变量):有毛、4条腿、有翘着的尾巴(耷拉着尾巴的那是狼)、鼻子很灵敏、喜欢吃肉骨头......方法有(函数):能跑、能闻、汪汪叫......如果它去抓耗子,人家叫它“多管闲事”。好了,狗这个类写好了。但在我实际的生活中,我家养的这条狗和我以前写的这个“狗类”非常相似,只有一点点的不同,就是我的这条狗,它是:卷毛而且长长的,鼻子小,嘴小......。于是,我派生一个新的类型,叫“哈巴狗类”在“狗类”的基础上,加上新的特性。好了,程序写完了,并且是重用了以前的正确的代码——这就是面向对象程序设计的好处。我的成功只是站在了巨人的肩膀上。当然,如果你使用VC的话,重用最多的代码就是MFC的类库。
分享到:
相关推荐
### 西电面向对象经典讲义01:面向对象技术概览 #### 一、面向对象技术概述 **面向对象技术**(The Technology of Object Orientation)是计算机科学领域中的一种编程思想和技术方法,它强调以“对象”为中心进行...
JS 面向对象经典案例 在JavaScript中,面向对象编程是非常重要的一部分。它提供了一种创建和组织代码的方式,能够让开发者更好地组织和维护代码。在本文中,我们将介绍JavaScript面向对象编程中的经典案例,包括...
"Java面向对象经典案例10个" 本文档提供了十个 Java 面向对象编程的经典案例,涵盖了 Java programming 的基础知识点,适合初学者和大学老师经典讲课习题。本文档的内容包括类继承、方法重载、多态、数组操作等方面...
本文将围绕“西电面向对象经典讲义03”中提到的类型系统及其在程序设计中的作用,展开详细论述。 ### 类型系统在程序设计中的重要性 类型系统是程序设计语言的基础组成部分,它不仅决定了变量和数据结构的合法取值...
在这个名为"C#面向对象经典练习五"的学习资料中,我们将深入探讨C#中的方法和属性的使用,这对于初学者来说是至关重要的知识点。 首先,我们来理解一下“方法”。在C#中,方法是一组完成特定任务的语句,它们可以...
《C++程序设计(面向对象经典教程)》是一本深入探讨C++面向对象编程的权威指南,适合有志于提升C++技能的程序员们。该教程涵盖了C++语言的高级特性,包括类、对象、继承、多态、模板等核心概念,旨在帮助读者理解和...
综上所述,"Java面向对象经典案例——饮品购买系统"涵盖了面向对象编程的诸多关键知识点,通过实践这个案例,不仅能提升编程技能,还能深入理解面向对象设计思想。对于初学者来说,反复练习和理解这些概念,无疑会对...
### C# 面向对象经典知识点 #### 1. 基础术语 - **对象**: 在C#中,对象是一个实例化的类或结构,包含了数据、行为和标识。对象的数据存储在字段、属性和事件中;其行为则由方法和接口定义。 - **类**: 类是对象的...
从C++的角度讲述了面向对象编程的精华,很少关注语法,更多的是关注实现背后的细节问题,想学好C++的同学我觉得可以作为参考资料好好看看(类和类型系统)
T2_面向对象 java 经典教程 经典教材
面向对象编程是软件开发中的一种核心思想,尤其在Java这样的面向对象语言中至关重要。它与传统的面向过程编程有着显著的区别。面向对象编程(OOP)强调的是数据和操作这些数据的函数(方法)的组合,即对象。在这个...
面向对象编程(OOP)是一种计算机编程范式,它使用“对象”来设计软件。对象可以包含数据,表示为对象的属性,以及代码,表示为对象的方法。面向对象编程语言包括Java、C++、C#、Python等。对象彼此之间通过方法调用和...
Java面向对象编程是Java语言的核心特性,它基于类和对象的概念,使得代码更加模块化,易于维护和扩展。本文将详细解析与Java面向对象相关的复习题目,包括类、对象、消息传递、分隔符和注释等关键知识点。 首先,...
根据提供的文件信息,我们可以深入探讨C++面向对象编程的基础概念,并尝试理解如何构建一个最简单的面向对象程序。尽管提供的代码片段并不完整,我们仍然可以从这个基础出发,介绍一些关键的概念和技术点。 ### ...
Java面向对象编程是Java语言的核心特性,它基于三大原则:封装、继承和多态。封装是面向对象编程的基础,它允许我们将数据(属性)和行为(方法)组织在一起,形成一个独立的实体,即对象。在Java中,一切皆为对象,...
以上就是根据给定的信息对面向对象编程中的经典概念和技术的概述。面向对象编程的强大之处在于它提供了一种高效、灵活的方式来组织和设计软件系统,这不仅有助于提高代码的可维护性和可重用性,还能更好地模拟现实...
【免费资源,2分是CSDN的限制。】 可以在链接直接查看:http://blog.csdn.net/u011698550/article/details/78791360
本资料包“C++面向对象程序设计 经典例题 附练习题”显然是为了帮助学生深入理解C++的面向对象特性,并通过实例和练习来巩固学习成果。 在C++中,面向对象的主要概念包括: 1. **类**:类是创建对象的模板或蓝图,...
适合人群:学过python中的列表、字典、元组、函数等基本数据类型的小伙伴
Java面向对象练习题经典 Java面向对象练习题是Java编程语言中非常重要的一部分,这些练习题涵盖了Java语言的基础知识,包括Java基本数据类型、运算符、控制结构、方法、类和对象、继承、多态、抽象类和接口等方面。...