Class 如何使用UML或类定义限制专用类中的多重性和其他属性

Class 如何使用UML或类定义限制专用类中的多重性和其他属性,class,uml,diagram,modeling,specialization,Class,Uml,Diagram,Modeling,Specialization,我试图创建一个UML类图和相应的类定义(例如,在C#或Java中),其中我有一个通用的关系层次结构和一个或多个基于该通用关系但约束它的专用类 例如,假设我有以下一般的UML关系(假设它看起来像UML): 路由器 1. | | * 卡片 1. | | * 港口 (读作:路由器包含1个或多个卡,每个卡包含一个或多个端口) 然后我想扩展它并定义一个专门的类,例如CiscoRouter Router <|---CiscoRouter Router我想说,当语义不容易由UML模型元素建模时,通

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

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

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

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

Router <|---CiscoRouter

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

感谢您的建议,事实上,我刚刚开始探索这种可能性。然而,我担心OCL本身相当复杂,并且没有得到广泛应用。OCL约束似乎也与它们约束的对象有点分离,我希望在这里找到实际的设计实践会有所帮助。OCL对于简单的任务来说相当简单,特别是当你可以用OOP、lambda表达式、集合和谓词来思考时。OCL是一个标准,也是UML的一部分,我想说,大多数人对工具支持感到失望。在UML图中,您可以将约束作为独立的东西,也可以通过特殊关系与对象连接。OCL约束具有上下文,上下文将它们连接到模型元素。当谈到建模时,最好选择最适合的工具。您可以将基数约束建模为一个属性,并动态检查它,就像您可能实现它一样。但这需要另一个图表,这比编写一个简单的约束要复杂得多。谢谢你的建议,事实上我刚刚开始探索这种可能性。然而,我担心OCL本身相当复杂,并且没有得到广泛应用。OCL约束似乎也与它们约束的对象有点分离,我希望在这里找到实际的设计实践会有所帮助。OCL对于简单的任务来说相当简单,特别是当你可以用OOP、lambda表达式、集合和谓词来思考时。OCL是一个标准,也是UML的一部分,我想说,大多数人对工具支持感到失望。在UML图中,您可以将约束作为独立的东西,也可以通过特殊关系与对象连接。OCL约束具有上下文,上下文将它们连接到模型元素。当谈到建模时,最好选择最适合的工具。您可以将基数约束建模为一个属性,并动态检查它,就像您可能实现它一样。但这需要另一个图表,这比编写一个简单的约束要复杂得多。
Router <|---CiscoRouter
Router <|---CiscoRouter
 <> 1           <> 1
  |              |
  | *            |
Card ____________|
 <> 1    10       
  |              
  | *            
Port
Router <|---CiscoRouter
 <> 1           <> 1
  |              |
  | *            | 10
Card <|------CiscoCard
 <> 1           <> 1
  |              |
  | *            | 4
Port <|------CiscoPort