`

《C++学习笔记》【封装性】类的接口部分与实现部分的分离

    博客分类:
  • C++
阅读更多
===============================================

未完待续,转载时请表明出处:http://www.cofftech.com/thread-1390-1-1.html
欢迎大家跟帖讨论哈~~~~~
===============================================
按照软件工程的约定,一般只在类体内放置成员函数的原型说明,而这些函数的定义则放置于类体之外。
当类体中包含成员函数的函数定义时,称为类的定义。当类体中只包含成员函数的函数说明(即函数原型)而不包括函数定义时,则不称为类的定义而称为类的接口(interface)。
通常将类的接口部分放在供用户程序使用的头文件中,向用户提供为调用类的成员函数所需的函数原型,从而形成类的接口。
位于别处的包括所有成员函数的定义的部分则称为类的实现[方法] (implementation)。它们通常放在另外的隐藏的源文件中。这些隐藏的文件不提供给用户。
软件工程的一个基本原则是将供用户使用的类接口与类的实现[方法]分离。
对于用户而言,他们只须关心类的接口,只要类的功能不变也即类的接口部分不变,无论类的实现[方法]部分如何改变,都不影响用户使用,也无须修改用户程序。用户调用类的成员函数时不须了解类的源代码(即成员函数的定义),而只须了解类的功能也即类的接口即可。因此用户在使用时只须将可能改动过的类的实现[方法]的目标代码连接在用户程序之内即可。软件供应商提供头文件和各隐藏源文件的目标代码模块(即目标文件),以供用户用于编写各种用户程序。
将类接口的重要信息放在头文件中而将不希望用户了解的信息(类的实现[方法]部分)放在不公开发表的源文件(以下称为隐藏源文件)中,这符合最低权限原则。
描述类的功能而不谈其实现细节的做法,有时称为数据抽象(data abstraction)。有人称之为数据隐藏。C++依此方式所提供的所谓抽象数据类型(abstract data type)包括两个部分:类的接口和类的实现[方法]。
[例1]类的接口部分与类的实现[方法]部分彼此分离的例子,包括四个文件。
头文件mulfile.h
//只包括类的接口部分
#if       !defined(_MULFILE_H)
#define _MULFILE_H
#include <iostream.h>
class integ
{
  int j;
public:
  integ(int a) { i = a; }
  int sq();
};
class dbl
{
  double d;
public:
  dbl(double t) { d = t; }
  double sq();
};
#endif              //_MULFILE_H

第一个隐藏源文件mulfile1.cpp(包括类的实现部分,供应商只提供目标文件mulfile1.obj)
// mulfilel.cpp

#include "mulfile.h"
int jnteg::sq( )
{ return i*i; }

第二个隐藏源文件mulfile2.cpp(包括类的实现部分,供应商只提供目标文件mulfile2.obj)
// mulfile2.cpp

#include "mulfile.h"
double dbl::sq( )
{ return d*d; }

主文件mulfile_tst.cpp(用户编写的应用文件)
// mulfile_tst.cpp

#include "mulfile.h"
void main()
{
  int j;
  double d;
  integ ii(6);
  dbl dd(1.5);
  i = ii.sq();
  d = dd.sq();
  cout << i << endl;
  cout << d << endl;
}
/* Results:
   36
   2.25                  */
分享到:
评论

相关推荐

    c++学习笔记(个人学习时做的笔记)

    【C++学习笔记概述】 C++是一门强大的编程语言,其在C语言的基础上进行了扩展,引入了许多现代化的特性。这份笔记主要涵盖了C++的基础知识,包括C++11和C++17的新特性,旨在帮助初学者理解C++的核心概念。 ### C++...

    Visual C++学习笔记

    ### Visual C++学习笔记知识点详解 #### 1. Win32API详解 Win32API是微软为其32位平台提供的应用程序编程接口(Application Programming Interface),适用于所有基于Win32平台运行的应用程序。通过调用Win32 API中...

    C++学习的笔记

    这份"C++学习笔记"涵盖了C++的基础概念、语法、数据类型、控制结构、函数、类与对象、模板、异常处理等多个核心主题,旨在帮助初学者及进阶者深入理解和掌握C++。 一、C++基础 C++起源于C语言,增加了面向对象编程...

    达内C++课程代码及笔记

    C++的核心是面向对象编程(OOP),课程中会讲解类的定义、对象的创建与使用、封装、继承和多态等概念。面向对象编程使得代码更加模块化,易于维护和扩展。类是对象的蓝图,它定义了对象的属性(数据成员)和行为...

    c++笔记001 the c++ programming language

    成员函数则是类中实现具体行为的重要组成部分,它们不仅可以保护类的数据成员,还能够提供丰富的功能和良好的封装性。 通过以上讨论,我们可以看到C++中的类不仅仅是一种语法结构,更是一种设计理念,它鼓励程序员...

    C++设计模式笔记资料.zip

    3. 桥接模式:将抽象部分与实现部分分离,使它们可以独立变化。 4. 组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 5. 装饰模式:动态地给一个...

    《C++ primer》学习记.pdf

    在学习C++ primer的过程中,我们将会了解到计算机编程的基础知识和C++语言的特性。以下是一些重要的知识点,它们涵盖了C++语言的多个方面。 首先,我们需要了解计算机语言的分类。计算机语言分为机器语言、汇编语言...

    Visual c#学习笔记

    2. **面向对象编程**:封装、继承、多态等OOP核心概念,以及类、对象、接口、抽象类的使用。 3. **异常处理**:了解如何使用try-catch-finally来捕获和处理程序运行时可能出现的错误。 4. **泛型**:C#中的泛型...

    《设计模式》学习笔记

    ### 设计模式学习笔记 #### 引言 设计模式(Design Patterns)是在软件设计领域内广泛应用的一种实践指南,它提供了一系列解决常见问题的方案。设计模式可以被理解为面向对象软件设计的经验总结,是对特定面向对象...

    c++课件 ppt笔记

    【C++ 语言基础】 ...这些知识点构成了C++学习的基础,通过深入理解和实践,可以构建强大的程序设计能力。课程提供了一套系统的学习路径,覆盖了C++的各个方面,适合初学者和有一定经验的开发者进一步提升技能。

    我的笔记-qt-c++-c#-后面持续更新.7z

    2. **类与对象**:面向对象编程的基础,封装、继承和多态性。 3. **模板**:用于编写泛型代码。 4. **STL(标准模板库)**:包括容器(如vector、list、set)、迭代器、算法和内存管理工具。 5. **异常处理**:用于...

    MFC 框架原理学习笔记

    3. **控件类**:如CButton,是对标准Windows控件的封装,提供了更高级的接口。 4. **文档和视图类**:如CDocument和CView,实现数据和显示的分离。 5. **应用程序类**:CWinApp,代表整个应用程序,管理程序启动、...

    VC++技术内幕学习笔记

    本学习笔记主要聚焦于Microsoft Foundation Classes (MFC)的深入理解和应用,MFC是微软为Visual C++开发的一个类库,它为Windows应用程序开发提供了强大的支持。MFC将Windows API封装成易于使用的C++类,使得开发者...

    MFC 深入浅出 + 学习笔记

    MFC基于C++的设计原则,提供了大量的类,这些类封装了Windows API的许多功能。其中,最核心的部分是CWinApp,它是每个MFC应用程序的起点,负责程序的初始化和退出。CWnd类是所有窗口对象的基类,而CFrameWnd和...

    VC++学习笔记

    ### VC++学习笔记知识点梳理 #### 一、Visual C++ 6.0 概述 - **集成开发环境**:Visual C++ 6.0 是一个功能强大的集成开发环境(IDE),支持C++语言编程,并提供了多种工具和服务来帮助开发者构建高质量的应用...

    The C++ Programming Language

    1. 类:C++中的类是面向对象编程的核心,它允许程序员定义数据结构和与之相关的操作。类是创建对象的蓝图,可以封装数据和方法,实现数据隐藏和信息封装。 2. 模板:模板是C++的泛型编程工具,允许编写不依赖特定...

    Qt3学习笔记繁体中文

    **Qt3学习笔记** Qt3是 Trolltech 公司(现为 Nokia)开发的一个跨平台的应用程序开发框架,它提供了一整套工具和库,用于创建图形用户界面和其他应用程序。Qt3 支持多种操作系统,包括 Windows、Linux、Mac OS X ...

    ACE网络编程学习笔记

    ### ACE网络编程学习笔记知识点详解 #### 一、面向对象中间件体系结构 **1.1 主机基础设施中间件** 主机基础设施中间件的主要目的是封装不同的底层实现,例如socket和线程,提供统一的接口给上层应用。这种封装有...

    VC++深入详解学习笔记

    ### VC++深入详解学习笔记 #### 一、MFC与Debug模式 - **MFC (Microsoft Foundation Classes)**:这是微软提供的一套C++类库,用于简化Windows编程工作。MFC封装了很多常用的Windows API,使得开发者可以更加高效...

Global site tag (gtag.js) - Google Analytics