`
nardoo
  • 浏览: 764 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

面向对象的结构化数据编程

阅读更多

 

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 ( )
 

 

 

  • 描述: data数据的抽象
  • 大小: 3.4 KB
分享到:
评论

相关推荐

    结构化和面向对象编程方法

    相较于结构化编程,面向对象编程可以更好地模拟真实世界中的问题,使得代码更具可读性、可维护性和可扩展性。同时,面向对象编程也更加符合人类的思考方式,更易于学习和理解。 不过,结构化编程和面向对象编程并非...

    结构化思想和面向对象思想

     结构化思想和面向对象思想虽都产生于20世纪60年代,但它们却存在根本差别。结构化方法承袭了传统的编程思想与编程方法,以计算机的计算功能为前提。编写程序的主要目的是数值计算、问题求解。模块是结构化编程的...

    面向对象与结构化编程区别及异同

    结构化编程的语言主流的是c语言,采用结构化的编程方式,主要用来编写操作系统。特点:语言灵活非常接近底层,对硬件有强大的访问能力。对于一个比较复杂的系统,往往是自顶向下,逐步求精,分模块的思想来编写。...

    推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 02.理解结构化程序设计_理解面向对象(共25页).ppt

    理解结构化程序设计_理解面向对象(共25页).ppt 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 03.数据类型和运算符(共19页).ppt 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 04.流程控制和...

    面向对象和面向过程的区别

    其实它在以前基本被叫做“结构化编程”。 早期的程序设计,大量使用共享变量(全局变量)和GOTO语句一类的东西,后来有人证明所有有意义的程序流程都可以使用三种基本流程(顺序、选择、重复)来实现,并提出“GOTO...

    面向半结构化数据处理的混合本体编程-研究论文

    在这项工作中,介绍了一种... 所提出的混合编程语言简化了基于半结构化数据或来自不同来源的数据的统一领域模型的创建和工作。 适用于信息抽取、自动化测试、流程自动化、业务流程建模、基于本体的应用程序创建等任务。

    Delphi基础教程图文版之初识面向对象.docx

    Delphi是一种基于面向对象编程的编程语言,面向对象编程是一种程序设计范式,它将程序中的数据和操作数据的方法组合成一个对象,对象之间通过消息传递来进行通信。在面向对象编程中,对象是程序的基本构建单元,它...

    面向对象程序设计-通讯录.7z

    1、将电话簿数据和相应的函数封装在类中,改写程序使之结构化。 2、增加记录修改功能,能选择修改用户的姓名、电话。 3、增加录入时间的显示及存储。 4、增加默认的查询方式,即查询时只输入姓名的首字母,所有...

    写给大家看的面向对象编程书(第3版).[美]Matt Weisfeld(带详细书签).pdf

    本书是一部独具特色的面向对象技术著作。书中结合代码示例生动透彻地讲述了面向对象思想的精髓,让读者真正学会以对象方式进行思考。此外,本书还讨论了各种与面向对象概念密切相关的应用主题,包括XML、UML建模语言...

    Python基础课程-面向对象编程.pdf

    ⾯向对象编程(Object-oriented Programming,简称OOP)是⼀种编程范例,它提供了⼀种结构化程序的⽅法,以便将属性和⾏为捆绑 到单个对象中。 例如,对象可以表⽰具有姓名属性,年龄,地址等的⼈,具有⾏⾛,说话...

    面向方面CaesarJ的原理与源码分析

    结构化编程表现了这些子程序的语义涵义,抽象的数据结构体现了数据和行为的统一,面向对象的方法则将此概括为相关数据和行为的多样性。 目前的编程主流领域是面向对象(OO)技术。通过使用对象,程序员可以把世界...

    SCALA从入门到精通个人笔记含代码

    面向对象编程初级 类和对象 包 包对象 面向对象编程中级 封装 继承 多态 面向对象编程高级 伴生对象 特质 嵌套类 类型约束 Scala数据结构之集合 函数式编程高级 隐式转换和隐式值 偏函数 高阶函数 ...

    Java面向对象程序设计杨晓燕面向对象基本原则和模式.pptx

    类图(Class diagram)是最常用的UML图,显示类、接口以及它们之间的静态结构和关系,用于描述系统的结构化设计。类图最基本的元素是类或者接口。 第1页/共30页 Java面向对象程序设计杨晓燕面向对象基本原则和模式...

    结构化方法及其数据流图回执方法

    包括由面条式编程到结构化编程再到后来的面向过程以及面向对象。 面条式编程是一种十分简单的编程方式,没有太多的数据类型,也没有复杂的逻辑结构,上手很快,不需要长时间的学习或太多的经验就可以立即掌握。只要...

    面向对象C++编程及可视化程序设计资料

    2)类(class 一个共享相同结构和行为的对象的集合 3)封装(encapsulation :第一层意思:将数据和操作捆绑在一起 创造出一个新的类型的过程 第二层意思:将接口与实现分离的过程 4)继承类之间的关系 在这种...

    Java面向对象程序设计笔记

    O-O程序设计与结构化程序设计的区别 5 3. Java应用程序 5 搭建开发环境 5 4. 类的设计与对象的构造 6 类的两个要素 6 构造函数 7 Java对内存的管理 7 Java源文件的结构 7 第三章 Java语法 8 1. Java注释 8...

    Java数据编程指南

    Enterprise JavaBeans与分布式应用程序 第19章 Enterprise JavaBeans Enterprise JavaBean体系结构 一个简单的Enterprise JavaBean 会话Beaus 面向对象与关系模型 实体beans 数据映射 EJB...

    java面向对象程序设计.pptx

    4.1.1 OOP思想 面向对象编程技术 将数据及对数据的操作封装在一起而形成了类,类是描述相同类型的对象集合。 。面向对象编程(object-oriented programming,OOP)就是定义这些类。 类作为抽象的数据类型用于创建类...

    完整图文版Python高级教程 Python在金融大数据领域的应用 12 第十二讲 面向对象与图形界面编程(共15页).pptx

    完整图文版Python高级教程 Python在金融大数据领域的应用 12 第十二讲 Python面向对象与图形界面编程(共15页).pptx 完整图文版Python高级教程 Python在金融大数据领域的应用 13 第十三讲 金融中的大数据应用与...

    第三讲 Java结构化编程

    《Java程序设计基础教程》按内容分成五篇:Java 语言入门篇、面向对象篇、数据流应用篇、Java GUI编程篇和高级应用篇,共有二十四讲组成。

Global site tag (gtag.js) - Google Analytics