ann*_*ata 32 .net c# uml properties
不是一个属性,不是一个方法.定型?<<get>> <<set>>?
我正在对现有系统进行逆向建模,所以我需要清楚地反映出这与readonly字段或方法对不同(不管IL说的是什么),所以我想我会选择刻板印象,但我会接受语言独立的get_set_作为一般解决方案.谢谢大家的理智测试.
Mik*_*fer 18
我通常在Visio中准备我的UML图表(我知道,我知道;但是你要做什么?).
在绘制属性时,它们最终如此:
+------------------------+
| MyClass |
|------------------------|
| - _foo : int |
|------------------------|
| «property» + Foo : int |
+------------------------+
Run Code Online (Sandbox Code Playgroud)
«property»是源自«operator»的自定义构造型.
丑陋,我知道.但它很有效,而且很明显.我以相同的方式构建构造函数.
Ray*_*yes 17
属性是写作只是一种方便的方法get_MyValue()和set_MyValue(value)允许转让,而不是正常的方法调用(使用括号).
您访问的实际上是一个.NET属性,C#有自己的语法来访问它们.由于在皮肤下创建了真实get_和set_方法,因此您可以简单地显示这些方法(使您的UML语言独立 - 例如,使您的UML同样适用于VB.NET开发人员)
......或者如你所说,介绍你自己的刻板印象!
我一直在属性名称旁边使用<<get>>和<<set>>构造型,因此它们看起来像字段,但允许您区分get或的访问修饰符set:
+=============================+
| ClassName |
+-----------------------------+
| +<<get>> Id : int |
| -<<set>> Id : int |
| +<<get>> IsSomething : bool |
+-----------------------------+
| + Method1(arg1 : string) |
+=============================+
Run Code Online (Sandbox Code Playgroud)
或者,如果您不希望出现一个以上的属性,那么这也可以工作:
+=============================+
| ClassName |
+-----------------------------+
| +<<get>> -<<set>> Id : int |
Run Code Online (Sandbox Code Playgroud)
并且为了减少混乱,如果get和set具有相同的访问修饰符:
+====================================+
| ClassName |
+------------------------------------+
| +<<get, set>> Description : string |
| +<<get>> -<<set>> Id : int |
Run Code Online (Sandbox Code Playgroud)
这清楚地传达了属性是具有get还是set,以及属性是否为只读(通过<<set>>类图中不存在的属性)。所以基本上您在问题中说的是。
尽管属性是getter和setter方法的语法糖,但它们应该感觉像字段,并且我相信UML图应该反映这一事实,同时还传达什么是公共的,什么是私有的,以及setter是否存在与否。
| 归档时间: |
|
| 查看次数: |
28870 次 |
| 最近记录: |