`
阿尔萨斯
  • 浏览: 4183685 次
社区版块
存档分类
最新评论

理解面向对象和它的3大特点

 
阅读更多

面向对象是什么?你可以说出这个答案吗(相信没有正确答案)?我觉得面向对象只是软件工程中的一种工具而已。那软件工程的目的是什么?目的是编写出可靠、高效、灵活、易扩展、可复用的软件产品。既然面向对象是软件工程当中的一种工具,那我们使用面向对象的目的也应该是这些。就是说我们用面向对象的目的是编写出可靠、高效、灵活、易扩展、可复用的软件产品。我们一定要以这个目的为中心来学习和使用面向对象,不然你会失去方向。大多时候讲面向对象,多是讲面向对象本身,而不讲怎么利用面向对象去解决实际的问题,这样很容易误导初学者。再加上华丽的文字,很多人觉得只要面向对象了,什么事都可以OK了。举个例子,给你一把最好的枪,教你如何使用它,过了一段时间你对这把枪了如指掌。现在让你去打靶,结果100发子弹,一发都没有打中。咦,我不是用了最好的枪了吗?为什么一发都打不中?因为你不知道射击要领,不知道如何瞄准靶心,结果当然可想而知了。我们要OOP(Object-Oriented Programming),不要POO(Programming Object-Oriented)。

面向对象有3大特征(一般讲面向对象都会提到这三个),继承、封装、多态。按字面上理解,对我们来说是全新的概念,但只要你分析一下,就会发现这些都是我们在编程中,常常用到的概念。

封装是什么?只有在面向对象里才有封装的概念吗?不是的,只要是程序就有封装。大家常常用的变量、函数就是封装。举个例子,你写了取用户状态的函数,对调用这个函数的程序来说,取用户状态逻辑是封闭的,所以逻辑发生变化时,不会对调用的程序造成影响。变量也是封装,你定义了一个int变量,无论你给它赋什么值,对调用这个变量的程序来说,就是一个整数型类型的值。提到封装不得不提接口,因为封装是做接口的过程。接口是什么?只有用了interface这个关键字才是接口吗?词典里的解释是物体的接触面、界面。世界是由物体组成的,所以我们的生活当中到处是接口。你看到一个球,它是圆的,圆就是接口。我们的程序也都是由接口组成的,数据类型、关键字、函数、变量等等。比如说看到int这个词,你就知道它是整数型数据类型,我们可以说:int是整数型数据类型的接口。所以封装和接口不是面向对象特有的概念,只不过在面向对象里它们的范围扩大了而已。我们在网上常常能看到面向对象和面向过程之间的讨论,说哪一个好。其实,这些都是不重要的,因为用哪一个方法,都是做接口的过程。关键在于使用这些方法的程序员,看你的抽象能力怎么样了。

多态可能是我们最难理解的一个概念,polymorphism这个词,因为大家没有学习过面向对象的话,是很难碰到的。其实这个也是我们常常用到的一个概念,只不过没有给它命名而已(至少没用多态来命名它)。看下面的例子,
double a = 0,b=5,c=0;

a = 1;
c = a + b;
cout << c << endl;

a = 3.5f;
c = a + b;
cout << c endl;

//计算两个数的合
double sum(double a,double b);

int _tmain(int argc, _TCHAR* argv[])
{
double a=0,b=0;

a = 1;
b = 2;
cout << sum(a,b) << endl;

a = 1.2f;
b = 2.3f;
cout << sum(a,b) << endl;

return 0;
}

//计算两个数的合
double sum(double a,double b)
{
return a+b;
}

//处理int的计算
int sum(int a,int b);
//处理float的计算
float sum(float a,float b);

分享到:
评论

相关推荐

    java学习 面向对象

    java学习好材料,面向对象从软件建模方法论的角度上看,应用软件系统的开发方法已...部化的特点使面向对象的方法更有利于改善软件质量、理解和维护软件系统。面 向对象的方法和一些过程方法结合,组成完整的开发方法。

    Java零基础-面向对象和面向过程.md

    理解面向对象编程和面向过程编程的基本概念和原理。 了解面向对象编程和面向过程编程在代码组织和执行方式上的差异。 掌握如何使用面向对象编程思想编写类和对象,并调用对象的方法。 熟悉面向过程编程的特点和使用...

    pyhon面向对象

    java,c++都有是面向对象的语言,python怎甘示弱呢,这个资料就是让你了解python如何面向对象的

    面向对象的概念和 Java 实现-2.ppt

    理解继承及其特点 运用JAVA程序实现继承 理解多态及其特点设计 运用JAVA程序实现多态 掌握访问修饰符和方法修饰符

    面向对象三大特征.xmind

    java面向对象的精髓在于考虑问题的思路是从现实世界的人类思维习惯出发的,只要领会了这一点,就领会了面向对象的思维方法。这里有面向对象三大特征的思维导图帮你清楚的理解java面向对象。

    全面理解面向对象的 JavaScript(来自ibm)

    当今 JavaScript 大行其道,各种应用...要掌握好 JavaScript,首先一点是必须摒弃一些其他高级语言如 Java、C# 等类式面向对象思维的干扰,全面地从函数式语言的角度理解 JavaScript 原型式面向对象的特点。把握好这一

    面向对象程序设计语言C++--电子教案

    理解和领会结构化程序设计方法与面向对象程序设计方法的各自特点、区别和相互联系。掌握利用VC++ 6.0生成简单应用程序的步骤。

    《java面向对象程序设计-继承和多态》教案.doc

    第四章 面向对象的概念和 Java 实现-2 回顾 类是具有相同属性和行为的一组对象的 集合 , 对象是类的实例 封装是隐藏对象实现细节的过程,以便不让用户看到实现的细节 类可用Class 来定义,类的变量和方法可被该类的...

    PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)

    PHP面向对象三大特点学习 学习目标:充分理解抽象、封装、继承、多态

    《面向对象程序设计java)》课程整体教学设计.docx

    通过完成我爱追星、门禁系统、成绩管理、跑步比赛、键盘游戏图形界面程序,使学生能够熟深入理解面向对象的基本概念,熟练运用GUI、多线程、集合、JDBC等java编程技术,熟练运用面向对象程序设计的编程思想开发微型...

    论文研究-面向对象petri网防空C3I系统建模 .pdf

    面向对象petri网防空C3I系统建模,王飞, 郭圣权,面向对象Petri网具有易于理解、层次分明、建模简单的特点,通过分析防空C3I系统组成和相互关系,构建了防空C3I系统的OPN模型。对一个�

    全面理解面向对象的JavaScript

    要掌握好JavaScript,首先一点是必须摒弃一些其他高级语言如Java、C#等类式面向对象思维的干扰,全面地从函数式语言的角度理解JavaScript原型式面向对象的特点。当今JavaScript大行其道,各种应用对其依赖日深。web...

    Java是一种广泛应用于软件开发的高级编程语言,以其跨平台性、面向对象、安全性等特点而备受青睐

    Java是一种广泛应用于软件开发的高级编程语言,以其跨平台性、面向对象、安全性等特点而备受青睐。本文将介绍Java的基本使用说明和一些使用技巧,帮助用户更好地理解和应用这一编程语言。

    北大青鸟JAVA培训教程-面向对象2

    学习目标 理解继承及其特点 运用JAVA程序实现继承 理解多态及其特点设计 运用JAVA程序实现多态 掌握访问修饰符和方法修饰符

    698通信协议培训阶段性总结.docx

    面向对象的用电信息数据交换协议学习总结,系统总结698采集系统面向对象通信协议的思想和关于698采集系统面向对象通信协议的框架、技术特点与创新,加深对部分术语和数据类型的认知。

    Java技术参考手册_java_

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向...

    Java学习必要的软件包

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向...

Global site tag (gtag.js) - Google Analytics