Rename og redefine. Abstrakte klasser. Dynamisk binding.

Størrelse: px
Starte visningen fra side:

Download "Rename og redefine. Abstrakte klasser. Dynamisk binding."

Transkript

1 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. Dynamisk binding. I dette kapitel vil vi studere emnerne fra Nedarvning I i en større detalje, og fra et Eiffel perspektiv. 155

2 Eiffel klasser med enkelt nedarvning. Syntaks: class name inherit superklasse rename navne tilpasninger export eksport tilpasninger redefine redefinitions tilpasninger tilpasning af nedarvede egenskaber fra superklasse. creation liste af navne på creation procedurer s Denne slide viser en skabelon af en klasse i Eiffel i det tilfælde, at der kun arves fra én superklasse. I det markerede afsnit på billedet ovenfor angives det, hvordan egenskaberne fra superklassen tilpasses, når disse egenskaber skal betragtes som være (nedarvede) egenskaber i klassen name. Bemærk at renaming, export og re-definition skal angives i netop ovenståe rækkefølge. Der findes to andre tilpasningsmuligheder: undefine og select. Undefine vil vi ikke bekymre os om i disse noter. (Hvis du er interesseret eller nysgerrig se afsnit i Eiffel the Language ). Select kommer vi ind på i forbindelse med mulitipel nedarving. I dette kapitel ser vi nærmere på de de forskellige tilpasningsmuligheder. 156

3 Rename i Eiffel. A f, h class B rename f as g, h as j andre tilpasninger Det overordnede problem: Hvis et navn er defineret i A kan navnet ikke umiddelbart benyttes til en i B. B Hvorfor bruge rename i klassen B? Give adgang til s i superklasser, som har samme navn som i B. For at klienter og subklasser af B kan benytte A-s med naturlig terminologi. For at løse op for navnesammenfald ved multipel nedarvning. I Eiffel er tilknytningen af et navn til en egenskab () ikke global og absolut, men relativ til en klasse. Gennem rename-delen under inherit er det muligt at tilpasse navnene på superklasseegenskaber. De nye navne har kun betydning i klassen B (samt dennes subklasser). De gamle navne (navnene på egenskaber i A, som bliver renamet i B s klassedefinition) er i klassen B totalt løsrevet fra deres A-betydning. De gamle navne kan således bruges som -navne i B, hvis vi måtte ønske dette. Det er noget meget grundlægge i Eiffel, at navne på s i en klasse entydigt skal referere til netop én. I andre sprog, f.eks. C++ kan vi godt bruge det samme navn til en variabel eller operation i en klasse og i dens superklasse, men det er naturligvis også i dette sprog vigtigt, at vi præcist er i stand til at sige, hvilken af variablene eller operationerne vi egentlig ønsker at referere til. I C++ skal man defor i anvelsessituationen kvalificere det tvetydige navn med klasse navnet: class::name. Den tredie årsag til at bruge rename er kun relevant hvis en klasse har mere én superklasse (multipel nedarvning). Hvis en klasse C arver fra to eller flere klasser, som begge har en f, hvilken f skal så gælde i C? En måde at løse dette tvetydighedsproblem på, er at kræve, at mindst én af f-erne 'renames'. 157

4 Redefine i Eiffel. Kontrolleret overskrivning A B f f class B evt. renamings evt. export tilpasninger redefine f f() is --f --B Ikke arbitrære redefinitioner: Signaturen af redefinitionen skal være sammenlignelig med den oprindelige signatur. Specifikationen af redefinitionen skal være en delspecifikation af den oprindelige specifikation. En parameterløs funktion kan redefineres til en attribut, men ikke omvt. Hvorfor bruge redefine i klassen B? Tildele en ny mening til navnet i B (Overskrive betydningen fra superklassen). Renaming er udtryk for en syntaktisk (næsten kosmetisk) ændring af programmet, eller det kan være nødvig på grund af 'uheldig' valg af navne i superklasser. Redefine er derimod udtryk for en mere substantiel, semantisk ændring, hvor meningen af et navn, f.eks. en procedure, ændres. Navnene i under redefine er de navne, som er gælde efter evt. tilpasninger efter rename. Det vigtigste at få fat i omkring redefinition er hvorfor vi benytter os af det: for at introducere en ny mening af en eller andet egenskab, som arves fra superklassen. Men det er naturligvis også væsentligt at forstå de begrænsninger, som redefinition i Eiffel er underlagt. Én af disse begrænsninger er, at en variabel kan ikke redefineres til en funktion (eller procedure), idet man ikke kan assigne til en funktion. Signaturen (parameterprofilen) af en udtrykker typer af formelle parametre og resultattypen. Man kan også tale om signaturen af en variabel, nemlig som typen af variablen. (Se også forelæsningen om "Specifikation med logiske udtryk"). Se evt. også Eiffel the Language, afsnit 5.12 samt 13.3 for en uddybning af signaturbegrebet hhv. signatursammenlignelighed. Hvad det vil sige, at en specifikation er en delspecifikation af en anden, ver vi tilbage til i næste forelæsning. Begrænsningerne i de to førte punkter på sliden ovenfor sikrer, at man ikke på må og få kan omdefinere operationer (og variable) i subklasser. Såvel signatur som specifikation, som angivet i en superklasse, skal overholdes af redefinitioner i subklasser. At signaturen af en redefinition er sammenlignelig med den oprindelige signatur betyder for parametrenes vedkomme, at parametrene parvis er sammenlignelige. Specielt har vi, at en operation f i klassen A og den redefinerede f i B skal have samme antal parametre. En parameter i den redefinerede klasse skal altså være (identisk med, eller) en subklasse af parameteren i den oprindelige klasse. Dette kaldes med et fint ord for covarians. Det kan diskuteres, om dette er det rigtige valg. Nogle argumenterer for, at det modsatte (kontravarians ) skal være gælde. Senere i kurset ver vi tilbage til forskellene mellem covarians og kontravarians. 158

5 Klientinterfacet i forbindelse med nedarvning. En klasse har fuld kontrol over sin klientinterface relativ til superklassens klientinterface. Som grundregel beholder s deres eksportstatus under nedvarning. Under nedarvning er det g muligt at tilpasse nedarvede egenskabers eksportstatus: Tilføje en til klientinterfacet. Fjerne en nedarvet fra klientinterface. Håndtere alle nedarvede s under ét. Man kan selektivt eksportere til udvalgte klasser (og deres subklasser). Eksempel 1: class B -- har s x, y og z export {ANY} x; {C} y; {NONE} z Eksempel 2: class B export {NONE} all {ANY} x I Eiffel er der ingen form for synlighedkontrol mellem en klasse og dens subklasser. Generelt overtager en subklasse (B) superklassens (A s) klientinterface, men superklassen (A) dikterer ikke på nogen måden subklassens (B s) klientinterface. I export-delen af inheritance af B kan man helt igennem styre B s interface til sine klienter. Eksempel 1 ovenfor illustrerer dette. Uanset A s eksportpolitik vil B, som jo arver x, y og z fra A, stille x tilrådighed for alle klienter, kun eksportere y til C, samt holde z privat. Eksempel 2 ovenfor illustrerer brugen af nøgleordet all i export-delen under inheritance. Meningen er her at alle s arvet fra A bliver private (kan ikke ses af nogen klient til A), undtagen g x, som kan ses af alle (ANY) klienter. Det kan være af interesse at vide, at I Eiffel2 var angivelsen af klientinterfacet væsentlig enklere, men måske lidt mere træls at håndtere i praksis. I Eiffel2 havde hver klassen en eksplicit export liste, som hver klasse i et nedarvningshierarki kunne danne helt uafhængig af superklassens export liste. Dog var der mulighed for i en eksportlist at sige repeat super-klasse, for på denne måde enkelt at kunne udtrykke udvidelse af klient-forhold i forhold til superklassens klient-forhold. 159

6 Creation procedurer i forbindelse med nedarvning. Hver klasse lister sine creation procedurer. Creation status af procedurer nedarves ikke. Gennem evt. anvelse af renaming er det muligt at benytte superklassens creation procedure (x fra A) i subklassens creation procedure (x i B). Creation status af en creation procedure i A (muligheden for at anve creation proceduren til instantiering) er uafhængig af procedurens eksport status (muligheden for at anve proceduren på et objekt af typen A). class A creation x x() is class B rename x as x_from_a export creation x, z x() is x_from_a() z() is Denne slide beskæftiger sig med et ligne emne som forrige slide. Spørgsmålet der besvares er hvorledes creation procedurer forholder sig til nedarvning. Det er væsentligt at slå fast, at udnævnelse af creation procedurer finder sted i hver klasse i et klassehierarki. Man kan ikke blot læne sig op ad superklassens creation procedure liste. Det er også væsentligt at få fat i hvordan to creation procedurer i to niveauer i et klassehierarki kan bruge hinanden. Altså hvordan B s creation procedure kan kalde A s creation procedure relativ til billedet ovenfor. Dette er et ofte forekommede ønske, idet A s creation procedure initialiserer A-attributter, og B s creation procedure initialiserer B s attriutter. Det vil være bbeltarbejde hvis vi i B s creation procedure skulle dublere arbejdet i forhold til A s creation procedure; det er naturligvis det bedste blot at kunne kalde A s creation procedure fra B s. Det er ofte også tilfældet, at creation procedurer hedder det samme på tværs af klasser i et hierarki (typisk make eller create). Bemærk at vi ikke ovenfor redefinerer x med redefine. Hvis vi redefinerede x ville B s x (bl.a.) være tvunget til at have samme parameterantal som A s x. Dette kan vi typisk ikke leve med for creation procedurer (der kommer ofte flere og flere parametre på creation procedurer, jo flere superklasser den omkringligge klasse af proceduren har). 160

7 Typesammenlignelighed og polymorfi i Eiffel. Lad B være en direkte subklasse af A. B er da direkte typesammenlignelig med A. A B Eksempel: A B og C er direkte typesammenlignelige med A. D og E er typesammenlignelige med A. B C D E x: A; x A- egenkaber C egenkaber D egenkaber E egenkaber y: E y A- egenkaber Instans af A Instans af E Direkte typesammenlignelighed er, som man husker, den primitive relation, som tillader os at definere den mere interessante relation 'typesammenlignelighed'. Sidstnævnte er defineret som den transitive refleksive lukning af 'direkte typesammenlignelighed'. Bidraget til typesammenlignelighed, som defineret på denne slide, definerer en begrænset og kontrolleret form for polymorfi. En instans af en mere specialiseret klasse kan assignes til en variabel af en mere generel klasse. Dette er en "typesikker" assignment, idet vi ved, at en specialiseret type har alle de egenskaber, som den generelle type besidder. Som det illustreres på denne slide, gælder det omvte ikke. Hvis det var lovligt at tilskrive et generelt objekt til en mere specifik kvalificeret variabel, kan vi ikke på programmets oversættelsestidspunkt forhindre, at der bliver spurgt om udefinerede egenskaber af objekter. I eksemplet y.d-egenskab går det galt hvis y peger på en instans af klassen A. 161

8 Dynamisk binding i Eiffel. X: A; Y: B;!!Y.create(); X := Y; X.op() op fra klassen A eller fra klassen B? class A op () is --A class B redefine op op () is I Eiffel: op fra klassen B. --B Eiffel bruger konsekvent dynamisk binding.x Betegnelsen virtuelle operationer bruges ikke i Eiffel. Det kan virke lidt overflødigt skulle skrive 'redefine op', når det jo klart fremgår af klasse definitionen, at operationen op rent faktisk (re)defineres. Eiffel filosofien omkring dette er, at programmøren skal udtrykke sig lidt redundant (hvilket jo vil sige, at man bruger lidt flere ord nødvigt), for derved at markere, at operationen ikke blot forekommer ved et uheld både i klassen A og B. Det skal være programmørens intension, at redefinere den udgave af op, som han er bevidst om også findes i A. Det er værd at bemærke, at hvis formålet med!!y.create(); X := Y; udelukke er at tildele X en reference til et B-objekt kan man nøjes med! B!X.create(). Dette udnytter den fulde styrke i sprogets objektskabelses mekanisme. 162

9 Typesammenlignelighed og reverse assignment attempt. Bus Køretøj Truck k: Køretøj; b: Bus; t: Truck;!!b.create;!!t.create; k := b; b := k; b := t; -- ok i Eiffel og andre OO sprog. -- ulovligt i Eiffel, men lovligt -- i nogle andre OO sprog. -- ulovligt i alle OO sprog.!!b.create;!!t.create; k := b; b?= k; if b.void then ; -- ok Eiffels reverse assignment attempt: Det testes under programudførelsen om den dynamiske type af k er typesammenlignelig med den statiske type af b. Hvis ja: udfør normalt assignment. Hvis nej: assign void til b. Hovedpointen på denne slide er, at assignmentet b := k kun er lovligt, hvis k refererer til en bus (eller til et objekt, som er en specialiseret bus). Det kan vi kun vide ved at teste det på programmets udførelsestidspunkt. I Eiffel er dette "run time check" en del af det specielle assignment b?= k, som kaldes et reverse assignment attempt. Bemærk, at et "run time check" aldrig er nødvig ved assignmentet k := b, idet b altid vil referere til et objekt, som er en bus, eller til et objekt, som er instans af en subklasse af bus. Et assignment var := expr er typemæssigt lovligt hvis typen af expr er typesammenlignelig med typen af var. Et reverse assignment attempt var?= expr er typemæssigt lovligt hvis typen af var er typesammenlignelig med typen af expr; altså præcist den omvte betingelse. Ovennævnte b?= k opfylder klart denne regel. Reglen udlukker k?= b, b?= t og t?= b (alle med reference til billedet ovenfor) som lovlige reverse assignment attempts. Reglen er fornuftig derved, at den kun er gyldig, hvis der er tvivl om den typemæssige lovlighed af assignment (forsøget), og hvis der er håb om, at forsøget kan give success. Man kan læse om reverse assignment attemps i afsnit af "Eiffel the Language". Det er værd at bemærke, at der i klassen ANY findes en funktion som hedder conforms_to, og som på programmets udførelsestidspunkt tillader os at undersøge om et objekts type er sammenlignelig med et andet objekts type. Funktionen bruges således: x.conforms_to(y). Svaret er true hvis den dynamiske type af x er typesammenlignelig med den dynamiske type af y. 163

10 Abstrakte klasser i Eiffel. Abstrakt klasse med forudannonceret routine f. deferred class A inherit creation create f () is deferred ; --f g: T is deferred x: A;!!x.Create class B creation create f() is ; --f g: T x: A; y: B!!y.Create; x := y I Eiffel er en klasse abstrakt hvis den indeholder én eller flere s, der er mærkede deferred. En abstrakt klasse i Eiffel skal mærkes med nøgleordet deferred i forbindelse med klassedefinition. I eksemplet ovenfor arver klassen B fra klassen A. B siges at effektuere (eng.: effect ) f og g. Som det ses, er B således ikke abstrakt (vi antager at der ikke er andre abstrakte egenskaber f og g i A). Vi skal (og må) ikke eksplict skrive redefine f når en egenskab effektueres. I eksemplet ovenfor ser vi at g er en deferred funktion uden parametre i klassen A. I klassen B kan vi naturligvis effektuere g som en funktion. Men som illustreret, er det også muligt at effektuere g som en attribut. Man kan således se, at formen g: T is deferred i A lader det stå åbent, om vi i en subklasse vil realisere g som en beregning af en værdi (en parameterløs funktion) eller som en lagret værdi (en attribut). Undertiden omtaler man en klasse som en effective class (i betydningen at den er af egentlig nytte, tjenestdygtig) hvis den ikke er deferred. 164

11 Abstrakt klasse med specifikation: Stack (I). class STACK[T] nb_elements: INTEGER is deferred ; push(x: T) is require not full deferred ensure not empty; top = x; nb_elements = old nb_elements + 1; pop is require not empty derferred ensure not full; nb_elements = old nb_elements -1 ; --pop top: T is require not empty deferred ensure Nochange ; -- top --fortsættes Vi benytter påny stakke som et eksempel. Der er ingen repræsentationsaspekter i Stack. Repræsentationsbeslutninger udsættes til en subklasse. nb_elements er nu ikke en integer, men en forudannonceret af typen integer, hvis implementation afhænger af repræsentationsvalget. Vi kan således i en subklasse vælge at lagre eller beregne antallet af elementer. Vi ønsker ikke apriori at begrænse stakke til at have en øvre grænse. Dette afspejles af invarianten derved, at der ikke er angivet en øvre grænse af nb_elements. Vi kunne vælge at realisere stakke med en dynamisk datastruktur (linærere lister), som ikke har en øvre grænse på antallet af elementer. I dette tilfælde skal vi i en subklasse til stack implementere full som en funktion, der altid returnerer false. 165

12 Abstrakt klasse med specifikation: Stack (II). (fortsat) empty: BOOLEAN is require true Result := (nb_elements = 0) ensure Result = (nb_elements = 0) ; full: BOOLEAN is deferred ;--full change_top(x: T) is require not empty pop; push(x) ensure not empty; top = x; nb_elements = old nb_elements ; --change_top invariant 0 <= nb_elements; --class stack Change_top er en ny operation. Operationen udskifter toppen af stakken med parameteren. Denne operation er ikke forudannonceret, idet vi, uanset specialiseringen af stack, kan implementere change_top på dette niveau. 166

13 Eksempel på en abstrakte klasse fra Eiffel bibliotekerne. deferred class PART_COMPAR infix "<" (other: like Current): BOOLEAN is deferred ; -- "<" infix "<=" (other: like Current): BOOLEAN is Result := (Current < other) or (is_equal (other)) ; -- "<=" infix ">" (other: like Current): BOOLEAN is Result := other < Current ; -- ">" infix ">=" (other: like Current): BOOLEAN is Result := (other < Current) or (is_equal (other)) -- ">=" -- class PART_COMPAR Klassen PART_COMPAR definerer fire forskellige sammenligningsoperationer på objekter, hvorpå vi introducerer en partiel ordning (<). Vi minder om, at en partiel ordning pr. definition er transitiv (x < y og y < z => x < z) og irrefleksiv (x < x er falsk for alle x). Via transitivitet og irrefleksivitet har vi også anti-symmetri (x < y => not (y < x) ). Klassen PART_COMPAR er fra kerne-biblioteket i vores Eiffel system. Det ses hvordan operatorerne <=, > og >= kan defineres ud fra < og equal. Bemærk at < er den eneste forudannoncerede (deferred) operation i klassen. Is_equal er arvet fra klassen ANY, hvorfra enhver klasse i Eiffel arver. Det er nu intentionen, at subklasser af PART_COMPAR skal definere operationen <; derved får man de andre "gratis". Eksemplet viser også brug af såkaldte forankrede typer i Eiffel (type erklæringer som 'other: like Current') og infix operator funktioner ('infix "<"(): boolean'). Hverken forankrede typer eller infix operator funktioner bliver behandlede eksplicit på dette kursus. Interesserede henvises til hhv. afsnit "Eiffel the Language" angåe forankrede typer. 167

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Å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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Forelæsning Uge 6 Mandag

Forelæsning Uge 6 Mandag Forelæsning Uge 6 Mandag Tingene i denne forelæsning er ikke eksamenspensum Forelæsningen afrunder kurset, og forklarer nogle af de begreber, som I har mødt under kurset uden at få detaljeret forklaring

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

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

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

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

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

DM507 Algoritmer og datastrukturer

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

Læs mere

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt

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

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

Om begrebet relation

Om begrebet relation Om begrebet relation Henrik Stetkær 11. oktober 2005 Vi vil i denne note diskutere det matematiske begreb en relation, herunder specielt ækvivalensrelationer. 1 Det abstrakte begreb en relation Som ordet

Læs mere

17 Søgning og Søgetræer.

17 Søgning og Søgetræer. 17 Søgning og Søgetræer. Lineær og inær søgning i lister. inære søgetræer. Søgning efter knude i træ. Indsættelse af knude i træ. Søgning i og sortering af inært søgetræ. Sletning af knude i inært søgetræ.

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

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt

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

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

1 KlassifikationStruktur

1 KlassifikationStruktur ..27 KlassifikationStruktur. KlassifikationStruktur Klassifikation er det abstrakte objekt som samler et klassifikationssystem. Klassifikation holder klassifikationssystemets metadata. Klassifikationssystemet

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

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

Programmeringscamp. Implementer funktionerne én for én og test hele tiden.

Programmeringscamp. Implementer funktionerne én for én og test hele tiden. Programmeringscamp De to opgaver træner begge i at lave moduler som tilbyder services der kan bruges af andre, samt i at implementere services efter en abstrakt forskrift. Opgave 1 beder jer om at implementere

Læs mere

Kapitel 3 Betinget logik i C#

Kapitel 3 Betinget logik i C# Kapitel 3 i C# er udelukkende et spørgsmål om ordet IF. Det er faktisk umuligt at programmere effektivt uden at gøre brug af IF. Du kan skrive små simple programmer. Men når det bliver mere kompliceret

Læs mere

Introduktion til datastrukturer

Introduktion til datastrukturer Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Philip Bille Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller

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

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

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

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

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 3 sider anmarks Tekniske Universitet Skriftlig prøve, den 29. maj 203. ursusnavn: lgoritmer og datastrukturer ursus nr. 02326. jælpemidler: Skriftlige hjælpemidler. et er ikke tilladt at medbringe

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

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

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

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

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

Læs mere

3. PROJEKT, 2 SEMESTER

3. PROJEKT, 2 SEMESTER 3. PROJEKT, 2 SEMESTER Bruger undersøgelse, af sociale medie. KENDSKAB TIL OG BRUG AF ONLINE SOCIALE MEDIER FORENINGEN AF DANSKE INTERAKTIVE MEDIER, FÅET TIL OPGAVE AT AFDÆKKE DANSKERNES BRUG AF SOCIALE

Læs mere

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 2 n (log n) 2. 3 n /n 2 n + (log n) 4

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 2 n (log n) 2. 3 n /n 2 n + (log n) 4 Eksamen. kvarter 00 Side 1 af sider Opgave 1 ( %) Ja Nej n log n er O(n / )? n 1/ er O(log n)? n + n er O(n )? n( n + log n) er O(n / )? n er Ω(n )? Opgave ( %) Opskriv følgende funktioner efter stigende

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 9 Andre designmønstre Andre designmønstre: Uforanderlig, Fluevægt, Lagdelt Initialisering, Komposit/Rekursiv Komposition, Kommando/Ændring Fremlæggelse af programmering/status

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

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

Programming Language Design and Analysis motivated by Hardware Evolution

Programming Language Design and Analysis motivated by Hardware Evolution Programming Language Design and Analysis motivated by Hardware Evolution Alan Mycroft Presenter: Thomas Bøgholm September 24, 2007 Alan Mycroft Professor på Cambridge Universitet Cambridge Programming

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

Introduktion til datastrukturer. Philip Bille

Introduktion til datastrukturer. Philip Bille Introduktion til datastrukturer Philip Bille Plan Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Datastrukturer Datastrukturer Datastruktur: Metode til at organise data så det kan søges

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

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

Civilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

Civilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Kursusnavn: Programmering. Tilladte hjælpemidler: Alle skriftlige hjælpemidler Opgavesættet består af fire opgaver, der har følgende vægtning: Opgave

Læs mere

Baggrundsnote om logiske operatorer

Baggrundsnote om logiske operatorer Baggrundsnote om logiske operatorer Man kan regne på udsagn ligesom man kan regne på tal. Regneoperationerne kaldes da logiske operatorer. De tre vigtigste logiske operatorer er NOT, AND og. Den første

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

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations Tabelbegrebet Klassediagrammer (III) Tabeller og qualified associations originally by Michael R. Hansen modified/extended by Anne E. Haxthausen Informatics and Mathematical Modelling Technical University

Læs mere

Rekursion C#-version

Rekursion C#-version Note til Programmeringsteknologi Akademiuddannn i Informationsteknologi Rekursion C#-version Finn Nordbjerg 1 Rekursion Rekursionsbegrebet bygger på, at man beskriver noget ved "sig selv". Fx. kan tallet

Læs mere

Linguistic support for unit testing

Linguistic support for unit testing Linguistic support for unit testing Af K. E. Gray & M. Felleisen Mads Bach-Sørensen mbs@cs.aau.dk 1. november 2007 1 Indhold Forfatterne TestJava Traditionel Unit-testing Sproglige Konstruktioner i TestJava

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider anmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: lgoritmer og datastrukturer Kursus nr. 02326. Varighed: 4 timer Tilladte hjælpemidler: lle skriftlige hjælpemidler.

Læs mere

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen Databaser, efterår 2002 Begrænsninger i SQL 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

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer BRP 13.9.2006 Tal. Om computer-repræsentation og -manipulation. Logaritmer 1. Opgaverne til i dag dækker det meste af stoffet 2. Resten af stoffet logaritmer binære træer 3. Øvelse ny programmeringsopgave

Læs mere

Mandags Chancen. En optimal spilstrategi. Erik Vestergaard

Mandags Chancen. En optimal spilstrategi. Erik Vestergaard Mandags Chancen En optimal spilstrategi Erik Vestergaard Spilleregler denne note skal vi studere en optimal spilstrategi i det spil, som i fjernsynet går under navnet Mandags Chancen. Spillets regler er

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Fredag den 1. april 200, kl..00-11.00

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

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

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

Læs mere

Matematisk modellering og numeriske metoder. Lektion 5

Matematisk modellering og numeriske metoder. Lektion 5 Matematisk modellering og numeriske metoder Lektion 5 Morten Grud Rasmussen 19. september, 2013 1 Euler-Cauchy-ligninger [Bogens afsnit 2.5, side 71] 1.1 De tre typer af Euler-Cauchy-ligninger Efter at

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

Manual til opsætning af Jit-klient version 1.0. Opsætning. Copyright Jit-Danmark Aps 2006. Find mere information på www.jitbesked.

Manual til opsætning af Jit-klient version 1.0. Opsætning. Copyright Jit-Danmark Aps 2006. Find mere information på www.jitbesked. Opsætning Indholdsfortegnelse Sådan finder du indstillingerne...3 Muligheder og begrænsninger...6 Hvilke søgeord skal jeg bruge?...6 Ting man skal passe på...6 Tilføjning/nedlægning af søgeord...6 Ændring

Læs mere