2015-12-10 5 views
8

Wenn ich Signal rechts verstehe, ist dies eine asynchrone Nachricht zwischen zwei oder mehr Objekten. Zum Beispiel in UML haben wir einen Signalklassifikator:UML: Signal Classifier vs Class Classifier

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

Dann können wir dieses Signal in Java schreiben, wie folgend:

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

jedoch in Java haben wir eine Klasse, aber in UML haben wir ein SIGNAL Klassifizierer, aber kein Klassifizierer CLASS (Update: ich meine in diesem Beispiel). Wie erklärt man es?

Antwort

4

Ihre Diskussion über UML-Signale ist korrekt.

Vom spec .:

10.3.3.1 Signale

Ein Signal ist eine Angabe einer Art von Kommunikation zwischen Objekten in dem eine Reaktion asynchron ohne eine in dem Empfänger ausgelöst wird Antworten. Das empfangende Objekt behandelt Signale wie in Klausel 13.3 angegeben. Die Daten, die von der Kommunikation übertragen werden, werden als Attribute des Signals dargestellt. Ein Signal wird unabhängig von den Klassifikatoren definiert, die es behandeln.


jedoch in Java haben wir eine Klasse, aber in UML haben wir einen Signalklassifikator, aber kein CLASS-Klassifikator. Wie erklärt man es?

  1. UML hat eine CLASS Klassifizierer haben, vom spec. (Hervorhebung von mir):

11,4 Klassen

... Der Zweck der Klasse ist eine Klassifizierung von Objekten zu spezifizieren und die Funktionen an, die die Struktur und das Verhalten derer charakterisieren Objekte.

11.4.4 Notation

A-Klasse ist das Classifier Symbol dargestellt werden. Als Klasse ist der meistverwendete Klassifikator, kein Schlüsselwort erforderlich, um anzuzeigen, dass die Metaklasse Klasse ist.

  1. UML ist programmiersprachunabhängig.

    In Java werden Klassen- und Signalklassifizierer von UML als Klassen implementiert.

    Ein anderes Beispiel: UML hat einen Schnittstellen-Klassifizierer, aber C++ hat keine Schnittstellen. Eine Schnittstelle in C++ wäre eine abstrakte (rein virtuelle) Klasse.

+0

möchten Sie vielleicht erwähnen, dass die in UML ausgedrückte Absicht in der Übersetzung in Java verloren geht. –

2

Tatsächlich ist UML reicher als Java. In UML würden Klassifikatorkonzepte für Signale, Klassen, Komponenten und Collaboration der Java-Klasse entsprechen.