2015-12-10 6 views
8

私は信号を正しく理解していれば、これは2つ以上のオブジェクト間の非同期メッセージです。例えば、UMLでは、我々は信号分類があります。UML:シグナルクラシファイア対クラスクラシファイア

----------------- 
| <<signal>> | 
| SomeEvent | 
----------------- 
|id:Int   | 
|text:String | 
----------------- 
|getId()  | 
|getText()  | 
----------------- 

その後、我々は次のようにJavaでこの信号を書き込むことができます。

class SomeEvent{ 
    private final int id; 
    private final String text; 
    //+constructor + getters 
} 

しかし、Javaで私たちはCLASSを持っていますが、UMLに我々が持っていますSIGNALクラシファイアではなく、CLASSクラシファイア(アップデート:この例ではを意味します)。それを説明する方法?

答えて

4

UMLシグナルについての議論は正しいです。

スペック:

10.3.3.1信号

A信号反応はせずに、受信機で を非同期的にトリガされたオブジェクト間の通信の種類の仕様であるから応答。受信側オブジェクトは、13.3節で指定されているSignalsを処理します。 通信によって搬送されるデータは、信号の属性として表されます。信号は、 を処理する分類器とは独立して定義されます。


しかし、Javaで我々はCLASSを持っていますが、UMLに、私たちは、クラス分類器を信号分類を持っていますが、ではありません。それを説明する方法?

  1. UMLには、仕様からのCLASS分類があります。 (強調鉱山):

11.4クラス

...クラスの目的は、オブジェクトの分類を指定すると、それらの構造と動作を特徴付ける機能を指定することですオブジェクト

11.4.4表記

クラスは、分類記号を用いて示されています。 Classがで最も広く使用されているClassifierは、メタクラスがClassであることを示すためにキーワードが必要ありません。

  1. UMLはプログラミング言語に依存しません。

    Javaでは、UMLクラスと信号分類子がクラスとして実装されています。

    別の例:UMLにはインターフェイス分類子がありますが、C++には インターフェイスがありません。 C++のインタフェースは、抽象クラス(純粋仮想クラス)です。

+0

あなたは、UMLで表現された意図がJavaへの翻訳で失われたと言いたいかもしれません。 –

2

実際、UMLはJavaよりも豊富です。 UMLでは、シグナル、クラス、コンポーネント、およびコラボレーションの分類子の概念は、Javaクラスに対応します。