Usikker kode. Windows Forms. Grundlæggende programmering Lektion 7

Størrelse: px
Starte visningen fra side:

Download "Usikker kode. Windows Forms. Grundlæggende programmering Lektion 7"

Transkript

1 Eksempel Sikker kode Opgaver Usikker kode Windows Forms Grundlæggende programmering Lektion 7

2 Eksempel Hent lesson7example.cs fra Fronter

3 Eksempel Joins er en af de essentielle database operationer, hvor man kombinerer to tabeller. Om man putter den ene tabel foran eller bagved den anden resulterer i left eller right joins.

4 Eksempel

5 Eksempel

6 Sikker kode Hvordan kan ens kode kaldes sikker

7 Sikker kode Evidensbaseret sikkerhedspolitik og kode adgang sikkerhed sørger for meget kraftige, eksplicitte mekanismer til at implementere sikkerhed. Den meste programkode kan blot bruge infrastrukturen fra.net Framework. I nogle tilfælde er yderligere applikationsspecifik sikkerhed, der kræves bygget enten ved at udvide sikkerhedssystemet eller ved hjælp af nye ad hoc-metoder, dog nødvendig. Ved brug af.net Framework-håndhæves tilladelser og andre håndhævelser i din kode, skal du opføre barrierer for at forhindre skadelig kode i at opnå oplysninger, som du ikke ønsker, at den skal have eller udfører andre uønskede handlinger. Desuden skal du finde en balance mellem sikkerhed og brugervenlighed i alle de forventede scenarier med betroet kode. De næste slides vil gennemgå forskellige måder kode kan være konstrueret til at arbejde med sikkerhedssystemet på.

8 Sikker kode Security-Neutral Code Security-neutral kode gør ikke noget eksplicit med sikkerhedssystemet. Den kører med de tilladelser den måtte modtage. Selvom applikationer, der undlader at fange sikkerhedsundtagelser forbundet med beskyttede operationer (såsom at bruge filer, netværk, og så videre) kan resultere i en ikke-afviklet undtagelse, vil sikkerheds-neutral kode stadig udnytte.net Framework sikkerhedsteknologierne.

9 Sikker kode Kode der ikke er genbrugelig Hvis din kode er en del af et program, der ikke bliver kaldt af anden kode, er sikkerhed enkel og speciel kodning er måske ikke være påkrævet. Husk dog at skadelig kode kan kalde din kode. Mens kode adgang sikkerhed kan stoppe skadelig kode i at få adgang til ressourcer, kan en sådan kode stadig læse værdier af dine fields eller egenskaber, der kan indeholde følsomme oplysninger. Desuden, hvis din kode accepterer brugerinput fra internettet eller andre upålidelige kilder, skal du være forsigtig med ondsindet input.

10 Sikker kode Biblioteks kode, der udsætter beskyttede ressourcer Dette er den mest kraftfulde og dermed potentielt farlige (hvis det gøres forkert) tilgang til sikker kodning: Dit bibliotek fungerer som en grænseflade til anden kode for at få adgang til visse ressourcer, der ellers ikke tilgængelige, ligesom klasserne af.net Framework håndhæver tilladelser for de ressourcer, de bruger. Uanset hvor du blotlægger en ressource, skal din kode først kræve hensigtsmæssig tilladelse til ressourcen (dvs., skal det foretage en sikkerhedskontrol) og derefter typisk udnytte sine rettigheder til at udføre selve operationen.

11 Usikker kode Hvordan kan ens kode kaldes usikker

12 Usikker kode Hvis du vil ud over den sikkerhed som C# i sig selv tilbyder kan man gøre det på tre måder: Platform Invoke (P/Invoke) Går gennem APIer er blotlægges af ikke-administrerede DLLer. Usikker kode Tillader adgang til memory pointers og adresser. Windows Runtime (WinRT) API Kun tilgængelig i Windows 8 eller nyere. Lader en se mere af operativsystemets funktioner.

13 Usikker kode Hvis du vil ud over den sikkerhed som C# i sig selv tilbyder kan man gøre det på tre måder: Platform Invoke (P/Invoke) Går gennem APIer er blotlægges af ikke-administrerede DLLer. Usikker kode Tillader adgang til memory pointers og adresser. Windows Runtime (WinRT) API Kun tilgængelig i Windows 8 eller nyere. Lader en se mere af operativsystemets funktioner. Ikke noget jeg vil anbefale i de fleste tilfælde, men det kan lade sig gøre.

14 Windows Forms Grafiske programmer til Windows

15 Windows Forms

16 Hvad vi har gennemgået i løbet af kurset

17 UML Hvad er UML UML er et sprog Regler for, hvordan elementer er sat sammen Regler for organisationen UML vise hvordan elementer forholder sig til hinanden Kan både anvendes i software værktøjer, på white boards og på papir Der er grundlæggende to slags diagrammer Adfærds diagrammer Krav, drift, indre tilstande Struktur diagrammer Fysisk organisation

18 UML Adfærds diagrammer Use case diagram Funktionelle krav til et system Hvad et system skal gøre Gør det muligt for den der laver modellen at fokusere på brugerens behov snarere end detaljer i produktionen Aktivitet diagram Vis strømmen fra en adfærd eller aktivitet, til den næste Med udtryksfuld end en klassisk flowchart Struktur diagrammer Klasse diagrammer Viser enheder i et system og forholdet mellem dem Kan være detaljeret og generere kildekode eller simple skitser

19 UML Adfærds diagram Use case diagrammer Grafisk oversigt over en eller flere aktørers involvering i et system.

20 UML Adfærds diagram Use case diagrammer

21 UML Adfærds diagram Aktivitets diagrammer Opdelt i opgaver af lodrette "kasser" ved siden af hinanden Afrundede rektangler = handlinger Diamanter = beslutninger Barer = splitter eller sammenføjede aktiviteter Sort cirkel = start workflow (oprindelige tilstand) Omkranset sort cirkel = ende af flow (endelige tilstand)

22 UML Adfærds diagram Aktivitets diagrammer

23 UML Struktur diagram Klasse diagrammer En klasse repræsenterer en gruppe af ting, der har fælles tilstand og adfærd En klasse er repræsenteret af en rektangulær kasse opdelt i rum Første rum indeholder navnet på klassen Det andet er attributter Det tredje er operationer Et klasse diagram bruges især til at udlægge variabler og

24 Klasse diagrammer Klasse navn UML Struktur diagram Egenskaber (+ / - / #) offentlig / privat / beskyttet :type Operationer () (+ / - / #) offentlig / privat / beskyttet :return

25 Grundlæggende begreber Indhold i et C# program Et C # program består af følgende dele: Namespace deklaration En klasse Klasse metoder Klasse attributter En Main metode Statements og Expressions Kommentarer

26 Grundlæggende begreber Indhold i et C# program Noter omkring C# C # er case sensitive. Alle statements og udtryk skal afsluttes med et semikolon (;). Udførelsen af programmet starter ved Main metoden. I modsætning til Java må programmets filnavn være forskelligt fra klasse navnet.

27 Data typer Variablerne i C# er inddelt i tre typer Værdi typer / Value types Reference typer / Reference types Markør typer / Pointer types

28 Data typer Værdi typer Value types variabler kan direkte få en værdi. De er afledt af klassen class System.ValueType. Det kan være data som int, char og float, der gemmer tal, bogstaver og komma tal respektivt. Når man deklarerer en int type allokerer systemet automatisk hukommelse til at gemme værdien

29 Data typer Reference typer En reference type indeholder ikke faktisk data gemt i en variabel men indeholder en reference til variablerne. De refererer altså til en plads i hukommelsen. Således kan flere variabler af reference typerne referere til sammes plads i hukommelsen. Hvis dataen på denne plads i hukommelsen ændres af en af variablerne vil de andre automatisk ændre indhold. Et eksempel på built-in reference typer er: object, dynamic og string.

30 Markør/pointer type variabler gemmer hukommelses adressen for en anden type. Pointers i C# har de samme muligheder som pointers i C eller C++. Data typer Markør typer Int *myvariable; Udtrykket *myvariable henviser til int variablen der findes på adressen indeholdt i myvariable. Pointers kan dog let lede til usikker kode som nævnt tidligere.

31 Operatorer Operatorer bruges til at udføre matematiske eller logiske operationer på værdier (eller variabler) kaldet operander for at producere en ny værdi, kaldet resultatet. int difference = 4 2; Her er operatoren og resultatet 2 gemmes i integer data typen difference. Operatorer er generelt inddelt i tre kategorier Unary Binary Tertiary svarende til antallet af operander (en, to, og tre henholdsvis).

32 Operatorer Unære Plus og minus unære operatorer (+, -) Hvis man har brug for at ændre en værdi fra positiv til negativ (eller omvendt) kan C# gøre det med den unære operator Den undære operator + har sjældent en effekt og er mest med for god ordens skyld.

33 Operatorer Binære Aritmetiske binære operatorer (+, -, *, /, %) I eksemplet bliver divisionen og resten operationerne gennemført før opgaverne. Den rækkefølge, som de operatorerne udføres ier bestemt af deres forrang (precedence) og associativitet (associavity). Rangen for operatørerne hidtil anvendt er_ 1. *, / og % har højeste prioritet og - har lavere prioritet. 3. = har den laveste rang af disse seks operatører. Man kan også benytte + til at sætte andet end tal sammen, f.eks. flere strenge som vi har gjort tidligere.

34 Compound Assignment Operators (+=, -=, *=, /=, %=) Compound assignment operators kombinerer standard binære operator beregninger med en assignment operator. Operatorer Binære Således giver int x = 123; x = x + 2; og int x = 123; x += 2; det samme. Der findes talrige andre compund assignment" operatører til at give lignende funktionalitet. Du kan såldes også bruge assignment operatoren sammen med subtraktion, multiplikation, division, og resten (remainder) operatører.

35 Operatorer Flow kontrol Flow kontrol Selv i simple programmer kan det være nødvendigt at styre rækkefølgen af udførelse af programmet, ikke blot fra start til slut Al C# kode I har set hidtil har haft én ting til fælles. I hvert tilfælde er programmet udført fra den ene linje til den næste fra top til bund i rækkefølge, intet mangler. Hvis alle programmer arbejdede som dette, så ville man være meget begrænset i hvad man kunne gøre. For at opnå dette benytter man forgrening og looping. Forgrening udfører kode betinget, afhængigt af resultatet af en evaluering, som "only execute this code if the variable myval is less than 10. Looping udfører gentagne gange de samme udsagn, enten et bestemt antal gange, eller indtil en test tilstand har været nået.

36 Operatorer Flow kontrol if statements Et if statement er et af de mest udbredte i C#. Det evaluerer et boolsk udtryk (Boolean expression), et udtryk der resulterer i enten sandt eller) der kaldes condition. Hvis tilstanden er sand så udføres consequence statement. Et if statement kan eventuelt have en else clause der indeholder et alternativt statement der udføres hvis condition er falsk. if (condition) consequence-statement else alternative-statement

37 Løkker Løkker En løkke er når en blok kode køres flere gange. Termen loop body henviser til et statement, typisk en kode blok, der køres i et loop indtil afslutnings-kravet er mødt. Forskellige former for løkker Man bruger while til at gentage (iterate) så længe kravet er true. En for løkke bruges mest hensigtsmæssigt, når antallet af gentagelser er kendt, såsom når der tælles fra 0 til n. En do/while ligner en while-løkke, men den vil altid udføre løkken kroppen mindst én gang.

38 Løkker While While løkker While løkken er det enkleste betingede loop. Den almindelige form af while-sætningen er: while (condition) statement Loopet kører det statement, der danner kroppen i udtrykket, rundt så længe at conditionen (der skal være boolean) er true. Hvis den bliver false dropper udførelsen af koden kroppen og går videre til koden efter loop statementet.

39 Løkker For For løkker En for-løkke gentager en kode blok indtil en bestemt betingelse er nået. I forhold til while løkken har forløkken indbygget syntaks for initialisering, forøgelse og afprøvning af værdien af en tæller, kaldet loop variablen. Fordi der er en specifik placering i loopets syntaks for en tilvækst operation, anvendes increment og decrement operatører ofte som en del af en for-løkke.

40 Løkker Do while Do while løkker Do / while-løkken er meget lig while løkken, bortset fra at do / while løkken foretrækkes, når antallet af gentagelser er fra 1 til n, og n er ikke er kendt når iterationen begynder. Dette opstår ofte når man spørger en bruger efter input.

41 En metode er en måde at samle en sekvens af statements der udfører en bestemt handling eller beregner et bestemt resultat. Dette giver større struktur og organisation for de statements, der opbygger et program. Metoder Hvert C # program har mindst en klasse med en metode kaldet Main. For at benytte en metode skal man: Definere metoden. Kalde metoden. Vi har brugt metoder hidtil, primært main() metoden, hvori hele vores programmer lå, men med mere komplekse programmer kan det være praktisk eller nødvendigt at benytte flere metoder.

42 Metoder En metodes grund struktur er <Access Specifier> <Return Type> <Method Name>(Parameter List) { Method Body } Access Specifier (scope): Bestemmer synligheden af en variabel eller en metode for andre klasser. Return type: En metode kan returnere en værdi. Hvis metoden ikke returnerer nogen værdier, så er retur typen ugyldig (void). Method name: Metode navn er et entydigt id, og det er følsomt overfor store og små bogstaver. Det kan ikke være det samme som en anden identifikator erklæret i klassen. Parameter list (parametre og argumenter): Lukket inde mellem parenteser finder man de parametre, der anvendes til at sende og modtage data fra metoden. Parameterlisten refererer til typen, rækkefølgen og antallet af parametre i metoden. Parametre er valgfri, det vil sige at en metode ikke behøves have nogen parametre. Method body: Metodens krop indeholder det sæt af instruktioner, der er nødvendige for at gennemføre den ønskede aktivitet.

43 Klasser Klasser og objekter og objekter lavet ud fra dem er hvad der gør C# til et objekt orienteret programmerings sprog. Når man definerer en klasse definere en man en plan for en datatype. Dette definerer faktisk ikke nogen data, men det definerer, hvad klasse navnet betyder. Det vil sige, hvilket objekt klassen består af og hvilke operationer der kan udføres på det pågældende objekt. Objekter er instanser af en klasse. De metoder og variabler, der udgør en klasse, kaldes medlemmer af klassen. En klasse er en skabelon for hvordan et objekt vil se ud på instantiering tidspunktet. Et objekt er derfor en instans af en klasse. Det at lave et objekt fra en klasse kaldes derfor instantiation.

44 Klasser Access modifiers Yderligere indkapsling Access modifiers identificerer niveauet for indkapsling forbundet med medlemmet (member) de hører til. De findes fem access modifiers: Public Protected Internal Protected internal Private

45 Public Hvis et member eller en type har public access modifier har det det mest eftergivende adgangsniveau. Der er ingen restriktioner på adgang til public members. Klasser Access modifiers Protected En beskyttet medlem er tilgængeligt inden for sin klasse og ved afledte klasse instanser. Internal Adgangen er begrænset til det aktuelle assembly. Internal er default hvis der ikke er angivet nogen access modifier.

46 Klasser Access modifiers Protected internal Adgangen er begrænset til det aktuelle assembly eller typer afledt af den indeholdende klasse. Private Private access er det mindst eftergivende adgangsniveau. Private medlemmer er kun tilgængelige i kroppen af klassen eller struct, hvor de er blevet erklæret.

47 Klasser Structs Structs er defineret af struct nøgleordet, for eksempel: public struct PostalAddress { // Fields, properties, methods and events go here... } Structs deler det meste af syntaks med klasser, selv om structs er mere begrænset end klasser: Inden for en struct erklæring, kan felterne ikke initialiseres, medmindre de angives som const eller static. En struct kan ikke erklære en standard-constructor (en konstruktør uden parametre) eller en destructor. Structs kopieres ved assignment. Når en struct tildeles en ny variabel bliver al data kopieret, og enhver ændring til den nye kopi ændrer ikke data for den originale kopi. Det er vigtigt at huske, når du arbejder med samlinger af værdi typer såsom Dictionary <string, mystruct>. Structs er værdi typer og klasser er referencetyper.

48 Klasser Structs I modsætning til klasser kan structs instantieres uden brug af en ny operator. Structs kan erklære konstruktører, der har parametre. En struct kan ikke arve fra en anden struct eller klasse, og den kan ikke danne basis for en klasse. Alle structs arver direkte fra System.ValueType, som arver fra System.Object. En struct kan implementere grænseflader. En struct kan bruges som en nullable type og kan tildeles en nullværdi.

49 Arv En af de vigtigste begreber i objektorienteret programmering er arv. Arv giver os mulighed for at definere en klasse i form af en anden klasse, hvilket gør det lettere at oprette og vedligeholde en applikation. Dette giver også mulighed for at genbruge kodens funktionalitet og fremskynder dermed implementeringstid. Når man opretter en klasse, i stedet for at skrive helt nye data medlemmer og medlems funktioner, kan man udpege, at den nye klasse skal arve medlemmerne fra en eksisterende klasse. Denne eksisterende klasse kaldes base klasse eller forælder, og den nye klasse betegnes som den afledte klasse eller barn. Ideen om arv implementerer IS-A relationer. F.eks er pattedyret IS- A dyr, hund IS-A pattedyr dermed er hund IS-A dyr også, og så videre.

50 Arv Polymorfisme

51 Interfaces Hvor klasser definerer hvordan noget skal udføres sørger interfaces for hvad der skal udføres. Interfaces definerer properties, methods og events, der er medlemmer af interfacet. Interfaces indeholder kun deklarationen af medlemmerne. Det er den afledte klasses ansvar at definere medlemmerne. Interfacet hjælper ofte med at give en standard struktur, som de afledte klasser vil følge. Abstrakte klasser har til en vis grad samme formål, men de bliver primært brugt når der kun skal erklæres få metoder af base-klassen og de underliggende klasser implementerer funktionerne.

52 Interfaces

53 Enums En enumeration er et sæt navngivne integer konstanter. En enumerated type declares med enum keyword. C# enumerations er en værdi data type. Enumeration indeholder altså dens egne værdier og kan ikke arve eller videresende arv. Enum declares således enum_name angiver enumeration typens navn. enumeration list er en komma-separeret liste af identifiers. Hver af symbolerne i enumeration listen står for en heltalsværdi, en større end symbolet der er angivet foran. Som standard er værdien af det første enumeration symbol 0.

54 Exception handling En undtagelse (exception) er et problem, der opstår under udførelsen af et program. I C# er en undtagelse er en reaktion på en usædvanlig hændelse, der opstår, mens et program kører, f.eks. et forsøg på at dividere med nul. Exceptions sørger for en måde at transfer kontrol fra en del af et program til en anden. C# exception handling bygger på fire keywords: try, catch, finally og throw. try: En try blok identificerer en blok af kode, for hvilken særlige undtagelser er aktiveret. Det efterfølges af en eller flere catch blokke. catch: Et program fanger en undtagelse med en exception handler det sted i programmet, hvor du ønsker at håndtere problemet. Catch keyword angiver fangst af en undtagelse. finally: Finally blokken anvendes til at udføre et givet sæt udsagn, om en undtagelse er thrown eller ikke thrown. For eksempel, hvis du åbner en fil, skal det være lukket om en undtagelse hæves eller ej. throw: Et program kaster en undtagelse, når et problem dukker op. Dette gøres ved hjælp af throw keyword.

55 Exception handling Syntaks Syntaks Hvis en blok udløser en exception fanger en metode en exception gennem en kombination af try og catch keywords. En try/catch blok placeres omkring koden, der kan generere en exception. Kode i en try/catch omtales som protected (beskyttet) kode. Du kan liste flere catch statements til at fange forskellige typer af undtagelser i tilfælde af at en blok trigger mere end en enkelt undtagelse i forskellige situationer.

56 Generics Generics gør det muligt at forsinke specifikation af datatypen for program elementer i en klasse eller en metode, indtil de faktisk bliver brugt i programmet. Med generics kan man altså skrive en klasse eller metode, der kan arbejde med alle datatyper. Man skriver specifikationerne for klassen eller den metode, med alternative parametre for datatyper. Når compileren møder en constructor for klassen eller et funktionskald for metoden, genererer den kode til at håndtere den specifikke datatype.

57 Generics Egenskaber Generics egenskaber Generics kan forbedre ens programmer på følgende måder: De hjælper med at maksimere genbrug af kode, type sikkerhed og ydeevne. Du kan oprette generic collection klasser..net Framework klasse bibliotek indeholder en række nye generic collection classes i System.Collections.Generic namespace. Man kan bruge disse generic collection classes i stedet for collection classes i System.Collections namespace. Man kan lave egne generic interfaces, classes, methods, events og delegates. Man kan lave generic classes tvunget til at give adgang til metoder for bestemte datatyper. Man kan få information om de typer, der anvendes i en generic datatype ved run-time ved hjælp af reflection.

58 Generics

59 Lambda expressions Et lambda udtryk er en anonym funktion, som kan bruges til at oprette delegates eller udtryk træ typer. Ved at bruge lambda udtryk kan man skrive lokale funktioner, der kan overføres som argumenter eller returneres som værdien af funktionskald. Lambda udtryk er særligt nyttigt for at skrive LINQ query udtryk. For at oprette et lambda udtryk angiver man inputparametre (hvis nogen) på venstre side af lambda operatoren =>, og man sætter udtryk eller udsagn blokken på den anden side Lambda udtrykket x => x * x angiver en parameter, x og giver den værdien af x potens. Du kan tildele dette udtryk til en delegeret type.

60 Lambda expressions

61 Events Events er brugerhandlinger såsom tastetryk, klik, musebevægelser, etc., eller nogle hændelser såsom system genererede meddelelser. Applikationer er nødt til at reagere på begivenheder, når de opstår. For eksempel interrupts. Events anvendes til inter-proces kommunikation. Begivenhederne erklæres og udføres i en klasse og forbindes med event handlers der bruger delegates inden for samme klasse eller en anden klasse. Klassen, der indeholder eventet, bruges til at udgive eventet. Dette kaldes udgiver (publisher) klassen. Andre klasser, der accepterer eventet, kaldes abonnent (subscriber) klassen. Derfor kaldes det at begivenheder bruger en udgiverabonnent model.

62 Events Delegates

63 Filer En fil er en samling gemt på en disk med et specifikt navn og mappe sti. Når filen åbnes til læsning eller skrivning bliver den en stream. En stream er grundlæggende sekvensen af bytes der går gennem kommunikations stien. Der er to hoved streams: input stream og the output stream. Input stream bruges til at læse data fra filen (read operation) og output stream bruges til at skrive til filen (write operation).

64 Fil systemet FileStream klassen FileStream klassen i System.IO namespace hjælper med at skrive fra, skrive til og lukke filer. Klassen er afledt af den abstrakte klasse Stream. For at lave en ny fil eller åbne en eksisterende fil skal man have et FileStream objekt. FileStream <object_name> = new FileStream( <file_name>, <FileMode Enumerator>, <FileAccess Enumerator>, <FileShare Enumerator>); Her laves et FileStream objekt F til at læse filen sample.txt FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);

65 Collections

66 LINQ Akronymet LINQ star for Language INtegrated Query. Gennem LINQ queries får man let data adgang til inmemory objekter, databaser, XML documenter og mere til. LINQ blev indført i Visual Studio 2008 og er designet af Anders Hejlsberg. LINQ tillader en at skrive queries selv uden kendskab til query sprog som SQL, XML osv. LINQ queries kan skrives til forskellige datatyper. Der er to syntakser I LINQ. Lamda (Method) Syntax Query (Comprehension) Syntax

67 Assemblies Et assembly er en fil, der er automatisk genereres af compileren efter en vellykket samling af hver NET applikation. Det kan enten være et Dynamic Link Library eller en eksekverbar fil. Det genereres kun en gang for et program og ved hver efterfølgende kompilering bliver assembly opdateret. Hele processen vil køre i baggrunden af ens applikation. Et assembly indeholder Intermediate Language (IL) kode, som svarer til Java byte kode. I.NET sproget består det af metadata. Metadata enumerates features i hver "type" inde i assembliet eller binary.

68 Assemblies

69 Attributes En attribut er en deklarativ tag, der bruges til at formidle information til runtime om adfærd af forskellige elementer som klasser, metoder, strukturer, enumerators, samlinger etc. i et program. Man kan tilføje deklarativ information til et program ved hjælp af en attribut. Et deklarativt tag er vist ved firkantede ([]) parenteser placeret over elementet det anvendes til. Attributter bruges til at tilføje metadata, såsom compiler instruktion og andre oplysninger, såsom kommentarer, beskrivelse, metoder og klasser til et program..net Frameworket indeholder to typer af attributter: de foruddefinerede attributter (pre-defined) og specialbyggede attributter (custom built).

70 Attributes AttributeUsage Obsolete Denne foruddefineret attribut markerer en program enhed, som ikke bør anvendes. Det giver dig mulighed for at informere compileren om at kassere et bestemt mål element. For eksempel, når der anvendes en ny metode i en klasse, og hvis du stadig ønsker at beholde den gamle metode i klassen, kan du markere den som forældet ved at vise en meddelelse om at den nye metode bør anvendes i stedet for den gamle metode. Syntaks [Obsolete( message )] [Obsolete( message, iserror )] Hvor Parameteren message er en streng, der beskriver grunden til at elementet er forældet og hvad der skal bruges i stedet. Parameteren iserror er en boolesk værdi. Hvis dens værdi er sand, skal compileren behandle brugen af elementet som en fejl. Standardværdien er falsk (compiler genererer en advarsel).

71 Attributes AttributeUsage Obsolete

72 Attributes Custom Attributes.NET frameworket tillader oprettelse af brugerdefinerede attributter, der kan bruges til at lagre deklarative oplysninger og kan hentes ved run-time. Denne information kan relateres til ethvert mål element afhængigt af designkriterier og program behov. Oprettelse og brug af brugerdefinerede attributter involverer fire trin: Erklære en brugerdefineret attribut Konstruktion af den brugerdefinerede attribut Tilføj den brugerdefinerede attribut på et mål program element Adgang attributter gennem refleksion Det sidste trin omfatter det at skrive et simpelt program til at læse igennem metadata til at finde forskellige notationer. Metadata er data om data eller oplysninger, der anvendes til at beskrive andre data. Dette program bør bruge refleksioner til at få adgang attributter ved runtime.

73 Attributes Custom Attributes

74 Multithreading En tråd er defineret som udførelsesvejen af et program. Hver tråd definerer en unik strøm af kontrol. Hvis en applikation indebærer komplicerede og tidskrævende operationer, så er det ofte nyttigt at indstille forskellige udførelses stier eller tråde, hvor hver tråd udfører et bestemt job. En tråd kaldes også en letvægts proces (lightweight process). Et almindeligt eksempel på brug af tråde er gennemførelsen af parallel programmering af moderne operativsystemer. Anvendelse af tråde sparer spild af CPU cyklus og øge effektiviteten af en applikation.

75 Debugging i VS

76 Opgave Jeg står til rådighed til svar på spørgsmål og forklaring af fejl

77 Opgave OPGAVE Tag prøverne inde på fra en ende af. I behøves ikke se videoerne, men brug dem endelig som reference / genopfriskning. Skriv på jeres eksamens rapport eller program.

78 Kilder Materiale benyttet i denne lektion Noget af det er udover pensum-listen!

79 Kilder Eksempel Sikker kode

80 Kilder Windows Forms (Polymorfisme)

WINDOWS FORMS EVENTS INTERAGEREN MED FIL SYSTEMET. Grundlæggende programmering Lektion 9

WINDOWS FORMS EVENTS INTERAGEREN MED FIL SYSTEMET. Grundlæggende programmering Lektion 9 EVENTS INTERAGEREN MED FIL SYSTEMET WINDOWS FORMS Grundlæggende programmering Lektion 9 1 EVENTS Der sker ting når der sker ting 2 EVENTS Events er brugerhandlinger såsom tastetryk, klik, musebevægelser,

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

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

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

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

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

Metoder Klasser Arv. Operatorer Løkker. Praksis eksempel. Grundlæggende programmering Lektion 3

Metoder Klasser Arv. Operatorer Løkker. Praksis eksempel. Grundlæggende programmering Lektion 3 Praksis eksempel Operatorer Løkker Metoder Klasser Arv Grundlæggende programmering Lektion 3 Praksis eksempel Et program der benytter Unity til at lave et 3D spil Praksis eksempel Spil der benytter Unity

Læs mere

Lektion 2. Grundlæggende programmering i VR

Lektion 2. Grundlæggende programmering i VR Lektion 2 Grundlæggende programmering i VR Plan for i dag Introduktion til Unity Vi laver vores første programmer Introduktion til C# Vi koder vores første af meget få ting uden Unity Behandling af data

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

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

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

Programmering for begyndere Lektion 2. Opsamling mm

Programmering for begyndere Lektion 2. Opsamling mm Lektion 2 Opsamling mm God tone Der er indlagt spørge sessioner Lektion 2 - Agenda Programmering for Lidt ændringer til teknikken, herunder hvordan du genser en lektion Lidt generelle tilbagemeldinger

Læs mere

Ugeseddel 4 1. marts - 8. marts

Ugeseddel 4 1. marts - 8. marts Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,

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

Python programmering. Per Tøfting. MacFest

Python programmering. Per Tøfting. MacFest Python programmering MacFest 2005 Per Tøfting http://pertoefting.dk/macfest/ Indhold Måder at afvikle Python program på Variabler Data typer Tal Sekvenser Strenge Tupler Lister Dictionaries Kontrolstrukturer

Læs mere

Lektion 3. Grundlæggende programmering i VR

Lektion 3. Grundlæggende programmering i VR Lektion 3 Grundlæggende programmering i VR Plan for i dag UML Usecase diagrammer Aktivitets diagrammer Klasse diagrammer Udforskning af forskelligt VR og andre måder at udvide virkeligheden på Cardboard

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

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug

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

Sproget Rascal (v. 2)

Sproget Rascal (v. 2) Sproget Rascal (v. 2) Til brug i K1 på kurset Oversættere Opdateret 29/11 2004 Abstract Rascal er et simpelt Pascal-lignende imperativt sprog. Dette dokument beskriver uformelt Rascals syntaks og semantik

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

Lær Python dag 1 - modul 1

Lær Python dag 1 - modul 1 Lær Python dag 1 - modul 1 Introduktion, basis python Steffen Berg Klenow Jonas Bamse Andersen Syddansk Universitet Indhold 1. Velkommen 2. Programmering i python 3. Typer, variabler og udtryk 1 Velkommen

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 1 8. september 2009 Målgruppe Motivation Indhold Form Materiale 2 / 47 Kursusintroduktion 1 Målgruppe 2 Motivation 3 Indhold 4 Form 5 Materiale Målgruppe Motivation Indhold Form

Læs mere

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgave:

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

Mange sprog Grundlæggende begreber Data typer Operatorer. Grundlæggende programmering Lektion 2

Mange sprog Grundlæggende begreber Data typer Operatorer. Grundlæggende programmering Lektion 2 Mange sprog Grundlæggende begreber Data typer Operatorer Grundlæggende programmering Lektion 2 Mange sprog Der findes rigtig, rigtig mange programmeringssprog De følgende er kun nogle få eksempler Mange

Læs mere

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract Sproget Six Til brug i rapportopgaven på kurset Oversættere Vinter 2006 Abstract Six er baseret på det sprog, der vises i figur 6.2 og 6.4 i Basics of Compiler Design. Den herværende tekst beskriver basissproget

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

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

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (i mandags) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Noter til C# Programmering Selektion

Noter til C# Programmering Selektion Noter til C# Programmering Selektion Sætninger Alle sætninger i C# slutter med et semikolon. En sætning kontrollerer sekvensen i programafviklingen, evaluerer et udtryk eller gør ingenting Blanktegn Mellemrum,

Læs mere

Introduktion. Grundlæggende programmering Lektion 1

Introduktion. Grundlæggende programmering Lektion 1 Introduktion Grundlæggende programmering Lektion 1 Introduktion Underviseren, kurset og stedet Introduktion Underviseren Erik Weber-Lauridsen erwl@eal.dk Vokset op med IT Programmeret siden han var 11

Læs mere

Kapitel 4 Løkker i C#

Kapitel 4 Løkker i C# Kapitel 4 Løkker i C# Løkker en vigtig del af alle programmeringssprog, og C# er ikke andeles. En løkke er en måde at udføre en del af koden gentagne gange. Ideen er at du fortsætter med at udføre en opgave

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

Eksempel: Skat i år 2000

Eksempel: Skat i år 2000 Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

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

Sproget Limba. Til brug i G1 og K1. Dat1E 2003

Sproget Limba. Til brug i G1 og K1. Dat1E 2003 Sproget Limba Til brug i G1 og K1 Dat1E 2003 Abstract Limba er et simpelt imperativt sprog med hoballokerede tupler. Dette dokument beskriver uformelt Limbas syntaks og semantik samt en fortolker for Limba,

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

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 10. april, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

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

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Brug af klassen Collections og interfacet Comparable BlueJ s Debugger Nyttig til at inspicere

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

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

Online kursus: Programming with ANSI C

Online kursus: Programming with ANSI C Online kursus 365 dage DKK 1.999 Nr. 90198 P ekskl. moms Denne kursuspakke giver dig et bredt kendskab til sproget C, hvis standarder er specificeret af American National Standards Institute (ANSI). Kurserne

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 20. april, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

Læs mere

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgave:

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

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

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

Software Dokumentation

Software Dokumentation Software Dokumentation Jan Boddum Larsen Teknologi B og A på HTX Dokumentation af software i Teknologi I samfundet sker der en bevægelse mod mere digitale løsninger i teknologi. Det betyder at software

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2017 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 6. april, 2017 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

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

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Programmering Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Oversigt Undervisningen Hvad er programmering Hvordan er et program organiseret? Programmering og fysik Nobelprisen

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

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser ArrayList Collection med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Videregående Programmering for Diplom-E Noter

Videregående Programmering for Diplom-E Noter Videregående Programmering for Diplom-E Noter 1. Uddelegering Ét af de væsentlige principper i objektorienteret programmering er, at enhver klasse selv skal kunne "klare ærterne". Enhver klasse skal altså

Læs mere

Programmering i C Intro og grundlæggende C 5. marts 2007

Programmering i C Intro og grundlæggende C 5. marts 2007 Programmering i C Intro og grundlæggende C 5. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan for kurset Ma. 5/3: Ma. 19/3: Ma. 2/4: To. 12/4: Formål, intro, grundlæggende Videre, sprogkonstruktioner

Læs mere

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Hassansalem.dk/delpin User: admin Pass: admin BACKEND Hassansalem.dk/delpin User: admin Pass: admin BACKEND 1/10 Indledning Dette projekt er den afsluttende del af web udvikling studiet på Erhvervs Lillebælt 1. semester. Projektet er udarbejdet med Del-pin

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

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

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

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

DM536. Rapport og debug

DM536. Rapport og debug DM536 Rapport og debug Kilder Vigtig.it (Felix Palludan Hargreaves) http://vigtig.it/dm502/howto_report.pdf http://vigtig.it/blog/teaching/#toc-relevant-tips Peter Schneider-Kamp http://imada.sdu.dk/~petersk/dm536/project2.pdf

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

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

16/04/12 50% 50% Waveform Chart Waveform Graph XY Graph Indicator Graph 33% 17% 88% 13%

16/04/12 50% 50% Waveform Chart Waveform Graph XY Graph Indicator Graph 33% 17% 88% 13% Samuel Alberg Thrysøe, PhD, PostDoc, Kontakt info: Email: sat@iha.dk, Tlf: +45 25533552 2 4. 5 Waveform Chart Waveform Graph XY Graph Indicator Graph 4. 33% Waveform Chart Waveform Graph XY Graph Indicator

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

4 Basal Objekt-orienteret Programmering I.

4 Basal Objekt-orienteret Programmering I. 4 Basal Objekt-orienteret Programmering I. Klasser i forhold til abstrakte datatyper og record-typer. Variable og operationer. Klasse-interfaces. Klasser og typer. Klasse-instantiering og initialisering.

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

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

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder

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

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller. Flowchart Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller. Et godt program til at tegne flowcharts med er, EDGE-Diagrammer, eller Smartdraw.

Læs mere

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Design af brugerflader 11.1 Samme sted Forskellige steder Sidste kursusgang Samtidigt

Læs mere

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgaver

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Klassevariabler og klassemetoder Levetid for variabler og parametre Virkefeltsregler Projektopgave Kaninjagt Lommeregner (for MAT studerende) Klassevariabler og klassemetoder

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

Nintex Workflow UK/DK

Nintex Workflow UK/DK Nintex Workflow UK/DK Når Nintex Workflows anvendes i et Dansk sproget SharePoint miljø, er der lidt forskel på hvad de forskellige elementer kaldes, såvel som rækkefølgen på disse. Noget er oversat, noget

Læs mere

Programmering i C. Lektion 4. 5. december 2008

Programmering i C. Lektion 4. 5. december 2008 Programmering i C Lektion 4 5. december 2008 Funktioner Eksempel Fra sidst 1 Funktioner 2 Eksempel Funktioner Eksempel Eksempel: 1 / f u n k t i o n s p r o t o t y p e r / i n t i n d l a e s ( void )

Læs mere

JavaScript. nedarvning.

JavaScript. nedarvning. JavaScript er et sprog, der kan give en hjemmeside mere funktionalitet og gøre den interaktiv, så den reagerer på læsernes handlinger. CGI (Common Gateway Interface) har hidtil været de protokoller, man

Læs mere

Fundamentale sprogbegreber

Fundamentale sprogbegreber Fundamentale sprogbegreber Sætninger og udtryk Niveauer af programbeskrivelse (statisk versus dynamisk syn) Oversigt Sætninger simple sætninger (assignment, metodekald) sammensatte sætninger (selektion,

Læs mere

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte

Læs mere

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4 DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens

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

Start på Arduino og programmering

Start på Arduino og programmering Programmering for begyndere Brug af Arduino Start på Arduino og programmering EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Sidste gang (Introduktion) Programmeringssproget

Læs mere

30 Objekt-orienteret Programmering i Andre Sprog.

30 Objekt-orienteret Programmering i Andre Sprog. 30 Objekt-orienteret Programmering i Andre Sprog. Abstrakte datatyper i Pascal. Abstrakte datatyper i Modula og Ada. C++ Overordnet organisering Instantiering og initialisering. Interfaces. Nedarvning.

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

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

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse. Mysqli Webintegrator Når vi arbejder med server-side scripting ( i vort tilfælde PHP), har vi ofte behov for at kunne tilgå data, som vi opbevarer i en database. Det kan f.eks. dreje sig om nyhederne i

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