Introduktion til AOP i C#

Størrelse: px
Starte visningen fra side:

Download "Introduktion til AOP i C#"

Transkript

1 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, OOP og C#. Skrevet den 03. Feb 2009 af arne_v I kategorien Programmering / C# Historie: V1.0-03/08/ original Introduktion Denne artikel vil give en kort beskrivelse af AOP (Aspect Oriented Programming), hvor nogle af nøgle begreberne beskrives, og komme med nogle simple eksempler. AOP er et svært emne. Jeg vil anlægge en praktisk orienteret synsvinkel fordi: - ellers bliver det for tungt - jeg er ikke selv nogen ørn til teorien Hvad er AOP Som så mange andre koncepter er AOP opfunder på Xerox PARC. AOP erstatter ikke OOP men supplerer OOP. Man kan også sige at AOP fylder nogle huller som OOP har efterladt. For 20 år siden var det almindeligt at lave OOP i C++ med massiv brug af arv - man lod ofte klasser arve løs fra alle mulige klasser. Det gør man ikke længere idag. Java og C# tillader kun implementation arv fra en enkelt klasse. Og ofte anbefaler man composition over extension (arv). Kort sagt skal en klasse kun arve fra en anden hvis der er en ægte "is a" sammenhæng i den virkelighed man modellerer. Det er noget skidt at arve fra en klasse bare for at genbruge noget kode fra den. Det er overordnet set en sund ændring. Men erfaringen viser også at der er en noget funktionalitet af mere teknisk art som man gerne vil have ud i alle sine klasser. Man kan naturligvis putte koden i alle klasserne, men

2 det ville jo være smart hvis man kunne nøjes med at have koden engang. AOP løser denne opgave! Nøgle begreberne i AOP er: concern = funktionalitet cross-cutting concern = funktionalitet på tværs af klasser point-cut = sted i koden hvor man gerne vil have udført noget kode (advice) advice = den kode som man gerne vil have udført forskellige steder (point-cuts) aspect = point-cut + advice AOP drejer sig altså om at identificere noget funktionalitet som skal være i mange forskellige klasser (cross-cutting concerns) og definere nogle steder i koden (point-cuts) hvor man gerne vil have udført noget kode (advices) og AOP kode består af aspects i stedet for classes. Ved at flytte de cross-cutting concerns ud af alle classes og over i specielle aspects får man en pænere og mere vel strukturet kode. Traditionelle cross-cutting concerns er: * logging * exception handling * transactions * security * caching AOP i.net Der er flere forskellige AOP frameworks til.net. Men intet fra Microsoft (jeg betragter ikke ContextBoundObject som værende en brugbar løsning) og ingen som er specielt meget udbredte. AOP har aldrig rigtigt slået an i.net verdenen og AOP er noget mere udbredt i Java verdenen. Det er der ikke nogen teknisk begrundelse for. Jeg vil vise AOP med 2 forskellige AOP frameworks for.net: - AspectDNG - PostSharp Jeg kan personligt godt lide AspectDNG fordi det minder meget om AspectJ som jeg kender fra Java. Men der er andre som foretrækker PostSharp. AspectDNG kan hentes herfra:

3 PostSharp kan hentes herfra: Eksempel Jeg vil bruge følgende meget trivielle kode til at illustrere AOP. IntMath.cs: public class IntMath public static int Add(int a, int b) return (a + b); public static int Subtract(int a, int b) return (a - b); public static int Multiply(int a, int b) return (a * b); public static int Divide(int a, int b) return (a / b); DoubleMath.cs: public class DoubleMath public static double Add(double a, double b) return (a + b); public static double Subtract(double a, double b) return (a - b); public static double Multiply(double a, double b) return (a * b); public static double Divide(double a, double b) return (a / b);

4 Test.cs: public class Test public static void Main(string[] args) Console.WriteLine("2+3=" + IntMath.Add(2, 3)); Console.WriteLine("2.0*3.0=" + DoubleMath.Multiply(2.0, 3.0)); Console.WriteLine("10/0=" + IntMath.Divide(10, 0)); Og kørsel uden brug af AOP ser ud som: C:\e\aop_cs\aspectdng>csc Test.cs IntMath.cs DoubleMath.cs Microsoft (R) Visual C# 2005 Compiler version for Microsoft (R) Windows (R) 2005 Framework version Copyright (C) Microsoft Corporation All rights reserved. C:\e\aop_cs\aspectdng>Test 2+3=5 2.0*3.0=6 Unhandled Exception: System.DivideByZeroException: Attempted to divide by zero. at Test.Main(String[] args) Ikke noget overraskende i dette. Jeg starter med AspectDNG. Tracing Nu vil vi prøve at trace kaldene i koden. Trace.cs: using DotNetGuru.AspectDNG.Joinpoints; public class Trace [AroundCall("* IntMath::*(*)")] [AroundCall("* DoubleMath::*(*)")] public static object MathTrace(MethodJoinPoint mjp)

5 Console.WriteLine("Before " + mjp); object result = mjp.proceed(); Console.WriteLine("After " + mjp); return result; Kørsel: C:\e\aop_cs\aspectdng>csc /r:aspectdng.exe /out:test.exe Test.cs IntMath.cs DoubleMath.cs Trace.cs Microsoft (R) Visual C# 2005 Compiler version for Microsoft (R) Windows (R) 2005 Framework version Copyright (C) Microsoft Corporation All rights reserved. C:\e\aop_cs\aspectdng>aspectdng.exe Test.exe C:\e\aop_cs\aspectdng>Test Before?static method IntMath::Add(2,3) After?static method IntMath::Add(2,3) 2+3=?5 Before?static method DoubleMath::Multiply(2,3) After?static method DoubleMath::Multiply(2,3) 2.0*3.0=?6 Before?static method IntMath::Divide(10,0) Unhandled Exception: System.DivideByZeroException: Attempted to divide by zero. at DotNetGuru.AspectDNG.Joinpoints.JoinPoint.Proceed() at Test.Divide_AspectDNG_Call_2(Int32, Int32 ) at Test.Main(String[] args) Lad os hoppe tilbage til AspectDNG syntaxen og forklare hvad der sker: AroundCall = poincut around method call * IntMath::*(*) = any return type class IntMath any method any number of parameters * DoubleMath::*(*) = any return type class DoubleMath any method any number of parameters Exception handling Nu vil vi prøve at fange exceptions.

6 Error.cs: using DotNetGuru.AspectDNG.Joinpoints; public class Error [AroundCall("* IntMath::*(*)")] [AroundCall("* DoubleMath::*(*)")] public static object MathError(MethodJoinPoint mjp) try return mjp.proceed(); catch(exception e) Console.WriteLine("Exception in math calculation ---- " + e.message); throw e; Kørsel: C:\e\aop_cs\aspectdng>csc /r:aspectdng.exe /out:test.exe Test.cs IntMath.cs DoubleMath.cs Error.cs Microsoft (R) Visual C# 2005 Compiler version for Microsoft (R) Windows (R) 2005 Framework version Copyright (C) Microsoft Corporation All rights reserved. C:\e\aop_cs\aspectdng>aspectdng.exe Test.exe C:\e\aop_cs\aspectdng>Test 2+3=?5 2.0*3.0=?6 Exception in math calculation ----?Attempted to divide by zero. Unhandled Exception: System.DivideByZeroException: Attempted to divide by zero. at DotNetGuru.AspectDNG.Joinpoints.JoinPoint.Proceed() at Test.Divide_AspectDNG_Call_2(Int32, Int32 ) at Test.Main(String[] args) Special checking Nu vil vi prøve at se den kommende exception inden den sker. Det kræver at vi checker argumenter i kaldene.

7 Check.cs: using DotNetGuru.AspectDNG.Joinpoints; public class Check [AroundCall("* *::Divide(*)")] public static object MathCheck(MethodJoinPoint mjp) object o = mjp[1]; if(o is int) if((int)o == 0) Console.WriteLine("About to divide by zero"); if(o is double) if((double)o == 0) Console.WriteLine("About to divide by zero"); return mjp.proceed(); Kørsel: C:\e\aop_cs\aspectdng>csc /r:aspectdng.exe /out:test.exe Test.cs IntMath.cs DoubleMath.cs Check.cs Microsoft (R) Visual C# 2005 Compiler version for Microsoft (R) Windows (R) 2005 Framework version Copyright (C) Microsoft Corporation All rights reserved. C:\e\aop_cs\aspectdng>aspectdng.exe Test.exe C:\e\aop_cs\aspectdng>Test 2+3=?5 2.0*3.0=?6 About to divide by zero? Unhandled Exception: System.DivideByZeroException: Attempted to divide by zero. at DotNetGuru.AspectDNG.Joinpoints.JoinPoint.Proceed() at Test.Divide_AspectDNG_Call_1(Int32, Int32 ) at Test.Main(String[] args)

8 Det samme med PostSharp Test.cs: public class Test public static void Main(string[] args) Console.WriteLine("2+3=" + IntMath.Add(2, 3)); Console.WriteLine("2.0*3.0=" + DoubleMath.Multiply(2.0, 3.0)); Console.WriteLine("10/0=" + IntMath.Divide(10, 0)); IntMath.cs: [Trace] [Error] [Check] public class IntMath public static int Add(int a, int b) return (a + b); public static int Subtract(int a, int b) return (a - b); public static int Multiply(int a, int b) return (a * b); public static int Divide(int a, int b) return (a / b); DoubleMath.cs: [Trace] [Error] [Check] public class DoubleMath public static double Add(double a, double b)

9 return (a + b); public static double Subtract(double a, double b) return (a - b); public static double Multiply(double a, double b) return (a * b); public static double Divide(double a, double b) return (a / b); Trace.cs: using PostSharp.Laos; [Serializable] public class Trace : OnMethodBoundaryAspect public override void OnEntry(MethodExecutionEventArgs ctx) Console.WriteLine("Before " + ctx.method); public override void OnExit(MethodExecutionEventArgs ctx) Console.WriteLine("After " + ctx.method); Error.cs: using PostSharp.Laos; [Serializable] public class Error : OnMethodBoundaryAspect public override void OnException(MethodExecutionEventArgs ctx) Console.WriteLine("Exception in math calculation ---- " + ctx.exception);

10 Check.cs: using PostSharp.Laos; [Serializable] public class Check : OnMethodBoundaryAspect public override void OnEntry(MethodExecutionEventArgs ctx) object o = ctx.getreadonlyargumentarray()[1]; if(o is int) if((int)o == 0) Console.WriteLine("About to divide by zero"); if(o is double) if((double)o == 0) Console.WriteLine("About to divide by zero"); Kørsel: C:\e\aop_cs\postsharp>csc /r:postsharp.laos.dll /r:postsharp.public.dll Test.cs IntMath.cs DoubleMath.cs Trace.cs Error.cs Check.cs Microsoft (R) Visual C# 2005 Compiler version for Microsoft (R) Windows (R) 2005 Framework version Copyright (C) Microsoft Corporation All rights reserved. C:\e\aop_cs\postsharp>PostSharp.exe Default.psproj /p:searchpath=. /p:output=testps.exe /p:intermediatedirectory=. /p:cleanintermediate=true /p:signassembly=false /p:privatekeylocation=. Test.exe PostSharp 1.0 [ ] - Copyright (c) Gael Fraiteur, info PS0035: c:\windows\microsoft.net\framework\v \ilasm.exe "C:\e\aop_cs\postsharp\Test.il" /QUIET /EXE "/RESOURCE=C:\e\aop_cs\postsharp\Test.res"

11 "/OUTPUT=C:\e\aop_cs\postsharp\TestPS.exe" /SUBSYSTEM=3 /FLAGS=1 /BASE= /STACK= /ALIGNMENT=512 /MDV=v C:\e\aop_cs\postsharp>TestPS Before Int32 Add(Int32, Int32) After Int32 Add(Int32, Int32) 2+3=5 Before Double Multiply(Double, Double) After Double Multiply(Double, Double) 2.0*3.0=6 Before Int32 Divide(Int32, Int32) About to divide by zero Exception in math calculation ---- System.DivideByZeroException: Attempted to divide by zero. at IntMath.Divide(Int32 a, Int32 b) Unhandled Exception: System.DivideByZeroException: Attempted to divide by zero. at IntMath.Divide(Int32 a, Int32 b) at Test.Main(String[] args) After Int32 Divide(Int32, Int32) Vi ser at PostSharp er lidt anderledes. Advice fungerer stort set på samme måde som i AspectDNG. Men point-cuts defineres ikke sammen med advice men derimod i koden som det gælder for. I eksemplet har jeg brugt alle 3 aspect's samtidigt, da jeg ellers skulle vise 3 versioner af IntMath og DoubleMath. Jeg foretrækker klart AspectDNG's måde over PostSharps måde fordi: 1) jeg foretrækker at have hele aspect'et samlet 2) jeg foretrækker at koden der skal modificeres ikke skal ændres (hvis aspect er permanente, så er er det lige meget, men hvis apsect kun skal bruges til debug eller performance måling, så betyder det noget) Endvidere kunne jeg ikke få PostSharp OnMethodInvocationAspect til at virke som dokumenteret. Og jeg er ikke den eneste - se: de_3a00_-part-b.aspx lige før "Conclusion". Jeg vil derfor klart anbefale AspectDNG over PostSharp. Duer det? Efter min bedste overbevisning er AOP et yderst kraftfuldt værktøj til moderne software udvikling.

12 Min træerne vokser naturligvis ikke ind i himlen. AOP er et meget vanskeligt koncept at mestre. Generelt vil jeg kun anbefale det til erfarne udviklere som kan gennemskue hvad de laver. AOP giver også kun benefits ved store projekter. Jeg konkluderer derfor at: - frameworks kan og bør bruge AOP - business applications bør i de fleste tilfælde undlade at bruge AOP og i stedet for bruge nogle frameworks som bruger AOP Kommentar af thesurfer d. 08. Oct Enten har jeg fuldstændigt overset pointen med denne artikel, eller også er der bare ikke noget i den. Et lige så godt (og simpler) alternativ er Try/Catch. Kommentar af krukken d. 10. Oct Rigtig god introduktion til Aspekter. Kommentar af goblinhero (nedlagt brugerprofil) d. 12. Oct Ok intro-artikel - måske ville det være en god ide, at forklare formålet med AOP lidt mere i dybden. I det korte eksempel får man ikke rigtig set styrken ved AOP - og jeg er ikke enig i konklusionen - AOP giver mulighed for at 'slippe' for at have en masse boiler-plate kode i sine klassser, som minimerer muligheden for at lave slåfejl i logging/exception-kodeblokke, som kan være svære at spore. Og bare moderat store business applications har man masser af cross-cutting concerns i form af security, errorhandling og logging, hvor AOP giver rigtig meget mening. Kommentar af frosty-dk d. 27. Aug Dog er jeg ikke særlig erfaren koder men har stiftet bekendskab til OOP, selvom jeg nok ikke har gennemskuet hele konceptet synes jeg det var en rigtig god forklaret artikel, og jeg har da fået noget ud af den. Så er man interesseret i OOP ville jeg mene den er værd at læse!

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 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

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

//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

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

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

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

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

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

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

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

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

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

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

Bits, bit operationer, integers og floating point

Bits, bit operationer, integers og floating point Denne guide er oprindeligt udgivet på Eksperten.dk Bits, bit operationer, integers og floating point Denne artikel beskriver hvordan data gemmes som bits og hvordan man kan manipulere med bits. Den forudsætter

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

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

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

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

Logging i Java. Den forudsætter kendskab til Java og noget generel udviklings erfaring. Denne guide er oprindeligt udgivet på Eksperten.

Logging i Java. Den forudsætter kendskab til Java og noget generel udviklings erfaring. Denne guide er oprindeligt udgivet på Eksperten. Denne guide er oprindeligt udgivet på Eksperten.dk Logging i Java Denne artikel beskriver baggrunden for logging frameworks og viser hvordan man bruger 2 af de mest almindelige: Apache Log4J og J2SE/Java

Læs mere

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC. Denne guide er oprindeligt udgivet på Eksperten.dk Prepared Statements Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC. Skrevet den 18. Feb 2010

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

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

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

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

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

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

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

I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.

I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen. Denne guide er oprindeligt udgivet på Eksperten.dk Grundlæggende PHP I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.

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

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

Database programmerings tips

Database programmerings tips Denne guide er oprindeligt udgivet på Eksperten.dk Database programmerings tips Denne artikel vil introducere nogle problem stillinger med flere samtidige brugere, som man skal tænke på, når man udvikler

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

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

Java web applikationer med Tomcat

Java web applikationer med Tomcat Denne guide er oprindeligt udgivet på Eksperten.dk Java web applikationer med Tomcat Denne artikel beskriver hvordan man kan konfigurere container managed security og en database connection pool i Tomcat.

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

Arrays i PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 04. Feb 2009 af taskmgr I kategorien Programmering / PHP

Arrays i PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 04. Feb 2009 af taskmgr I kategorien Programmering / PHP Denne guide er oprindeligt udgivet på Eksperten.dk Arrays i PHP De fleste som har skrevet omfattende scripts, er før eller siden stødt på problemet med at de bliver vanskelige at overskue hvis man bruger

Læs mere

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere. Denne guide er oprindeligt udgivet på Eksperten.dk MySQL C API Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere. Den forudsætter lidt kendskab

Læs mere

Introduktion til SQL queries

Introduktion til SQL queries Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til SQL queries Denne artikel beskriver nogle forskellige muligheder i SQL queries. Eksemplerne skulle gerne være standard SQL og virke i

Læs mere

Forskellige Java versioner

Forskellige Java versioner Denne guide er oprindeligt udgivet på Eksperten.dk Forskellige Java versioner Denne artikel beskriver lidt om de forskellige Java versioner. Den forklarer J2SE/J2ME/J2EE, plugin/jre/sdk og Sun Java/Microsoft

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

Database design for begyndere

Database design for begyndere Denne guide er oprindeligt udgivet på Eksperten.dk Database design for begyndere Denne artikel beskriver hvordan man kommer fra ide til database design. Den stopper inden normal former. Den forudsætter

Læs mere

IT projekt person galleri

IT projekt person galleri Denne guide er oprindeligt udgivet på Eksperten.dk IT projekt person galleri Denne artikel forsøger at forklare lidt om hvilke funktioner der ligger bag ved de forskellige titler som deltagerne i et IT

Læs mere

Hvorfor skal vi bruge objekt orienteret databaser?

Hvorfor skal vi bruge objekt orienteret databaser? OODBMS Vs. RDBMS 1 Indholdsfortegnelse Hvorfor skal vi bruge objekt orienteret databaser?... 3 OODBMS i erhvervslivet... 4 Bagsiden af medaljen... 5 OODBMS i praksis... 6 Konklusion... 8 2 Hvorfor skal

Læs mere

Hvilket sprog skal jeg lære?

Hvilket sprog skal jeg lære? Denne guide er oprindeligt udgivet på Eksperten.dk Hvilket sprog skal jeg lære? Denne artikel snakker lidt løst og fast om den kendte problem stilling med hvilket sprog man skal lære (generelle programmerings

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

Endnu mere om tilfældige tal

Endnu mere om tilfældige tal Denne guide er oprindeligt udgivet på Eksperten.dk Endnu mere om tilfældige tal Denne artikel bygger oven på de to forrige artikler om tilfældige tal. Den indeholder lidt matematik og anvendelse på PHP

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

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen Studiepraktik Thomas Bøgholm boegholm@cs.aau.dk Mikkel Hansen mhan@cs.aau.dk Jacob Elefsen jelefs12@student.aau.dk 1 Studiepraktik -- program Program onsdag 10.00 10.15 Registrering af fremmøde og gennemgang

Læs mere

Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS.

Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS. Denne guide er oprindeligt udgivet på Eksperten.dk XML i ASP Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS. 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

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

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

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger

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

Arkitektur for begyndere

Arkitektur for begyndere Denne guide er oprindeligt udgivet på Eksperten.dk Arkitektur for begyndere Denne artikel beskriver forskellige basale n-tier arkitekturer. Som man bør kende og have valgt inden man går igang med at udvikle

Læs mere

Introduktion til NAnt

Introduktion til NAnt Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til NAnt Denne artikel beskriver NAnt, som er et værktøj til at builde.net applikationer med. Den beskriver nogle af de mest brugte NAnt

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

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

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

Database tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk

Database tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk Denne guide er oprindeligt udgivet på Eksperten.dk Database tips Denne artikel vil give nogle forskellige små praktiske råd om ting man skal tænke på når man arbejder med databaser og applikationer som

Læs mere

applikation----x----odbc driver manager----foobar ODBC driver----foobar database

applikation----x----odbc driver manager----foobar ODBC driver----foobar database Denne guide er oprindeligt udgivet på Eksperten.dk ODBC i C/C++ Denne artikel beskriver hvordan man bruger ODBC i C/C++. Der er beskrivelse af build med forskellige compilere. Den forudsætter lidt kendskab

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

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

Sikker kode? Gennemgang af mest almindelige hacker angreb

Sikker kode? Gennemgang af mest almindelige hacker angreb Sikker kode? Gennemgang af mest almindelige hacker angreb Developer & Platform Strategy Microsoft http://blogs.msdn.com/henrikwh henrikwh@microsoft.com Agenda Sikkerhed i medierne Trusselssenarier Mest

Læs mere

At klippe en streng over på det mest hensigtsmæssige sted

At klippe en streng over på det mest hensigtsmæssige sted Denne guide er oprindeligt udgivet på Eksperten.dk At klippe en streng over på det mest hensigtsmæssige sted Formålet med denne artikel er at kaste lidt lys over, hvordan man klipper en streng over på

Læs mere

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ DM502 Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ 1 DM502 Bog, ugesedler og noter De første øvelser Let for nogen, svært for andre Kom til øvelserne! Lav opgaverne!

Læs mere

Delphi og Databaser for begyndere

Delphi og Databaser for begyndere Denne guide er oprindeligt udgivet på Eksperten.dk Delphi og Databaser for begyndere Denne artikel handler om hvordan man udnytter noget af det bedste i Delphi: Dets gode muligheder for integrering med

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

02101 Indledende Programmering Introduktion til Eclipse

02101 Indledende Programmering Introduktion til Eclipse 02101 Indledende Programmering Introduktion til Eclipse Version 2018 1 Introduktion I dette kursus lægger vi op til at man bruger det integrerede udviklingsmiljø Eclipse. Basalt set er et integreret udviklingsmiljø

Læs mere

CodeDOM - Dynamisk generering og kompilering af kode

CodeDOM - Dynamisk generering og kompilering af kode 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

Læs mere

Hvilket sprog skal jeg lære?

Hvilket sprog skal jeg lære? Denne guide er oprindeligt udgivet på Eksperten.dk Hvilket sprog skal jeg lære? Denne artikel snakker lidt løst og fast om den kendte problem stilling med hvilket sprog man skal lære (generelle programmerings

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

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

Nye Java XML API'er

Nye Java XML API'er Denne guide er oprindeligt udgivet på Eksperten.dk Nye Java XML API'er Denne artikel beskriver nye XML features i Java 1.6 - StAX og JAXB, samt XStreams. Den forudsætter kendskab til Java og brug

Læs mere

Offset til terminalskærm i Java

Offset til terminalskærm i Java Denne guide er oprindeligt udgivet på Eksperten.dk Offset til terminalskærm i Java Ikke en atikkel - men en Classe til java der gør det nemt at skrive ud på avancerede måder når man kun opererer i dosvindue.

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

Sådan skriver du artikler til Eksperten!

Sådan skriver du artikler til Eksperten! Denne guide er oprindeligt udgivet på Eksperten.dk Sådan skriver du artikler til Eksperten! Når du skriver artikler handler det om at få den ud til de rigtige personer, og vise den frem så den er let forståelig.

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

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

Common Language Runtime. Multithreading

Common Language Runtime. Multithreading Common Language Runtime Multithreading Multithreading i.net Dedicated threads Programmøren kontrollerer starttidspunkt, levetid m.m. for den enkelte thread. Pooled threads Threads lånes fra en pulje af

Læs mere

Lær Python - Dag 4, modul 1 Objektorienteret programmering

Lær Python - Dag 4, modul 1 Objektorienteret programmering Lær Python - Dag 4, modul 1 Objektorienteret programmering Simon J. Larsen 28. oktober 2017 Institut for Matematik og Datalogi Objektorienteret programmering Hvad er objektorienteret programmering? Vi

Læs mere

Kursus navn: Indledende programmering Kursus nr. 02101

Kursus navn: Indledende programmering Kursus nr. 02101 Danmarks Tekniske Universitet Side 1 af 8 sider Skriftlig prøve, den 15. december 2007 Kursus navn: Indledende programmering Kursus nr. 02101 Tilladte hjælpemidler: Alle skriftlige hjælpemidler Vægtning

Læs mere

Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 - forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)

Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 - forstå datastrukturer og algoritmer (teoretisk forståelse og intuition) Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 Datastrukturer og algoritmer Henning Christiansen henning@ruc.dk http://www.ruc.dk/~henning Formål: at kunne - forstå datastrukturer og algoritmer

Læs mere

Introduktion til ant. Denne artikel beskriver Apache ant, som er et værktøj til at builde Java applikationer med.

Introduktion til ant. Denne artikel beskriver Apache ant, som er et værktøj til at builde Java applikationer med. Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til ant Denne artikel beskriver Apache ant, som er et værktøj til at builde Java applikationer med. Den beskriver nogle af de mest brugte

Læs mere

Programmering 2. dprog2 E2013. http://www.cs.au.dk/dprog2/

Programmering 2. dprog2 E2013. http://www.cs.au.dk/dprog2/ Programmering 2 dprog2 E2013 http://www.cs.au.dk/dprog2/ Læringsmål Deltagerne skal ved afslutningen af kurset kunne: forklare og anvende både basale og videregående elementer af et moderne programmeringssprog,

Læs mere

Med register_globals = On får du automatisk adgang til en række variabelnavne i dit script.

Med register_globals = On får du automatisk adgang til en række variabelnavne i dit script. Denne guide er oprindeligt udgivet på Eksperten.dk Register Globals Off Lad os slå en ting fast med det samme - register_globals = Off er en god ting, i hvert fald set ud fra et sikkerhedsmæssigt synspunkt.

Læs mere

BRP 6.9.2006 Kursusintroduktion og Java-oversigt

BRP 6.9.2006 Kursusintroduktion og Java-oversigt BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang Kursusintroduktion:

Læs mere

Software 1 with Java. Recitation No. 7 (Servlets, Inheritance)

Software 1 with Java. Recitation No. 7 (Servlets, Inheritance) Software 1 with Java Recitation No. 7 (Servlets, Inheritance) Servlets Java modules that run on a Web server to answer client requests For example: Processing data submitted by a browser Providing dynamic

Læs mere

Specifikationsdokument for PDF Validator API

Specifikationsdokument for PDF Validator API Nets DanID A/S Lautrupbjerg 10 DK 2750 Ballerup T +45 87 42 45 00 F +45 70 20 66 29 info@danid.dk www.nets-danid.dk CVR-nr. 30808460 Specifikationsdokument for PDF Validator API DanID A/S 17. august 2012

Læs mere

Programmering 2. dprog2 E2012. http://www.cs.au.dk/dprog2/

Programmering 2. dprog2 E2012. http://www.cs.au.dk/dprog2/ Programmering 2 dprog2 E2012 http://www.cs.au.dk/dprog2/ Læringsmål Deltagerne skal ved afslutningen af kurset kunne: forklare og anvende både basale og videregående elementer af et moderne programmeringssprog,

Læs mere

Introduktion til funktioner, moduler og scopes i Python

Introduktion til funktioner, moduler og scopes i Python Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til funktioner, moduler og scopes i Python Denne artikel er fortsættelsen af "I gang med Python", som blevet publiceret her på sitet for

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

Introduktion til Microsoft R. Steen Dybboe, Pragmatic BI MsBIP 2017 Aarhus

Introduktion til Microsoft R. Steen Dybboe, Pragmatic BI MsBIP 2017 Aarhus Introduktion til Microsoft R Steen Dybboe, Pragmatic BI MsBIP 2017 Aarhus Agenda Introduktion til R Data Scientists Microsoft R implementering R + SQL SQL + R Hvem er jeg Steen Dybboe Selvstændig konsulent

Læs mere

Nye features i Java 1.7/7.0

Nye features i Java 1.7/7.0 Denne guide er oprindeligt udgivet på Eksperten.dk Nye features i Java 1.7/7.0 Denne artikel beskriver nye features i Java 1.7/7.0, som blev releaset 28. juli 2011. Den forudsætter et vist kendskab til

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

CVS som KS-værktøj E3-104. Branching, Merging m.v.

CVS som KS-værktøj E3-104. Branching, Merging m.v. CVS som KS-værktøj E3-104 Branching, Merging m.v. Gennemgang af Oprettelse af CVS-træ Tilføj filer Commit Fil forskelle Merging Branching Ekstra værktøjer Avanceret Oprettelse af CVS-træ report graphics

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 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

Real-time programming safety in Java and Ada

Real-time programming safety in Java and Ada Real-time programming safety in Java and Ada Bo Sandén Presenter: Thomas Bøgholm 25. oktober 2007 Forfatteren Artiklen Synkroniserings Begreber Bo Sandén Professor på Colorado Technical University Beskæftiger

Læs mere