CodeDOM - Dynamisk generering og kompilering af kode

Størrelse: px
Starte visningen fra side:

Download "CodeDOM - Dynamisk generering og kompilering af kode"

Transkript

1 Denne guide er oprindeligt udgivet på Eksperten.dk CodeDOM - Dynamisk generering og kompilering af kode Med CodeDOM kan man på runtime generere kode, kompilere det og derefter afvikle det. I denne artikel skal vi kigge på hvordan... Skrevet den 01. Mar 2009 af wisen I kategorien Programmering /.NET Indledning Alle der har arbejdet en smule med.net platformen har næsten med sikkerhed hørt om WebServices og med næsten lige så stor sikkerhed prøvet at lave en WebService og benytte den i en eller anden klientapplikation. For at benytte en WebService i.net har man brug for en proxy klasse som man fra klientsiden kan instantiere og benytte som enhvert andet objekt - altså kalde dens metoder. Men hvordan kommer man fra at man trykket på "Add Web Reference" i Visual Studio, til der er genereret en proxyklasse? For at få genereret en proxyklasse skal man som bekendt angive hvilken Webservice man ønsker at konsumere ved at angive en URL til en.wsdl fil. Visual Studio kalder kommandolinie værktøjet WSDL.exe, som genererer proxyklassen, med den angivne.wsdl fil som argument. Ved at dissassemble WSDL.exe klassen kan man se at den benytter klassen System.Web.Services.Description.ServiceDescriptionImporter til at generere selve koden. MSDN har følgende eksempel på at benytte ServiceDescriptionImporter using System; using System.Web.Services.Description; using System.CodeDom; namespace MyServiceDescription class MyImporter public static void Main() try ServiceDescription myservicedescription = ServiceDescription.Read("Sample_CS.wsdl"); ServiceDescriptionImporter myimporter = new ServiceDescriptionImporter(); myimporter.protocolname = "Soap"; myimporter.addservicedescription(myservicedescription, "", ""); Console.WriteLine("Style: " + myimporter.style.tostring()); CodeNamespace mynamespace = new CodeNamespace(ServiceDescription.Namespace); CodeCompileUnit myunit = new CodeCompileUnit(); myunit.namespaces.add(mynamespace); ServiceDescriptionImportWarnings mywarning = myimporter.import(mynamespace, myunit); Console.WriteLine("ServiceDescriptionImportWarnings value generated: " + mywarning.tostring());

2 // Get the XMLSchema related to the ServiceDescriptionImporter. System.Xml.Serialization.XmlSchemas myschema = myimporter.schemas; catch (Exception e) Console.WriteLine("Following exception was thrown: " + e.tostring()); Langt det meste arbejde med at importere filen "Sample_CS.wsdl" sker i forbindelse med at Import metoden bliver kaldt på myimporter. Metoden tager, som det kan ses 2 argumenter - et CodeNamespace (mynamespace) og et CodeCompileUnit (myunit). Disse klasser er en del af CodeDOM. Vi kommer tilbage til hvad de kan bruges til, og selvfølgelig hvordan man bruger dem. Formålet med artiklen Formålet med denne artikel er at vise et eksempel på hvordan CodeDOM teknologien kan benyttes. Som altid når man begynder at kigge på en ny teknologi er der nærmest en konvention om at man laver et Hello World eksempel - så det skal vi selvfølgelig også her :) Hvad er CodeDOM så for en størrelse? CodeDOM teknologien kan f.eks. bruges til at lave kodegeneratorer som WSDL.exe som beskrevet i indledningen, en anden mulighed er at generere en assembly på runtime som varetager en eller anden, typisk krævende, opgave. Faktisk genererer XMLSerializeren en assembly på runtime i forbindelse med at man benytter WebServices - har I lagt mærke til at det tager 1-2 sekunder at instantiere en Webserviceproxy første gang? CodeDOM står er en forkortelse af "Code Document Object Model". CodeDOM'en er en træstruktur, en graf, der opbygges af et antal elementer fra CodeDOM-namespacet. CodeDOM'en er en abstraktion af et programmeringssprog - og dette er den primære fordel - man kan opbygge een CodeDOM som derefter kan realiseres i et, eller flere, konkrete programmeringssprog. CodeDOM namespacet indeholder klasser til at repræsentere langt de fleste kodemæssige konstruktioner man ellers kan lave ved at kode direkte i f.eks. C#. Der bl.a. findes klasser til at repræsentere type deklarationer, såsom klasser, member-variable (fields), metoder, properties, tildelinger, if-sætninger osv. osv. osv. Fordele ved CodeDOM - CodeDOM giver mulighed for at kode kan genereres, kompileres og afvikles på runtime. - CodeDOM giver mulighed for at generere kode for (principielt) alle.net sprog. Microsoft understøtter umiddelbart C#, VB.NET og JScript. Der findes også så vidt jeg ved også en CodeGenerator der kan emitte Delphi kode Begrænsninger ved CodeDOM - Ikke alle konstruktioner er mulige via CodeDOM. På MSDN står der "The CodeDOM supports the many common types of code elements found in programming languages that support the common language runtime. The CodeDOM was not designed to provide elements to represent all possible programming language features." Der findes nogle specielle klasser, f.eks. CodeSnippetStatement, som man kan benytte hvis man støder på en begrænsning ved CodeDOM'en. Via CodeSnippetXXX klasserne har man mulighed for at sætte kode direkte ind i outputtet:

3 CodeSnippetStatement literalstatement = new CodeSnippetStatement("Console.Write(\"Test literal statement output\")"); Hvis man putter ovenstående CodeSnippetStatement ind i sin CodeDOM vil man når CodeDOM'en emittes få skrevet "Console.Write(\"Test literal statement output\")". Dette har, som det sikkert kan ses, den ulempe at det ikke mere er muligt at tage en CodeDOM og emitte den til ethvert.net sprog. Da CodeSnippets er sprogspecifikke skal man, når man genererer CodeDOM'en, tage højde for hvilket sprog der skal outputtes til. Namespaces Der er specielt to namespaces man skal benytte når man vil arbejde med CodeDOM: - System.CodeDOM - indeholder de elementer der kan benyttes til at opbygge DOM'en - System.CodeDOM.Compiler - definerer bl.a. interfaces for generering og kompilering af kode Man benytter klassser fra System.CodeDOM til at opbygge strukturen, altså DOM'en og man benytter funktionalitet fra System.CodeDOM.Compiler namespacet for at outputte og kompilere kode udfra denne DOM. I System.CodeDOM.Compiler namespacet er der defineret to interfaces: - ICodeGenerator - definerer interfacet for klasser der kan generere kode udfra en CodeDOM - ICodeCompiler - definerer interfacet for klasser der kan benyttes til at kompilere kode I namespacet Microsoft.CSharp henholdsvis Microsoft.VisualBasic findes der en klasse (CSharpCodeProvider henholdsvis VBCodeProvider) der fungerer som factory af ICodeGenerator og ICodeCompiler implementationer for de respektive sprog. Hello world Målet med dette eksempel har været at komme omkring de fleste "almindelige" konstruktioner. Eksemplet går ud på at lave en forholdsvis simpel Hello World klasse som har en metode til at vise en messagebox, derudover har man mulighed for at ændre den besked den skal vise. Jeg har forsøgt at sætte relevante kommentarer ind for at koden bliver så forståelig som mulig - håber at det virker ;) Eksemplet kommer ind over klassedefinitioner, membervariable, properties, metoder, exceptions, tildeling af variable og properties osv. Instantiér et CodeCompileUnit Første trin er at lave et CodeCompileUnit: private static CodeCompileUnit CreateCompileUnit() // Create CompileUnit CodeCompileUnit compileunit = new CodeCompileUnit(); // Add references assemblies compileunit.referencedassemblies.add("system");

4 compileunit.referencedassemblies.add("system.windows.forms"); return compileunit; Tilføj et namespace Dernæst skal man tilføje et namespace vi kan putte klasser osv. ind i. Dette namespace skal tilføjes til det compileunit vi skabte ovenfor. private static CodeNamespace CreateNamespace( CodeCompileUnit compileunit ) // Create namespace CodeNamespace codenamespace = new CodeNamespace("HelloWorld"); // Add "using" statements codenamespace.imports.add( new CodeNamespaceImport("System") ); codenamespace.imports.add( new CodeNamespaceImport("System.Windows.Forms") ); // Add namespace to compileunit compileunit.namespaces.add( codenamespace ); return codenamespace; Definér en klasse Derefter kan vi definere en klasse "HelloWorldClass" som vi kan tilføje til namespacet: private static CodeTypeDeclaration CreateHelloWorldClass( CodeNamespace codenamespace ) // Create MyHelloWorldClass CodeTypeDeclaration classdeclaration = new CodeTypeDeclaration("HelloWorldClass"); classdeclaration.isclass = true; classdeclaration.attributes = MemberAttributes.Public; // Add class to namespace codenamespace.types.add( classdeclaration ); return classdeclaration; Tilføj en membervariabel Membervariable defineres ved at skabe instanser at CodeMemberField: private static void CreateFields(CodeTypeDeclaration classdeclaration)

5 // Create private field "m_message" CodeMemberField field = new CodeMemberField(typeof(string), "m_message"); field.attributes = MemberAttributes.Private; field.initexpression = new CodePrimitiveExpression("Hello world"); // Add field to class classdeclaration.members.add( field ); Tilføj en konstruktor En konstruktor defineres ved at skabe instanser af CodeConstructor. På denne instans kan der tilføjes kode i form af CodeStatements/CodeExpressions. private static void CreateConstructor(CodeTypeDeclaration classdeclaration) // Create constructor with parameters... CodeConstructor constructor = new CodeConstructor(); constructor.attributes = MemberAttributes.Public MemberAttributes.Final; //... add a string parameter "message" constructor.parameters.add( new CodeParameterDeclarationExpression(typeof(string), "message")); //.. if argument is null then return constructor.statements.add( new CodeConditionStatement( new CodeBinaryOperatorExpression( new CodeArgumentReferenceExpression("message"), CodeBinaryOperatorType.ValueEquality, new CodePrimitiveExpression(null)), new CodeStatement[] new CodeMethodReturnStatement() )); //... assign value of parameter "message" to field "m_message" constructor.statements.add( new CodeAssignStatement( new CodeFieldReferenceExpression( new CodeThisReferenceExpression(), "m_message" ), new CodeArgumentReferenceExpression("message"))); //... add constructors to class classdeclaration.members.add( constructor ); Tilføj en property En property defineres ved at skabe en instans af CodeMemberProperty. En CodeMemberProperty har to CodeStatementCollections for henholdvis get og set delene, den har desuden to properties (HasGet og HasSet) der kan benyttes til at fortælle om den overholdet har en get henholdsvis set del - default er de begge true. private static void CreateProperty(CodeTypeDeclaration classdeclaration) // Create property to access private field... CodeMemberProperty property = new CodeMemberProperty();

6 property.name = "Message"; property.type = new CodeTypeReference(typeof(string)); property.attributes = MemberAttributes.Public MemberAttributes.Final; //... add setter property.setstatements.add( new CodeAssignStatement( new CodeFieldReferenceExpression( new CodeThisReferenceExpression(), "m_message" ), new CodePropertySetValueReferenceExpression())); //... add getter property.getstatements.add( new CodeMethodReturnStatement( new CodeFieldReferenceExpression( new CodeThisReferenceExpression(), "m_message" ) )); //... add property to class classdeclaration.members.add( property ); Tilføj en metode Metoder defineres ved at skabe instanser af CodeMemberMethods: private static void CreateMethods(CodeTypeDeclaration classdeclaration) // Create method to show message... CodeMemberMethod method = new CodeMemberMethod(); method.name = "ShowMessage"; method.attributes = MemberAttributes.Public MemberAttributes.Final; //... if property is null throw exception method.statements.add( new CodeConditionStatement( new CodeBinaryOperatorExpression( new CodePropertyReferenceExpression( new CodeThisReferenceExpression(), "Message"), CodeBinaryOperatorType.ValueEquality, new CodePrimitiveExpression(null)), new CodeStatement[] new CodeThrowExceptionStatement( new CodeObjectCreateExpression(typeof(System.Exception), new CodeExpression[] new CodePrimitiveExpression("Message is null"))))); //... else add call to System.Windows.Forms.MessageBox.Show with property Message as argument method.statements.add( new CodeMethodInvokeExpression( new CodeTypeReferenceExpression( typeof(system.windows.forms.messagebox)), "Show", new CodeExpression[] new CodePropertyReferenceExpression( new CodeThisReferenceExpression(), "Message" ))); // Create overloaded method to show message... CodeMemberMethod overloadedmethod = new CodeMemberMethod(); overloadedmethod.name = "ShowMessage"; overloadedmethod.attributes = MemberAttributes.Public MemberAttributes.Final;

7 //... add parameter overloadedmethod.parameters.add( new CodeParameterDeclarationExpression(typeof(string), "message") ); //... if property is null throw exception overloadedmethod.statements.add( new CodeConditionStatement( new CodeBinaryOperatorExpression( new CodeArgumentReferenceExpression("message"), CodeBinaryOperatorType.ValueEquality, new CodePrimitiveExpression(null)), new CodeStatement[] new CodeThrowExceptionStatement( new CodeObjectCreateExpression(typeof(System.Exception), new CodeExpression[] new CodePrimitiveExpression("Message is null")))); //... else add call to System.Windows.Forms.MessageBox.Show with parameter as argument overloadedmethod.statements.add( new CodeMethodInvokeExpression( new CodeTypeReferenceExpression(typeof(System.Windows.Forms.MessageBox)), "Show", new CodeExpression[] new CodeArgumentReferenceExpression("message"))); //... add method to class classdeclaration.members.add( method ); classdeclaration.members.add( overloadedmethod ); Tilføj et EntryPoint Som bekendt skal der i enhver assembly være et EntryPoint - sådan et defineres ved at skabe en instans af CodeEntryPointMethod. private static void CreateEntryPoint( CodeTypeDeclaration classdeclaration ) // Create entry point CodeEntryPointMethod entrypoint = new CodeEntryPointMethod(); // Add entry point to class classdeclaration.members.add( entrypoint ); // Create a try-catch block CodeTryCatchFinallyStatement trycatch = new CodeTryCatchFinallyStatement(); // Add try-catch block to entrypoint entrypoint.statements.add( trycatch ); // Create instance of HelloWorldClass and assign it to a variable "helloworldclass" trycatch.trystatements.add( new CodeVariableDeclarationStatement("HelloWorldClass", "helloworldclass", new CodeObjectCreateExpression("HelloWorldClass", new CodeExpression[] new CodePrimitiveExpression(null) )) ); // Invoke ShowMessage method of HelloWorldClass

8 trycatch.trystatements.add( new CodeMethodInvokeExpression( new CodeVariableReferenceExpression("helloWorldClass"), "ShowMessage", new CodeExpression[0]) ); // Set property Message of HelloWorldClass - set to "Hej Verden" trycatch.trystatements.add( new CodeAssignStatement( new CodePropertyReferenceExpression( new CodeVariableReferenceExpression("helloWorldClass"), "Message"), new CodePrimitiveExpression("Hej Verden")) ); // Invoke ShowMessage method of HelloWorldClass trycatch.trystatements.add( new CodeMethodInvokeExpression( new CodeVariableReferenceExpression("helloWorldClass"), "ShowMessage", new CodeExpression[0]) ); // Invoke ShowMessage method of HelloWorldClass with argument "Hello World" trycatch.trystatements.add( new CodeMethodInvokeExpression( new CodeVariableReferenceExpression("helloWorldClass"), "ShowMessage", new CodeExpression[] new CodePrimitiveExpression("Hello World") ) ); // Create an catch clause... CodeCatchClause catchclause = new CodeCatchClause("e", new CodeTypeReference(typeof(System.Exception))); catchclause.statements.add( new CodeMethodInvokeExpression( new CodeTypeReferenceExpression(typeof(System.Windows.Forms.MessageBox)), "Show", new CodeExpression[] new CodePropertyReferenceExpression( new CodeArgumentReferenceExpression("e"), "Message") )); // Add catch clause to try-catch block trycatch.catchclauses.add( catchclause ); Kodegenerering - ICodeGenerator Som beskrevet ovenfor kan man via Microsoft.CSharp.CSharpCodeProvider få fat i en ICodeGenerator som kan emitte et CodeCompileUnit til en fil: private static void GenerateCode(CodeCompileUnit compileunit) // Create code from compileunit... CodeDomProvider provider = new Microsoft.CSharp.CSharpCodeProvider(); ICodeGenerator codegenerator = provider.creategenerator(); CodeGeneratorOptions generatoroptions = new CodeGeneratorOptions(); generatoroptions.bracingstyle = "C"; IndentedTextWriter writer = new IndentedTextWriter( new System.IO.StreamWriter("HelloWorld.cs", false), " "); codegenerator.generatecodefromcompileunit( compileunit, writer,

9 generatoroptions ); writer.close(); Kompilering - ICodeCompiler Ligesom ved generering af koden kan man via Microsoft.CSharp.CSharpCodeProvider få fat i en ICodeCompiler som kan kompilere den fil vi har genereret ovenfor: private static void CompileCode() // Compile code... CodeDomProvider provider = new Microsoft.CSharp.CSharpCodeProvider(); ICodeCompiler codecompiler = provider.createcompiler(); CompilerParameters compileroptions = new CompilerParameters(); compileroptions.referencedassemblies.add("system.dll"); compileroptions.referencedassemblies.add("system.windows.forms.dll"); compileroptions.generateinmemory = false; compileroptions.generateexecutable = true; compileroptions.outputassembly = "C:\\HelloWorld.exe"; CompilerResults compilerresults = codecompiler.compileassemblyfromfile(compileroptions, "HelloWorld.cs"); Putting it all together Så mangler vi bare at sætte det hele sammen: public static CodeCompileUnit dostuff() CodeCompileUnit compileunit = CreateCompileUnit(); CodeNamespace codenamespace = CreateNamespace( compileunit ); CodeTypeDeclaration classdeclaration = CreateHelloWorldClass( codenamespace ); CreateFields(classDeclaration); CreateConstructor(classDeclaration); CreateProperty(classDeclaration); CreateMethods(classDeclaration); CreateEntryPoint(classDeclaration); GenerateCode( compileunit ); CompileCode(); Resultatet

10 Herunder er resultatet fra genereringen: namespace HelloWorld using System; using System.Windows.Forms; public class HelloWorldClass private string m_message = "Hello world"; public HelloWorldClass(string message) if ((message == null)) return; this.m_message = message; public string Message get return this.m_message; set this.m_message = value; public void ShowMessage() if ((this.message == null)) throw new System.Exception("Message is null"); System.Windows.Forms.MessageBox.Show(this.Message); public void ShowMessage(string message) if ((message == null)) throw new System.Exception("Message is null"); System.Windows.Forms.MessageBox.Show(message); public static void Main() try

11 HelloWorldClass helloworldclass = new HelloWorldClass(null); helloworldclass.showmessage(); helloworldclass.message = "Hej Verden"; helloworldclass.showmessage(); helloworldclass.showmessage("hello World"); catch (System.Exception e) System.Windows.Forms.MessageBox.Show(e.Message); Referencer <a href=" eference.asp">codedom Quick Reference</a> Kommentar af burningice d. 03. Nov Kommentar af edutasia d. 20. Apr Kommentar af williamengbjerg d. 05. Nov sejt..

SWC Elementer i klassedefinition

SWC Elementer i klassedefinition SWC Elementer i klassedefinition Indhold Eksempel... 2 Karakteristika for en klasse... 3 Karakteristika for et instance field... 4 Karakteristika for en constructor... 5 Karakteristika for en property...

Læs mere

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation). Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer

Læs mere

Singleton pattern i C#

Singleton pattern i C# Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i C# Denne artikel beskriver Singleton pattern og implementation i C#. Den forudsætter kendskab til C# men ikke til Singleton. Der er

Læs mere

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

METODER ARV KLASSER. Grundlæggende programmering Lektion 5 METODER KLASSER ARV Grundlæggende programmering Lektion 5 1 METODER Sekvenser af kode om samme emne 2 REPETITION Række af statements der udfører en handling Mindst én metode der hedder main Forskellen

Læs mere

Undtagelseshåndtering i C#

Undtagelseshåndtering i C# Denne guide er oprindeligt udgivet på Eksperten.dk Undtagelseshåndtering i C# I modsætning til C++ kan man i C# ikke skrive et program uden undtagelseshåndtering, så derfor har jeg skrevet denne guide

Læs mere

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder. Denne guide er oprindeligt udgivet på Eksperten.dk Collections i.net Når du kigger i namespacet System.Collections finder du over 10 forskellige klasser. At vælge den rigtige til netop din applikations

Læs mere

Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere

Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere Dokument version: 2.0 ADS version: 1.0 Henvendelse vedrørende affald: Miljøstyrelsen Roskilde, Affaldssekretariatet

Læs mere

Introduction til.net remoting i C#

Introduction til.net remoting i C# Denne guide er oprindeligt udgivet på Eksperten.dk Introduction til.net remoting i C# Denne artikel beskriver teorien bag.net remoting og viser nogle simple kode eksempler i C#. Den forudsætter kendskab

Læs mere

Indhold. Senest opdateret : 30. juli 2010. Side 1 af 5

Indhold. Senest opdateret : 30. juli 2010. Side 1 af 5 Indhold Introduktion... 2 Scenarier hvor API et kan benyttes... 2 Scenarie 1 Integration til lagerhotel... 2 Scenarie 2 Integration til økonomi system... 2 Webshop2 API Model... 3 Brugen af API et... 4

Læs mere

Hvordan vælger jeg dokumentprofilen?

Hvordan vælger jeg dokumentprofilen? Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel

Læs mere

Software Construction 1 semester (SWC) Spørgsmål 1

Software Construction 1 semester (SWC) Spørgsmål 1 Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /

Læs mere

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

//Udskriver System.out.println(Hej  + ditfornavn +   + ditefternavn + .); System.out.println(Du er  + dinalder +  aar gammel! Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for

Læs mere

Indhold. Senest opdateret:03. september 2013. Side 1 af 8

Indhold. Senest opdateret:03. september 2013. Side 1 af 8 Indhold Introduktion... 2 Scenarier hvor API et kan benyttes... 2 Scenarie 1 Integration til lagerhotel... 2 Scenarie 2 Integration til økonomi system... 2 API Modeller... 2 Webshop2 API Model v1... 3

Læs mere

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni 2011. 1 8 jun 2011 MapBasic &.

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni 2011. 1 8 jun 2011 MapBasic &. MapBasic &.NET interaktion MapBasic.NET Jakob Lanstorp IT konsulent COWI Odense 23. Juni 2011 1 MapBasic &.NET interaktion Erfaring med MapBasic.NET / Visual Studio Anden programmering 2 Program Hurtig

Læs mere

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11 DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void

Læs mere

Anvendelse af metoder - Programmering

Anvendelse af metoder - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Anvendelse af metoder - Programmering En forhåbentlig rigtig god forklaring på hvad metoder er og hvordan de anvendes. Lidt om private og public, retur

Læs mere

Singleton pattern i Java

Singleton pattern i Java Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i Java Denne artikel beskriver Singleton pattern og implementation i Java. Den forudsætter kendskab til Java men ikke til Singleton.

Læs mere

Dvs. at give dit program muligheden for at loade og bruge plugins som andre har lavet.

Dvs. at give dit program muligheden for at loade og bruge plugins som andre har lavet. Denne guide er oprindeligt udgivet på Eksperten.dk Refleksion med.net Refleksion bruges til at undersøge klasser på runtime tidspunktet. Se hvordan du f.eks. loader en klasse fra en DLL, gennemkigger dens

Læs mere

Lektion 6. Grundlæggende programmering i VR

Lektion 6. Grundlæggende programmering i VR Lektion 6 Grundlæggende programmering i VR Plan for i dag Simpelt FPS Triggerzones og animationer C# og objekt orienteret programmering Interfaces Generics Google Cardboard Video om VRs fremtid App til

Læs mere

Send fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende fra Java.

Send  fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende  fra Java. Denne guide er oprindeligt udgivet på Eksperten.dk Send email fra Java Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende email fra Java. Simple eksempler ikke noget vildt

Læs mere

Database for udviklere. Jan Lund Madsen PBS10107

Database for udviklere. Jan Lund Madsen PBS10107 Database for udviklere Jan Lund Madsen PBS10107 Indhold LINQ... 3 LINQ to SQL og Arkitektur... 3 O/R designere... 5 LINQ Den store introduktion med.net 3.5 er uden tvivl LINQ(udtales link): Language-INtegrated

Læs mere

Introduction til.net remoting i VB.NET

Introduction til.net remoting i VB.NET Denne guide er oprindeligt udgivet på Eksperten.dk Introduction til.net remoting i VB.NET Denne artikel beskriver teorien bag.net remoting og viser nogle simple kode eksempler i VB.NET. Den forudsætter

Læs mere

SWC eksamens-spørgsmål. Oversigt

SWC eksamens-spørgsmål. Oversigt SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition

Læs mere

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel: Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra

Læs mere

I profil-feltet kan imastra-kunder vælge om upload skal ske ligesom filerne var indsendt til mailboksen eller

I profil-feltet kan imastra-kunder vælge om upload skal ske ligesom filerne var indsendt til mailboksen eller Upload fil Upload fil skal ses som et alternativ til at indsende tællefiler vedhæftet til mails Upload fil kan være en hurtigere og mere håndholdt måde at få data ind i Mastra på. Man starter med via Gennemse

Læs mere

F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank

F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank 03-10-2018 Rune Ibsen Softwareudvikling Seniorkonsulent Mentoring 10 konsulenter F# Programmeringssprog som oversættes til.net Functional-first,

Læs mere

Hvad er Objekter - Programmering

Hvad er Objekter - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som

Læs mere

RMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer.

RMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer. Denne guide er oprindeligt udgivet på Eksperten.dk RMI avanceret Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer. Den forudsætter

Læs mere

.NET 4.0 og C# 4.0. Denne artikel beskriver nogle af de nye features i.net 4.0 og C# 4.0. Den forudsætter et vist kendskab til.net og C#.

.NET 4.0 og C# 4.0. Denne artikel beskriver nogle af de nye features i.net 4.0 og C# 4.0. Den forudsætter et vist kendskab til.net og C#. Denne guide er oprindeligt udgivet på Eksperten.dk.NET 4.0 og C# 4.0 Denne artikel beskriver nogle af de nye features i.net 4.0 og C# 4.0. Den forudsætter et vist kendskab til.net og C#. Skrevet den 14.

Læs mere

SAX Simple API for XML.

SAX Simple API for XML. SAX Simple API for XML. En API (Application Programming Interface) et bibliotek eller et sæt af funktioner eller metoder. SAX er et sådant bibliotek af abstrakte metoder som f. eks. startdocument() eller

Læs mere

Udvikling af DOTNET applikationer til MicroStation i C#

Udvikling af DOTNET applikationer til MicroStation i C# Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt

Læs mere

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal

Læs mere

Kapitel 1 I gang med C#

Kapitel 1 I gang med C# Kapitel 1 I gang med C# Vi skal starte med at oprette et meget simpelt program, så du kan se hvad der ligger bag et C# projekt. Når du er færdig med dette kapitel vil du have lært: Hvordan du opretter

Læs mere

Test med NUnit. Denne artikel introducerer NUnit. Den forklarer ideen med NUnit. Og den viser hvordan man konkret bruger det.

Test med NUnit. Denne artikel introducerer NUnit. Den forklarer ideen med NUnit. Og den viser hvordan man konkret bruger det. Denne guide er oprindeligt udgivet på Eksperten.dk Test med NUnit Denne artikel introducerer NUnit. Den forklarer ideen med NUnit. Og den viser hvordan man konkret bruger det. Den forudsætter kendskab

Læs mere

Plugin-arkitektur med.net

Plugin-arkitektur med.net Denne guide er oprindeligt udgivet på Eksperten.dk Plugin-arkitektur med.net Denne artikel viser hvordan du kan lave en plugin-arkitektur i dit program. Gør det muligt for andre at skrive udvidelser til

Læs mere

Klasser og objekter. (Afsnit i manualen)

Klasser og objekter. (Afsnit i manualen) Klasser og objekter (Afsnit 4 + 5 i manualen) Grundbegreber Klasser og objekter beskrivelse oprettelse Attributter og metoder tilstand opførsel Indkapsling afskærmning datarepræsentationsuafhængighed Klasser

Læs mere

Debugging ivs. Praksis eksempel. Assemblies Attributes Dynamic programming. Github. Multithreading. Grundlæggende programmering Lektion 6

Debugging ivs. Praksis eksempel. Assemblies Attributes Dynamic programming. Github. Multithreading. Grundlæggende programmering Lektion 6 Praksis eksempel Assemblies Attributes Dynamic programming Multithreading Debugging ivs Github Grundlæggende programmering Lektion 6 Praksis eksempel ShareX, et skærm-optager program ShareX er et gratis

Læs mere

Hvilket sprog er hurtigst

Hvilket sprog er hurtigst Denne guide er oprindeligt udgivet på Eksperten.dk Hvilket sprog er hurtigst Denne artikel forsøger at aflive forskellige myter om hvilke sprog der er hurtigst. Den forudsætter ikke noget særligt. Skrevet

Læs mere

Specifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api

Specifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api Specifikation Abstrakt, objektorienteret operativsystem-api Indhold 1 Indledning... 3 1.1 Introduktion... 3 1.2 Formål... 3 1.3 Overordnede krav... 3 2 Ressourcer i OS-API et... 4 2.1 Tråde... 4 2.2 Timere...

Læs mere

ATTRIBUTES MULTITHREADING DYNAMIC PROGRAMMING. Grundlæggende programmering Lektion 11

ATTRIBUTES MULTITHREADING DYNAMIC PROGRAMMING. Grundlæggende programmering Lektion 11 ATTRIBUTES DYNAMIC PROGRAMMING MULTITHREADING Grundlæggende programmering Lektion 11 1 ATTRIBUTES Information om adfærd 2 ATTRIBUTES En attribut er en deklarativ tag, der bruges til at formidle information

Læs mere

Tredjepart webservices

Tredjepart webservices Tredjepart webservices 4. juni 2015 USS Dok. Klik her for at angive tekst. 1/12 Indholdsfortegnelse Introduktion... 3 Miljøer... 3 Adgang... 3 API kald... 4 GET: /authorizations... 4 Input 4 Output 4 Output

Læs mere

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1 Spørgsmål 1 Grundlæggende objektorienterede begreber o Klasse (class) o Objekt (object) o Metode (method), herunder return type og parametre o Instansvariable (instance variables) & egenskaber (properties),

Læs mere

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen. Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19

Læs mere

Den forudsætter kendskab til XML og C# men ikke til brug af XML i C#.

Den forudsætter kendskab til XML og C# men ikke til brug af XML i C#. Denne guide er oprindeligt udgivet på Eksperten.dk Brug af XML i C# Denne artikel vil vise lidt om hvordan man kan bruge XML i C#. Den forudsætter kendskab til XML og C# men ikke til brug af XML i C#.

Læs mere

.NET 4.5 og C# 5.0. Denne artikel beskriver nogle af de nye features i.net 4.5 og C# 5.0. Den forudsætter et vist kendskab til.net og C#.

.NET 4.5 og C# 5.0. Denne artikel beskriver nogle af de nye features i.net 4.5 og C# 5.0. Den forudsætter et vist kendskab til.net og C#. Denne guide er oprindeligt udgivet på Eksperten.dk.NET 4.5 og C# 5.0 Denne artikel beskriver nogle af de nye features i.net 4.5 og C# 5.0. Den forudsætter et vist kendskab til.net og C#. Skrevet den 11.

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne. Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning

Læs mere

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste Denne guide er oprindeligt udgivet på Eksperten.dk Indkøbsvogn i PHP I denne artikel vil jeg prøve at lave en indkøbskurv som let kan udvides, og som ikke er svær at forstå. Det er bedst med viden om OOP(klasser),

Læs mere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere Integrationsmanual Anvendelse af webservice til kursusoversigt i Campus Brugervejledning til udviklere Moderniseringsstyrelsen Webservice manual til udviklere 2016 1 1. Indholdsfortegnelse Nyt kapitel

Læs mere

Exceptions i Delphi. Try except

Exceptions i Delphi. Try except Exceptions i Delphi Exceptions er en teknik til at fange fejl under programafviklingen. Ikke programmeringsfejl, men fejl der opstår i forskellige situationer, f.eks. en fil der mangler en fil der er skrivebeskyttet,

Læs mere

Spring Schema Extension eller Spring Domain Specific Languages

Spring Schema Extension eller Spring Domain Specific Languages Spring Schema Extension eller Spring Domain Specific Languages Forfatter: Jeppe Cramon Cramon Consulting (http://www.cramon.dk) Dato: 23/7-2005 Efter at have arbejdet med Spring i lang tid, har jeg lagt

Læs mere

Java Klasse nedarvninger

Java Klasse nedarvninger Denne guide er oprindeligt udgivet på Eksperten.dk Java Klasse nedarvninger Et let lille overblik i hvordan klasse nedarvning virker i java Skrevet den 07. dec 2011 af mochners I kategorien Programmering

Læs mere

Modern Concurrency Abstractions for C#

Modern Concurrency Abstractions for C# Modern Concurrency Abstractions for C# Nick Benton Luca Cardelli Cédric Fournet Presenter: Henrik Kragh-Hansen September 27, 2007 Motivation for concurrency Forbedring af concurrency Baggrundsinformation

Læs mere

ODIN-webservice ændringer release 2010 v2.0

ODIN-webservice ændringer release 2010 v2.0 DOKUMENTATION OG VEJLEDNING ODIN-webservice ændringer release 2010 v2.0 Indholdsfortegnelse 1. Nye webservice metoder... 2 1.1 Anvendelse af køretøjer og personel fra fremmede beredskaber ifm. indberetning

Læs mere

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater Design by Contract Bertrand Meyer 1986 Design and Programming by Contract Michael R. Hansen & Anne Haxthausen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design

Læs mere

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater Design by Contract Design and Programming by Contract Anne Haxthausen ah@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design by Contract er en teknik til at specificere

Læs mere

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004 Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),

Læs mere

Python 3 kursus lektion 1:

Python 3 kursus lektion 1: Python 3 kursus lektion 1: Her laves et nyt program Her køre programmet! Her skrives koden: Gem (CTRL-s) Tryk F5 (for at køre) www.madsmatik.dk d.14-01-2016 1/5 At skrive til skærmen: Hello World Man kan

Læs mere

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API. Denne guide er oprindeligt udgivet på Eksperten.dk Brug af MySQL i C++ Denne artikel bygger ovenpå artiklen "MySQL C API" og forklarer hvordan man kan programmere mere objekt orienteret. Den forudsætter

Læs mere

Register-databasen med.net

Register-databasen med.net Denne guide er oprindeligt udgivet på Eksperten.dk Register-databasen med.net Mange programmer gemmer deres konfiguration-data i register-database. Denne artikel viser hvordan du - f.eks. vha. C# - henter

Læs mere

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET.

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET. Denne guide er oprindeligt udgivet på Eksperten.dk Parameters Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET. Der findes en tilsvarende artikel med

Læs mere

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende Changes for Rottedatabasen Web Service The coming version of Rottedatabasen Web Service will have several changes some of them breaking for the exposed methods. These changes and the business logic behind

Læs mere

Lektion 4. Grundlæggende programmering i VR

Lektion 4. Grundlæggende programmering i VR Lektion 4 Grundlæggende programmering i VR Plan for i dag Simpelt FPS C# og objekt orienteret programmering Metoder Loops / løkker Random Vi koder 3D uden modeller Simpelt FPS Træk kuglen fra hierarkiet

Læs mere

Webserverprogrammering

Webserverprogrammering Webserverprogrammering WSP fortsat - dag 11 Behandling af XML (StAX) Syndikering og RSS med XML JAXB - XML Java-objekter Projekthjælp Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Læs mere

Introduktion til AOP i C#

Introduktion til AOP i C# Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til AOP i C# Denne artikel giver en introduktion AOP (Aspect Oriented Programming) i C#. Den forudsætter et pænt kendskab til programmering,

Læs mere

LØKKER METODER C S HISTORIE. Grundlæggende programmering Lektion 4

LØKKER METODER C S HISTORIE. Grundlæggende programmering Lektion 4 LØKKER METODER C S HISTORIE Grundlæggende programmering Lektion 4 1 LEKTIER UML struktur diagrammer om biler 2 OPERATORER Syntaks til at udføre forskellige beregninger og handlinger Booleans og hvorfor

Læs mere

Det er muligt at chekce følgende opg. i CodeJudge: og

Det er muligt at chekce følgende opg. i CodeJudge: og Det er muligt at chekce følgende opg. i CodeJudge:.1.7 og.1.14 Exercise 1: Skriv en forløkke, som producerer følgende output: 1 4 9 16 5 36 Bonusopgave: Modificer dit program, så det ikke benytter multiplikation.

Læs mere

Programmering I Java/C#

Programmering I Java/C# Programmering I Java/C# Dit første projekt Datatekniker Intro to C# C# (C Sharp) Et enkelt, moderne, generelt anvendeligt, objektorienteret programmeringssprog Udviklet af Microsoft, ledet af danskeren

Læs mere

Test med JUnit 3. Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det.

Test med JUnit 3. Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det. Denne guide er oprindeligt udgivet på Eksperten.dk Test med JUnit 3 Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det. Den forudsætter kendskab

Læs mere

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Denne guide er oprindeligt udgivet på Eksperten.dk Threads i Java Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Den forudsætter

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1. Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:

Læs mere

Introduktion til ActionScript, fortsat

Introduktion til ActionScript, fortsat Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling

Læs mere

A Profile for Safety Critical Java

A Profile for Safety Critical Java A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren

Læs mere

CHAPTER 8: USING OBJECTS

CHAPTER 8: USING OBJECTS Ruby: Philosophy & Implementation CHAPTER 8: USING OBJECTS Introduction to Computer Science Using Ruby Ruby is the latest in the family of Object Oriented Programming Languages As such, its designer studied

Læs mere

Objektorienteret Programmering

Objektorienteret Programmering Objektorienteret Programmering Struktureret Systemudvikling Jan Bendtsen Automation and Control Indhold Lidt om programmeringssprog Klasser i Java Klasser i C++ Oversættelse og kørsel af kode Et eksempel:

Læs mere

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree. Programmering 1999 Forelæsning 11, tirsdag 5. oktober 1999 Oversigt Klasse-hierarkier: superklasser og subklasser Nedarvning Polymorfi Programmering 1999 KVL Side 11-1 Hierarkier En klasse repræsenterer

Læs mere

C# spil (del 1) - Kom i gang med et simpelt spil

C# spil (del 1) - Kom i gang med et simpelt spil Denne guide er oprindeligt udgivet på Eksperten.dk C# spil (del 1) - Kom i gang med et simpelt spil Denne artikel starter helt fra grunden (med GDI). Den viser hvordan man undgår flimmer, og hvordan man

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2 DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld

Læs mere

Cms-uafhængighed. Cms uafhængighed. Automatiseret kodegenerering Typestærkt datalag med auto completion og compile time-fejlhåndtering.

Cms-uafhængighed. Cms uafhængighed. Automatiseret kodegenerering Typestærkt datalag med auto completion og compile time-fejlhåndtering. Dato 28.01.2012 Go Basic udviklerdokumentation Go Basic er et asp.net projekt, som skal fungere som et startsite for nye webprojekter. I nuværende form er Go Basic implementeret i Umbraco, men i virkeligheden

Læs mere

Den forudsætter kendskab til XML og VB.NET men ikke til brug af XML i VB.NET.

Den forudsætter kendskab til XML og VB.NET men ikke til brug af XML i VB.NET. Denne guide er oprindeligt udgivet på Eksperten.dk Brug af XML i VB.NET Denne artikel vil vise lidt om hvordan man kan bruge XML i VB.NET. Den forudsætter kendskab til XML og VB.NET men ikke til brug af

Læs mere

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007 JSP, Tomcat Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 10.october 2007 Hvad er JSP(Java Server Pages): Det er en teknik som er bygget ovenover Servlets teknikken, men fidusen er at det skal

Læs mere

Derfor vil jeg bygge dette eksempel på een table hvor der kan tilkyttes personer til ALLE noder og der kan tilføjes et vilkårligt antal niveauer

Derfor vil jeg bygge dette eksempel på een table hvor der kan tilkyttes personer til ALLE noder og der kan tilføjes et vilkårligt antal niveauer Denne guide er oprindeligt udgivet på Eksperten.dk TreeView i Access II Jeg vil i denne anden udgave af treeview føljetonen begynde på et mere brugbart eksempel med et TreeView. Vi laver en ny database

Læs mere

I denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal.

I denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal. Denne guide er oprindeligt udgivet på Eksperten.dk Afrund til helt tal I denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal. Skrevet den 03. Feb 2009 af tjomsen I kategorien

Læs mere

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge. Denne guide er oprindeligt udgivet på Eksperten.dk Tilfældige tal Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge. Den forudsætter

Læs mere

Kontrol-strukturer i PHP

Kontrol-strukturer i PHP Denne guide er oprindeligt udgivet på Eksperten.dk Kontrol-strukturer i PHP Denne artikel gennemgår kontrolstrukturer i PHP. 'if', 'switch', 'while' og 'for' bliver gennemgået. Den forudsætter lidt grundlæggende

Læs mere

Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation

Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation Plan 12.3. Oversigt over grundlæggende begreber Java: eksempel på applikation, programmering og oversættelse Uddybning af grundlæggende begreber Java RMI implementation Forklaring af øvelsen Hvad er et

Læs mere

Overblik. Class Loader. Java. Class Libraries. Bytecode. Verifier Java. Source (.java) Just in Time Compiler. Java

Overblik. Class Loader. Java. Class Libraries. Bytecode. Verifier Java. Source (.java) Just in Time Compiler. Java OOP1 Java intro. Klasser, objekter, interfaces, nedarvning, Association, Aggregation og Composition mvh. Try and catch exceptions. Package Intro. til jar filer. Overblik Compile-time Environment Run-time

Læs mere

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4 dintprog Manual Revision: 1241 August 24, 2010 Indhold I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4 3 Grundbegreber om modellering 4 III Sprogkonstruktioner 5 4 Klasser

Læs mere

Virkefeltsregler i Java

Virkefeltsregler i Java Virkefeltsregler i Java int i; int k; Sequence s; int j; What s in a name? Brian spillede blændende i søndags! Skolen ligger i Viby Ring til Kirsten og sig at... Et navn fortolkes i en kontekst og konteksten

Læs mere

Skrevet den 18. Feb 2010 af arne_v I kategorien Programmering / Visual Basic.NET

Skrevet den 18. Feb 2010 af arne_v I kategorien Programmering / Visual Basic.NET Denne guide er oprindeligt udgivet på Eksperten.dk Parameters Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til VB.NET og ADO.NET. Der findes en tilsvarende artikel

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

Læs mere

Tree klassen fra sidste forelæsning

Tree klassen fra sidste forelæsning Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years

Læs mere

Ivan Overgaard 11/29/2012

Ivan Overgaard 11/29/2012 NSI Seal.Net Version 2.0 Ivan Overgaard 11/29/2012 Revisionshistorik: Version Dato Ændring Ansvarlig 0.8 29-11-2012 Oprettet IO 1.0 04-04-2013 redigeret IO Seal.Net Page 2 of 23 Version 2.0-29. november

Læs mere

Delphi - CrackMe og Keygen

Delphi - CrackMe og Keygen Denne guide er oprindeligt udgivet på Eksperten.dk Delphi - CrackMe og Keygen Dette er min første artikel! :) Men jeg synes nu den er blevet meget god! :D Jeg giver et et eksempel på hvordan man kan lave

Læs mere

.NET Component Overview

.NET Component Overview .NET Component Overview Martin Søgaard og Erik K. Aarslew-Jensen 10. april 2005 1 Indhold 1 Indledning 3 2.NET Framework Overview 4 2.1 Common Language Runtime (CLR)................ 4 2.1.1 Common Language

Læs mere

Bemærk, der er tale om ældre versioner af softwaren, men fremgangsmåden er uændret.

Bemærk, der er tale om ældre versioner af softwaren, men fremgangsmåden er uændret. Check dine svar på: https://dtu.codejudge.net/02101-e18/ Exercise 1: Installer Eclipse og Java. Dette kan f.eks. gøres ved at følge instuktionerne i dokumentet eclipse intro.pdf som ligger under Fildeling

Læs mere

XML parsning i Java. Denne artikel beskriver hvordan man parser XML i Java. Den beskriver W3C DOM, SAX og JDOM.

XML parsning i Java. Denne artikel beskriver hvordan man parser XML i Java. Den beskriver W3C DOM, SAX og JDOM. Denne guide er oprindeligt udgivet på Eksperten.dk XML parsning i Java Denne artikel beskriver hvordan man parser XML i Java. Den beskriver W3C DOM, SAX og JDOM. Den forudsætter kendskab til Java og XML.

Læs mere

Test af It-komponent

Test af It-komponent Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side

Læs mere