4 Basal Objekt-orienteret Programmering I.

Størrelse: px
Starte visningen fra side:

Download "4 Basal Objekt-orienteret Programmering I."

Transkript

1 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. Operationer på klasser kontra konventionelle procedure-kald. Klienter og suppliers: relationer mellem klasser. Eksempel på en klasse i Eiffel. I nærværende kapitel i disse noter tales om objekt-orienteret programmering generelt, og stort set uafhængigt af et konkret programmeringssprog. Der vil forekomme syntaks for klasser og operationer i klasser, i en notation, som ikke stammer fra noget bestemt programmeringssprog. Dette kapitel handler altså ikke om Eiffel, men om objektorienteret programmering i almindelighed. Det vil klart blive angivet i titlen af slides, når der tales om Eiffel-specifikke emner. Med mindre andet er nævnt, vil vi i resten af noterne referere til Eiffel3, når vi blot skriver Eiffel. Som omtalt i introduktionen til disse noter, er der meget væsentlige forskelle mellem Eiffel, som beskrevet i "Object Oriented Software Construction" og vores implementation af sproget. Bøgerne (manualerne) "Eiffel the Language", "Eiffel the Libraries og "Eiffel the Environment" afspejler vores implementation af sproget. De læsere, som er meget nysgerrige efter, hvad Eiffel2 (det gamle Eiffel) er for et sprog, kan henvises til appendix B i OOSC. Dette appendix indeholder en god og hurtig læst oversigt over sproget. Den tilsvarende oversigt for Eiffel3 kan findes i kapitel 1 af bogen Eiffel the Language. 43

2 Klassebegrebet i forhold til ADT-er. En klasse er en abstraktions-form i et programmeringssprog, som realiserer en abstrakt datatype. Klassebegrebet involverer en række detaljer, som sædvanligvis ikke diskuteres i forbindelse med abstrakte datatyper, bl.a.: Beskrivelse af tilstand. Instantiering af klasser. Synlighed af klassers egenskaber. Klasse-sammensætning ved brug af nedarvning. Abstraktion: Vi kender andre abstraktions-former, nemlig procedureabstraktion og funktionsabstraktion. En procedure er en abstraktion over en mængde af kommandoer (sætninger), som gives et navn, og som typisk generaliseres med et antal parametre. En funktion er tilsvarende en abstraktion over et udtryk. Klasser som abstraktion: man kan sige, at en klasse er en abstraktion over et antal definitioner, som igen i dette tilfælde gives et navn (og måske generaliseres med et antal simple parametre eller type parametre). 44

3 Klassebegrebet i forhold til records: Øget indkapsling. En klasse kan opfattes som en udvidelse af record-begrebet: type R = record f1: T1; f2: T2; f3: T3 end procedure op1(p: R) begin... end class R f1: T1; f2: T2; f3: T3; operation op1 begin.. end; operation op2 (x: int) begin.. end end procedure op2(p: R; x: int) begin... end Kun data er indkapslede i recorden. Både operationer og data er indkapslede i klassen Forskellen mellem en record og en klasse er, at procedurerne, som tager record-typen som parametre, bogstaveligt talt er "puttet" ind i klassen (og kassen). Endvidere er første parameter til procedurerne implicit for klassens operationer; det er nemlig altid en instans af klassen selv. Dette er en meget vigtig iagttagelse. Senere i dette kapitel vil vi se på forskelle i anvendelse (kald) af operationerne. Syntaksen for den viste klasse tilhører ikke noget bestemt programmeringssprog. Vi vil senere i denne forelæsning vende tilbage til, hvordan klasser ser ud i Eiffel. 45

4 Variable og operationer i klasser. En klasse kan indeholde: Data Operationer Data Variable eller konstanter, som repræsenterer objekters tilstand. kan være tilknyttet instanser af klasser (instans-variable) eller klassen som så (klasse-variable). er erklæret af en bestemt type (statisk typing). kan værer allokeret statisk eller dynamisk. Operationer Procedurer eller funktioner. parametre og resultat er erklæret af bestemte typer (statisk typing). Ved statisk typing forstår vi, at typen af ethvert udtryk i en programtekst kan bestemmes ved at analysere programteksten. Det betyder for det meste, at typen af enhver variabel og enhver parameter direkte fremgår af programteksten i erklæringen af variablen hhv. parameteren. (Se også slide om datatyper i kapitlet "Grundbegreber"). Operationerne i klassen kan kategoriseres som konstruktorer, transformatorer og accessorer på lignende måde som vi gjorde med funktionerne i en algebraisk specifikation. Konstruktorerne er vigtige i forbindelse med skabelse og initialisering af objekter. Dette vender vi tilbage til senere i dette kapitel. 46

5 Klasseinterfaces og information hiding. 'Interface' betyder 'grænseflade'. En klasse's interface er den mængde af klassens egenskaber, som er synlig og brugbar udadtil i forhold til klassen. Andre af klassens egenskaber er skjult, og dermed kun brugbare indadtil. I forskellige objekt-orienterede programmeringssprog er der varierende konventioner for at definere, hvilke egenskaber, der tilhører klassens interface: Alle data er interne, og alle operationer er en del af klasseinterfacet. Det angives eksplicit, hvilke egenskaber der tilhører klassens interface. Operationer kan være interne, data kan tilhøre klasse-interfacet. Klassens egenskaber kan grupperes i en privat afdeling og en offentlig afdeling. Klassen angiver en liste af egenskaber, som"eksporteres" fra klassen. Et interface udtrykker, hvilke egenskaber der kan bruges udaftil i forhold til klassen. Hvis ikke alle klassens egenskaber kan bruges af klienter, er der nogle egenskaber, der er private. Dette er udtryk for synlighedskontrol af klassens egenskaber. På engelsk bruges ofte termen 'information hiding'. Synlighedskontrol (eller information hiding) ved definition af interfaces er et nøgle-emne i objekt-orienteret programmering. Årsagen til, at dette er så vigtigt, er den simple, at hvis en egenskab ikke er (direkte) synlig og brugbar for en klient, er der mulighed for at man kan ændre lokalt på egenskaben, uden at det får globale konsekvenser for alle klienter. Dette er brandmurseffekten, som vi tidligere har omtalt. Denne slide er ikke helt præcis med hensyn til brug af ordet interface. Interfacet kan dels være af betydning for, hvilke egenskaber en klient kan bruge fra en "supplier" klasse; der kan være tale om et andet interface mellem en klasse og sub-klasser (specialiseringer) af klassen. Dette andet interface vil vi vende tilbage til i første forelæsning om nedarvning. Sproget Smalltalk er et eksempel på et sprog, hvor alle operationer udgør klassens interface (ingen data -- instansvariable -- er en del af interfacet). I C++ kategoriseres egenskaber som offentlige og private. Også i Eiffel kategoriseres egenskaber i nogle grupper, dog ikke i en privat og en offentlig afdeling, men efter hvilke klasser, der kan bruge egenskaben. I Eiffel2 (det gamle Eiffel) indeholder hver klasser en eksport liste, der opremser navnene af de egenskaber, der synlige i andre klasser. 47

6 Klasser som typer, moduler og simple typer. En klasse kan anvendes som en datatype i et objekt-orienteret programmeringssprog: 1. Der kan erklæres variable af klasse-typer. 2. Operationers parametre kan type-erklæres med klasse-typer. 3. Funktioner kan returnere data af en klasse-type. Et modul er en syntaktisk ramme om en mængde definitioner: Et modul er ikke en type, men kan indeholde en eller flere typedefinitioner. En simpel, sprogdefineret type (integer, character, mv) ligner en klasse ved at De kan bruges som forskrift for objektdannelse. De har et antal tilknyttede operationer. og er forskellige ved at Syntaksen af operationskald er ofte speciel i forhold til anvendelse af opeationer på objekter af klasser. Simple typer kan typisk ikke udvides med flere egenskaber. Det kan klasser derimod. Følgende er marginale bemærkninger i forhold til emnet: De tre karakteristika (1--3) øverst på denne slide sammenfatter man ofte til udsagnet: "Objekter er af første klasse". Andre elementer i programmeringssprog er ikke af første klasse, f.eks. procedurer i Pascal eller Eiffel. Man kan ikke lagre procedurer i variable, og procedurer kan ikke returneres som resultat af en funktion (men i Pascal kan de overføres som parametre). Der findes programmeringssprog, hvor procedurer er af første klasse, f.eks. i Scheme, som er en Lisp dialekt. Det fører for vidt at komme ind på dette her. Om moduler i forhold til klasser: Når man vil bruge et modul ligesom en klasse definerer man ofte en type i modulet, og en række operationer der tager parametre af denne type, eller returnerer objekter af typen. I Eiffel er de simple sprogdefinerede typer definerede af klasser. Disse kaldes Basic Classes, og er beskrevet i kapitel 32 i Eiffel the Language. 48

7 Eksempel: anvendelse af klasser som typer. class C procedure op1(p:d);... end class D function op2(p: C): D... end x: C; v, w: D her instantieres og initialiseres objekter ; x.op1(v); if w.op2(x) = v then x.op1(v) end Karakteristika ved et objekt-orienteret program: Alle operationer anvendes på objekter. Det illustreres, at klasser anvendes i variabelerklæringer, i parameterlister og som resultat af en funktion på samme måde som simple typer. Ovenfor antages, at proceduren op1 er del af klientinterfacet for klassen C. Tilsvarende antages, at funktionen op2 er en del af interfacet for klassen D. 49

8 Instantiering af klasser & initialisering af objekter. En klasse kan opfattes som en skabelon for dannelse af instanser (objekter) af klassen. Objekt-dannelse sker i to faser: Instantiering: Lager af passende størrelse afsættes til objektet. Initialisering: Det afsatte lager tilskrives passende start-værdier af data-felterne. Klasse Instantiering Ikke-initialiseret objekt Initialisering Initialiseret Objekt Det er vigtigt, at programmeringssproget understøtter, at instantiering efterfølges af en fornuftig initialisering af objektet. 50

9 Statisk og dynamisk instantiering. Man taler om to forskellige former for instantiering af klasser til objekter: Statisk instantiering: En instantiering, som foreskrives i en af programmets erklæringsdele. En statisk instans skabes implicit sammen med det omkringliggende objekt. En statisk instans kan erkendes, inden programmet udføres. Dynamisk instantiering: En instantiering, som foreskrives i et af programmets handlingsdele. En dynamisk instans skal skabes eksplicit, typisk gennem en særlig kommando. En dynamisk instans kan først erkendes på udførelsestidspunktet af programmet. I Eiffel er instanser af klasser som grundregel dynamisk instantierede, medens instanser af simple typer er statisk instantierede. Klasse-typer kan dog godt instantieres statisk i Eiffel; hvis man ønsker at attributten 'a' bliver statisk instantieret skriver man og ikke blot a: expanded C a: C. Ovenstående er omvendt i forhold til Pascal og mange andre traditionelle programmeringssprog. I sådanne sprog er grundreglen statisk allokering af data, både hvad angår simple typer og sammensatte typer (såsom arrays og records). 51

10 Initialisering af objekter. Forskellige muligheder for beskrivelse af initialisering: Klassen har en initialiseringsdel. Initialiseringen af objekter er beskrevet i tilknytning til variablene i klassen. En eller flere operationer i klassen er helliget initialisering. Den først beskrevne initialiseringsteknik består i, at hver klasse har et stump initialiserings program tilknyttet som "kroppen af klassen". Denne stump kode udføres efter hver instantiering af klassen, bl.a. med det formål at initialisere det nye objekt. Simula og Beta er eksempler på sprog, der følger dette mønster. Det er i nogle sprog muligt til enhver variabel i klasse at beskrive, hvilken initialværdi variable skal antage. Hvis dette ikke er en fast værdi, kan man i nogle sprog endvidere angive hvilken parameter under instantieringen, der skal bruges for at specificere en initial-værdi. CLOS (the Common Lisp Object System) er et sådant sprog. Det mest almindelige er, at initialiseringen foretages ved brug af en initialiseringsoperation. I C++ er der såkaldte konstruktorer, som har samme navne som klassen. I Eiffel kan initialisering foretages af en såkalde creation procedure (som vi vender tilbage til i næste kapitel). 52

11 Operationer på objekter i forhold til konventionelle procedurekald. Konventionel procedure-definition og -kald: procedure P (x: C; y: D); begin... end var a: C; b: D;... P(a, b) Operations-definition og -kald i et objekt-orienteret program: class C operation P (x: D)... end var a: C; b: D;... a.p(b); I det objekt-orienterede tilfælde er det en forudsætning, at operationen P tilhører klassens interface. Med andre ord, P må ikke være en skjult, intern operation i klassen C. 53

12 Operationskald i objekt-orienterede sprog. I et objekt-orienteret program anvendes enhver operation på et objekt, evt. med et antal andre objekter overført som parameter til operationen. Almindelige procedurekald (uden angivelse af hvilket objekt, der opereres på) forekommer ikke. Dot-notationen objekt.operation(aktuelle-parametre) er typisk notation for anvendelse af en operation med et antal parametre på et objekt. Eksempel: account.transfer(5000.0, Overhead ) Mål-objekt (target) feature-angivelse aktuel parameter liste Når det siges, at almindelige procedurekald ikke forekommer i objekt-orienterede sprog, kan det forekomme som en sandhed med modifikationer. I Eiffel, og også C++, forekommer der typisk mange procedurekald internt i operationer på en klasse. Sådanne procedurekald er imidlertid i Eiffel blot udtryk for en forkortelse. Meningen er, at procedurekaldet er udtryk for en operation på det nuværende objekt. Der gives et eksempel på dette sidst i denne forelæsning, hvor vi ser på en Eiffel klassedefinition for en bankkonto. Så almindelige procedurekald forekommer altså ikke i det ultimativt objekt-orienterede sprog. Nederst vises et konkret eksempel på et operationskald, og der introduceres noget terminologi, som delvis knytter sig til Eiffel. En feature er i Eiffel en fællesbetegnelse for en en operation og en variabel/konstant i en klasse (mere om dette i næste kapitel). 54

13 Klasseroller: klienter og leverandører. class C data og operations erklæringer end; class D x: C; op(p: C); f(...): C... end; Klassen D er en klient (client) af C. "D køber fra C". Klassen C er en leverandør (supplier ) til D. "C sælger noget til D". D's klientforhold til C kan skabes på fire forskellige måder: 1. Ved at D erklærer en variabel af typen C. 2. Ved at en operation i D har en parameter af typen C. 3. Ved at en funktion i D returnerer en værdi af typen C. 4. Ved at en operation i D erklærer en lokal variabel af typen C. Kun de tre første tilfælde er illustreret på denne slide. Man skal bemærke, at relationen, som den er indført på denne slide og i bogen "Object Oriented Software Construction", er en relation mellem to klasser. Relationen lader sig let overføre til en relation mellem et objekt og en klasse. 55

14 Et eksempel på en klasse i Eiffel. class BANK_ACCOUNT creation make feature balance: real; interest_rate: real; owner: PERSON; make(b, ir: REAL; per: PERSON) is do balance := b; interest_rate := ir; owner := per end; deposit(amount: real) is do add(amount) end; withdraw(amount: real) is do add(-amount) end; add_interest(number_of_days: integer) is do add(balance * (interest_rate/100) * (number_of_days / 360) ) end; feature{none} add(amount: real) is do balance := balance + amount end end -- class BANK_ACCOUNT Klassen bank_account definerer tre klasse attributter (variable) og fire operationer. Under ét kaldes disse for features. Alle features pånær add er synlige i klienter af bank_account. De tre attributter (variable) kunne uden videre omdefineres til at være funktioner uden parametre, uden at det berører klienter af klassen. Add proceduren er intern i klassen (kan ikke benyttes af klienter af bank_account). Dette ses derved at add findes i et afsnit af programmet, som er markeret med feature{none}, hvilket vil sige at denne feature ikke eksporteres til nogen klasser. Det er bemærkelsesværdigt, at add tilsyneladende kaldes som en konventionel procedure fra andre operationer i klassen. Meningen er imidlertid, at add kaldes på det nuværende objekt, som jo er en instans af bank_account. Objektet, der arbejdes på, er altså implicit angivet i dette tilfælde. Klassen PERSON er ikke defineret på denne slide. For at bringe bank_account til anvendelse, skal der laves en klientklasse, som opretter et antal bankkonti, og opererer på dem via operationerne i bank_account's klient interface. Opgave: Udskift 'balancen' med et array af withdraw/deposit beløb. Ændringen af klassen skal foregå således, at interfacet af klassen bevares intakt og uforandret. 56

15 Karakteristika ved klassebegrebet i Eiffel. Eiffel er et objekt-orienteret programmeringssprog med statisk typing. Variable af klasse-typer allokeres som en grundregel dynamisk i Eiffel. Variable af simple typer (integer, boolean, real, character) allokeres statisk. Interfacet af en klasse bestemmes af en markering af grupper af definitioner i en Eiffel klasse. Operationer kan være interne i klassen; variable kan gøres til en del af interfacet. Variable, der eksportes, kan læses, men ikke modificeres. Hvis klassen B er en klient af klassen A, og hvis x er en variable af typen A i B, kan man ikke se, om udtrykket x.a refererer til en variable a eller til en funktion a i A. Alle variable, der beskriver data i en Eiffel klasse, initialiseres til faste, sprogdefinerede værdier. Det er muligt at lave såkaldte creation procedurer, som initialiserer variable i klasser til program-definerede værdier. Klasser kan ikke indlejres i hinanden i Eiffel. Denne slide beskriver på kort form hvordan programmeringssproget Eiffel er designet med hensyn til nogle af de emner, vi har diskuteret i dette kapitel. I den følgende forelæsning vil vi koncentrer os om detaljer i basal, objekt-orienteret Eiffel programmering. Det er værd at hæfte sig ved, at variable, som eksporteres, kan læses udefra, men det er ikke muligt direkte at assigne til disse. Hvis variable i en klasse skal ændre værdi som følge af en ekstern begivenhed, skal det ske gennem operationsinterfacet. Hvorfor mon denne begrænsning? Fuld skrivetilladelse udvikler sig let til anarki, idet klienter da vil kunne tilskrive dele af objektets repræsentation vilkårlige værdier. Dette vil kunne bryde klassens invariant. Vi vender tilbage til dette emne. Det modsatte ekstrem tvinger alle variabelaflæsninger til at foregå gennem funktioner, hvilket i mange situationer kan forekomme tungt. 57

16 Terminologi Smalltalk Eiffel C++ Interface Protokol Feature Member Operation Metode Routine Function member Operationskald Sende en besked Variabel Instansvariabel Attribut Data member I forskellige sprog og i forskellige objekt-orienterede subkulturer anvendes der forskellig terminologi for begreber, der enten er de samme, eller ligner hinanden meget. Denne slide giver en lille (og ikke særlig komplet) oversigt over beslægtet terminologi. 58

Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Abstrakte klasser.

Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Abstrakte klasser. 10 Nedarvning I. Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Dynamisk binding og virtuelle operationer. Decentraliseret/centraliseret

Læs mere

2 Abstrakte datatyper.

2 Abstrakte datatyper. 2 Abstrakte datatyper. Motivere eksempel: top-down udvikling af program 'mini-bank' Strukturering af et program: efter data eller funktion? Definition af en abstrakt datatype og tilknyttede begreber. Fænomener,

Læs mere

3 Algebraisk Specifikation af Abstrakte Datatyper.

3 Algebraisk Specifikation af Abstrakte Datatyper. 3 Algebraisk Specifikation af Abstrakte Datatyper. Specifikation kontra program. Bestanddele af en algebraisk specifikation. Klassificering af funktioner i en ADT. Systematisk definition af ligninger.

Læs mere

5 Basal Objekt-orienteret Programmering II.

5 Basal Objekt-orienteret Programmering II. 5 Basal Objekt-orienteret Programmering II. Historik og sprogoversigt. Programbeskrivelse kontra programudførelse. Referencer og værdier. Skabelse af objekter i Eiffel. Features og deres klassificering

Læs mere

29 Opsamling af Objekt-orienteret Programmering.

29 Opsamling af Objekt-orienteret Programmering. 29 Opsamling af Objekt-orienteret Programmering. Bottom-up kontra top-down design. "The shopping list approach". Hvordan finder man på objekterne. Klasser og dataabstraktion. Klasse interface og interface-teknikker.

Læs mere

Rename og redefine. Abstrakte klasser. Dynamisk binding.

Rename og redefine. Abstrakte klasser. Dynamisk binding. 11 Nedarvning II. Enkeltnedarvning i Eiffel. Rename og redefine. Initialisering af superklasse-dele af et objekt. Interfaces til klienter og subklasser. Typesammenlignelighed og polymorfi. Abstrakte klasser.

Læs mere

Metaklasser i Smalltalk.

Metaklasser i Smalltalk. 8 Metaklasser i Smalltalk. Motivation Metodeopslag Simple metaklasser Mere udviklede metaklasser Klasse- og metaklassehierarkiet Instantiering og initialisering Skabelse af klasser og metoder Oversigt

Læs mere

8 Specifikation med Logiske Udtryk.

8 Specifikation med Logiske Udtryk. 8 Specifikation med Logiske Udtryk. Specifikation kontra program. Specifikation af funktioner. Specifikation af funktions-orienterede ADT-er. Integreret specifikation og program i Eiffel. Korrekthed af

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

Objektorientering. Programkvalitet

Objektorientering. Programkvalitet 1 PROSA-Bladet nr. 4 1993 Objektorientering = Programkvalitet? Af Finn Nordbjerg, adjunkt ved Datamatikeruddannelsen, Aalborg Handelskole 1. Indledning Objektorientering er blevet et edb-fagets mest udbredte

Læs mere

Åben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser

Åben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser 3/10/96 Seminaret den 26/10 vil omhandle den sidste fase af analysen og de første skridt i kodegenereringen. Det drejer sig om at finde betydningen af programmet, nu hvor leksikalsk og syntaktisk analyse

Læs mere

9 Introduktion til CLOS.

9 Introduktion til CLOS. 9 Introduktion til CLOS. Klasser Metoder Generiske funktioner Slots Nedarvning Class precedence lists Klasse-redefinition og objektopdatering Ændring af objekters klassetilhørsforhold Eksempler Kurt Nørmark,

Læs mere

1 Grundbegreber. Noter. Stilarter i programmering og sprog. Syntaks og semantik. Datatyper. Kontrolstrukturer. Udtryk. Abstraktioner.

1 Grundbegreber. Noter. Stilarter i programmering og sprog. Syntaks og semantik. Datatyper. Kontrolstrukturer. Udtryk. Abstraktioner. 1 Grundbegreber. Stilarter i programmering og sprog. Syntaks og semantik. Datatyper. Kontrolstrukturer. Udtryk. Abstraktioner. Parametermekanismer. Blokke og navnebindinger. Scope og scoperegler. 3 Parallelle

Læs mere

16 Træer. Noter. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype.

16 Træer. Noter. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype. 16 Træer. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype. Gennemløb af binære træer. Træer i Eiffel. 229 Definition af et træ.

Læs mere

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september 2008. (Tak til Jakob Bardram for nogle slides) Dagens begreber

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september 2008. (Tak til Jakob Bardram for nogle slides) Dagens begreber Klasser Grundlæggende Programmering med Projekt Peter Sestoft Tirsdag 2. september 2008 (Tak til Jakob Bardram for nogle slides) Dagens begreber Felt (field) Metode (method) Parameter (parameter) Sætning,

Læs mere

Objects First with Java A Practical Introduction Using BlueJ

Objects First with Java A Practical Introduction Using BlueJ Objects First with Java A Practical Introduction Using BlueJ En introduktion til objektorienteret programmering for begyndere ud fra et software engineering aspekt Om at programmere i Java, ikke om værktøjet

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

13 Objekt-orienteret Design.

13 Objekt-orienteret Design. 13 Objekt-orienteret Design. Analyse i forhold til design. Programbeskrivelse og designbeskrivelse. Sømløs udvikling. Design i forhold til OO Eiffel programmering. Kategorisering af klasser i et design.

Læs mere

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:

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

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign 28 Algoritmedesign. Algoritmeskabelon for Del og Hersk. Eksempler på Del og Hersk algoritmer. Binær søgning i et ordnet array. Sortering ved fletning og Quicksort. Maksimal delsums problem. Tætteste par

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

15 Arrays og Lister samt Stakke og Køer.

15 Arrays og Lister samt Stakke og Køer. 15 Arrays og Lister samt Stakke og Køer. Introduktion til arrays. Algebraisk specifikation af arrays. Arrays i Eiffel. Introduktion til lister og kædede lister. Fælles egenskaber ved stakke og køer. Algebraisk

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

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22.

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22. Klasser og Objekter i Python Uge 46 Learning Python: kap 15-16, 19-22. Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. En kage form Klassens

Læs mere

Kontraktbaseret Design. Anker Mørk Thomsen

Kontraktbaseret Design. Anker Mørk Thomsen Kontraktbaseret Design Anker Mørk Thomsen 5. marts 2014 -2 Kontraktbaseret Design Anker Mørk Thomsen 1. udgave ISBN: 9788740491500 Forord Bogen er blevet til gennem undervisning i faget Kontraktbaseret

Læs mere

Noter til C# Programmering Iteration

Noter til C# Programmering Iteration Noter til C# Programmering Iteration Programflow Programmer udfører det meste af deres arbejde vha. forgrening og løkker. Løkker Mange programmeringsproblemer kan løses ved at gentage en handling på de

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

Objektorienteret design med arv og polymorfi:

Objektorienteret design med arv og polymorfi: Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Objektorienteret design med arv og polymorfi: Substitutionsprincippet Composite Design Pattern Finn Nordbjerg Side 1 Objektorienteret

Læs mere

Skriftlig eksamen, Programmer som Data 2. 3. januar 2014

Skriftlig eksamen, Programmer som Data 2. 3. januar 2014 Skriftlig eksamen, Programmer som Data 2. 3. januar 2014 Dette eksamenssæt har 5 sider. Tjek med det samme at du har alle siderne. Eksamenssættet udleveres elektronisk fra kursets hjemmeside torsdag 2.

Læs mere

UML til kravspecificering

UML til kravspecificering UML til kravspecificering UML mini-kompendium - til brug i forbindelse med modellering af kravspecifikationer. Copyright 2006 Teknologisk Institut, IT-Udvikling Aktivitetsdiagram 2/9 Aktion Aktionsnavn

Læs mere

18 Multivejstræer og B-træer.

18 Multivejstræer og B-træer. 18 Multivejstræer og B-træer. Multivejs søgetræer. Søgning i multivejssøgetræer. Pragmatisk lagring af data i multivejstræer. B-træer. Indsættelse i B-træer. Eksempel på indsættelse i B-træ. Facts om B-træer.

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

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser.

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. 25 Sortering III. Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. Sortering ved fletning, med fire bånd, i én fase (balanceret fletning). Polyfase fletning med tre bånd. Generaliseret

Læs mere

Spil Master Mind. Indledning.

Spil Master Mind. Indledning. side 1 af 16 Indledning. Spillet som denne rapport beskriver, indgår i et større program, der er lavet som projekt i valgfaget programmering C på HTX i perioden 9/11-98 til 12/1-99. Spillet skal give de

Læs mere

2 Funktionsorienteret programmering i Scheme.

2 Funktionsorienteret programmering i Scheme. 2 Funktionsorienteret programmering i Scheme. Lisp og Scheme. Listebegrebet i Lisp. Funktionsdefinition og lambdaudtryk. Navnebinding. Iteration. Første-klasses funktioner. Closures som klasser. Praktisk

Læs mere

Citation for pulished version (APA): Nordbjerg, F. E. (1993). Objektorientering = Programkvalitet? Prosabladet. De it-professionelles fagblad, (4).

Citation for pulished version (APA): Nordbjerg, F. E. (1993). Objektorientering = Programkvalitet? Prosabladet. De it-professionelles fagblad, (4). Danish University Colleges Objektorientering = Programkvalitet? Nordbjerg, Finn Ebertsen Published in: Prosabladet. De it-professionelles fagblad Publication date: 1993 Document Version Pre-print: Det

Læs mere

Hvad er formel logik?

Hvad er formel logik? Kapitel 1 Hvad er formel logik? Hvad er logik? I daglig tale betyder logisk tænkning den rationelt overbevisende tænkning. Og logik kan tilsvarende defineres som den rationelle tænknings videnskab. Betragt

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

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion Polymorfi Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type Coercion Tvangskonvertering (forfremmelse og begrænsning) Oversigt Abstrakt klasse abstrakt

Læs mere

Kommentar fra KMS til Specifikation af Serviceinterface for Person

Kommentar fra KMS til Specifikation af Serviceinterface for Person Kommentar fra KMS til Specifikation af Serviceinterface for Person Organisation Side Kapitel Afsnit/figur/tabel /note Type af kommentar (generel (G), redaktionel (R), teknisk (T)) Kommentar KMS-1 G Godt

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

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

Projekt - Visual Basic for Applications N på stribe

Projekt - Visual Basic for Applications N på stribe Projekt - Visual Basic for Applications N på stribe Mikkel Kaas og Troels Henriksen - 03x 3. november 2005 1 Introduktion Spillet tager udgangspunkt i det gamle kendte 4 på stribe, dog med den ændring,

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

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

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin August 2009 - juni 2010 Institution HTX Sukkertoppen/Københavns Tekniske Skole Uddannelse Fag og niveau Lærer(e)

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

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

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

12 Nedarvning III. Noter. Multipel nedarvning. Nedarvning og assertions. PS1 -- Nedarvning III. Kurt Nørmark, Aalborg Universitet, 1994.

12 Nedarvning III. Noter. Multipel nedarvning. Nedarvning og assertions. PS1 -- Nedarvning III. Kurt Nørmark, Aalborg Universitet, 1994. 12 Nedarvning III. Multipel nedarvning. Nedarvning og assertions. 169 Multipel nedarvning. A C Klassen C arver egenskaberne fra både A og. A og egenskaber er umiddelbart tilgængelige i C. x A C x x er

Læs mere

It og informationssøgning Forelæsning 7 1. november 2006 Jakob Grue Simonsen. Indlejring og Nedarvning

It og informationssøgning Forelæsning 7 1. november 2006 Jakob Grue Simonsen. Indlejring og Nedarvning It og informationssøgning Forelæsning 7 1. november 2006 Jakob Grue Simonsen Indlejring og Nedarvning Downey, Elkner & Meyers: Chapt. 15-16 Andersen & Simonsen: kap. 8 Vi har tidligere set løkker af forskellig

Læs mere

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af

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

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse.

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. 19 Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. Sammenligning af hashtabeller og søgetræer. 281 Hashing-problemet (1). Vi ønsker at afbilde n objekter på en tabel

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

Funktionsterminologi

Funktionsterminologi Funktionsterminologi Frank Nasser 12. april 2011 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette

Læs mere

12 Metaobjekt protokoller i CLOS.

12 Metaobjekt protokoller i CLOS. 12 Metaobjekt protokoller i CLOS. Begreber og problemer. Sprog designrum. Niveauer i CLOS. Programobserverende protokoller. Programskabende protokoller. Sprogudvidende protokoller. Eksempler. Kurt Nørmark,

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

14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer.

14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer. 14 Algoritmeanalyse. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. O og Ω. Køretid for forskellige kontrolstrukturer. Eksempler på algoritmeanalyse. Eksponentiel og polynomiel

Læs mere

Sider og segmenter. dopsys 1

Sider og segmenter. dopsys 1 Sider og segmenter dopsys 1 Lokal vs global sideallokering (1) Med (a) som udgangspunkt giver (b) lokal hhv. (c) global allokering forskellige resultater dopsys 2 Lokal vs global sideallokering (2) Den

Læs mere

Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13

Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13 1 Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Hvad er en makro... 10 Hvad kan du bruge en makro til... 10 Hvad en makro er (Visual Basic for Applications)... 11 Det hele sker

Læs mere

Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit.

Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit. Afsnittet er temmelig teoretisk. Er du mere til det praktiske, går du blot til det næste afsnit. XML (eng. extensible Markup Language) XML er en måde at strukturere data på i tekstform. På samme måde som

Læs mere

Introduktion til prædikatlogik

Introduktion til prædikatlogik Introduktion til prædikatlogik Torben Braüner Datalogisk Afdeling Roskilde Universitetscenter 1 Plan Symbolisering af sætninger Syntaks Semantik 2 Udsagnslogik Sætningen er den mindste syntaktiske enhed

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

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002 Databaser, efterår 2002 ER-modellen Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk

Læs mere

Sider og segmenter. dopsys 1

Sider og segmenter. dopsys 1 Sider og segmenter dopsys 1 Lokal vs global sideallokering (1) Med (a) som udgangspunkt giver (b) lokal hhv. (c) global allokering forskellige resultater dopsys 2 Lokal vs global sideallokering (2) Den

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2015 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 3. marts, 2015 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

Høringssvar vedr. Serviceinterface for Person

Høringssvar vedr. Serviceinterface for Person Høringssvar vedr. Serviceinterface for Person 1. Indledning... 3 1.1 Arkitekturmæssige overvejelser... 3 2. Konkrete ændringsforslag... 5 2.1 Variable attributnavne... 5 2.2 Registeroplysninger fra akkreditiv...

Læs mere

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 3: E-R modellering. 17. februar 2005. Forelæser: Rasmus Pagh

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 3: E-R modellering. 17. februar 2005. Forelæser: Rasmus Pagh Databasesystemer, forår 2005 IT Universitetet i København Forelæsning 3: E-R modellering 17. februar 2005 Forelæser: Rasmus Pagh Forelæsningen i dag Datamodellering hvad, hvornår, hvorfor og hvordan? Business

Læs mere

Dokumentation af programmering i Python 2.75

Dokumentation af programmering i Python 2.75 Dokumentation af programmering i Python 2.75 Af: Alexander Bergendorff Jeg vil i dette dokument, dokumentere det arbejde jeg har lavet i løbet opstarts forløbet i Programmering C. Jeg vil forsøge, så vidt

Læs mere

ER-modellen. Databaser, efterår 2002. Troels Andreasen. Efterår 2002

ER-modellen. Databaser, efterår 2002. Troels Andreasen. Efterår 2002 Databaser, efterår 2002 ER-modellen Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk

Læs mere

10 Metodekombination og multimetoder i CLOS.

10 Metodekombination og multimetoder i CLOS. 10 Metodekombination og multimetoder i CLOS. Metodekombination generelt. Multimetoder generelt. Kald af en generisk funktion i CLOS. Specialisering på enkeltobjekter. Standard metodekombination. Simpel,

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

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave

Læs mere

Databasesystemer, forår 2006 IT Universitetet i København. Forelæsning 3: E-R modellering. 16. februar 2006. Forelæser: Rasmus Pagh

Databasesystemer, forår 2006 IT Universitetet i København. Forelæsning 3: E-R modellering. 16. februar 2006. Forelæser: Rasmus Pagh Databasesystemer, forår 2006 IT Universitetet i København Forelæsning 3: E-R modellering 16. februar 2006 Forelæser: Rasmus Pagh Forelæsningen i dag Datamodellering hvad, hvorfor og hvordan? Business rules

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

.. if L(u) + w(u, v) < L(v) then.. begin... L(v) := L(u) + w(u, v)... F (v) := u.. end. med længde L(z)}

.. if L(u) + w(u, v) < L(v) then.. begin... L(v) := L(u) + w(u, v)... F (v) := u.. end. med længde L(z)} Procedure Dijkstra(G = (V, E): vægtet sh. graf,. a, z: punkter) { Det antages at w(e) > 0 for alle e E} For alle v V : L(v) := L(a) := 0, S := while z / S begin. u := punkt ikke i S, så L(u) er mindst

Læs mere

01017 Diskret Matematik E12 Alle bokse fra logikdelens slides

01017 Diskret Matematik E12 Alle bokse fra logikdelens slides 01017 Diskret Matematik E12 Alle bokse fra logikdelens slides Thomas Bolander 1 Udsagnslogik 1.1 Formler og sandhedstildelinger symbol står for ikke eller og ( A And) hvis... så... hvis og kun hvis...

Læs mere

Indhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output...

Indhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... Indhold Maskinstruktur... 3 Kapitel 1. Assemblersprog...3 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... 9 Kapitel 2. Maskinkode... 13 2.1 Den fysiske maskine... 13 2.2 Assemblerens

Læs mere

klient Webside Forespørgsel/ Nye data Python program Database kommando svar Database

klient Webside Forespørgsel/ Nye data Python program Database kommando svar Database Øvelse 10. Dynamiske web-sider og cgi-modulet I denne opgave skal vi bygge de foregående opgaver sammen til en mini-udgave af det samlede system I skal aflevere til vintereksamen. klient Forespørgsel/

Læs mere

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl:

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl: Fejlhåndtering Selv de bedste programmører laver af og til fejl! Dette kommer sikkert som en overraskelse for de fleste, bortset fra de, der har arbejdet med et hvilket som helst større program. Fejl kan

Læs mere

Klasser og Objekter i Python. Uge 11

Klasser og Objekter i Python. Uge 11 Klasser og Objekter i Python Uge 11 Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. Klassens objekter er instanser af klassen. En programudførelse

Læs mere

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5 Databaser og SQL Introduktion til SQL Kap 1-5 1 Dagens gang Databaser Database begreber Mapning af klasser til relationel model Normalisering Opgaver til næste gang 2 Databasebegreber A database is a:

Læs mere

Emneopgave: Lineær- og kvadratisk programmering:

Emneopgave: Lineær- og kvadratisk programmering: Emneopgave: Lineær- og kvadratisk programmering: LINEÆR PROGRAMMERING I lineær programmering løser man problemer hvor man for en bestemt funktion ønsker at finde enten en maksimering eller en minimering

Læs mere

De rigtige reelle tal

De rigtige reelle tal De rigtige reelle tal Frank Villa 17. januar 2014 Dette dokument er en del af MatBog.dk 2008-2012. IT Teaching Tools. ISBN-13: 978-87-92775-00-9. Se yderligere betingelser for brug her. Indhold 1 Introduktion

Læs mere

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42 Slide 1/42 Hvad er matematik? 1) Den matematiske metode 2) Hvad vil det sige at bevise noget? 3) Hvor begynder det hele? 4) Hvordan vælger man et sæt aksiomer? Slide 2/42 Indhold 1 2 3 4 Slide 3/42 Mængder

Læs mere

Skriftlig eksamen, Programmer som Data Onsdag 6. januar Spørgsmål 1 (20 %): Regulære udtryk og automater

Skriftlig eksamen, Programmer som Data Onsdag 6. januar Spørgsmål 1 (20 %): Regulære udtryk og automater Skriftlig eksamen, Programmer som Data Onsdag 6. januar 2010 Dette eksamenssæt har 5 sider. Tjek med det samme at du har alle siderne. Eksamens varighed er 4 timer. Der er fire spørgmål. For at få fuldt

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

BAAN IVc. Brugervejledning til BAAN Data Navigator

BAAN IVc. Brugervejledning til BAAN Data Navigator BAAN IVc Brugervejledning til BAAN Data Navigator En udgivelse af: Baan Development B.V. P.O.Box 143 3770 AC Barneveld Holland Trykt i Holland Baan Development B.V. 1997. Alle rettigheder forbeholdes.

Læs mere

Hjerner i et kar - Hilary Putnam. noter af Mogens Lilleør, 1996

Hjerner i et kar - Hilary Putnam. noter af Mogens Lilleør, 1996 Hjerner i et kar - Hilary Putnam noter af Mogens Lilleør, 1996 Historien om 'hjerner i et kar' tjener til: 1) at rejse det klassiske, skepticistiske problem om den ydre verden og 2) at diskutere forholdet

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

Projekt arbejde til kurset Advanced Models and Programs, SASP-AMP 2008 Poul Brønnum, IT Universitetet i København, Maj 2008. Indholdsfortegnelse

Projekt arbejde til kurset Advanced Models and Programs, SASP-AMP 2008 Poul Brønnum, IT Universitetet i København, Maj 2008. Indholdsfortegnelse Udvidelse af MicroC compileren til at kunne håndtere struct- og union typer samt switch-, break- og continue statement. Yderligere er ovenstående konstruktioner anvendt til at indføre malloc og free kald

Læs mere

Introduktion til Smalltalk.

Introduktion til Smalltalk. 7 Introduktion til Smalltalk. Designbeslutninger. Message passing. Klassebegrebet. Metodebegrebet. Forskellige slags variable. Nedarvning og metodeopslag. Instans og klassevariable ift. nedarvning. Blokbegrebet.

Læs mere

BlogReader 1.0.0 Af Jonas F. Jensen.

BlogReader 1.0.0 Af Jonas F. Jensen. BlogReader 1.0.0 Af Jonas F. Jensen. Indholdsfortegnelse Forord.....3 Hvad er BlogReader?......4 RSS, XML og sematic web......4 Klasse struktur i UML......4 Overordnet opbygning......5 UML diagram over

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Vinter 1998/99 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 16% Opgave 2 12% Opgave 3 10% Opgave

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

Miniprojekt i Programmering (MIP) for DAT2 og SW2, Forår 2012

Miniprojekt i Programmering (MIP) for DAT2 og SW2, Forår 2012 Miniprojekt i Programmering (MIP) for DAT2 og SW2, Forår 2012 Opgaven er delt op i 2 dele. Læs hele opgaven igennem inden I begynder. 1. Struktur I denne opgave skal der laves et system der håndterer salg

Læs mere

Note om Monte Carlo eksperimenter

Note om Monte Carlo eksperimenter Note om Monte Carlo eksperimenter Mette Ejrnæs og Hans Christian Kongsted Økonomisk Institut, Københavns Universitet 9. september 003 Denne note er skrevet til kurset Økonometri på. årsprøve af polit-studiet.

Læs mere