UML图:在线Webstore类图和关系

时间:2016-11-10 21:53:48

标签: uml model-associations staruml

我正在网上商店工作。这是一个简单的网上商店,我必须为类创建域UML图并显示多重性。我对我想出的多样性感到困惑。我不知道如何区分组成,聚合和关联。下面是我想出的图表。有人能告诉我我是否走在正确的轨道上?

http://i.imgur.com/8FwhsaI.jpg

2 个答案:

答案 0 :(得分:4)

还不错。除非您需要处理数据库设计中的内存管理或外键约束,否则您不应该为聚合而烦恼。把它们留下吧。

您应该做的一个重要更改是关联的角色名称。例如。而不是声明为属性的shippingAddress:Address使用shippingAddress上出现的Address附近的角色User来自Address(等等)。

由于Address是一种常见的地方并且全部使用,因此您可以将该类从此图表中删除,并创建一个单独的图表,其中with open('interfaces.txt') as infile: # Each interface must be separated by a blank line as in the sample interfaces = infile.read().split('\n\n') interfaces = map(str.splitlines, interfaces) interfaces = {lines[0][:-1]: [line.strip() for line in lines[1:]] for lines in interfaces} def interface_value(interface_name, line_prefix): # Make this argument case-insensitive to make the function easier to use line_prefix = line_prefix.lower() lines = [line for line in interfaces[interface_name] if line.lower().startswith(line_prefix)] if len(lines) == 0: raise ValueError('No lines found with given prefix') if len(lines) > 1: raise ValueError('Multiple lines found with given prefix: \n %s' % lines) return lines[0][len(line_prefix):].strip(': ') eth1_flags = interface_value('eth1', 'flags') eth2_mtu = interface_value('eth2', 'Maximum Transfer Unit size is') print(eth1_flags) print(eth2_mtu) 位于中间,而所有其他人使用它环绕它。

答案 1 :(得分:0)

我同意托马斯,但我会展示其他要点,所以你可以调整你的图表。 请不要把它看成具有破坏性的东西。我相信这些技巧可以帮到你。

  • 显示每个连接的多重性
  • 不要使用getter和setter *
  • 不要使用ID的属性*
  • 订单使用User进行合成(没有意义,订单与用户相关,OrderLine使用Order进行合成;
  • 产品使用OrderLine和Review进行聚合,使产品与产品合成;
  • 制造商与产品进行聚合。 (取决于你的系统,它可以是一个组合,但它更可能是一个聚合)。

记住(部分)用(整体)

制作东西
  • 如果你有与该类的连接,则不需要在类中创建属性,除非你有一个列表,(例如:在Payment和Class CreditPayment中属性CreditPayment);
  • 您可以按顺序制作产品清单。在此之后,您可以删除Orderline Class。

*如果您不从模型中生成代码。