还拿上一遍中定义的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 ; // indicates successful termination.
}// end main

代码拆分结构:

定义出接口(头文件/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 ; // indicates successful termination.
}// end main

输出结果:

c++怎么将一个类,拆分出接口类,和实现类的更多相关文章

  1. C#找出接口的所有实现类并遍历执行这些类的公共方法

    //这里找出了实现IOutputArray接口的所有类 private void FindAllClass() { var types = AppDomain.CurrentDomain.GetAss ...

  2. mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类

    相信大家在刚开始学习mybatis注解方式,或者spring+mybatis注解方式的时候,一定会有一个疑问,为什么mybatis的dao接口只需要一个接口,不需要实现类,就可以正常使用,笔者最开始的 ...

  3. OpenJDK源码研究笔记(十四):三种经典的设计方法,接口,接口-抽象类-具体实现类,接口-具体实现类

    在研究OpenJDK源码过程中,我发现常用的设计方法就是2种:接口,接口-抽象类-具体实现类 . 在一些其它开源框架和业务开发中,经常存在着第3种设计,接口-具体实现类. 1.只有接口,没有实现类. ...

  4. JAVA中Collection接口和Map接口的主要实现类

    Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素 ...

  5. Java的Stack类实现List接口真的是个笑话吗

        今天在网上闲逛时看到了这样一个言论,说“Java的Stack类实现List接口的设计是个笑话”.   当然作者这篇文章的重点不是这个,原本我也只是一笑置之,然而看评论里居然还有人附和,说“Ja ...

  6. java 数据类型:集合接口Collection之队列Queue:PriorityQueue ;Dequeue接口和ArrayDeque实现类:

    什么是Queue集合: Queue用于模拟队列这种数据结构,队列通常是"先进先出"(FIFO)的容器.队列的头部保存在队列中存放时间最长的元素,尾部保存存放时间最短的元素.    ...

  7. 在Eclipse中生成接口的JUnit测试类

    在Spring相关应用中,我们经常使用“接口” + “实现类” 的形式,为了方便,使用Eclipse自动生成Junit测试类. 1. 类名-new-Other-java-Junit-Junit Tes ...

  8. java基础知识回顾之javaIO类--File类应用:过滤器接口FilenameFilter和FileFilter

    FilenameFilter和FileFilter都是用来过滤文件,例如过滤,以.jpg或者.java结尾的文件,通过看他们的源码:通过使用File类中String[] list(FilenameFi ...

  9. java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

    java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种 ...

随机推荐

  1. directX基础学习系列7 网格(自己创建)

    D3DXMesh 以及 D3DXPMesh都是从ID3DXBaseMesh类中集成,mesh基本是对三角单元进行操作 ID3DXBaseMesh主要函数: HRESULT DrawSubset( DW ...

  2. EditPlus使用心得及常用快捷键

    下载好烈火版EditPlus_4.00.465_SC  然后去官网下载自动补全ACP文件  我用的是php_stx_acp.zip  解压到editplus4主目录下 然后打开软件-设置-参数 先调字 ...

  3. js获取各种宽高方法

    屏幕的有效宽高: window.screen.availHeightwindow.screen.availWidth 网页可见区域宽:document.body.clientWidth 网页可见区域高 ...

  4. sql语句 当前时间查找重复 时间戳转换

    查找重复数据 select id, name, memo from A ) >= ) mysql 当前时间 SELECT NOW(); //2015-10-27 16:43:45 UNIX时间戳 ...

  5. Translation Lookaside Buffer

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION In principle, then, e ...

  6. Flink - Generating Timestamps / Watermarks

    https://ci.apache.org/projects/flink/flink-docs-release-1.0/apis/streaming/event_timestamps_watermar ...

  7. HQL之多表查询(一对多和多对多)

    一.一对多 以班级Classes和学生Student为例:   回忆sql语句: //内链接,两种方式效果一样,查询的是两边都有的数据 SELECT c.*,s.* FROM classes c,st ...

  8. java effective 读书笔记

    java effective 读书笔记 []创建和销毁对象 静态工厂方法 就是“封装了底层 暴露出一个访问接口 ” 门面模式 多参数时 用构建器,就是用个内部类 再让内部类提供构造好的对象 枚举 si ...

  9. 【No.2 Ionic】Android打包

    项目做完之后 接下来就是打包操作了,接下来直接说Android 打包操作 生成签名证书 keytool -genkey -alias vincentguo -keyalg RSA -validity  ...

  10. Bootstrap 巨幕页头缩略图和警告框组件

    一.巨幕组件 //在固定的范围内,有圆角 <div class="container"> <div class="jumbotron"> ...