C++之面向对象

一、什么是面向对象的程序设计?

对象:构成系统的基本单位。任何一个对象都具有两个要素,属性和行为。

属性:对象的静态特征;行为:对象的动态特征。

从外界向对象发着的信息,称为消息。

在一个系统中,多个对象之间通过一定的渠道相互联系,要使某一个对象实现某一种行为(即操作),应当向它传送相应的消息。对象之间就是这样通过发送和接收消息互相联系的。首先确定哪些对象组成了这个系统。然后设计这些对象,组装成为一个复杂系统。这就是面向对象的程序设计方法。

二、面向对象设计中包含的一些定义

在C++中,每个对象都是由数据和函数两部分组成的,对应对象中的属性和行为(也称方法)。(数据——属性)、(函数实现的功能——行为)

调用对象中的函数就是向该对象传送一个消息(message),要求该对象实现某一行为(功能)。

2、封装:把对你的内部实现和外部行为分隔开来。它有两方面的含义:一是将有关的数据和操作代码封装在一个对象中,形成一个基本单位,各个对象相对独立,互不干扰;二是将对象中某些部分对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接收外界的消息。这一点的作法称为信息隐蔽。

3、抽象:程序设计中的抽象是表示同一类事物的本质。抽象的过程是将有关事物 的共性归纳、集中的过程。

4、类:类是对象的抽象,而对象是类的特例,或者说是类的具体表现形式。

5、继承:利用已有的共性(类),开发新的特征(子类),子类拥有父类的特征就是所谓的继承。这样可以方便的利用一个已有的类建立一个新的类。

6、多态现象:接收同一消息时,各个对象做出的反应各不相同,分别执行不同的操作。

7、多态性:由继承而产生的相关的不同的类,其对象对同一消息会作出不同的响应。

旧观念:

程序=算法+数据结构

新观念:

对象=算法+数据结构

程序=(对象+对象+对象+……)+消息      或    程序=对象s+消息

三、关于类的若干问题

1、类的声明,一般形式如下:

class 类名

private:

私有的数据成员函数;

public:

公用的数据和成员函数;

};

被声明为私有的(private)成员,只能被本类中的成员函数引用,类外不能调用(友元类例外)。

被声明为公用的(public)成员,既可以被本类中的成员函数所引用,也可被类的作用域内的其他函数引用。

一个类体中,关键字private和public可以分别出现多次。

2、对象的定义方法:先声明类的类型,然后再定义对象,两种定义方法

(1)class 类名 对象名

(2)类名 对象名

3、struct声明的类和class声明的类的区别在于:

用struct声明的类,如果对其成员不作private或public的声明,系统将其默认为public。

用class声明的类,如果对其成员不作private或public的声明,系统将其默认为private。

建议尽量使用class来建立类。

4、成员函数在类外的定义方式

成员函数在类外定义时,必须在函数名前面加上类名,予以限定,“::”是作用域限定符或称作用域运算符

::display() display()

则表示display函数不属于任何类,这个函数不是成员函数,而是全局函数。

类函数必须先在类体中作原型声明,然后在类外定义,否则编译会出错。


5、inline成员函数

a、为了减少时间开销,如果在类体中定义的成员函数中不包括循环等控制结构,C++系统会自动将它们作为内置函数来处理。对在类体内定义的函数,一般都省写inline。

b、如果在类体外定义inline函数,则必须将类定义和成员函数的定义都放在同一个头文件中(或写在同一个源文件中),否则编译时无法进行转换。

c、只有在类外定义的成员函数规模很小而调用频率较高时,才将此成员函数指定为内置函数。

d//

点赞