使用OOP类建模“变量树”

时间:2014-02-25 17:46:47

标签: c++ oop

我目前正在为嵌入式项目开发一个帮助工具。

假设我有.elf文件作为嵌入式软件的图像(是的,我知道elf文件可能包含更多信息)。 .elf文件已经链接,因此所有全局(和静态)符号都有固定的地址。

在我的“帮助工具”中,我正在尝试使用类来对符号结构及其关系进行建模。好吧,我只对全局变量感兴趣,没有类或函数或内部变量。 我正在使用C ++,但问题不在于语法,而是相关的分类,所以我想我可以在这里使用抽象描述。

我正在尝试编写一组可用于描述.elf文件中所有全局变量及其关系的类。

假设最顶级的类“globalSymbol”。 “globalSymbol”只有一个成员,地址。

globalSymbol
============
- int address

但仅仅这些信息不足以描述我们的符号,它没有意义所以启动这个类的实例,所以我更喜欢使globalSymbol成为一个抽象类。 但是,我可以想到从globalSymbol继承的三个类,即类“结构”,“数组”和只是一个普通的“变量”。 在我的模型中,这些类看起来像:

variable
=========
- int size (of the datatype in bytes)
- bool isSigned

structure
==========
- std::vector"Member" (I use this piece of C++ for showing that a structure can have several "Members". Unfortunately, the forum software doesn't like <> tags)

array
======
- int size (of the datatype in bytes)
- bool isSigned
- int multiplicity (actual size of the array)

但是,在考虑之后,我觉得这个模型不能描述我的全局变量。 第一个问题是结构类。如果结构只能包含基本整数类型的成员,则这可能有效。然后“成员类”只需要像变量那样的大小和签名,以及它在结构中的偏移量以确定成员地址。 但是结构成员本身可以是结构或数组。

所以我想用std :: vector“globalSymbol”替换std :: vector“Member”。我已经有三个班,为什么不用它们而不是写一个“会员班”呢? 好吧,因为结构类已经有了它的地址。但是一个成员在结构中有一个偏移量。我不确定这个......

第二个问题是数组类。如果我有一系列结构怎么办?怎么能用我的课程建模呢?关于这个话题,我完全迷失了。

好吧,我希望我对我想做的事做了充分的描述。如果没有,请询​​问,我正在尝试提供必要的信息。 在一句话中,我正在尝试编写用于在(嵌入式)C程序中对全局变量及其关系进行建模的类。

0 个答案:

没有答案