C# インデクサのUML表現

まだUML使ってるのださっ。そんな声が聞こえてきそうな今日この頃、でもまだまだUMLでございます。

さて、実装レベルでの設計をUMLで行っていく場合困るのがC#特有のあるいはVB特有の言語機能をどうUMLで表現していこうかと言うところです。

たとえばインデクサなんてものは、行ってしまえばクラスインスタンスと同名で公開されている配列に他ならないわけですが、そこはそこちゃんとインデクサとしてわかるようにしたいよね。

indexer

ということで、あれこれ考えた結果がこれ。これだけかよ。まぁその通り。

UMLのステレオタイプは超便利なのでこういうときに使わない手はないわけです。ちゃっかり<<indexer>>などとステレオタイプを作ってしまうしかないわけですね。当然通常のプロパティも<<property>>などとしてしまえばいいわけです。

人によっては、インデクサ・プロパティの実態はメソッドなんだから操作に分解して書くべしという人もおられるのでしょうが、それではせっかく言語使用でカプセル化してくれたというのにもったいない話だし、このUMLを見てこのクラスを利用する人にとってもかえって迷惑な話だと思いますよ。

まぁ、落としどころはクラスデザイナの身も蓋もないプロパティというように記載項目を増やすことですが、まぁそれもどうなんだろうと思ったり。

まぁこんな自由もUMLをスケッチとしてのみ利用していればこそ。

One thought on “C# インデクサのUML表現”

コメントを残す