Part4 类与对象 4.1面向对象程序的基本特点 4.2类和对象的定义

对象:现实中对象的模拟,具有属性和行为。
类: 同一类对象的共同属性和行为。

 


4.1面向对象程序的基本特点
抽象:对同一类对象的共同属性和行为进行概括,形成类。
  先注意问题的本质及描述,其次是实现过程或细节。

  数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。
  代码抽象:描述某类对象的共有的行为特征或具有的功能。
  抽象的实现:类

抽象实例--钟表
  数据抽象:
  int hour,int minute,int second
  代码抽象:
  setTime(),showTime()

class  Clock {
    public:
        void setTime(int newH, int newM, int newS);
        void showTime();
    private:
        int hour, minute, second;
};

 

封装:将抽象出的数据、代码封装在一起,形成类。
  目的:增强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员。
  实现封装:类声明中的{}

继承:在已有类的基础上,进行扩展形成新的类。

多态:同一名称,不同的功能实现方式。
  目的:达到行为标识统一,减少程序中标识符的个数。
  实现:重载函数和虚函数

 


4.2类和对象的定义

设计类就是设计类型:

  此类型的“合法值”是什么?
  此类型应该有什么样的函数和操作符?
  新类型的对象该如何被创建和销毁?
  如何进行对象的初始化和赋值?
  对象作为函数的参数如何以值传递?
  谁将使用此类型的对象成员?

 

类定义的语法形式:

class 类名称
{
    public:
        公有成员(外部接口)
    private:
        私有成员
    protected:
        保护型成员
};

类内初始值:

class Clock {
    public:
        void setTime(int newH, int newM, int newS);
        void showTime();
    private:
        int hour = 0, minute = 0, second = 0;//没有初始值的成员将被默认初始化。
};

 

类的成员函数:

  在类中说明函数原型;

  可以在类外给出函数体实现,并在函数名前使用类名加以限定;

  也可以直接在类中给出函数体,形成内联成员函数;

  允许声明重载函数和带默认参数值的函数。

 

内联成员函数:

  为了提高运行时的效率,对于较简单的函数可以声明为内联形式。

  内联函数体中不要有复杂结构(如循环语句和switch语句)。

  在类中声明内联成员函数的方式:

    1 将函数体放在类的声明中。

    2 在类外声明,使用inline关键字。

//4-1钟表类
#include<iostream>
using namespace std;
class Clock{
public:
    void setTime(int newH = 0, int newM = 0, int newS = 0);
    void showTime();
private:
    int hour, minute, second;
};
//成员函数的实现
void Clock::setTime(int newH, int newM, int newS){
    hour = newH;
    minute = newM;
    second = newS;
}
void Clock::showTime(){
    cout << hour << ":" << minute << ":" << second;
}
//对象的使用
int main(){
    Clock myClock;
    myClock.setTime(13,40,0);
    myClock.showTime();
    return 0;
}

 

posted @ 2017-11-29 14:11  LeoSirius  阅读(128)  评论(0编辑  收藏  举报