我是靠谱客的博主 大气期待,最近开发中收集的这篇文章主要介绍面向对象的结构化数据编程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

2007 年我们提出了结构化数据编程,同时将这种思想广泛应用于新开发的项目中,并且取得了很好的效果。例如:生产测试系统、上海大用户项目、北京(大连)网络表项目、天津(山东)网络表项目等等,这些项目都用到了结构化数据编程的思想。结构化数据编程不仅为协议解析提供了指导方法,而且使得这些代码的实现更为简洁 ,更加易于维护。进入2008 年以来,随着配变项目的陆续推进,我们在吉林配变、广电配变和内蒙配变等项目中也相继尝试更实用的编程技术,用以解决数据结构和转换层次的问题。这一新方法就是“面向对象的结构化数据编程”。

 

一、概述

面向对象的结构化数据编程是在结构化数据的基础上加入面向对象的思想,并将数据的格式转换融合在一起,这样就构成了更加抽象的数据对象。一份协议可以分解为三个层次:结构、格式和语义,其中结构与格式占据其50 %以上的内容。研究面向对象的结构化数据编程就是用于解决描述协议结构和格式的问题。

图1-1 data数据的抽象

 

1-1 data 数据的抽象

1-1data 对象的类图,我们通过实现data 对象的构造函数和运算符重载来封装其格式转换,使得data 对象具有更高的抽象性,使其在外的特性表现为一个value 的数据类型。实际上,data 对象就将数据结构和格式进行了很好的封装。而实现这个过程的方法就是面向对象的结构化数据编程。

二、实现

示例一:

假设以电表协议DT645 为研究对象,考察面向对象的结构化数据编程是如何解决 电能量数据标识 0x9010 对应的描述。0x9010 的数据格式是:xxxxxx.xx BCD 码);数据长度:4 字节;单位:kwh ;(当前)正向有功总电能(+A )。参考代码如下:

#pragma pack (1)
class data {
public:
data (double _val) {
val = hex2bcd(int(_val * 100));
}
operator double () {
return (bcd2hex(val) * 0.01);
}
friend ostream &
operator << (ostream &os, data a) {
return os << double(a);
}
private:
int val : 24;
};
#pragma pack ( )
 

 

 

最后

以上就是大气期待为你收集整理的面向对象的结构化数据编程的全部内容,希望文章能够帮你解决面向对象的结构化数据编程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部