KDevelop4/Manual/Code generation with templates/da: Difference between revisions

From KDE Wiki Sandbox
(Importing a new version from external source)
No edit summary
 
(27 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages />  
<languages />  


Kodegenering med skabeloner
== Kodegenering med skabeloner ==


'''KDevelop''' bruger skabeloner til at generere kildekodefiler og for at undgå at skrive kode som gentages.  
'''KDevelop''' bruger skabeloner til at generere kildekodefiler og for at undgå at skrive kode som gentages.  
Line 7: Line 7:
=== Opret en ny klasse ===
=== Opret en ny klasse ===


The most common use for code generation is probably writing new classes. To create a new class in an existing project, right click on a project folder and choose <menuchoice>Create from Template</menuchoice>. The same dialog can be started from the menu by clicking <menuchoice>File -> New from Template</menuchoice>, but using a project folder has the benefit of setting a base URL for the output files. Choose <tt>Class</tt> in the category selection view, and the desired language and template in the other two views. After you have selected a class template, you will have to specify the details of the new class.  
Den mest almindelige anvendelse af kodegenerering er formentlig at skrive en ny klasse. For at oprettet en ny klasse i et eksisterende projekt skal du højreklikke på projektmappen og vælge <menuchoice>Opret fra skabelon</menuchoice>. Den samme dialog kan startes fra menuen ved at vælge <menuchoice>Fil -> Ny fra skabelon</menuchoice>, men at bruge en projektmappe har den fordel, at basis-URL'en bliver sat for outputfilen. Vælg <tt>Klasse</tt> i afsnittet kategori og det sprog og den skabelon der ønskes i de andre to felter. Efter at du har valgt en klasseskabelon skal du angive detaljer om den nye klasse.  


[[Image:kdevelop-template-selection.png|thumb|500px|center]]
[[Image:kdevelop-template-selection.png|thumb|500px|center]]


First you have to specify an identifier for the new class. This can be a simple name (like <code>Bus</code>) or a complete identifier with namespaces (like <code>Transportation::Bus</code>). In the latter case, '''KDevelop''' will parse the identifier and correctly separate the namespaces from the actual name. On the same page, you can add base classes for the new class. You may notice that some templates choose a base class on their own, you are free to remove it and/or add other bases. You should write the full inheritance statement here, which is language-dependent, such as <code>public QObject</code> for C++, <code>extends SomeClass</code> for PHP or simply the name of the class for Python.  
Først skal du angive en identifikator for klassen. Dette kan være en simpelt navn (som <code>Bus</code>) eller en komplet identifikator men navnerum (som <code>Transportation::Bus</code>). I det sidste tilfælde vil '''KDevelop''' fortolke identifikatoren og separere navnerummet fra det egentlige navn. I det samme vindue kan du tilføje den nye klasses basisklasser. Du bemærker måske, at nogle skabeloner selv vælger en basisklasse, men du kan frit fjerne den og du kan tilføje andre basisklasser. Du bør skrive hele nedarvningserklæringen her, hvilket afhænger af sproget, fx  <code>public QObject</code> for C++, <code>extends SomeClass</code> for PHP og blot klassens navn for Python.  


[[Image:kdevelop-template-inheritance.png|thumb|500px|center]]
[[Image:kdevelop-template-inheritance.png|thumb|500px|center]]


In the next page, you are offered a selection of virtual methods from all inherited classes, as well as some default constructors, destructors and operators. Checking the check box next to a method signature will implement this method in the new class.  
I det næste vindue kan du vælge bland de virtuelle metoder fra alle nedarvede klasser samt nogle standard konstruktorer, destruktorer og operatorer. Markér afkrydsningsfeltet vedsiden af en metodesignatur for at implementere denne metode i den nye klasse.  


Clicking <menuchoice>Next</menuchoice> brings up a page where you can add members to a class. Depending on the selected template, these may appear in the new class as member variables, or the template may create properties with setters and getters for them. In a language where variable types have to be declared, such as C++, you have to specify both the type and the name of the member, such as <code>int number</code> or <code>QString name</code>. In other languages, you may leave out the type, but it is good practice to enter it anyway, because the selected template could still make some use of it.  
Når du klikker på <menuchoice>Næste</menuchoice> kommer du til et vindue, hvor du kan tilføje medlemmer til klassen. Afhængigt af den valgte skabelon vil de optræde som medlemsvariable i den nye klasse eller skabelonen vil oprette settere og gettere for dem. I sprog som C++, hvor variable skal erklæres skal du angive både type og navn for medlemmet som fx <code>int number</code> eller <code>QString name</code>. I andre sprog behøver du ikke at angive typen, men det er god praksis at have den med alligevel, for den valgte skabelon kan stadig drage nytte af det.  


[[Image:kdevelop-template-members.png|thumb|500px|center]]
[[Image:kdevelop-template-members.png|thumb|500px|center]]


In the following pages, you can choose a license for you new class, set any custom options required by the selected template, and configure output locations for all the generated files. By clicking <menuchoice>Finish</menuchoice>, you complete the assistant and create the new class. The generated files will be opened in the editor, so you can start adding code right away.  
I de følgende vinduer kan du vælge licensen for din nye klasse, angive særlige oplysninger, som den valgte skabelon skal bruge og angive, hvor de genererede filer skal placeres. Du afslutter guiden ved at klikke <menuchoice>Afslut</menuchoice>, hvorefter den nye klasse genereres. De genererede filer vil blive åbnet i editoren, sådan at du kan begynde at arbejde med dem med det samme.  


After creating a new C++ class, you will be given an option of adding the class to a project target. Choose a target from the dialog page, or dismiss the page and add the files to a target manually.  
Efter at have oprettet en ny C++-klasse vil du få mulighed for at føje den til et projektmål. Vælg et mål i dialogvinduet eller annulér vinduet og føj filen til et mål manuelt.  


If you chose the <tt>Qt Object</tt> template, checked some of the default methods, and added two member variables, the output should look like on the following picture.  
Hvis du valgte skabelonen <tt>Qt Objekt</tt>, markerede nogle standardmetoder og tilføjede et par medlemsvariable, så skulle outputtet ligne det på billedet herunder.  


[[Image:kdevelop-template-result.png|thumb|500px|center]]
[[Image:kdevelop-template-result.png|thumb|500px|center]]


You can see that data members are converted into Qt properties, with accessor functions and the Q_PROPERTY macros. Arguments to setter functions are even passed by const-reference, where appropriate. Additionally, a private class is declared, and a private pointer created with Q_DECLARE_PRIVATE. All this is done by the template, choosing a different template in the first step could completely change the output.  
Du kan se, at datamedlemmerne er blevet lavet om til Qt egenskaber med tilgangsfunktioner og Q_PROPERTY-makroer. Argumenter til setterfunktioner overgives endda ved const-reference, hvor det er passende. Desuden er en privat klasse blevet erklæret og en privat pointer oprettet med Q_DECLARE_PRIVATE. Alt dette gøres af skabelonen. Havde du valgt en anden skabelon, så havde resultatet nok set helt anderledes ud.  
<span id="Creating a new unit test"></span>
<span id="Creating a new unit test"></span>
=== Creating a new unit test ===
=== Opret en ny unittest ===


Even though most testing frameworks require each test to also be a class, '''KDevelop''' includes a method to simplify the creation of unit tests. To create a new test, right click on a project folder and choose <menuchoice>Create from Template</menuchoice>. In the template selection page, choose <tt>Test</tt> as the category, then choose your programming language and template and click <menuchoice>Next</menuchoice>.  
Selv om de fleste testsystemer kræver, at hver test også er en klasse, så har '''KDevelop''' en metode til at forenkle oprettelsen af enhedstest. For at oprette en ny test skal du højreklikke på en projektmappe og vælge <menuchoice>Opret fra skabelon</menuchoice>. I skabelonvalgsvinduet vælger du <tt>Test</tt> som kategori og derefter dit programmeringssprog og din skabelon og klikker så <menuchoice>Næste</menuchoice>.  


You will be prompted for the test name and a list of test cases. For the test cases, you only have to specify a list of names. Some unit testing frameworks, such as PyUnit and PHPUnit, require that test cases start with a special prefix. In '''KDevelop''', the template is responsible for adding the prefix, so you do not have to prefix the test cases here. After clicking <menuchoice>Next</menuchoice>, specify the license and output locations for the generated files, and the test will be created.  
Du bliver nu spurgt om testens navn og en liste af testtilfælde. For testilfældene skal du blot angive el liste med navne. Nogle enhedstestsystemer så som PyUnit og PHPUnit kræver, at testtilfældene starter med et specielt præfiks. I '''KDevelop''' er skabelonen ansvarlig for at tilføje præfikset, så du skal ikke føje det til testtilfældene her. Efter at have klikket på <menuchoice>Næste</menuchoice> skal du angive licens og outputplacering for de genererede filer; så bliver testen oprettet.  


Unit tests created this way will not be added to any target automatically. If you are using CTest or some other testing framework, make sure to add the new files to a target.  
Enhedstest oprettet på denne måde vil ikke automatisk blive føjet til noget mål. Hvis du bruger CTest eller et andet testsystem, så sørg for at føje de nye filer til et mål. '''KDevelop''' giver dig en [[KDevelop4/Manual/Tool_list/Unit_Tests|værktøjsvisning til enhedstests]], som integrerer med CTest.  
<span id="Other files"></span>
<span id="Other files"></span>
=== Other files ===
=== Andre filer ===


While classes and unit tests receive special attention when generating code from templates, the same method can be used for any kind of source code files. For example, one could use a template for a CMake Find module or a .desktop file. This can be done by choosing <menuchoice>Create from Template</menuchoice>, and selecting the wanted category and template. If the selected category is neither <tt>Class</tt> nor <tt>Test</tt>, you will only have the option of choosing the license, any custom options specified by the template, and the output file locations. As with classes and tests, finishing the assistant will generate the files and open them in the editor.  
Selv om klasser og enhedstest får særlig opmærksomhed ved kodegenerering fra skabeloner, så kan samme metode bruges til enhver slags kildekodefiler. Du kan for eksempel bruge en skabelon til et Find-modul til CMake eller til en .desktop-fil. Dette kan gøres ved at vælge <menuchoice>Opret fra skabelon</menuchoice> og vælge den ønskede kategori og skabelon. Hvis du vælger en anden kategori end <tt>Klasse</tt> eller <tt>Test</tt>, så vil du kun få mulighed for at vælge licens, særlige oplysninger krævet af skabelonen samt placering af outputfiler. Som med klasser og test bliver filerne genereret og åbnet i editoren når du afslutter guiden.  
<span id="Managing templates"></span>
<span id="Managing templates"></span>
=== Managing templates ===
=== Håndtering af skabeloner ===


From the <menuchoice>File -> New from Template</menuchoice> assistant, you can also download additional file templates by clicking the <menuchoice>Get more Templates...</menuchoice> button. This opens a Get Hot New Stuff dialog, where you can install additional templates, as well as update or remove them. There is also a configuration module for template, which can be reached by clicking <menuchoice>Settings -> Configure KDevelop -> Templates</menuchoice>. From there, you can manage both file templates (explained above) and project templates (used for creating new projects).  
I guiden <menuchoice>Fil -> Ny fra skabelon</menuchoice> kan du også downloade flere filskabeloner ved at klikke på knappen <menuchoice>Hent flere skabeloner...</menuchoice>. Dette åbner en Hent smarte nye ting-dialog, hvor du kan installere flere skabeloner samt opdatere eller fjerne dem. Der er også et konfigurationsmodul for skabeloner, som åbnes med menuen <menuchoice>Indstillinger -> Indstil KDevelop -> Skabeloner</menuchoice>. Her kan du håndtere både filskabeloner (forklaret ovenfor) og projektskabeloner (som bruges til at oprette nye projekter).  


[[Image:kdevelop-template-manager.png|thumb|500px|center]]
[[Image:kdevelop-template-manager.png|thumb|500px|center]]


Of course, if none of the available template suit your project, you can always create new ones. The easiest way is probably to copy and modify an existing template, while a short [http://techbase.kde.org/Development/Tutorials/KDevelop/Creating_a_class_template tutorial] and a longer [http://techbase.kde.org/Projects/KDevelop4/File_template_specification specification document] are there to help you. To copy an installed template, open the template manager by clicking <menuchoice>Settings -> Configure KDevelop... -> Templates</menuchoice>, select the template you wish to copy, then click the <menuchoice>Extract Template</menuchoice> button. Select a destination folder, then click <menuchoice>OK</menuchoice>, and the contents of the template will be extracted into the selected folder. Now you can edit the template by opening the extracted files and modifying them. After you are done, you can import your new template into '''KDevelop''' by opening the template manager, activating the appropriate tab (either <menuchoice>Project Templates</menuchoice> or <menuchoice>File Templates</menuchoice>) and clicking <menuchoice>Load Template</menuchoice>. Open the template description file, which is the one with the suffix either <code>.kdevtemplate</code> or <code>.desktop</code>. '''KDevelop''' will compress the files into a template archive and import the template.  
Du kan selvfølgelig altid oprette nye skabelober, hvis ingen af de tilgængelige skabeloner passer til dit projekt. Den nemmeste måde er nok at kopiere og modificere en eksisterende skabelon; du kan finde hjælp i den korte [http://techbase.kde.org/Development/Tutorials/KDevelop/Creating_a_class_template vejledning] og det længere [http://techbase.kde.org/Projects/KDevelop4/File_template_specification specifikationsdokument]. For at kopiere en installeret skabelon åbner du skabelonhåndteringen ved <menuchoice>Indstillinger -> Indstil KDevelop... -> Skabeloner</menuchoice>, <!--XXTjekXX--> markerer den skabelon du vil kopiere og klikker på knappen<menuchoice>Extract Template</menuchoice>. Vælg en målmappe og klik på <menuchoice>O.k.</menuchoice>, så bliver indholdet af skabelonen overført til den valgte mappe. Du kan nu redigere skabelonen ved at åben de overførte filer og modificere dem. Når du er færdig kan du importere dine nye skabeloner i '''KDevelop''' ved at åbne skabelonhåndteringen, gå til de relevante faneblad (enten <menuchoice>Projektskabeloner</menuchoice> eller <menuchoice>Filskabeloner</menuchoice>) og klikke på <menuchoice>Indlæs skabelon</menuchoice>. Åbn skabelonens beskrivelsesfil, som har filendelse <code>.kdevtemplate</code> eller <code>.desktop</code>. '''KDevelop''' vil komprimere filerne til et skabelonarkiv og importere skabelonen.  


{{Note|1=When copying an existing template, make sure you rename it before importing it again. Otherwise, you will either overwrite the old template, or will end up with two templates with identical names. To rename a template, rename the description file to something unique (but keep the suffix), and change the <tt>Name</tt> entry in the description file. }}
{{Note/da|1=Når du kopierer eksisterende skabeloner, så sørg for at omdøbe dem før du importerer dem igen. Ellers vil du enten overskrive den gamle skabelon eller vil ende med to skabeloner med samme navn. For at omdøbe en skabelon skal du omdøbe beskrivelsesfilen til noget, der ikke er brugt før (men bevar filendelsen) og ændre feltet <tt>Name</tt> i beskrivelsesfilen.}}


If you want to write a template from scratch, you can start with a sample C++ class template by [[Special:myLanguage/KDevelop4/Manual/Sessions and projects#Creating projects from scratch|creating a new project]] and selecting the <tt>C++ Class Template</tt> project in category <tt>KDevelop</tt>.  
Hvis du ønsker at skrive en skabelon fra grunde, så kan du starte med et eksempel på en skabelon for C++-klasser ved at  [[Special:myLanguage/KDevelop4/Manual/Sessions and projects#Creating projects from scratch|oprette et nyt projekt]] og vælge projektet <tt>C++Class Template</tt> i kategorien <tt>KDevelop</tt>. <!--XXTjekXX-->


{{Prevnext2
{{Prevnext2
| prevpage=Special:MyLanguage/KDevelop4/Manual/Working with source code | nextpage=Special:MyLanguage/KDevelop4/Manual/Building_(compiling)_projects_with_custom_Makefiles
| prevpage=Special:MyLanguage/KDevelop4/Manual/Working with source code | nextpage=Special:MyLanguage/KDevelop4/Manual/Building_(compiling)_projects_with_custom_Makefiles
| prevtext=Working with source code | nexttext=Building (compiling) projects with custom Makefiles
| prevtext=Arbejdet med kildekode | nexttext=Byg (kompilér) projekter med dine egne makefiler
| index=Special:MyLanguage/KDevelop4/Manual | indextext=Back to menu
| index=Special:MyLanguage/KDevelop4/Manual | indextext=Indholdsfortegnelse
}}
}}


[[Category:Development]]
[[Category:Udvikling/da]]

Latest revision as of 06:04, 8 January 2015

Other languages:

Kodegenering med skabeloner

KDevelop bruger skabeloner til at generere kildekodefiler og for at undgå at skrive kode som gentages.

Opret en ny klasse

Den mest almindelige anvendelse af kodegenerering er formentlig at skrive en ny klasse. For at oprettet en ny klasse i et eksisterende projekt skal du højreklikke på projektmappen og vælge Opret fra skabelon. Den samme dialog kan startes fra menuen ved at vælge Fil -> Ny fra skabelon, men at bruge en projektmappe har den fordel, at basis-URL'en bliver sat for outputfilen. Vælg Klasse i afsnittet kategori og det sprog og den skabelon der ønskes i de andre to felter. Efter at du har valgt en klasseskabelon skal du angive detaljer om den nye klasse.

Først skal du angive en identifikator for klassen. Dette kan være en simpelt navn (som Bus) eller en komplet identifikator men navnerum (som Transportation::Bus). I det sidste tilfælde vil KDevelop fortolke identifikatoren og separere navnerummet fra det egentlige navn. I det samme vindue kan du tilføje den nye klasses basisklasser. Du bemærker måske, at nogle skabeloner selv vælger en basisklasse, men du kan frit fjerne den og du kan tilføje andre basisklasser. Du bør skrive hele nedarvningserklæringen her, hvilket afhænger af sproget, fx public QObject for C++, extends SomeClass for PHP og blot klassens navn for Python.

I det næste vindue kan du vælge bland de virtuelle metoder fra alle nedarvede klasser samt nogle standard konstruktorer, destruktorer og operatorer. Markér afkrydsningsfeltet vedsiden af en metodesignatur for at implementere denne metode i den nye klasse.

Når du klikker på Næste kommer du til et vindue, hvor du kan tilføje medlemmer til klassen. Afhængigt af den valgte skabelon vil de optræde som medlemsvariable i den nye klasse eller skabelonen vil oprette settere og gettere for dem. I sprog som C++, hvor variable skal erklæres skal du angive både type og navn for medlemmet som fx int number eller QString name. I andre sprog behøver du ikke at angive typen, men det er god praksis at have den med alligevel, for den valgte skabelon kan stadig drage nytte af det.

I de følgende vinduer kan du vælge licensen for din nye klasse, angive særlige oplysninger, som den valgte skabelon skal bruge og angive, hvor de genererede filer skal placeres. Du afslutter guiden ved at klikke Afslut, hvorefter den nye klasse genereres. De genererede filer vil blive åbnet i editoren, sådan at du kan begynde at arbejde med dem med det samme.

Efter at have oprettet en ny C++-klasse vil du få mulighed for at føje den til et projektmål. Vælg et mål i dialogvinduet eller annulér vinduet og føj filen til et mål manuelt.

Hvis du valgte skabelonen Qt Objekt, markerede nogle standardmetoder og tilføjede et par medlemsvariable, så skulle outputtet ligne det på billedet herunder.

Du kan se, at datamedlemmerne er blevet lavet om til Qt egenskaber med tilgangsfunktioner og Q_PROPERTY-makroer. Argumenter til setterfunktioner overgives endda ved const-reference, hvor det er passende. Desuden er en privat klasse blevet erklæret og en privat pointer oprettet med Q_DECLARE_PRIVATE. Alt dette gøres af skabelonen. Havde du valgt en anden skabelon, så havde resultatet nok set helt anderledes ud.

Opret en ny unittest

Selv om de fleste testsystemer kræver, at hver test også er en klasse, så har KDevelop en metode til at forenkle oprettelsen af enhedstest. For at oprette en ny test skal du højreklikke på en projektmappe og vælge Opret fra skabelon. I skabelonvalgsvinduet vælger du Test som kategori og derefter dit programmeringssprog og din skabelon og klikker så Næste.

Du bliver nu spurgt om testens navn og en liste af testtilfælde. For testilfældene skal du blot angive el liste med navne. Nogle enhedstestsystemer så som PyUnit og PHPUnit kræver, at testtilfældene starter med et specielt præfiks. I KDevelop er skabelonen ansvarlig for at tilføje præfikset, så du skal ikke føje det til testtilfældene her. Efter at have klikket på Næste skal du angive licens og outputplacering for de genererede filer; så bliver testen oprettet.

Enhedstest oprettet på denne måde vil ikke automatisk blive føjet til noget mål. Hvis du bruger CTest eller et andet testsystem, så sørg for at føje de nye filer til et mål. KDevelop giver dig en værktøjsvisning til enhedstests, som integrerer med CTest.

Andre filer

Selv om klasser og enhedstest får særlig opmærksomhed ved kodegenerering fra skabeloner, så kan samme metode bruges til enhver slags kildekodefiler. Du kan for eksempel bruge en skabelon til et Find-modul til CMake eller til en .desktop-fil. Dette kan gøres ved at vælge Opret fra skabelon og vælge den ønskede kategori og skabelon. Hvis du vælger en anden kategori end Klasse eller Test, så vil du kun få mulighed for at vælge licens, særlige oplysninger krævet af skabelonen samt placering af outputfiler. Som med klasser og test bliver filerne genereret og åbnet i editoren når du afslutter guiden.

Håndtering af skabeloner

I guiden Fil -> Ny fra skabelon kan du også downloade flere filskabeloner ved at klikke på knappen Hent flere skabeloner.... Dette åbner en Hent smarte nye ting-dialog, hvor du kan installere flere skabeloner samt opdatere eller fjerne dem. Der er også et konfigurationsmodul for skabeloner, som åbnes med menuen Indstillinger -> Indstil KDevelop -> Skabeloner. Her kan du håndtere både filskabeloner (forklaret ovenfor) og projektskabeloner (som bruges til at oprette nye projekter).

Du kan selvfølgelig altid oprette nye skabelober, hvis ingen af de tilgængelige skabeloner passer til dit projekt. Den nemmeste måde er nok at kopiere og modificere en eksisterende skabelon; du kan finde hjælp i den korte vejledning og det længere specifikationsdokument. For at kopiere en installeret skabelon åbner du skabelonhåndteringen ved Indstillinger -> Indstil KDevelop... -> Skabeloner, markerer den skabelon du vil kopiere og klikker på knappenExtract Template. Vælg en målmappe og klik på O.k., så bliver indholdet af skabelonen overført til den valgte mappe. Du kan nu redigere skabelonen ved at åben de overførte filer og modificere dem. Når du er færdig kan du importere dine nye skabeloner i KDevelop ved at åbne skabelonhåndteringen, gå til de relevante faneblad (enten Projektskabeloner eller Filskabeloner) og klikke på Indlæs skabelon. Åbn skabelonens beskrivelsesfil, som har filendelse .kdevtemplate eller .desktop. KDevelop vil komprimere filerne til et skabelonarkiv og importere skabelonen.

Note
Når du kopierer eksisterende skabeloner, så sørg for at omdøbe dem før du importerer dem igen. Ellers vil du enten overskrive den gamle skabelon eller vil ende med to skabeloner med samme navn. For at omdøbe en skabelon skal du omdøbe beskrivelsesfilen til noget, der ikke er brugt før (men bevar filendelsen) og ændre feltet Name i beskrivelsesfilen.


Hvis du ønsker at skrive en skabelon fra grunde, så kan du starte med et eksempel på en skabelon for C++-klasser ved at oprette et nyt projekt og vælge projektet C++Class Template i kategorien KDevelop.