通过使用一个比喻。

来源:互联网 发布:linux不显示行号 编辑:程序博客网 时间:2024/04/30 12:53
以前所有的课程都有一个共同点--他们都是非面向对象的。现在你已经对这些概念的一个基本的处理,我们可以进行面向对象编程(OOP),其中真正的收益!
在传统的编程中,程序基本上是向计算机的指令列表,通过定义数据(通过变量),然后使用这些数据(通过语句和函数)。数据和工作在该数据的功能是单独的实体,这些实体结合在一起,以产生所需的结果。
那么什么是面向对象的编程呢?与许多事情一样,它也许是最容易理解的,通过使用一个比喻。看看你周围-你看起来都是对象。对象有两个主要成分: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
原创粉丝点击