c++怎么将一个类,拆分出接口类,和实现类

还拿上一遍中定义的GradeBook类来实现:

#include <iostream>
using std::cout;
using std::endl;

#include <string> // program uses C++ standard string class.
using std::string;

#include <conio.h>

// GradeBook class definition
class GradeBook
{
public:
    // constructor initializes courseName with string supplited as argument.
    GradeBook(string name)
    {
        this->courseName=name;
    } // end GradeBook constructor

    // function to set the course name
    void setCourseName(string name)
    {
        this->courseName=name;// store the course name in the object.
    }// end function setCourseName

    // function to get the course name.
    string getCourseName()
    {
        return courseName;// return object's courseName
    }// end function getCourseName

    // display a welcome message to the GradeBook user
    void displayMessage()
    {
        // call getCourseName to get the courseName
        cout<<"Welcome to the grade book for \n"<<getCourseName()<<"|"<<endl;
    }// end function displayMessage
private :
    string courseName;
};// end class GradeBook

// function main begins program execution
int main()
{
    // create two GradeBook objects.
    GradeBook gradeBook1("CS101 Introduction to C++ programing");;
    GradeBook gradeBook2("CS102 Data Structures in C++");

    // display initial value of courseName for each GradeBook
    cout<<"gradeBook1 created for course:"<<endl;
    gradeBook1.displayMessage();
    cout<<"gradeBook2 created for course:"<<endl;
    gradeBook2.displayMessage();

    cout<<"Test the get function"<<endl;
    cout<<"gradeBook1 call getCourseName"<<gradeBook1.getCourseName()<<endl;
    cout<<"gradeBook2 call getCourseName"<<gradeBook2.getCourseName()<<endl;
    std::cin.get();

    return 0; // indicates successful termination.
}// end main
View Code

代码拆分结构:

定义出接口(头文件/GradeBook.h):

#include<string>
using std::string;

// GradeBook class definition
class GradeBook
{
public:
    // constructor initializes courseName with string supplited as argument.
    GradeBook(string name);
    // function to set the course name
    void setCourseName(string name);
    // function to get the course name.
    string getCourseName();
    // display a welcome message to the GradeBook user
    void displayMessage();
private :
    string courseName;
};// end class GradeBook

 

定义出实现类(源文件/GradeBook.cpp):

#include <iostream>
using std::cout;
using std::endl;

#include "GradeBook.h" // include definition of class GradeBook

// constructor initializes courseName with string supplited as argument.
GradeBook::GradeBook(string name)
{
    this->courseName=name;
} // end GradeBook constructor

// function to set the course name
void GradeBook::setCourseName(string name)
{
    this->courseName=name;// store the course name in the object.
}// end function setCourseName

// function to get the course name.
string GradeBook::getCourseName()
{
    return this->courseName;// return object's courseName
}// end function getCourseName

// display a welcome message to the GradeBook user
void GradeBook::displayMessage()
{
    // call getCourseName to get the courseName
    cout<<"Welcome to the grade book for \n"<<getCourseName()<<"|"<<endl;
}// end function displayMessage

 

在“源文件“下定义Main.cpp写main测试函数:

#include <iostream>
using std::cout;
using std::endl;

#include <conio.h>

#include "GradeBook.h" // include definition of class GradeBook

// function main begins program execution
int main()
{
    // create two GradeBook objects.
    GradeBook gradeBook1("CS101 Introduction to C++ programing");;
    GradeBook gradeBook2("CS102 Data Structures in C++");

    // display initial value of courseName for each GradeBook
    cout<<"gradeBook1 created for course:"<<endl;
    gradeBook1.displayMessage();
    cout<<"gradeBook2 created for course:"<<endl;
    gradeBook2.displayMessage();

    cout<<"Test the get function"<<endl;
    cout<<"gradeBook1 call getCourseName:"<<gradeBook1.getCourseName()<<endl;
    cout<<"gradeBook2 call getCourseName:"<<gradeBook2.getCourseName()<<endl;
    std::cin.get();

    return 0; // indicates successful termination.
}// end main

输出结果:

 

posted @ 2014-05-07 22:25  cctext  阅读(1310)  评论(0编辑  收藏  举报