基本上你的方法是正确的。只是你对几个UML规范理解有误。
连接器中间的标签只是连接器的名称。除非进行一些 OCL 巫术,否则这个名称是没有意义的。有一种方法可以用黑色三角形来装饰它,以显示阅读方向。这有时有助于业务人员理解类之间的关系(参见 UML 2.5 第202页上的图11.27)。但通常情况下,您不会使用它。
共享聚合没有语义(UML 第110页:表示属性具有共享聚合语义。共享聚合的精确语义因应用领域和建模者而异。)。所以不要使用开放式菱形。组合(填充式菱形)可用于显示责任(当我被杀死时,我将首先杀死我的组合)。通常它增加的太少,真正有用的只是让无用的组合讨论变得更加激烈。
导航方向是不正确的。中间的 AC 看到了两个连接的类,所以它没有箭头。如果您有额外的(有向)关联,则将其作为单独的(额外的)连接器放置。在这种情况下,将角色名称放置在任何一端。这比简单的箭头更清晰地导航。我个人只在草图上使用箭头。
顺便说一下,我注意到您的类中有与该类相同且采用一个参数的操作。我猜测您打算在此处显示构造函数。在这种情况下,您将使其为 Classname():Classname
并仅提供构造函数所需的参数。否则,这些操作似乎没有太大意义。同样,CRUD 操作似乎适用于一个“自身”的列表,这也可能不是所期望的。您应该拥有一个集合类来处理基类,其中这些操作具有意义。因此,总结一下:您只会添加用于匹配表格列的(私有)属性的getter/setter操作。
P.P.S.: 根据Christophe的评论,用一个<<create>>
型别标识类的实例化操作是个好主意,以突出它的目的。请参见UML 2.5的第196页:
这种型别是标准的一部分(请参见第677页),第678页上的表格指出:
指定指定的特征创建附加到特征的分类器的实例。