何时使用UML中的IsRoot,IsAbstract和IsLeaf?

Pea*_*key 5 uml

我碰到下面的描述IsRoot,IsAbstractIsLeaf但不明白的时候,你会使用它们.

摘自http://www2.sys-con.com/itsg/virtualcd/dotnet/archives/0108/clark/index.htm:

通过选中IsRoot复选框,您将限制该类继承自其他类.检查IsAbstract限制类被实例化,并强制客户端实例化派生类以访问类的功能.检查IsLeaf表示该类已密封.密封类是不可继承的,有助于限制继承链的深度.

我的理解

  1. IsRoot似乎暗示它是一个超类
  2. IsAbstract似乎暗示它是一个抽象类
  3. IsLeaf是一个无法继承但可以实例化的类.

有人可以给我一个使用这些模型的真实示例吗?例如,我可以想象诸如'car'之类的类是超类并且是抽象的,在它之下你会有类似'Volvo','Chevrolet'等类.

Xae*_*lis 7

  • isRootUML2中不再存在.在UML 1中,它意味着(来自规范):

isRoot:指定GeneralizableElement是否为没有祖先的根GeneralizableElement.True表示它可能没有祖先,false表示它可能有祖先(无论它是否实际上有任何祖先).

  • isAbstract 表示元素不完整且无法实例化.

如果为true,则分类器不提供完整的声明,通常不能实例化.抽象分类器旨在由其他分类器使用(例如,作为一般元关系或泛化关系的目标).默认值为false.

  • isLeaf意味着你不能重新定义元素,就像final在某些编程语言中一样.

指示是否可以进一步重新定义RedefinableElement.如果值为true,则无法进一步重新定义RedefinableElement.默认值为false.

  • 是的@PeanutsMonkey.忘记isRoot,不再存在.车辆是摘要,因为您无法实例化它.你不知道它的具体类型.这是一辆汽车,一辆公共汽车,一艘船......?IsLeaf更像是软件设计的选择.假设您有一个类TrustedUser,并且您希望阻止任何其他架构师通过继承重新定义此类.然后将其isLeaf属性设置为true. (2认同)