框架与库
来源:互联网 发布:淘宝网蹦蹦床价格图片 编辑:程序博客网 时间:2024/06/07 00:30
最近去了一个公司上班。公司有一个软件平台。所谓的平台,其实是一套类库。这套类库是根据自身的业务需要,在开源库的基础上进行了封装,形成自己的类。当需要开发或扩展业务时,直接调用这些库或对其进行进一步的扩展。我个思路很好。以前虽然学过C++面象对象的知识,但是对于类的使用,并没有什么迫切的需要,通过了解这个套库的思想后,我想到可以将原来的许多业务封装到类中,管理起来,形成自己的库。
在使用这套库的时候,最终的功能类都是封装到DLL中,包括有界面和没有界面的。主程序只是按照配置文件去读取相关的DLL,生成整个软件。
在使用这套库的时候,最终的功能类都是封装到DLL中,包括有界面和没有界面的。主程序只是按照配置文件去读取相关的DLL,生成整个软件。
以上是一个尝试,用C++builder实现的串口调试工具。先实现一个纯虚类作为接口,再实现中间层,最后是底层。由于的类的继承关系,解决了代码复用的问题。在上层写好的功能,下层就不必重复去写。在底层类中如TXK3190A9,代码量很少,仅仅是对XK3190A9的通信协议作了解析。其他的通信功能直接调用父类TCommData。TCommBase是一个纯虚类,不能直接产生对象,主要是用来管理底层类的实例,即C++多态的使用。当有多台仪表同时工作时,可以用C++多态来方便管理,这样能很好的解决一机多秤的功能需求。
.h文件//---------------------------------------------------------------------------#ifndef testUnit1H#define testUnit1H//---------------------------------------------------------------------------#include <Classes.hpp>#include <Controls.hpp>#include <StdCtrls.hpp>#include <Forms.hpp>#include <ExtCtrls.hpp>#include "TXK3190A9.h"//---------------------------------------------------------------------------class TForm1 : public TForm{__published:// IDE-managed Components TButton *Button1; TTimer *Timer1; TLabel *Label1; TButton *Button2; void __fastcall Button1Click(TObject *Sender); void __fastcall Timer1Timer(TObject *Sender); void __fastcall Button2Click(TObject *Sender);private:// User declarationspublic:// User declarations __fastcall TForm1(TComponent* Owner); TXK3190A9 * A9;};//---------------------------------------------------------------------------extern PACKAGE TForm1 *Form1;//---------------------------------------------------------------------------#endif.cpp文件#include <vcl.h>#pragma hdrstop#include "testUnit1.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){ A9 = (TXK3190A9*)getTXK3190A9(0); A9->Open("Com1","9600,n,8,1");}//---------------------------------------------------------------------------void __fastcall TForm1::Timer1Timer(TObject *Sender){ if(A9) Label1->Caption = A9->getWeight(); }//---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender){ if(A9) A9->Close(); }上面的代码中,需要自己写的只有几行。
0 0
- 库与框架
- 框架与类库
- 框架与库
- .Net框架与框架类库
- .Net框架与框架类库
- .Net框架与框架类库
- 前端,架构,框架与库
- Python 常用库与框架
- 库与框架的区别
- 视频分享:前端,架构、框架与库
- 常用第三方库与框架
- 前端框架与库的区别
- js框架与库的区别
- 前端之常用库与框架
- 前端框架与库的区别
- 前端框架与库的区别
- frames 框架与iframe框架
- 轻量级框架与重量级框架
- 优化eclipse编辑器,设置文本缩进
- app安装不上、Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled
- Android Http请求方法汇总
- word2vec模型
- onhashchange和history
- 框架与库
- Tomcat Manager用户配置详解
- spring配置文件beans.xml的文档声明部分。
- 欢迎使用CSDN-markdown编辑器
- genymotion创建虚拟设备提示failed to deploy virtual device - 爱程序网
- 贝叶斯法分类和最大似然
- HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 多重背包
- 动态库的链接和链接选项-L,-rpath-link,-rpath
- Android都到了4GB 为什么卡顿还存在?