图形建模元编程

时间:2009-07-01 23:25:01

标签: metaprogramming diagramming

是否有任何工具可以让您模拟类(或类层次结构)在运行时如何更改?例如,如果我有一定数量的mixin类将在运行时合并,并且我不知道哪些将在程序运行之前合并,你如何绘制这种类型的运行时行为?

这是一个更好的例子。假设我有一个名为IceCream的基类,我有超过100种可能的风格,这些风格都来自于一个IceCream类。我们还假设IceCream类的任何实例都可以与IceCream类的另一个实例组合在一起,创建一个完全独特的IceCream类型。鉴于此域,您如何使用图形模型实际表明这些类型中的任何一种都可以在运行时组合?

对IceCream类型的所有可能组合进行建模是低效的,因为这些100种IceCream类型可能存在几乎无限的permeations数量。再次,问题是:是否有任何图形建模语言可以指定这种行为?

3 个答案:

答案 0 :(得分:1)

你的设计听起来有点令人不安。如果两种不同的冰淇淋有不同的行为,那么为什么对所有可能性进行建模是错误的呢?你从哪里加载行为?很可能是这种情况,但如果是这样,我猜你想要包含行为......

如果他们没有不同的行为,那么你所说的只是一个带有“Flavor”成员的“IceCream”课程。当唯一的区别是数据时,永远不要创建第二个类 - 代码必须在两种情况下实际上有所不同以保证不同的类。

如果我完全错过了一些我道歉的事。

编辑:让我更具体地说明“包含行为”。如果你的每种冰淇淋口味都有“味道”(这是代码)并且香草,草莓和巧克力之间的味道不同 - 那么你就有3个“味道”冰淇淋类包含在一个“锥形”中类。

Cone类将是我认为你试图建模为“IceCream”的东西。由于锥体包含全部三个,“Lick”方法可以以任何可能的方式组合这三个。你可以舔(下),舔(中)或舔(上),或者你可以舔()并允许舔方法将所有三个组合成一个单独的调用(更真实的代码,你可以通过一个lick()的单个变量将被转发到所有包含的味道。

答案 1 :(得分:0)

我想知道Bento或DabbleDB的个人数据库方法是否与实际建模部分相关。然后也许是Django管理员对逻辑部分的模型内省。听起来你想要创建一个脚本语言的接口。一种vpl库。因此,加强和反思的Django管理员可能是一个起点。

答案 2 :(得分:0)

通常,如果要创建UML类图,可以使用UML中的通用类型。此外,UML中还有模板参数的概念。

查看此网站:Defining Generics with UML Templates

他们使用 Eclipse Modeling Framework 作为工具。