Opis modeli, klas i relacji
Język specyficzne dla domeny (DSL) jest definiowany przez jego plik definicji DSL, wraz z może napisać kod niestandardowy program.Większość kodu programu w roztworze DSL jest generowany na podstawie tego pliku.
Ten temat wyjaśnia funkcje centralnej definicji DSL.
Definicja DSL
Po otwarciu Dsl\DslDefinition.dsl, Visual Studio okno jest podobna do poniższej ilustracji.
Najważniejsze informacje w definicji DSL jest wyświetlana na diagramie definicji DSL.Dodatkowe informacje, które jest również częścią DslDefinition.dsl, jest wyświetlana w Eksploratorze DSL zazwyczaj pojawia się po stronie diagramu.Podczas pracy ze schematem najczęstsze zadania i Eksploratorem DSL dla bardziej zaawansowanych dostosowań.
Diagram definicji DSL pokazuje klasy domeny, które definiują elementy modelu i relacje, definiujących łącza między elementami modelu.Pokazuje również, kształty i łączniki, które są używane do wyświetlania elementów modelu do użytkownika.
Po zaznaczeniu elementu w definicji DSL, na diagramie lub w Eksploratorze DSL, informacje o nim jest wyświetlany w oknie właściwości.Dodatkowe informacje mogą być wyświetlane w oknie Szczegóły DSL.
Modele są wystąpienia DSLs
A model jest wystąpieniem linii DSL utworzone przez użytkownika.Model zawiera elementy modelu, które są wystąpieniami klasy domeny, które można zdefiniować i łącza między elementami, które są wystąpieniami relacji domen, zdefiniowanych przez użytkownika.Model może być również kształty i łączniki, które wyświetlają elementy modelu i łącza na diagramie.Definicja DSL zawiera klasy shape, złącze klas i klasy dla diagramu.
Definicja DSL jest również znany jako modelu domeny.Model definicji DSL lub domeny jest reprezentacją czasu projektowania języka specyficzne dla domeny, wzór ma wystąpienia run-time języka specyficzne dla domeny.
Domeny klasy definiują elementy modelu
Klasy domen są używane do tworzenia różnych elementów w domenie, a relacje domeny są łącza między elementami.Są one reprezentacja czasu projektowania elementów i łącza, które będzie uruchamianiu przez użytkowników języka specyficznych dla projektu, tworząc na ich modeli.
Ta ilustracja przedstawia modelu, utworzony przez użytkownika Płytotece DSL.Albumy muzyczne są reprezentowane przez pola, które zawierają listy utworów.Artyści są reprezentowane przez pola o zaokrąglonych narożnikach i są podłączone do albumy, do których uczestniczyli.
Definicja DSL oddziela dwa aspekty.Wygląd elementów modelu na diagramie modelu jest zdefiniowany za pomocą kształtu klasy i klasy łącznika.Informacje o przewożonych w modelu jest definiowana za pomocą klasy domeny i relacje między domenami.
Następująca ilustracja pokazuje klasy domeny i relacje w definicji DSL Biblioteka utworów muzycznych.
Na ilustracji pokazano cztery klasy domeny: muzyka, albumu, wykonawcy i utworu.Klasy domen zdefiniować właściwości domeny, takich jak nazwa, tytuł i tak dalej.W modelu wystąpienia wartości niektóre z tych właściwości są wyświetlane na diagramie.
Między klasami są relacje domeny: MusicHasAlbums, MusicHasArtists, AlbumbHasSongs i ArtistAppearedOnAlbums.Relacje zostały liczebność punktów, takich jak 1..1, 0.. *.Na przykład każdy utwór musi być związane z dokładnie jeden Album za pomocą relacji AlbumHasSongs.Album, co może mieć dowolną liczbę utworów.
Ponowne rozmieszczanie Diagram definicji DSL
Należy zauważyć, że klasa domeny może występować wielokrotnie na diagramie definicji DSL, jak Album w tym obrazie.Jest zawsze jeden widok główny i mogą być niektóre odniesienia widoków.
Aby zmienić układ diagramu definicji DSL, można:
Zamień głównych i odwołać się za pomocą widoków Przełącz drzewo w tym miejscu i Split drzewa polecenia.Kliknij prawym przyciskiem myszy klasy pojedynczej domeny, aby zobaczyć te polecenia.
Zmień kolejność klas domeny i klasy kształtów przez naciśnięcie klawiszy Ctrl + Strzałka w górę i Ctrl + Strzałka w dół.
Zwijanie lub rozwijanie klasy za pomocą ikony w prawym górnym rogu każdego kształtu.
Zwijanie części drzewa klikając znak minus (-) u dołu klasy domeny.
Dziedziczenie
Klasy domen mogą być definiowane za pomocą dziedziczenia.Aby utworzyć wyprowadzenie dziedziczenie, kliknij narzędzie dziedziczenie, kliknij w klasie pochodnej, a następnie kliknij klasy podstawowej.Element modelu ma właściwości, które są zdefiniowane w klasie własnej domeny, wraz z wszystkich właściwości odziedziczonych z klasy bazowej.Dziedziczy ona jego role w relacji.
Można również dziedziczenie między relacjami, kształtów i łączników.Dziedziczenie musi przechowywać w ramach tej samej grupy.Kształtu nie może dziedziczyć po klasie domeny.
Relacje między domenami
Elementy modelu mogą być połączone przez relacje.Łącza są zawsze binary; łącze one dokładnie dwa elementy.Jednakże każdy element może mieć wiele łączy do innych obiektów, a nawet można więcej niż jeden związek między tą samą parę elementów.
Podobnie, jak można zdefiniować różnych klas elementów, można zdefiniować różnych klas łącza.Klasa łącze jest nazywany relacji z domeny.Relacja domeny określa, jakie klasy elementu mogą łączyć się jego wystąpień.Każdy koniec relacji nazywa się rolę, i relacji domeny określa nazwy dla dwóch ról, jak również samą relację.
Istnieją dwa rodzaje relacji domen: osadzanie relacje i relacje odniesienia.Na diagramie definicji DSL osadzania relacje mają linie ciągłe w każdej z ról i relacji odniesienia mają kreskowane linie.
Osadzanie relacje
Każdy element w modelu, z wyjątkiem dla jego głównym celem jest jedno łącze osadzania.W związku z tym cały model stanowi jedno drzewo osadzania łącza.Relacja osadzania reprezentuje zamknięcia lub własności.Dwa elementy modelu, które są powiązane w ten sposób są nazywane także nadrzędne i podrzędne.Dziecko jest nazywany być osadzone w obiekcie nadrzędnym.
Osadzanie łączy nie są zazwyczaj wyświetlane jawnie jako łączników na diagramie.Zwykle są one zamiast, reprezentowane przez relację zawierania.Katalog główny model jest reprezentowane przez diagram i osadzone w nim elementy są wyświetlane jako kształty na diagramie.
Na przykład klasa głównego muzyka ma osadzania relacji MusicHasAlbums do albumu, który ma osadzania AlbumHasSongs, do utworu.Utwory są wyświetlane jako elementy listy wewnątrz każdego albumu.Muzyka ma również osadzania MusicHasArtists, do klasy wykonawców, której wystąpienia są również wyświetlane jako kształty na diagramie.
Domyślnie elementy osadzone są automatycznie usuwane po usunięciu ich rodziców.
Gdy model jest zapisywany do pliku w formacie XML, elementy osadzone są zagnieżdżone wewnątrz rodziców, chyba że zostały dostosowane serializacji.
[!UWAGA]
Osadzanie nie jest taka sama, jak dziedziczenie.Dzieci w relacji osadzania nie dziedziczą właściwości obiektu nadrzędnego.Osadzanie jest typ łącza między elementami modelu.Dziedziczenie jest relacja między klasami i nie tworzyć łącza między elementami modelu.
Osadzanie zasady
Każdy element w modelu wystąpienie musi być cel dokładnie jedno łącze osadzania, z wyjątkiem dla katalogu głównego modelu.
W związku z tym co Klasa nieabstrakcyjna domeny, z wyjątkiem klasy główny musi być cel co najmniej jedna relacja osadzania lub musi dziedziczyć osadzanie z klasy bazowej.Klasa może być docelowych osadzonych w dwóch lub więcej, ale jego elementy modelu instancji naraz może mieć tylko jedną jednostkę nadrzędną.Liczebność od docelowego do źródła musi być od 0 do 1 lub 1..1.
Eksplorator Wyświetla drzewo osadzania
Definicja sieci DSL tworzy również Eksploratora, który użytkownicy widzą wraz z ich diagram modelu.
Eksplorator pokazuje wszystkie elementy w modelu, nawet tych, dla których nie zdefiniowano żadnych kształtów.Pokazuje elementy i osadzania relacje, ale nie odwołania relacje.
Aby wyświetlić wartości właściwości domeny elementu, użytkownik wybierze element na diagramie modelu lub w Eksploratorze modelu i otwiera okno właściwości.Wyświetla wszystkie właściwości domeny, łącznie z tymi, które nie są wyświetlane na diagramie.W przykładzie odtwarzania każdego utworu ma zarówno tytuł, jak i gatunek, ale wartość tytuł jest wyświetlany na diagramie.
Relacje odniesienia
Relacja odniesienia reprezentuje dowolny rodzaj relacji, która nie jest osadzanie.
Relacje odniesienia są zwykle wyświetlane na diagramie jako łączników między kształtami.
W reprezentacji XML modelu odniesienia łącze między dwoma elementami jest reprezentowana za pomocą monikerów. Oznacza to, że monikerów są nazwy, które jednoznacznie identyfikują każdy element w modelu.Węzeł XML dla każdego elementu modelu zawiera węzeł, który określa nazwę relacji i moniker innego elementu.
Role
Każdy związek domeny ma dwie role, rolę źródła i rolę docelową.
Na rysunku poniżej linii między klasą domeny programu Publisher i relacji PublisherCatalog domeny jest rolę źródła.Wiersz między relacji domeny i klasy domeny Album jest rolę docelową.
Nazw skojarzonych z relacji są szczególnie ważne podczas pisania kodu programu, który przechodzi modelu.Na przykład podczas tworzenia rozwiązania DSL wygenerowanej klasy program Publisher ma właściwość wykazu, która jest kolekcją albumów.Klasa Album ma właściwość wydawcy, który jest pojedynczym wystąpieniem klasy programu Publisher.
Podczas tworzenia relacji w definicji DSL, nazwy właściwości i relacji podane są wartości domyślne.Można jednak zmienić je.
Liczebność punktów
Liczebność punktów określić, ile elementów można mieć tej samej roli w relacji do domeny.W przykładzie zero do wielu (0.. *) ustawienie liczebność roli wykazu określa, że dowolne wystąpienie klasy domeny programu Publisher może mieć dowolną liczbę łączy relacji PublisherCatalog, które chcesz nadać mu.
Konfigurowanie liczebność roli, wpisując na diagramie lub modyfikując Multiplicity właściwość w Właściwości okna.W poniższej tabeli opisano ustawienia dla tej właściwości.
Liczebność typu |
Opis |
---|---|
0.. * (Zero do-wielu) |
Każde wystąpienie klasy domeny mogą mieć wiele wystąpień relacji lub żadne wystąpienia relacji. |
Od 0 do 1 (od zera do jednego) |
Każde wystąpienie klasy domeny może mieć nie więcej niż jedno wystąpienie relacji lub żadne wystąpienia relacji. |
1..1 (Jedno) |
Każde wystąpienie klasy domeny mogą mieć jedno wystąpienie relacji.Nie można utworzyć więcej niż jedno wystąpienie tej relacji z dowolnej instancji klasy roli.Jeśli sprawdzanie poprawności jest włączone, błąd sprawdzania poprawności pojawi się po dowolnej instancji klasy roli ma żadne wystąpienie relacji. |
1.. * (Jeden do wielu) |
Każde wystąpienie klasy na roli, która ma ten liczebność mogą mieć wiele wystąpień relacji, a każde wystąpienie musi mieć co najmniej jedno wystąpienie relacji.Jeśli sprawdzanie poprawności jest włączone, błąd sprawdzania poprawności pojawi się po dowolnej instancji klasy roli ma żadne wystąpienie relacji. |
Relacje między domenami w postaci klas
Łącze jest reprezentowana w magazynie jako wystąpienie LinkElement, która jest pochodna klasy ModelElement.Te właściwości można zdefiniować na diagramie modelu domeny w relacji do domeny.
Można również wprowadzić relacji źródłowego lub docelowego inne relacje.Na diagramie modelu domeny, kliknij prawym przyciskiem myszy relację domeny, a następnie kliknij przycisk Pokaż jako klasy.Zostanie wyświetlone okno dodatkowe klasy.Relacje można następnie podłączyć do niego.
Można zdefiniować relację częściowo przez dziedziczenie, tak samo jak klasy domeny.Wybierz relację pochodnych i ustaw Base relacji w oknie dialogowym właściwości.
Pochodne relacji specjalizuje się jego podstawowego relacji.Domeny klas, że produkt, którą powinna być pochodną łącza lub taki sam, jak klasy, połączone przez podstawowego relacji.Po utworzeniu łącza pochodne relacji w modelu jest wystąpienie pochodnych i podstawowego relacji.W kodzie programu można przejść do przeciwległego końca łącze przy użyciu właściwości generowane przez podstawę lub w klasie pochodnej.
Zobacz też
Koncepcje
[redirect] — relacje domeny w generowanym API