1

interval という属性を持つクラスがあり、この属性にこの間隔を制限する最小値と最大値を指定したいと考えています。

これをどのように表すことができますか?これは可能ですか?

4

3 に答える 3

4

値の型 ( «data type»ステレオタイプを持つ分類子) を複合型用に作成し、それを属性の型として使用します。

たとえば、これはClassAがタイプIntervalのintervalと呼ばれる public 属性を持ち、Intervalがタイプdoubleの public minおよびmax属性を持つ値タイプであることを示しています。

                                +----------------+
+-----------------------+       |   «data type»  |
|        ClassA         |       |    Interval    |
+-----------------------+       +----------------+
| + interval : Interval |       | + min : double |
+-----------------------+       | + max : double |
                                +----------------+

Intervalは値型であるため、その ID は重要ではないため、ClassAでは値によって保持され、おそらく構造体によって実装されます (ターゲット言語が値と構造体をサポートしている場合、Java で値型を持つことはできません)。たとえば、Java の String の場合と同様に、ステレオタイプは慣例によって実装されるため、ID は問題にならないため、文字列に == を使用しないことを覚えておく必要があります)。

«uses»依存関係をClassAからIntervalに配置できますが、これは属性の型から暗黙的であるため、省略されるのが一般的です。

于 2013-02-17T18:07:19.937 に答える
2

私は@Pete Kirkhamにほぼ同意します。 <> ステレオタイプの分類子の代わりにデータ型を使用しますが、私が正しい場合、それは部分的な応答です。@Pete Kirkham は、最小値と最大値の範囲を持つモデル属性に真に対応しました。@Chriss は、値を指定する方法を知りたいと思っていると思います。これには、いくつかの方法があります (意味に応じて)。次のことができます。

  1. 属性のデフォルト値を指定します。
  2. オブジェクト図を作成し、属性をインスタンス化し、値を指定しました。

それが役立つことを願って...

于 2013-02-17T20:09:09.987 に答える
1

値に制限を設けたい場合、別のオプションとして、可能な値を制限するOCL制約を属性に指定することができます。

コンテキスト ClassA inv: self.attributeA >= 1 and self.attributeA <= 10

于 2013-02-20T23:28:02.207 に答える