Informazioni su modelli, classi e relazioni
Un linguaggio (DSL) specifico di dominio è definito dal relativo file di definizione DSL, insieme a tutto il codice del programma personalizzato che è possibile scrivere.La maggior parte del codice programma nella soluzione DSL è generato da questo file.
In questo argomento vengono descritte le funzionalità principali della definizione di modello DSL.
La definizione di modello DSL
Quando si apre Dsl\DslDefinition.dsl, Visual Studio la finestra assomiglia all'immagine seguente.
La maggior parte delle informazioni importanti nella definizione di modello DSL nel diagramma della definizione di modello DSL.Informazioni aggiuntive, che fanno parte anche di DslDefinition.dsl, viene visualizzato nel modello DSL Esplora Risorse, che in genere viene visualizzato sul lato del diagramma.Si utilizza il diagramma per le attività più frequenti e con DSL Esplora Risorse per le personalizzazioni più avanzate.
Il diagramma della definizione di modello DSL vengono mostrate le classi di dominio che definiscono gli elementi del modello e le relazioni che definiscono i collegamenti tra elementi del modello.Mostra inoltre le forme e i connettori utilizzati per visualizzare gli elementi del modello all'utente.
Quando si seleziona un elemento nella definizione di modello DSL, nel diagramma o nel modello DSL Esplora Risorse, le informazioni a questo argomento vengono visualizzati nella Finestra Proprietà.Informazioni aggiuntive possono essere visualizzati nella finestra dettagli DSL.
i modelli sono istanze di DSLs
In modello è un'istanza del modello DSL creato da un utente.Un modello contiene gli elementi del modello, che sono istanze di classi di dominio definite e collegamenti tra elementi, che sono istanze di relazioni di dominio specificato.Un modello può inoltre disporre delle forme e i connettori, che visualizza gli elementi del modello e collegamenti in un diagramma.La definizione di modello DSL include classi shape, le classi del connettore e una classe per il diagramma.
Una definizione di modello DSL è anche nota come modello di dominio.Una definizione o il modello di dominio (DSL è la rappresentazione in fase di progettazione del linguaggio specifico di dominio, mentre il modello è la creazione di istanze di runtime del linguaggio specifico di dominio.
Le classi di dominio definiscono gli elementi del modello
Le classi di dominio vengono utilizzate per creare i vari elementi nel dominio e le relazioni di dominio sono collegamenti tra elementi.È la rappresentazione in fase di progettazione degli elementi e collegamenti che verranno creare un'istanza dagli utenti di linguaggio Design-specifico quando si creano i relativi modelli.
In questa illustrazione viene mostrato un modello creato dall'utente di una raccolta di musica DSL.Gli album di audio sono rappresentati dalle celle contenenti elenchi di brani.Gli artisti sono rappresentati dalle caselle rotondo-accantonate e sono connessi agli album che hanno contribuito.
La definizione di modello DSL separa due aspetti.L'aspetto degli elementi del modello nel diagramma di modello viene definito utilizzando le classi shape e le classi del connettore.Le informazioni includono incluso nel modello sono definite mediante le classi di dominio e le relazioni di dominio.
Nella figura seguente sono illustrate le classi di dominio e le relazioni nella definizione di modello DSL della raccolta di musica.
Nell'illustrazione viene mostrata quattro classi di dominio: Musica, album, artista e brano.Le classi di dominio definizione delle proprietà di dominio come nome, titolo, e così via.Nel modello di istanza, i valori di alcune di queste proprietà vengono visualizzate nel diagramma.
Tra le classi sono le relazioni di dominio: MusicHasAlbums, MusicHasArtists, AlbumbHasSongs e ArtistAppearedOnAlbums.Le relazioni con molteplicità come 1..1, 0. *.Ad esempio, ogni brano deve essere correlata esattamente a un album con la relazione di AlbumHasSongs.Ogni album può includere un numero qualsiasi di brani.
Ridisporre il diagramma di definizione DSL
Si noti che una classe di dominio può essere presente più volte in un diagramma definizione di modello DSL, come l'album in questa immagine.È sempre disponibile un principale di visualizzazione e possono essere presenti alcune riferimento visualizzazioni.
Per ridisporre il diagramma della definizione di modello DSL, è possibile:
Scambiare il principale e fare riferimento alle visualizzazioni selezionando Aggiornare la struttura ad albero di seguito e Albero spaccati controlli.Fare clic con il pulsante destro del mouse su una singola classe di dominio per visualizzare questi controlli.
Per riordinare le classi di dominio e le classi shape premendo CTRL+freccia SU e CTRL+freccia GIÙ.
Comprimere o espandere le classi utilizzando l'icona a in alto a destra di ogni forma.
Comprimere le parti della struttura ad albero facendo clic sul segno meno (-) nella parte inferiore di una classe di dominio.
Ereditarietà
Le classi di dominio possono essere definite mediante ereditarietà.Per creare una derivazione di ereditarietà, fare clic sullo strumento di ereditarietà, fare clic sulla classe derivata quindi fare clic sulla classe di base.Un elemento del modello contiene tutte le proprietà definite sulla propria classe di dominio, insieme a tutte le proprietà ereditate dalla classe base.Esso ereditano i relativi ruoli nelle relazioni.
L'ereditarietà è possibile utilizzare anche tra le relazioni, le forme e i connettori.L'ereditarietà necessario mantenere nell'interno dello stesso gruppo.una forma non può ereditare da una classe di dominio.
relazioni di dominio
Gli elementi del modello possono essere collegati dalle relazioni.I collegamenti sono sempre binari, collegamento tra due elementi.Tuttavia, qualsiasi elemento può contenere molti collegamenti ad altri oggetti e può anche essere più di un collegamento tra la stessa coppia di elementi.
Come è possibile definire classi di elementi diversi, è possibile definire classi specifiche di collegamenti.La classe di collegamento viene chiamata a relazione di dominio.Una relazione di dominio specifica che classi di elemento le relative istanze possono connettersi.Ogni estremità di una relazione viene chiamata a ruoloe la relazione di dominio definisce i nomi dei due ruoli e per la relazione stessa.
Esistono due tipi di relazioni di dominio: incorporare le relazioni e le relazioni di riferimento.Nel diagramma della definizione di modello DSL, che utilizza le relazioni di linee continue a ogni ruolo e le relazioni di riferimento hanno linee tratteggiate.
incorporare le relazioni
Ogni elemento in un modello, ad eccezione della radice, è la destinazione di un collegamento che utilizza.Di conseguenza, i form di modello intero una singola struttura ad albero di incorporare i collegamenti.Una relazione che utilizza rappresenta il contenimento o la proprietà.Due elementi del modello cui sono correlati in questo modo sono noti anche come elemento padre e figlio.Il figlio sarebbe incorporato nel padre.
Incorporando i collegamenti in genere non sono specificati in modo esplicito come connettori in un diagramma.Al contrario, vengono generalmente rappresentati da contenimento.La radice del modello è rappresentata dal diagramma e gli elementi incorporati in vengono visualizzati come forme del diagramma.
Nell'esempio, la musica della classe radice ha una relazione che utilizza MusicHasAlbums all'album, che dispone di un AlbumHasSongs includendo a un brano.I brani visualizzati come elementi di un elenco in ogni album.La musica ha anche un MusicHasArtists includendo la classe dell'artista, in cui le istanze vengono visualizzati anche come forme del diagramma.
Per impostazione predefinita, gli elementi incorporati automaticamente vengono eliminati quando i relativi elementi padre vengono eliminati.
Quando un modello viene salvato per archiviare in formato XML, gli elementi incorporati sono annidati nei rispettivi padri, a meno che siano personalizzato la serializzazione.
[!NOTA]
L'incorporamento non è lo stesso di ereditarietà.Gli elementi figlio in una relazione l'inserimento non ereditano le proprietà del padre.Incorporare è un tipo di collegamento tra elementi del modello.L'ereditarietà è una relazione tra le classi e non vengono creati i collegamenti tra elementi del modello.
L'incorporamento di regole
Ogni elemento in un modello dell'istanza deve essere la destinazione di esattamente un collegamento che utilizza, ad eccezione della radice del modello.
Di conseguenza, ogni classe di dominio non astratta, a meno che la classe radice, deve essere la destinazione di almeno una relazione che utilizza, o ereditare incorporare da una classe base.La classe può essere il database di destinazione due o più dei precedenti, ma gli elementi del modello di istanza possono avere un solo padre per volta.La molteplicità dal database di destinazione da origine deve essere 0..1 o 1..1.
Esplora risorse viene visualizzato l'albero includendo
La definizione di modello DSL crea inoltre un esplora, che gli utenti visualizzano accanto al diagramma di modello.
In esplora modelli scegliere da mostra tutti gli elementi del modello, anche quelli per i quali è stato non definito tutte le forme.Mostra elementi e relazioni, ma non di riferimento relazioni incorporare.
Per visualizzare i valori delle proprietà del dominio di un elemento, l'utente seleziona un elemento, nel diagramma di modello o nell'esploratore di modello e aprire la Finestra Proprietà.Visualizzare tutte le proprietà del dominio, inclusi quelli che non vengono visualizzate nel diagramma.Nell'esempio, ogni brano ha sia un titolo che un genere, ma solo il valore del titolo sia visualizzato nel diagramma.
relazioni di riferimento
Una relazione di riferimento rappresenta qualsiasi tipo di relazione che non sia incorporando.
Le relazioni di riferimento in genere visualizzato in un diagramma come connettori tra le forme.
Nella rappresentazione XML del modello, un collegamento di riferimento tra due elementi è rappresentato tramite moniker. Ovvero i moniker sono nomi che identificano in modo univoco ogni elemento del modello.Il nodo XML per ogni elemento di modello contiene un nodo che specifica il nome della relazione e il moniker un altro elemento.
Ruoli
Ogni relazione di dominio possiede due ruoli, un ruolo di origine e un ruolo di destinazione.
Nella seguente immagine, la riga tra la classe di dominio del server di pubblicazione e la relazione di dominio di PublisherCatalog è il ruolo di origine.La riga tra la relazione di dominio e la classe di dominio dell'album è il ruolo di destinazione.
I nomi associati a una relazione sono particolarmente utili quando si scrive il codice programma che passa attraverso il modello.Ad esempio, quando si compila la soluzione DSL, l'editore generato della classe dispone di un catalogo della proprietà che rappresenta una raccolta di album.L'album della classe dispone di un server di pubblicazione della proprietà che rappresenta una singola istanza del server di pubblicazione della classe.
Quando si crea una relazione in una definizione di modello DSL, i nomi di relazione e della proprietà vengono forniti i valori predefiniti.Tuttavia, è possibile modificarle.
molteplicità
Le molteplicità specificare quanti elementi possono avere lo stesso ruolo in una relazione di dominio.Nell'esempio, i zero a molti (0. *) l'impostazione di molteplicità al ruolo del catalogo specifica che ogni istanza della classe di dominio del server di pubblicazione possibile avere tanti collegamenti di relazione di PublisherCatalog desiderate per fornirlo.
Configurare la molteplicità di ruolo digitando nel diagramma o modificando Multiplicity proprietà di proprietà finestra.Nella tabella seguente vengono descritte le impostazioni per questa proprietà.
La molteplicità i tipi |
Descrizione |
---|---|
0. * (Zero a molti) |
Ogni istanza della classe di dominio non può avere più istanze della relazione o istanze della relazione. |
0..1 (zero a uno) |
Ogni istanza della classe di dominio può avere non più di un'istanza di una relazione o senza istanze della relazione. |
1..1 (uno) |
Ogni istanza della classe di dominio può avere un'unica istanza della relazione.Non è possibile creare più istanze di questa relazione da una qualsiasi istanza del ruolo della classe.Se la convalida è abilitata, un errore di convalida quando ogni istanza del ruolo della classe non ha istanza della relazione. |
1.* (uno a molti) |
Ogni istanza della classe sul ruolo che dispone di questa molteplicità può avere più istanze della relazione e ogni istanza deve avere almeno un'istanza della relazione.Se la convalida è abilitata, un errore di convalida quando ogni istanza del ruolo della classe non ha istanza della relazione. |
relazioni di dominio come classi
Un collegamento è rappresentato nell'archivio come istanza di LinkElement, ovvero una classe derivata di ModelElement.È possibile definire queste proprietà nel diagramma del modello di dominio sulle relazioni di dominio.
È inoltre possibile effettuare una relazione l'origine o la destinazione di altre relazioni.Nel diagramma del modello di dominio, fare clic con il pulsante destro del mouse sulla relazione di dominio quindi fare clic su Mostra come classe.Una casella aggiuntiva della classe viene visualizzata.È quindi possibile connettere le relazioni.
È possibile definire parzialmente una relazione di ereditarietà, come si farebbe con le classi di dominio.Selezionare la relazione derivata e impostare basare la relazione nella Finestra Proprietà.
Una relazione derivata specializza la relazione di base.Le classi di dominio che si collegano devono essere derivate o identiche alle classi collegate dalla relazione di base.Quando un collegamento di una relazione derivata viene creato in un modello, è un'istanza delle relazioni derivate di base.Nel codice programma, è possibile passare all'estremo opposto del collegamento utilizzando proprietà è stato generato dalla base o dalla classe derivata.
Vedere anche
Concetti
[reindirizzamento] Relazioni di dominio nell'API generata