1

我正在尝试创建一个 UML 类图和相应的类定义(例如,在 C# 或 Java 中),其中我有一个通用的关系层次结构和一个或多个基于该一般关系但约束它的专用类。

例如,假设我有以下一般 UML 关系(假设它看起来像 UML):

Router 
 <> 1
  |
  | * 
Card 
 <> 1
  |
  | *
Port

(读作:路由器包含 1 个或多个卡,每个卡包含一个或多个端口)

然后我想扩展它并定义一个专门的类,例如 CiscoRouter。

Router <|---CiscoRouter

此外,假设 CiscoRouter 只能有 1..10 个卡。有没有办法在模型中定义这个限制?

我可以执行以下操作:

Router <|---CiscoRouter
 <> 1           <> 1
  |              |
  | *            |
Card ____________|
 <> 1    10       
  |              
  | *            
Port

但是,从技术上讲,这会创建两个单独的 Card 对象集合,对吗?关于如何最好地定义这一点的任何建议?

实际设计可能会更复杂,因为我们需要 Cisco7200Router、LinkSysRouter 等类以及自定义卡、端口等。例如:

Router <|---CiscoRouter
 <> 1           <> 1
  |              |
  | *            | 10
Card <|------CiscoCard
 <> 1           <> 1
  |              |
  | *            | 4
Port <|------CiscoPort

为了增加另一个复杂性,假设路由器有一个名为 Weight 的属性。但是,在 CiscoRouter 中,我们实际上希望将该属性定义为某个值,例如 4 Lbs(例如,我们的模型以某种方式声明 CiscoRouter 重 4 Lbs,有 10 个卡,每个卡有 4 个端口)。我如何定义这个?

我知道我可以使用抽象类、方法等在代码中做很多这样的事情;但我想知道是否有任何干净的方法可以在模型或元数据中尽可能多地定义这些内容,以便我可以从中生成一些设计文档而无需执行任何操作。

提前致谢,

4

1 回答 1

1

我想说,当 UML 模型元素不容易对语义建模时,表达 UML 模型约束的最佳方式通常是使用 OCL 约束。

于 2010-11-11T22:41:45.930 回答