有没有什么工具可以让你模拟一个类(或一个类层次结构)在运行时是如何改变的?例如,如果我有给定数量的mixin类,它们将在运行时组合在一起,而在程序运行之前,我不知道哪些将被组合,那么如何用图表表示该类型的运行时行为?
这里有一个更好的例子。假设我有一个名为IceCream的基类,并且我有100多种可能的风格都派生自这个IceCream类。我们还假设IceCream类的任何实例都可以与IceCream类的另一个实例组合,以完全创建一个完全唯一的IceCream类型。给定这个域,您如何使用图形模型来实际说明这些类型中的任何一个可以在运行时组合?
假设这100种IceCream类型实际上可能存在无限数量的排列,那么对所有可能的IceCream类型组合进行建模将是低效的。因此,这里又有一个问题:有没有任何图形建模语言可以让您指定这种行为?
发布于 2009-07-01 23:44:13
你的设计听起来有点令人不安。如果两个不同的冰淇淋有不同的行为,那么为什么对所有可能性进行建模是错误的?你从哪里加载行为?很可能是这种情况,但如果是这样,我猜你想要包含行为而不是…
如果它们没有不同的行为,那么您所谈论的只是一个具有"Flavor“成员的类"IceCream”。当唯一的区别是数据时,不要创建第二个类--在这两种情况下,代码必须实际不同,才能保证不同的类。
如果我完全错过了什么,我道歉。
编辑:让我更具体地说明“包含行为”。如果您的每种冰淇淋口味都有一个" taste“(这是代码),并且香草、草莓和巧克力的味道是不同的--那么您就有3个"Taste”冰激凌类,它们包含在一个"Cone“类中。
Cone类将是我认为您试图将其建模为"IceCream“的类。由于圆锥体包含所有这三个元素,因此"Lick“方法可以以任何可能的方式组合这三个元素。您可以lick (底部)、lick(中间)或lick(顶部),也可以只使用lick()并允许lick方法将这三种方法组合到一个调用中(为了更真实的代码,您可以将一个变量传递给lick(),该变量将被转发给所有包含的风格)。
发布于 2009-10-20 15:00:44
我想知道本托或DabbleDB的个人db方法是否与实际的建模部分相关。然后可能是Django管理员对逻辑部分的模型自省。听起来你想创建一个脚本语言的接口。一种vpl库。因此,一个增强的、更具反思性的Django管理员可能是一个起点。
发布于 2010-08-11 20:16:15
通常,如果您想要创建UML类图,您可以利用UML中的泛型类型。此外,在统一建模语言中还存在模板参数的概念。
看看这个网站:Defining Generics with UML Templates
他们使用Eclipse Modeling Framework作为工具。
https://stackoverflow.com/questions/1071802
复制相似问题