设为首页 加入收藏

TOP

13.1.11 类文件的组织
2013-10-07 01:13:40 来源: 作者: 【 】 浏览:68
Tags:13.1.11 文件 组织

13.1.11  类文件的组织

信息隐藏对开发大型程序是非常有用的,它可以极大地保证程序质量。类的用户对于类中具体如何实现的并不感兴趣,它只需要了解类的说明(其中包含着类与外界的接口),这已足够使类的使用者能够使用类。一般,一个较大的类可以分为3个文件来存放:

将类的说明作为一个头文件来存放。

将类的实现单独组成一个文件,其中只含有关于类的成员函数定义,可单独编译,但因为没有入口点main()函数,不能运行。

将对类的使用放在一个文件中,其中包含一个main()函数。

【示例13-16】 student类的完整实现,它由3个文件组成,分别是类的头文件、类的实现文件,以及类的使用文件。

1.第1个文件

第1个文件student.h为头文件。代码如下:

  1. class student  
  2. {  
  3. private:  
  4.     int id;                               //学号  
  5.     char* name;                           //姓名  
  6.     float chinese,english,math;           //语文、英语
    、数学三门课程成绩
     
  7. public:  
  8.     student();                            //构造函数  
  9.     student(int,char*,float,float,float);//构造函数,
    设置学号,姓名,3门课程成绩
     
  10.     ~student();                           //析构函数  
  11.     void setid(int);                      //设置学号  
  12.     void setname(char *);                 //设置姓名  
  13.     void setscore(float,float,float);     //设置课程分数  
  14.      float sum();                         //求3门课程总分  
  15.     float average();                      //求3门课程平均分  

分析:在此头文件中只需存放类的声明,其成员函数的实现不需在此列出。

2.第2个文件

第2个文件student.cpp,其中包含类的实现。代码如下:

  1. #include "student.h"  
  2. #include "iostream.h"  
  3. student::student()  
  4. {  
  5.     id=0;  
  6.     name="##";  
  7.     chinese=english=math=0;  
  8.     cout<<"构造函数调用!"<<endl;  
  9. }  
  10. student::student(int n_id,char * n_name,float n_chinese,float n_english,  
  11. float n_math)  
  12. {  
  13.     id=n_id;  
  14.     name=n_name;  
  15.     chinese=n_chinese;  
  16.     english=n_english;  
  17.     math=n_math;  
  18.     cout<<"带参数构造函数调用!"<<endl;  
  19. }  
  20. void student::show()  
  21. {  
  22.     cout<<"学号"<<setw(6)<<"姓名"<<setw(6)<<"语文"<<setw(6)<<"英语  
  23.     "<<setw(6)<<"数学"<<endl;  
  24.     cout<<id<<setw(6)<<name<<setw(6)<<chinese<<setw(6)<<english<<setw(6)  
  25.     <<math<<endl;  
  26. }  
  27. student::~student()  
  28. {  
  29.     cout<<"析构函数!"<<endl;  
  30. }  
  31. void student::setid(int new_id)  
  32. {  
  33.     id=new_id;  
  34. }  
  35. void student::setname(char * new_name)  
  36. {  
  37.     name=new_name;  
  38. }  
  39. void setscore(float new_chinese, float new_enlisth, float new_math)  
  40. {  
  41.     chinese=new_chinese;  
  42.     english=new_english;  
  43.     math=new_math;  
  44. }  
  45. float student::sum()  
  46. {  
  47.     float sum;  
  48.     sum=chinese+english+math;  
  49.     return sum;  
  50. }  
  51. float student::average()  
  52. {  
  53.     float average;  
  54.     average =(chinese+english+math)/3;  
  55.     return average;  

分析:在这个文件中要注意,它只包含类的成员函数,将要说明相应类的头文件包含进来,也要将使用系统库函数的头文件包含进来。

3.第3个文件

第3个文件是类的使用,其中应包含一个main()函数。代码如下:

  1. #include "student.h"  
  2. #include "iostream.h"  
  3. #include "iomanip.h"  
  4. void main()  
  5. {  
  6.     student s1(1,"Bob",80,90,85);  
  7.     s1.show();  
  8.     student s2;  
  9.     s2.show();  
  10.     student s3;  
  11.     s3=s1;  
  12.     s3.show();  

3个文件做好以后,就可利用集成开发环境建立工程文件,联合编译成可执行文件。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇13.1.7 友元 下一篇13.1.10 嵌套类

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: