对象和类(一)——面向对象设计的基本思想和特点

    转载自:http://www.jizhuomi.com/software/47.html

    面向对象编程(OOP)是一种特殊的设计程序的方法,C++通过一些特性改进了C语言,使得应用这种方法更容易。下面简要的讲一下OOP最重要的一些特性:

    (1)抽象和类

    类是用户定义类型的定义。类声明指定了数据将如何存储,同时指定了用来访问和操纵这些数据的方法(类成员函数)。面向对象方法中的抽象是指对具体问题即对象进行概括,抽出一类对象的共性并加以描述的过程。面向对象的软件开发中,首先应该对要解决的问题抽象成类,然后才是解决问题的过程。抽象有两个方面:数据抽象和行为抽象。数据抽象是描述某类对象的属性或状态,,行为抽象是描述某类对象的共同行为或共同功能。

          举个例子,要实现有关时钟的程序,首先要对时钟进行抽象。时钟有时、分、秒,我们用三个整型变量来存储,这就是数据抽象。时钟有显示时间和设置时间等功能,这就是行为抽象。用C++语言描述就是:

       时钟(Clock):
       数据抽象:
       int Hout; int Minute; int Second;
       行为抽象:
       ShowTime(); SetTime();

上面并不是真正的C++代码,只是简单的列出了数据成员和函数成员的代码片段。

(2)封装和数据隐藏

     类的数据成员可以是私有的(默认值),这意味着只能通过成员函数来访问这些数据,这就是数据隐藏。实现具体细节(如数据表示和方法的代码)都是隐藏的,就是封装。封装的时候,我们可以把一些成员作为类和外界的接口,把其他的成员隐藏起来,以达到对数据访问权限的控制,这样可以使程序的各个部分改变时最低程度的影响其他部分,程序会更安全。
    把数据和函数封装为一个可复用的模块,开发时可以利用已有的成果而不必每次都重复编写。我们只需要通过类提供的外部接口访问模块,并不需要知道内部的细节。C++中就是利用类的形式来实现封装的。下面是上面提到的时钟的具体封装形式及时钟类:

 class  Clock      // class是关键字 Clock是类名
       {
       public:                                   // 提示下面是外部接口
              void SetTime(int NewH,int NewM,int NewS);   // 行为,函数成员
              void ShowTime();                           // 行为,函数成员
       private:                                         // 特定的访问权限
              int Hour,Minute,Second;                  // 属性,数据成员          
      };

    这是一个完整的类的声明。它声明了一个名为Clock的类,其中的数据成员和函数成员是前面分析得到的抽象结果。关键字public和private是用来指定成员的不同访问权限的,至于具体访问权限的问题后面课程中会讲到。声明为public的两个函数为类提供了外部接口,外界只能通过这两个接口跟Clock类联系。声明为private的三个整型数据是类的私有数据,外部无法直接访问。我们可以看到,这种访问权限的机制有效实现了对数据的隐藏。

     (3)继承

        我们在软件开发过程中,可能已经有了前人的一些现有的成果,我们没有必要再重新去编写,那么我们怎样利用这些已有的模块呢?还有可能我们对以前写的程序有了更新的认识,需要融入一些新的认识,那怎么办呢?

    这些都可以通过继承来实现,C++语言提供了类的继承机制,让我们软件开发者可以在保持原有特性的基础上,进行更具体、更详细的说明。通过继承我们可以利用之前已经有的程序模块,还可以添加一些新的数据和行为,这在很大程度上提高了程序的复用性,大大节约开发成本。关于继承,后面的课程也会具体讲。

     (4)多态

         多态就是类中具有相似功能的不同函数使用同一个名称。重载函数就实现了多态。利用多态可以对类的行为再抽象,抽象成同一个名称的功能相似的函数,减少程序中标识符的个数。多态是通过重载函数和虚函数等技术来实现的。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值