如何在C#.NET事件构建物最好可以在UML类图来表示?(How can the c# .net e

2019-07-30 05:36发布

我设计的实体/组件系统,其中帧内实体的通信的问题是由一个事件消息系统解决。 组件被分为两个部分,一个在实体和一种在一个子系统“实体代理”的,保持同步通过观察者类型系统。 我试图与事件和委托的实现。

我想我的应用程序的事件/消息系统的结构模型,我有与代表们的麻烦。 它现在的方式是一个图(附后)示出了代表,EventArgs的,并在系统的实体,但是它们之间的关系的性质只被表示为通用关联。 我也有显示系统接口的第二图。 我需要证明在这些对象引发的事件,因为这大多数复杂的系统。

我知道我需要动态协作和时序图一样好,但我试图找出什么样的,有多少不同的事件支持类我需要以及继承结构将是什么样子。 我想给我自己,我知道将携手消息类型的选择。 我想,然后我可以选择一个EventArgs衍生物和从这些预先定义的类型委托类型以动态图表和组件建筑时间重用。

我想不通的主要问题是是否将事件作为一个属性或运作模式。 我一直在试图用一个关联类的委托和OnSomeEvent()与事件的刻板印象式操作。 因为一个事件不是操作我不喜欢这样。 我已经在保护代码的方法与此在****()命名约定了。 委托签名,多播行为和观察者模式是不是真的通过这种方法捕获。

什么方法都用别人表达这些复杂和紧耦合类? 对我来说,图中的点是这两个文件,更全面地了解系统的接口。 在此阶段,我的过程中,我希望能冻结接口和移动到实施组件本身。

Answer 1:

我将不包括在静态类图中的信号字符,因为信号(这是什么事件是)是一个动态的行为。 因为他们是我想借此事件委托(即他们的签名),并将其包含一类为普通操作。 我认为这将匹配的想法,其目的在于能够相当appropirately发送事件的,它规定了一种如果事件。

哪些信号要去哪里和谁签约谁应该动态图中进行建模。

编辑:

你有没有考虑加入定型像<<事件>> <<>>信号对你的类属性进行分类?



Answer 2:

从静态的角度看,以你的模型时事件和委托被视为简单的方法。 有些工具通过提供任何成见或标记,以显示你的方法为事件/代表和来自正常的方法区分它们扩展规范。

在另一方面,你的事件和委托参数应被视为类。 活动意义时,时间因素加入到你的模型,在这种情况下,你可以使用UML的事件,触发因素( 同步和异步消息传递支持)。

在一个侧面说明,UML是一种半形式化语言,这使得例如不能保证,尽管这可以通过使用UML型材等来定义的两个不相关的状态机之间的事情像事件排序MARTE (这是一个很长一段时间,我没有它看看这样的事情可能已经改变)



文章来源: How can the c# .net event construct best be represented in a UML class diagram?