通过使用一个比喻。
来源:互联网 发布:linux不显示行号 编辑:程序博客网 时间:2024/04/30 12:53
以前所有的课程都有一个共同点--他们都是非面向对象的。现在你已经对这些概念的一个基本的处理,我们可以进行面向对象编程(OOP),其中真正的收益!
在传统的编程中,程序基本上是向计算机的指令列表,通过定义数据(通过变量),然后使用这些数据(通过语句和函数)。数据和工作在该数据的功能是单独的实体,这些实体结合在一起,以产生所需的结果。
那么什么是面向对象的编程呢?与许多事情一样,它也许是最容易理解的,通过使用一个比喻。看看你周围-你看起来都是对象。对象有两个主要成分:1)列出相关的特性(如重量、颜色、大小、硬度、形状等),和2)的一些行为,他们可以展示(例如被打开,使东西热,等..)。这些属性和行为是不可分割的。
与传统的编程,属性(数据)和行为(功能)是独立的实体,这意味着传统的编程往往不提供一个非常直观的现实代表。它是由程序员来管理和连接的属性以适当的方式的行为。
面向对象编程(OOP)为我们提供了设计一个“对象”的能力,其属性和行为联系在一起,成为一个独立的、可重复使用的包装。这允许以一个更模块化的方式编写程序,这使得它们更容易编写和理解,同时也提供了更高程度的代码重用性。对象也提供了一个更直观的方式来与我们的数据,使我们能够定义我们如何与对象交互,以及它们如何与其他对象进行交互。注意,OOP并不取代传统的编程方法。相反,它给你额外的工具,在你的编程工具带管理的复杂性,当需要。
他产生的结果:
我有14美分。
重载运算符(+)和声明一个名为运算符+的函数一样简单,给它两个我们要添加的操作数的参数,选择一个合适的返回类型,然后编写函数。
在我们的美分对象的情况下,实施我们的运营商+()的功能是非常简单的。首先,参数类型:在这个版本的运营商+,我们要添加两个美分的对象,所以我们的功能将采取两个对象的类型美分。第二,返回类型:我们的运营商+将返回一个类型美分的结果,所以这是我们的回报类型。
最后,实施:添加两美分的对象在一起,我们真的需要添加m_cents成员从每一美分的对象。因为我们的重载操作符+()函数是类的一个朋友,我们可以直接访问我们的参数m_cents成员。同时,因为m_cents是一个整数,和C++知道如何添加整数一起使用加号,与整数运算内置的版本,我们可以简单地使用+运算符做添加。
重载减法运算符(-)也很简单:
在传统的编程中,程序基本上是向计算机的指令列表,通过定义数据(通过变量),然后使用这些数据(通过语句和函数)。数据和工作在该数据的功能是单独的实体,这些实体结合在一起,以产生所需的结果。
那么什么是面向对象的编程呢?与许多事情一样,它也许是最容易理解的,通过使用一个比喻。看看你周围-你看起来都是对象。对象有两个主要成分:1)列出相关的特性(如重量、颜色、大小、硬度、形状等),和2)的一些行为,他们可以展示(例如被打开,使东西热,等..)。这些属性和行为是不可分割的。
与传统的编程,属性(数据)和行为(功能)是独立的实体,这意味着传统的编程往往不提供一个非常直观的现实代表。它是由程序员来管理和连接的属性以适当的方式的行为。
面向对象编程(OOP)为我们提供了设计一个“对象”的能力,其属性和行为联系在一起,成为一个独立的、可重复使用的包装。这允许以一个更模块化的方式编写程序,这使得它们更容易编写和理解,同时也提供了更高程度的代码重用性。对象也提供了一个更直观的方式来与我们的数据,使我们能够定义我们如何与对象交互,以及它们如何与其他对象进行交互。注意,OOP并不取代传统的编程方法。相反,它给你额外的工具,在你的编程工具带管理的复杂性,当需要。
面向对象的编程也带来了一些其他有用的概念表:继承,封装,抽象和多态性(语言设计者有一个理念:永远不要使用一个小字,一个大的人会做的)。我们将在接下来的几章中,在即将到来的教程中覆盖所有这些概念。这是一个很大的新材料,但一旦你已经正确地了解OOP,你可能永远都不想回到传统的纯编程了。
123456789101112131415161718192021222324252627282930313233#include <iostream> class Cents{private:int m_cents; public:Cents(int cents) { m_cents = cents; } // add Cents + Cents using a friend functionfriend Cents operator+(const Cents &c1, const Cents &c2); int getCents() const { return m_cents; }}; // note: this function is not a member function!Cents operator+(const Cents &c1, const Cents &c2){// use the Cents constructor and operator+(int, int)// we can access m_cents directly because this is a friend functionreturn Cents(c1.m_cents + c2.m_cents);} int main(){Cents cents1(6);Cents cents2(8);Cents centsSum = cents1 + cents2;std::cout << "I have " << centsSum.getCents() << " cents." << std::endl; return 0;}
他产生的结果:
我有14美分。
重载运算符(+)和声明一个名为运算符+的函数一样简单,给它两个我们要添加的操作数的参数,选择一个合适的返回类型,然后编写函数。
在我们的美分对象的情况下,实施我们的运营商+()的功能是非常简单的。首先,参数类型:在这个版本的运营商+,我们要添加两个美分的对象,所以我们的功能将采取两个对象的类型美分。第二,返回类型:我们的运营商+将返回一个类型美分的结果,所以这是我们的回报类型。
最后,实施:添加两美分的对象在一起,我们真的需要添加m_cents成员从每一美分的对象。因为我们的重载操作符+()函数是类的一个朋友,我们可以直接访问我们的参数m_cents成员。同时,因为m_cents是一个整数,和C++知道如何添加整数一起使用加号,与整数运算内置的版本,我们可以简单地使用+运算符做添加。
重载减法运算符(-)也很简单:
0 0
- 通过使用一个比喻。
- 一个比喻
- 一个比喻
- a metaphor 一个比喻
- 测试的一个比喻!
- 通过比喻来了解spring
- 一个职业生涯过程的比喻
- 对于软件的一个比喻
- 云计算的一个比喻
- 比喻
- 比喻
- 有关股票和经济的一个比喻
- 给ERP一个生动的比喻
- 一个多核并行编程的形象比喻
- java中synchronized用法 一个比喻
- 一个比喻让你看懂RFID原理
- 垃圾回收很形象的一个比喻
- 进程与线程一个简单的比喻
- Makefile经典教程(最牛X的教程)
- Android4.4深入浅出之SurfaceFlinger总体结构
- 全局变量和静态局部变量有什么区别?
- SpringMVC之@RequestMapping,@Responsebody与@RequestBody,以及@PathVariable简单介绍
- 如何提高服务器并发处理能力
- 通过使用一个比喻。
- [回到起点]看看Java HashMap的源码和实现
- __weak弱引用block造成提前释放的问题
- 关于菜单滚动视图实现----HACursor
- torch入门笔记15:nn package详解
- 透明度测试与透明度混合详解《unity shader入门精要》学习笔记
- 【数据结构】 之 表达式求值
- c++面试题
- c++标准库的正则regex