2015-12-10 22 views
8

Jeśli dobrze rozumiem sygnał, jest to wiadomość asynchroniczna między dwoma lub więcej obiektami. Na przykład w UML mamy klasyfikator sygnału:UML: klasyfikator sygnału vs klasyfikator klasy

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

Wtedy możemy napisać ten sygnał w Javie, jak następuje:

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

Jednak w Javie mamy klasy, ale w UML mamy Klasyfikator SIGNAL, ale nie klasyfikator KLASY (Aktualizacja: mam na myśli w tym przykładzie). Jak to wytłumaczyć?

Odpowiedz

4

Twoja dyskusja na temat sygnałów UML jest poprawna.

Z spec .:

10.3.3.1 sygnałów

sygnał jest określenie rodzaju komunikacji pomiędzy obiektami, w którym reakcja jest asynchronicznie spowodowało w odbiorniku bez Odpowiadać. Obiekt odbierający obsługuje sygnały zgodnie z punktem 13.3. Dane przenoszone przez komunikację są reprezentowane jako atrybuty sygnału. Sygnał jest definiowany niezależnie od obsługi klasyfikatorów.


Jednak w Javie mamy klasy, ale w UML mamy klasyfikator sygnałów, ale nie klasyfikatora klasie. Jak to wytłumaczyć?

  1. UML ma klasyfikatora klasy, od specyfikacji. (Kopalnia nacisk):

11.4 Klasy

... Celem klasy jest określenie klasyfikacji obiektów i określenie cech, które charakteryzują strukturę i zachowanie tych obiekty.

11.4.4 Oznaczenia

klasa jest przedstawione poprzez symbol klasyfikatora. Ponieważ klasa jest najpopularniejszym klasyfikatorem , , nie jest potrzebne słowo kluczowe, aby wskazać, że metaklas jest klasą.

  1. UML jest językiem programowania-niezależne.

    W języku Java klasy UML i klasyfikatory sygnałów są zaimplementowane jako klasy.

    Inny przykład: UML ma klasyfikator interfejsu, ale C++ nie ma interfejsów . Interfejs w C++ byłby abstrakcyjną (czysto wirtualną) klasą.

+0

możesz wspomnieć, że zamiar wyrażony w UML ginie w tłumaczeniu na język Java. –

2

W rzeczywistości UML jest bogatszy niż Java. Koncepcje klasyfikatora UML, Signal, Class, Component i Collaboration byłyby zgodne z klasą Java.

Powiązane problemy