1

UML クラス図と対応するクラス定義 (C# や Java など) を作成しようとしています。ここでは、関係の一般的な階層と、その一般的な関係に基づいているがそれを制約する 1 つ以上の特殊なクラスがあります。

たとえば、次のような一般的な UML 関係があるとします (UML に似ていると仮定します)。

Router 
 <> 1
  |
  | * 
Card 
 <> 1
  |
  | *
Port

(読み方: ルーターには 1 つ以上のカードが含まれ、各カードには 1 つ以上のポートが含まれます)

次に、それを拡張して、CiscoRouter などの特殊なクラスを定義したいと考えています。

Router <|---CiscoRouter

さらに、CiscoRouter は 1..10 枚のカードしか持つことができないとしましょう。モデルでこの制限を定義する方法はありますか?

次のようなことができます。

Router <|---CiscoRouter
 <> 1           <> 1
  |              |
  | *            |
Card ____________|
 <> 1    10       
  |              
  | *            
Port

しかし、これは技術的に Card オブジェクトの 2 つの別々のコレクションを作成することになりますよね? これを最もよく定義する方法について何か提案はありますか?

Cisco7200Router、LinkSysRouter などのクラスと、カスタム カード、ポートなどが必要になるため、実際の設計はおそらくもっと複雑になります。たとえば、次のようになります。

Router <|---CiscoRouter
 <> 1           <> 1
  |              |
  | *            | 10
Card <|------CiscoCard
 <> 1           <> 1
  |              |
  | *            | 4
Port <|------CiscoPort

さらに複雑なことに、Router に Weight というプロパティがあるとします。ただし、CiscoRouter では、実際にそのプロパティを特定の値、たとえば 4 ポンドに定義したいと考えています (たとえば、このモデルでは、CiscoRouter の重量は 4 ポンドで、カードが 10 枚あり、各カードには 4 つのポートがあると記述されています)。これをどのように定義しますか?

抽象クラスやメソッドなどを使用して、コードでこれの多くを実行できることを知っています。しかし、モデルまたはメタデータでこれをできるだけ多く定義して、何も実行せずに設計ドキュメントを生成できるようにする明確な方法があるかどうかを知りたいです。

前もって感謝します、

ダン

4

1 に答える 1

1

セマンティクスが UML モデル要素によって容易にモデル化されない場合に、UML モデルの制約を表現する一般的な最良の方法は、OCL 制約を使用することです。

于 2010-11-11T22:41:45.930 に答える