zoukankan      html  css  js  c++  java
  • 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 
    "<<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 
    "<<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

    输出结果:

  • 相关阅读:
    [CSS] prefers-reduced-motion
    [VSCode] Adding Custom Syntax Highlighting to a Theme in VSCode
    Subversion/Git/ReviewBoard工作流程
    oracle hints
    Node.js学习(10)----文件系统fs
    网络子系统41_inet_peer平衡二叉树的删除
    由链表初始化看C语言的二级指针
    挣值管理不是搞数字游戏(4)——让挣值管理实用!
    关于数据库一致改关闭下redo日志文件丢失的处理办法的总结
    Android 操作系统的内存回收机制
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/3714840.html
Copyright © 2011-2022 走看看