UML类中的可索引类型的建模

时间:2018-01-22 10:25:48

标签: typescript uml

我在uml类diagramm中为可索引类型建模时遇到了问题。 可索引类型用于描述字典。

以下示例说明了我的问题: 给出以下JSON:

{
   "hero1": {
     "f": "fast",
     "c": "clever",
     "g": "good"
   },
   "hero2": {
     "e": "evil"
   },
   "hero3": {}
}

正如您所看到的,有一个包含键值对功能的Hero对象。 每个电源都有一个键,例如" F"和一个值,例如"快速"

用UML建模我可以这样: enter image description here

我的问题出在......部分因为我们想象有成千上万的键值对,为每个键值对创建一个类似乎没有。

在TypeScript中,我会像这样编程:

interface PowerObject {
    [powercode: string]: string
}

我不确定我是否应该将它描述为具有0 .. *关系的Powero关系的英雄。

编辑:我认为问题与链接的问题不同,基于描述未知的一组"类"之间的关系,该结构事先已知。然而,将一个类集成到另一个类中确实有意义并且非常有用。

2 个答案:

答案 0 :(得分:2)

我认为您的模型不是很有用/有帮助。它们将值与属性混淆。

您的<Row>: size_hint_y: None height: self.minimum_height height: 40 Button: text: root.button_text size_hint_x: None top: 200 TextInput: id : name text: root.col_data3 width: 300 TextInput: id: number_input text: root.col_data4 width: 300 input_filter: 'int' Button: text: "Button" size_hint_x: None top: 200 on_press: root.add_seller_expenses() <Rows>: size_hint_y: None height: self.minimum_height orientation: "vertical" <User>: id: user BoxLayout: orientation: "vertical" padding : 20, 5 BoxLayout: orientation: "horizontal" #padding : 10, 10 spacing: 10, 10 size: 450, 40 size_hint: None, None Label: size_hint_x: .2 text: "Number" text_size: self.size valign: 'bottom' halign: 'center' Label: size_hint_x: .4 text: "name" text_size: self.size valign: 'bottom' halign: 'center' Label: size_hint_x: .4 text: "Value" text_size: self.size valign: 'bottom' halign: 'center' ScrollView: Rows: id: rows BoxLayout: orientation: "horizontal" size_hint_x: .2 size_hint_y: .2 Button: text: "+Add More" on_press: root.add_more() <rv>: BoxLayout: orientation: "vertical" Button: size_hint: .25, .03 text: "+Add" on_press: root.add() GridLayout: size_hint: 1, None size_hint_y: None height: 25 cols: 3 BoxLayout: orientation: "vertical" <ExtraPopup>: title: " Extra" title_size: 20 title_font: "Verdana" size_hint: None, None size: 400, 400 auto_dismiss: False BoxLayout: orientation: "vertical" padding : 10, 5 spacing: 10, 10 BoxLayout: orientation: "horizontal" spacing: 10, 10 size: 550, 30 size_hint: 1, None Label: size_hint_x: .3 text: "SN" text_size: self.size valign: 'bottom' halign: 'center' Label: size_hint_x: .7 text: "Name" text_size: self.size valign: 'bottom' halign: 'center' ScrollView: RowsExtra: id: rowsExtra BoxLayout: orientation: "horizontal" size_hint_x: .3 size_hint: .15, .1 Button: #size_hint_x: .2 text: "+Add More" valign: 'bottom' on_press: root.add_extra() BoxLayout: orientation: "horizontal" padding : 10, 5 spacing: 10, 10 size_hint: .5, .2 pos_hint: {'x': .25, 'y':.25} Button: text: 'Ok' id: ok_text on_release: root.dismiss() Button: text: 'Cancel' #size_hint_x: .5 on_release: root.dismiss() <RowExtra>: size_hint_y: None height: self.minimum_height height: 30 Button: text: root.button_text size_hint_x: .3 #top: 200 TextInput: text: root.col_data[1] size_hint_x: .7 <RowsExtra>: size_hint_y: None height: self.minimum_height orientation: "vertical" <MenuButton@Button>: text_size: self.size valign: "middle" padding_x: 5 size : (100, 40) size_hint : (None, None) background_color: 90 , 90, 90, 90 background_normal: '' color: 0, 0.517, 0.705, 1 border: (0, 10, 0, 0) <MainMenu>: content_area: content_area BoxLayout: orientation: 'vertical' spacing : 10 BoxLayout: canvas.before: Rectangle: pos: self.pos size: self.size size_hint_y: 2 MenuButton: text: 'Menu' size : (50, 12) on_release: root.display() BoxLayout: id: content_area size_hint_y: 30 类似乎有一个集合值Hero属性,其中幂值只是来自powers = {f:&#34; fast&#34; ,c:&#34;聪明&#34;,g:&#34;好&#34;,...}

答案 1 :(得分:-1)

感谢您的回答和评论。 基于第一个注释,我可以更好地说明PowerObject在Hero对象中。

然而,子问题仍然存在。这是为了可视化&#34;权力&#34;。 例如。一个PowerObject可以包含零个,一个或多个权力值,如(fast | clever | good | evil | ....)。

因为权力列表可以是无限的并且只是一个字符串,我不太确定我是否以正确的方式说明了它。

enter image description here