Sdílet prostřednictvím


Generování kódu z diagramů tříd UML

Chcete-li generovat kód Visual C# .NET ze třídy diagramů UML v sadě Visual Studio Ultimate, použijte generování kódu příkazu. Ve výchozím nastavení příkaz, který generuje typ jazyka C# pro každý typ UML, kterou jste vybrali.Toto chování lze upravit a rozšířit úpravou nebo zkopírováním textových šablon, které generují kód.Lze určit různá chování pro typy, které jsou obsaženy v různých balíčcích modelu.

Příkaz Generovat kód je obzvláště vhodný pro generování kódu z prvků vybraných uživatelem a pro generování jednoho souboru pro každou třídu modelu UML nebo jiný prvek.Například, tento snímek obrazovky ukazuje dva soubory jazyka C#, které byly vytvořeny ze dvou tříd modelu UML.

Případně, pokud chcete generovat kód, ve kterém generované soubory nemají s prvky modelu UML vztah 1 : 1, zvažte vytvoření textových šablon, které lze spustit pomocí příkazu Transformovat všechny šablony.Další informace o této metodě naleznete v tématu Postupy: Generování souborů z modelu UML.

Diagram třídy UML a vygenerovaný C# soubory tříd.

Další informace o diagramech tříd modelu UML v systému Visual Studio Ultimate naleznete v následujících tématech:

Použití příkazu Generovat kód

Následující postup popisuje výchozí chování příkazu Generovat kód:

Generování samostatného souboru pro každý prvek

  1. Vytvořte model UML, který obsahuje třídy.Pro prvky modelu lze použít stereotypy.

    Další informace naleznete v tématu Výchozí transformace generování kódu.

  2. V diagramu tříd nebo v Průzkumníku modelů UML vyberte prvky, ze kterých chcete generovat kód.Lze vybrat jednu z následujících možností:

    • Určitou sadu prvků.

    • Balíček nebo model, chcete-li z jeho obsahu vygenerovat kód.

    • Diagram, chcete-li vybrat všechny prvky diagramu.

  3. Otevřete místní nabídku vybraného prvku a poté zvolte příkaz Generovat kód.

    Při prvním použití příkazu Generovat kód v určitém modelu se zobrazí dialogové okno.Toto dialogové okno umožňuje upravit parametry pro generování kódu modelu.

    Zvolte možnost OK, pokud si nejste jisti, že chcete tyto parametry měnit.

    Chcete-li se k tomuto dialogovému oknu vrátit později, otevřete místní nabídku diagramu a poté zvolte možnost Konfigurovat výchozí nastavení generování kódu.Další informace naleznete v tématu Přizpůsobení příkazu Generovat kód.

Vygenerují se soubory, které obsahují kód jazyka C#.Ve výchozím nastavení je vygenerován soubor pro každý typ a tyto soubory jsou vygenerovány v projektu knihovny tříd jazyka C#.Toto chování však lze přizpůsobit.Další informace naleznete v tématu Přizpůsobení příkazu Generovat kód.

Na model jsou použity některé ověřovací testy, aby bylo zajištěno, že jej lze přeložit do jazyka C#.Pokud se tyto testy nezdaří, zobrazí se chybová zpráva a generování kódu nebude provedeno.Pokud jste vytvořili příkaz nabídky ověření, kód nebude vygenerován pro žádný prvek, u kterého příkaz ověření selže.Další informace naleznete v tématu Postupy: Definování omezení ověření pro modely UML.

Výchozí transformace generování kódu

V tomto oddílu jsou shrnuty výsledky vytvořené příkazem Generovat kód, pokud jste tento příkaz nepřizpůsobili.Další informace naleznete v tématu Přizpůsobení příkazu Generovat kód.

  • Pro každý typ je vytvořen jeden typ jazyka C#, který jste vybrali v modelu UML.Každý typ je umístěn v samostatném souboru kódu ve složce GeneratedCode.

  • Pokud je typ modelu UML obsažen v balíčku, vygenerovaný typ jazyka C# je umístěn do oboru názvů a soubor je vygenerován ve složce, která má stejný název jako tento obor názvů.

  • Vlastnost jazyka C# je vygenerována pro každý prvek Attribute třídy modelu UML.

  • Metoda jazyka C# je vygenerována pro každý prvek Operation typu modelu UML.

  • Pole jazyka C# je vygenerováno pro každé provázané přidružení, kterého se třída účastní.

Přidáním stereotypu každému typu modelu UML lze určit další vlastnosti generovaného typu jazyka C#.

Vytvoření tohoto typu jazyka C#

Nakreslete tento typ modelu UML

Použijte tento stereotyp

Třída

Třída

< žádné > nebo

třída jazyka C#

Rozhraní

Rozhraní

< žádné > nebo

rozhraní jazyka C#

Výčet

Výčet

< žádné > nebo

výčet jazyka C#

Delegát

Třída

delegát jazyka C#

Struktura

Třída

struktura jazyka C#

Nastavení stereotypu pro typ nebo jiný prvek

  1. Otevřete místní nabídku prvku v diagramu nebo v Průzkumníku modelů UML a poté zvolte možnost Vlastnosti.

  2. V okně Vlastnosti zvolte šipku rozevíracího seznamu vlastnosti Stereotypy a poté zaškrtněte políčko stereotypu, který chcete použít.

    Tip

    Pokud se stereotypy jazyka C# nezobrazí, povolte profil jazyka C# pro model nebo balíček obsahující prvky modelu, které vás zajímají.Vyberte balíček nebo kořen modelu v Průzkumníku modelů UML.Poté v okně Vlastnosti zvolte možnost Profil a poté povolte profil jazyka C#.

  3. Rozbalte vlastnost Stereotypy, chcete-li zobrazit další vlastnosti, které lze nastavit.

Vlastnosti Popis typů, atributů, operací a přidružení, které se zapíší do komentářů <summary> v generovaném kódu.Prvky komentářů, které jsou spojeny s typy, jsou zapsány do komentářů <remarks>.

Rozlišování generovaného kódu

Generovaný kód se liší v závislosti na vlastnostech každého typu, atributu nebo operace.Nastavíte-li například vlastnost třídy Je abstraktní na hodnotu true, bude klíčové slovo abstract použito na tuto vygenerovanou třídu.Nastavíte-li vlastnost atributu Násobnost na hodnotu 0.. *, bude vygenerovaná vlastnost typu IEnumerable<>.

Každý stereotyp navíc obsahuje několik dalších vlastností, které lze nastavit.Tyto hodnoty jsou převedeny na příslušná klíčová slova v kódu jazyka C#.Pokud například nastavíte vlastnost Is Static na třídě, bude třída jazyka C# static.

Chcete-li nastavit tyto další vlastnosti, vyberte v diagramu třídu nebo jiný prvek.V okně Vlastnosti rozbalte uzel Stereotypy a poté rozbalte stereotyp jazyka C#, jako je například Třída jazyka C#.V případě tříd tyto dodatečné vlastnosti zahrnují:

  • Atributy CLR

  • Je částečná

  • Je statická

  • Je nebezpečná

  • Viditelnost balíčku

Všechny atributy a operace mají také vlastnosti stereotypu, které lze nastavit.Pokud se vlastnosti na novém atributu nezobrazí, spusťte příkaz Generovat kód.

Přizpůsobení příkazu Generovat kód

Příkaz Generovat kód funguje pomocí transformace prvků modelu s použitím sady textových šablon.Další informace o textových šablonách naleznete v tématu Vytvoření kódu a textové šablony T4.

Šablony jsou uvedeny v sadě vazeb textových šablon.Vazba textové šablony určuje, jaké šablony by se měly uplatňovat, kam by měl být vygenerovaný výstup umístěn a jiné parametry příkazu Generovat kód.

Při prvním spuštění příkazu Generovat kód na konkrétním modelu se ke kořenu tohoto modelu připojí sada výchozích vazeb šablony.Tyto vazby se vztahují na všechny prvky v modelu.

To však lze přepsat a přidat k těmto výchozím vazbám další, a to připojením vlastních vazeb balíčkům, třídám nebo jiným prvkům.Vazba se vztahuje na všechny prvky obsažené uvnitř prvku, k němuž je připojena.Pokud například chcete, aby všechny typy uvnitř konkrétního balíčku byly transformovány pomocí jiné sady šablon nebo má být výstup proveden do jiné složky, lze vazbu šablony připojit k balíčku.

Chcete-li zkontrolovat vazby šablony připojené k prvku modelu, zvolte tři tečky [...] ve vlastnosti Vazby textové šablony v okně Vlastnosti.

Příkaz Generovat kód použije šablony pro každý prvek modelu, který jste vybrali.Pro každý prvek je sada použitých šablon kombinovaná sada šablon, které jsou připojeny k jejím kontejnerům až po kořen modelu.

Pokud mají dvě vazby šablony v této sadě stejný název, vazba v menším kontejneru přepíše vazbu ve větším kontejneru.Například kořen modelu má vazbu s názvem Class Template.Chcete-li mít na obsah konkrétního balíčku použitu vlastní šablonu, definujte vlastní vazbu šablony, která má název Class Template.

Na prvek modelu lze použít více než jednu šablonu.Z každého prvku modelu lze vytvořit více než jeden soubor.

[!POZNÁMKA]

Vazby připojené ke kořenu modelu jsou použity jako výchozí pro všechny prvky v modelu.Chcete-li zobrazit tyto výchozí vazby, otevřete místní nabídku povrchu diagramu a zvolte možnost Konfigurovat výchozí nastavení generování kódu.Případně lze vybrat kořen modelu v Průzkumníku modelů UML a poté zvolit [...] ve vlastnosti Vazby textové šablony.Tyto vazby se nezobrazí, dokud příkaz Generovat kód nepoužijete alespoň jednou.Vazby šablony nelze připojit k diagramu.

Připojení vazby textové šablony k balíčku nebo jinému prvku modelu

  1. V Průzkumníku modelů UML otevřete místní nabídku prvku modelu a poté zvolte možnost Vlastnosti.Obecně byste měli připojovat vazby textové šablony k balíčku nebo kořenu modelu.

  2. V okně Vlastnosti klikněte na tři tečky ([...]) ve vlastnosti Vazby textové šablony.

    Zobrazí se dialogové okno Vazby textové šablony.

  3. Zvolte možnost Přidat, pokud chcete vytvořit novou vazbu textové šablony.

    -nebo-

    Zvolte existující vazbu a upravte ji.

    Každá vazba šablony definuje, jak by zadaná šablona měla být použita na vybraný prvek modelu a jiné prvky modelu, které obsahuje.

  4. V tomto dialogovém okně nastavte vlastnosti vazby textové šablony.

    Vlastnost

    Popis

    Name

    Název této vazby.Chcete-li přepsat vazby zděděné od nadřazeného balíčku nebo modelu, použijte stejný název, jako je název vazby, kterou chcete přepsat.

    Přepsat

    Pokud je hodnota true, je existující kód přepsán.

    Cílový název

    Název souboru, který je generován.

    Do tohoto řetězce lze vložit výrazy, jako je {Name} nebo {Owner.Name}.Například lze napsat: {Owner.Name}_{Name}.Tento výraz je vyhodnocen pro prvek modelu.Mohou být použity vlastnosti prvků, ale nikoli metody.Chcete-li zjistit, jaké vlastnosti lze použít, podívejte se na vlastnosti typů v Microsoft.VisualStudio.Uml.*.

    Důležitá poznámkaDůležité

    Výrazy {Name} nebo {Owner.Name} lze použít pouze ve vlastnosti Cílový název.Chcete-li změnit název vygenerované třídy, musíte změnit šablonu.Další informace naleznete v tématu Vytvoření textové šablony.

    Cesta k projektu

    Určuje cestu k projektu systému Visual Studio, který bude obsahovat výstupní soubory transformace.Zadávané hodnoty slouží k vytvoření nového projektu.Kliknutím na tlačítko se třemi tečkami ([...]) vyberte existující projekt.

    Pokud nový projekt neexistuje, bude vytvořen.Bude to projekt knihovny tříd jazyka C#.

    Chcete-li to provést, je nutné projekt zadat přímo.Lze použít makra proměnných prostředí, například %ProgramFiles% nebo %LocalAppData%.

    Cílový adresář

    Složka, do které je cílový soubor generován.Tato cesta je relativní ke složce projektu.

    Můžete použít {PackageStructure} výraz, který má vložit cestu, která odpovídá názvy obsahující balíčky.Výchozí hodnota je \GeneratedCode\{PackageStructure}.Lze také použít proměnné prostředí, například %TEMP% nebo %HomePath%.

    Důležitá poznámkaDůležité

    {PackageStructure} lze použít pouze ve vlastnosti Cílový adresář.

    Cesta k souboru šablony

    Šablona, která bude provádět transformaci.

    Lze použít buď dodané šablony, nebo vytvořit vlastní.Dodané šablony naleznete v následujícím umístění:

    ...\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\Extensibility\Templates\Text\

  5. K prvku lze připojit libovolný počet vazeb.

Vytvoření textové šablony

Lze vytvářet vlastní textové šablony.Textové šablony mohou generovat kód programu nebo jakýkoli jiný typ textového souboru.

Doporučujeme začít úpravou kopií standardních šablon.Tyto šablony lze zkopírovat z následujících umístění:

...\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\Extensibility\Templates\Text\

Další informace o těchto textových šablonách naleznete v následujících tématech.

Chcete-li použít šablony s příkazem Generovat kód, je nutné přidat direktivu modelování.Příklad:

<#@ Modeling ElementType="Microsoft.VisualStudio.Uml.Classes.IClass" Processor="ModelingProcessor" #>

Atribut ElementType definuje typ prvku modelu UML, na který se tato šablona vztahuje.

V této šabloně patří klíčové slovo this dočasné třídě, která má následující vlastnosti:

Následující body mohou být užitečné při vytváření textové šablony.Tato informace je podrobně popsána v tématu Vytvoření kódu a textové šablony T4.

  • Příponu názvu souboru výsledku lze nastavit pomocí direktivy Output.Jedna direktiva Output je vyžadována v každé textové šabloně.

  • Některá sestavení jsou automaticky odkazována pomocí šablony.Mezi tato sestavení patří například System.dll a Microsoft.VisualStudio.Uml.Interfaces.dll.

    Chcete-li při generování programového kódu použít jiná sestavení, je nutné použít direktivu Assembly.Příklad:

    <#@ Assembly Name="%ProgramFiles%\Microsoft Visual Studio 12.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.ArchitectureTools.Extensibility.dll" #>

  • Některé obory názvů, jako je System, jsou automaticky importovány do kódu programu.Pro ostatní obory názvů lze použít direktivu Import stejným způsobem, kterým byste použili příkaz using.Příklad:

    <#@ Import Namespace="Microsoft.VisualStudio.Uml.Classes" #>

    <#@ Import Namespace="Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml" #>

  • Pomocí direktivy Include lze odkazovat na text jiného souboru.

  • Části šablony uzavřené v závorkách <# ... #> jsou spouštěny příkazem Generovat kód.Části šablony mimo tyto závorky jsou do výsledného souboru zkopírovány.Je důležité rozlišovat mezi generovacím kódem a generovaným textem.Generovaný text může být v libovolném jazyce.

  • <#= Expressions #> jsou vyhodnoceny a převedeny na řetězce.

Viz také

Koncepty

Diagramy tříd UML: Referenční dokumentace

Diagramy tříd UML: Pokyny

Postupy: Generování souborů z modelu UML