`
shi5jin
  • 浏览: 38226 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

“界面”使用的情况

阅读更多
现有一基础模块A,提供模块间通信服务。类B、C中都有一个私有A*成员用于与其他模块之间通信,B、C的构造函数要求提供一个A的指针来初始化该私有成员。使用B的开发人员在平台W1上开发程序P1,具有A的A1实现版本;使用C的开发人员在平台W2上开发程序P2,具有A的A2实现版本;P1,P2进行通信。现在来看看A的界面如何使用:

对于A的设计者,给出A的界面接口规范A.h向所有驱动厂商、用户提供;并且给出了W1平台的实现A1.h,A1.cpp,其中A1中有派生类A1 : public A,并在A1.cpp中给出了全部接口实现;编译出A1库,并且向客户提供头文件A1.h;

类B为使用A,在B的接口规范B.h中包含A.h,定义A*私有成员,并通过构造函数获得一个A*;B.cpp的所有实现都对A*进行操作。
类C也是这样。

开发P1的程序员在自己定义的模块中需要包含B.h来使用B,其所在的W1中使用的是A的A1版本,故在头文件中应该:
cpp 代码
 
  1. ////P1.h  
  2. #include "B.h"  
  3. #include "A1.h"  
  4.   
  5. A1* a1ptr = new A1(...);  
  6. B  b(a1ptr);  
  7. b.fun()  
  8. ...  
而开发P2的程序员,首先根据A.h开发自己的A的实现A2.h, A2.cpp,然后在自己的模块中使用A2:
cpp 代码
 
  1. ////P2.h    
  2.  #include "C.h"    
  3.  #include "A2.h"    
  4.      
  5.  A2* a2ptr = new A2(...);    
  6.  C  c(a2ptr);    
  7.  c.fun()    
  8.  ...   

这样,A的开发人员可以根据不同环境,开发不同的驱动版本A1, A2, ....;而这些A的不同实现,并不影响B、C的设计和实现人员;P1、P2的开发人员可以根据自己实际需要选择A的不同实现(或者根据A.h自己再开发),而应用B,C。

另外一个好处是更换A的驱动,并不需要重新编译B、C,只需要重新编译P1,P2,并重新链接B、C即可。结构如下图:

带箭头的线表示继承关系,带实心球的线表示包含关系。

分享到:
评论

相关推荐

    财务软件源码财务软件源码

    使用情况:ZW,CF,FX,BB,GD,MR,GZ,YSYF,SM frmIN_SourceAccount.frm 说明: 帐务取数公式定义窗体 使用情况:已经不使用 frmInformation.frm 说明: 伊康财务系统信息窗体 使用情况:ZW,CF,FX,BB,GD,MR,GZ,YSYF ...

    金山卫士BkWin界面框架使用说明

    金山卫士BkWin界面框架是一款专为开发人员设计的界面构建工具,它允许开发者使用XML语言来定义和布局用户界面。该框架提供了一种高效且灵活的方式来创建具有专业外观的应用程序界面,同时简化了资源管理和界面更新的...

    Linux应用技术:二Linux初体验命令操作界面使用.pptx

    在使用者是管理维护人员时,更多情况下会使用远程登录管理服务器(易受到网络等因素影响),故更节省资源,更快速的命令行成为首选。 命令行缺点——需要记忆的内容多 命令行界面的使用 Linux启动后,默认进入图形...

    jx.rar python 使用tkinter写界面

    在“jx.rar”这个压缩包中,我们可以预见到与使用Tkinter来构建用户界面,以及Python多线程和进度条功能相关的代码示例。 首先,Tkinter库提供了丰富的组件,如按钮、文本框、标签等,用于设计窗口和控件。通过这些...

    仿webQQ界面 后台界面 前台界面

    "相当巴适"是四川方言,意味着非常舒适或令人满意,暗示这个界面设计既美观又易于使用。 结合【标签】"webqq",我们可以推测这个项目可能涉及到以下技术知识点: 1. **前端开发**:前端开发者使用HTML、CSS和...

    金山界面库使用说明文档

    金山界面库是一款由金山软件公司开发的用于构建高效、美观且易于使用的图形用户界面的工具集。它提供了丰富的控件和组件,使得开发者能够快速创建出具有专业品质的应用程序界面。本使用说明文档将深入介绍如何利用...

    漂亮的登入界面

    9. **测试**:在开发过程中,应进行多轮的测试,确保界面在各种情况下都能正常工作,包括不同浏览器、操作系统以及分辨率的兼容性测试。 10. **版本控制**:为了便于团队协作和代码管理,开发者可能会使用Git等版本...

    linux squid 管理界面

    5. **性能监控**:实时查看Squid的运行状态,包括缓存命中率、内存使用情况、网络带宽使用等,以优化系统性能。 6. **故障排查**:通过Web界面,可以更容易地诊断和解决Squid服务可能出现的问题,比如连接问题或...

    和利时(HOLLiAS)人机界面HD3000使用手册.pdf

    和利时(HOLLiAS)人机界面HD3000使用手册pdf,和利时(HOLLiAS)人机界面HD3000使用手册:HD3400L文本显示器是连接可编程序控制器(PLC)或具有串口通讯能力电气设备的小型人机界面 (HMI) 产品,它能以文字、数据、...

    VC++界面设计:仿VC界面

    9. **调试和测试**:在界面设计完成后,需要进行详尽的调试和测试,确保界面在各种情况下都能正常工作,没有视觉问题或功能错误。 通过以上知识点的学习和实践,开发者不仅可以掌握仿VC界面的设计技巧,还能提升在...

    边界面_边界面_边界面模型_UMAT子程序_abaqus循环_界面abaqus_源码

    本文将深入探讨“边界面”概念及其在ABAQUS中的应用,包括边界面模型、UMAT子程序的使用以及如何在ABAQUS循环中处理界面问题。 首先,边界面(或称为界面)是指不同材料或结构之间的交界区域。在实际工程问题中,如...

    WPF漂亮的界面登陆后横向裂开到主界面

    - 考虑不同屏幕分辨率和窗口大小的适配,确保界面在各种情况下都能正常工作。 遵循以上步骤和技巧,我们可以创建一个从登录界面平滑过渡到主界面的WPF应用,避免“横向裂开”的问题,提供更优质的用户体验。不断...

    labview界面设计.zip

    在"labview界面设计.zip"这个压缩包中,包含了关于LabVIEW界面设计的一些关键知识点,如分栏工具的使用、窗格对象的缩放、隐藏功能以及自动适应屏幕分辨率等。以下是这些知识点的详细说明: 1. **分栏工具的使用**...

    java界面美化 提供多套皮肤直接使用

    针对这种情况,"java界面美化 提供多套皮肤直接使用"的主题提供了优化和美化Java GUI的方法,使得应用的视觉效果更加现代、美观。这个资源包包含了多种预设的皮肤,可以方便地应用到你的Java应用中,实现快速的界面...

    框架 使用java做网页设计界面

    不过,对于需要离线应用或者嵌入式Web界面的情况,Swing仍然是一个选择。 **Web服务与后端交互** 在Java中,Spring框架是常用来构建后端服务的。Spring Boot简化了Spring的应用启动和配置,使得开发者能快速搭建...

    QT专业医疗界面仪器设计

    界面设计应遵循简洁、直观和一致的原则,以便用户在紧急情况下也能迅速找到所需功能。此外,考虑到医疗环境的特殊性,界面可能需要包含清晰的图标、色彩编码以及符合人体工程学的布局,以减少误操作的可能性。 作为...

    好看的易语言UI界面(适合各种网络验证或辅助界面)

    虽然提供的文件列表中只有"content.txt",通常情况下,这个文本文件可能会包含关于如何使用这些界面元素的说明、代码示例或者是设计资源的详细描述。用户在下载后需要打开这个文件来获取具体的操作指导和使用方法。 ...

    rocketMq可视化界面

    通过这个界面,你可以监控消息发送和接收的情况,查看消息堆积、延迟等信息,从而及时发现并解决问题。这对于优化系统性能、保证消息传输的可靠性至关重要。 在项目文件"rocketmq-dashboard-master"中,包含了实现...

    Python界面版学生系统,python学生管理系统界面版,Python

    在这种情况下,可能使用了像`pymysql`或`mysql-connector-python`这样的库来实现MySQL的连接和SQL语句的执行。这些库允许程序连接到远程或本地的MySQL服务器,执行CRUD(Create, Read, Update, Delete)操作来管理...

Global site tag (gtag.js) - Google Analytics