清华大学出版社 ZERSITY PR 面向对象程序设计采用新的思路。它面对的是一个 个对象。所有的数据分别属于不同的对象。实际 上,每一组数据都是有特定的用途的,是某种操 作的对象。把相关的数据和操作放在一起,形成 个整体,与外界相对分隔。面向对象程序设计 方法的一个重要特点就是“封装性”,把数据和 操作代码封装在一个对象中。程序设计者的任务 包括两个方面:一是设计对象,即决定把哪些数 据和操作封装在一起;二是在此基础上怎样通知 有关对象完成所需的任务。这时他如同一个总调 度,不断地向各个对象发出命令,让这些对象活 动起来,完成自己范围内的操作。各个对象的操 作完成了,整体任务也就完成了。显然,对一个 大型任务来说,面向对象程序设计方法将是十分 有效的,它能大大降低程序设计人员的工作难度
面向对象程序设计采用新的思路。它面对的是一个 个对象。所有的数据分别属于不同的对象。实际 上,每一组数据都是有特定的用途的,是某种操 作的对象。把相关的数据和操作放在一起,形成 一个整体,与外界相对分隔。面向对象程序设计 方法的一个重要特点就是“封装性” ,把数据和 操作代码封装在一个对象中。程序设计者的任务 包括两个方面:一是设计对象,即决定把哪些数 据和操作封装在一起;二是在此基础上怎样通知 有关对象完成所需的任务。这时他如同一个总调 度,不断地向各个对象发出命令,让这些对象活 动起来,完成自己范围内的操作。各个对象的操 作完成了,整体任务也就完成了。显然,对一个 大型任务来说,面向对象程序设计方法将是十分 有效的,它能大大降低程序设计人员的工作难度, 减少出错机会
清华大学出版社 TSINGHUA UNIVERSITY PRESS 152类和对象 每一个实体都是对象。有一些对象是具有相同的结 构和特性的。在C++中对象的类型称为 “类”( (class)。类代表了某一批对象的共性和特征。 可以说:类是对象的抽象,而对象是类的具体实 例。正如同结构体类型和结构体变量的关系一样, 人们先声明一个结构体类型,然后用它去定义结 构体变量。同一个结构体类型可以定义出多个不 同的结构体变量。在C++中也是先声明一个“类” 类型,然后用它去定义若干个同类型的对象。对 象就是一个“类”类型的变量。类是用来定义对 象的一种抽象数据类型,或者说它是产生对象的 模板。它的性质和其他数据类型(如整型、实型、 枚举类型、结构体类型)相同。在一开始时弄清 角和米的¥
15.2 类 和 对 象 每一个实体都是对象。有一些对象是具有相同的结 构和特性的。在C++中对象的类型称为 “类”(class) 。类代表了某一批对象的共性和特征。 可以说:类是对象的抽象,而对象是类的具体实 例。正如同结构体类型和结构体变量的关系一样, 人们先声明一个结构体类型,然后用它去定义结 构体变量。同一个结构体类型可以定义出多个不 同的结构体变量。在C++中也是先声明一个“类” 类型,然后用它去定义若干个同类型的对象。对 象就是一个“类”类型的变量。类是用来定义对 象的一种抽象数据类型,或者说它是产生对象的 模板。它的性质和其他数据类型(如整型、实型、 枚举类型、结构体类型)相同。在一开始时弄清 对象和类的关系是十分重要的
清华大学出版社 TSINGHUA UNIVERSITY PRESS C++对C的改进,最重要的就是增加了“类”这样 种数据类型。所以C++开始时被称为“带类的 C”。所有面向对象的语言都提供了这种数据类型 在C+中怎样声明一个“类”类型呢?其方法和声 明一个结构体类型是相似的。下面是我们已熟悉 的声明一个结构体类型: struct student fint num; char name [10] char sex i struct student student, student2
C++对C的改进,最重要的就是增加了“类”这样 一种数据类型。所以C++开始时被称为“带类的 C”。所有面向对象的语言都提供了这种数据类型。 在C++中怎样声明一个“类”类型呢?其方法和声 明一个结构体类型是相似的。下面是我们已熟悉 的声明一个结构体类型: struct student {int num; char name[10]; char sex ; }; struct student student1,student2;
清华大学出版社 TSINGHUA UNIVERSITY PRESS 上面声明了一个名为 student的结构体类型并定义了 两个结构体变量 student1和 Student2。可以看到它 只包括数据(变量),没有包括操作。如果希望 对结构体变量中各成员赋值或输出它们的值,需 要另外编写有关的操作语句。结构体变量中各成 员在本作用域中都是“敞开”的,大家都可以用, 而且不受任何限制。这就造成程序的不安全。现 在我们声明一个类: class stud∥以clas9开头 {i nt num; char name [10] char sex i ∥以上3行是数据成员 void display ∥这是成员函数 scout<<num: <<num<<endl;
上面声明了一个名为student的结构体类型并定义了 两个结构体变量student1和student2。可以看到它 只包括数据(变量),没有包括操作。如果希望 对结构体变量中各成员赋值或输出它们的值,需 要另外编写有关的操作语句。结构体变量中各成 员在本作用域中都是“敞开”的,大家都可以用, 而且不受任何限制。这就造成程序的不安全。现 在我们声明一个类: class stud//以class开头 {int num; char name[10]; char sex ; //以上3行是数据成员 void display( ) //这是成员函数 {cout<<"num:"<<num<<endl;
清华大学出版社 TSINGHUA UNIVERSITY PRESS cout<<name: <<name<<end: cout<<"sex:!<<sex<<endl;}∥以上4行是操作代码 stud stud1, stud2: ∥定义了两个stud类的对象 这就声明了一个名为ud的类。可以看到声明“类” 的方法是由声明结构体类型的方法发展而来的。 它除了包含数据部分以外,还包括了对这些数据 的操作部分,也就是把数据和操作封装在一起。 display是一个函数,用来输出本对象中学生的学 号、姓名和性别。类除了具有封装性外,还采用 了信息隐蔽原则,使类中的成员与外界的联系减 少到最低限度。现在封装在stud中的成员都对外界 隐蔽,外界不能调用它们。只有本类中的函数 display可以调用同一类中的数据
cout<<"name:"<<name<<endl; cout<<"sex:"<<sex<<endl; } //以上4行是操作代码 }; stud stud1,stud2; //定义了两个stud 类的对象 这就声明了一个名为stud的类。可以看到声明“类” 的方法是由声明结构体类型的方法发展而来的。 它除了包含数据部分以外,还包括了对这些数据 的操作部分,也就是把数据和操作封装在一起。 display是一个函数,用来输出本对象中学生的学 号、姓名和性别。类除了具有封装性外,还采用 了信息隐蔽原则,使类中的成员与外界的联系减 少到最低限度。现在封装在stud中的成员都对外界 隐蔽,外界不能调用它们。只有本类中的函数 display可以调用同一类中的数据