类的封装性和信息隐蔽【C++】

类的封装性和信息隐蔽【C++】

一、公用接口和私有实现的分离

        C++通过类来实现封装性,把数据和与这些数据有关的操作封装在一个类中,或者说,类的作用是把数据和算法封装在用户声明的抽象数据类型中。

        在类中,被操作的数据是私有的,实现的细节对用户是隐蔽的,这种实现称为私有实现。用户只能看到系统的公有接口,这种“类的公用接口与私有实现的分离”形成了信息隐蔽。

二、类的声明和成员函数定义的分离 

        一个源程序可以划分多个源文件:类声明文件( .h文件 )、类实现文件( .cpp文件 )、类的使用文件( main() 所在的.cpp文件 )。利用工程来组合各个文件。

        类声明文件( .h文件 ):将类的声明部分放在类声明文件(头文件)中,这就形成了类的public接口,向用户提供调用类成员函数所需的函数原型。

        类实现文件( .cpp文件 ):将类成员函数的定义放在类实现文件中,这就形成了类的实现方法。

        类的使用文件( main() 所在的.cpp文件 ) :将类的使用部分(通常是主程序)放在类使用文件中, 这样可以清晰地表示出本程序所要完成的工作。 

        如图:

例如:

//CStudent.h	这是头文件,在此文件中进行类的声明
class CStudent {
public:void Setinfo(char* na, int i, char s, int a);void Setgrad(float a, float b, float c);float average();void display();
private:const char name[20];int id;char sex;int age;float grade[3];
};//CStudent.cpp	在此文件中进行函数的定义
#include 
#include 
#include "CStudent.h"
using namespace std;
void CStudent::Setinfo(char* na, int i, char s, int a) {strcpy(name, na);id = i;sex = s;age = a;
}
void CStudent::Setgrad(float a, float b, float c) {grade[0] = a;grade[1] = b;grade[2] = c;
}
float CStudent::average() {return (grade[0] + grade[1] + grade[2]) / 3.0;
}
void CStudent::display() {cout << "ID:" << id << endl;cout << "Name:" << name << endl;cout << "Sex:" << sex << endl;cout << "Age:" << age << endl;
}//main,cpp	主函数模块
#include 
#include "CStudent.h"
using namespace std;
int main() {CStudent stud1;stud1.Setinfo("张三", 2021725, 'm', 18);stud1.Setgrad(100, 90, 80);stud1.display();cout << "平均成绩:" << stud1.average() << endl;return 0;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部