10 Metodekombination og multimetoder i CLOS.

Størrelse: px
Starte visningen fra side:

Download "10 Metodekombination og multimetoder i CLOS."

Transkript

1 10 Metodekombination og multimetoder i CLOS. Metodekombination generelt. Multimetoder generelt. Kald af en generisk funktion i CLOS. Specialisering på enkeltobjekter. Standard metodekombination. Simpel, indbygget metodekombination. Brugerdefineret metodekombination. Eksempler. Effektiv implementation. Kurt Nørmark, Aalborg Universitet 11/6/96 s

2 Metodekombination. Problemet: Hvorledes kombineres sammenhørende metoder til én overordnet operation. Løsning 1: Imperativ metodekombination: Programmøren benytter sprogets kontrolmekanismer til at kombinere metoderne. Nogle sprog tilbyder mekanismer der giver tilgang til mere generelle (eller mere specifikke) metoder relativt til en bestemt metode. Løsning 2: Deklarativ metodekombination: Et deklarativ metodekombination afspejler et bestemt samarbejdsmønster mellem metoder. En deklarativ metodekombination er således en abstraktion over et samarbejdsmønster mellem metoderne i en generisk funktion. I forbindelse med et operationskald, eller i den overordnede funktion, refereres der til en eksisterende metodekombination. Kurt Nørmark, Aalborg Universitet 11/6/96 s. 164 Med sammenhørende metoder mener vi i CLOS metoderne i en generisk funktion. Dette er de metoder, som har samme navn som den generiske funktion, og hvis parameterlister (i Common Lisp jargon kaldes lambda lister) er kongruente med hinanden. Den overordnede operation er i CLOS en generisk funktion. 164

3 Multimetoder. I de fleste objekt-orienterede sprog er metoder tilknyttet netop én klasse. Problem med single-metoder : Hvis en metode opererer symmetrisk på to eller flere objekter (parametre): Klassen af ét af disse objekter skal indeholde metoden. Det udvalgte objekt bliver modtager objekt af en besked. De øvrige objekter bliver blot parametre. Asymmetrisk behandling af parametre. En løsning: Multi-metoder. (defmethod paint (shape medium) (error "Sorry, painting is not possible")) (defmethod paint ((shape rectangle) (medium screen)) (defmethod paint ((shape rectangle) (medium printer)) (defmethod paint ((shape color-rectangle) (medium color-printer)) Man behandler alle parametre ens og symmetrisk. Metoder kan ikke være indeholdt i én klasse. Message passing metaforen bryder sammen: ikke én modtager af en besked. Kurt Nørmark, Aalborg Universitet 11/6/96 s. 165 Eksempler på sprog, hvor metoder er tilknyttet netop én klasse er alle de objektorienterede programmeringssprog, vi hidtil har været i nærheden af: Smalltalk, C++, Eiffel, Beta, Simula. Vi vil sige, at en metode er en single metode, hvis den netop tilhører én klasse. I de fleste sprog med single metoder vil man opfatte disse som værende indeholdt i en klasse, eller i det mindste fast tilknyttet til netop én klasse. Det er naturligvis et problem for multimetoder at være indholdt i flere klasser. Derfor svæver sådanne metoder i CLOS over klasserne. Med andre ord, metoder i CLOS er ikke indeholdt i en bestemt klasse. Multimetoder er meget velegnede i situationer, hvor nogle veldefinerede kombinationer af argumenttyper skal håndteres specielt, og øvrige kombinationer skal håndteres default. Metodekombination støtter en fragmentering af programmet, hvor én metode håndterer ét tilfælde (som skal kunne indfanges af parameter specialiseringer). Det er fristende at sammenligne multimetoder med funktionsdefinition på clausal form, som det kendes fra bl.a. ML. I CLOS er det muligt at udfaktorisere en generisk funktion i et antal metoder, hvor parameterlisten definerer under hvilke omstændigheder metoden kan komme i anvendelse. 165

4 Oversigt over kald af en generisk funktion i CLOS. Kald af en generisk funktion på en række objekter: 1. Udvælg de anvendelige metoder. Klassetilhørsforholdet af alle argumenter er af betydning Orden de anvendelige metoder. Ordningen sker ud fra class precedence listerne af involverede klasser. Kombiner de ordnede, anvendelige metoder til en effektiv metode. Kombinationen sker i forhold til metodernes roller. Aktiver den effektive metode. (F a b) C2 C1 C3 F After F C1 D1 Primær F C4 D3 D2 D1 D3 C4 C5 a F C5 D2 After F C2 D3 Primær Kurt Nørmark, Aalborg Universitet 11/6/96 s. 166 D4 b De fire punkter ovenfor er de centrale og vigtige skridt, som altid gennemføres når en generisk funktion kaldes i CLOS. Nedenfor opskriften er tegnet et scenario, som er egnet til at diskutere de enkelte skridt i kaldet. Vi har to klassehierarkier (som nok på mere generelt niveau har fælles forfædre, men dem viser vi ikke her). Vi har endvidere fire metoder i en generisk funktion, som hedder F. De fire metoder er multimetoder, idet de alle specialiserer på to klasser: én C-klasse, og én D-klasse. (Bemærk, at dette er en nødvendighed, idet vi jo stiller visse krav til metoderne i en generisk funktion om passende ensartede parameterlister - kongruens). Endelig har vi indtegnet to objekter, kaldet a og b, som hhv. er instanser af C5 og D4. I denne situation kalder vi F på a og b: (F a b). Alle metoder pånær F på C4 og D3 er anvendelige. Denne metode kan ikke anvendes, idet a ikke er af klassen C4. De anvendelige metoder ordnes i følgende rækkefølge: (fra mest specifikke til mest generelle): 1. F på C5 og D2 2. F på C2 og D3 3. F på C1 og D1 (Der kunne godt være to metoder på samme kombination af klasser, hvis disse har forskellige roller. Det viser sig unødvendigt at bekymre sig om, hvorledes sådanne to metoder ordnes indbyrdes). Afhængig af de tre anvendelige metoders rolle, dannes nu en effektiv metode, ved brug af den ønskede metodekombination. Den effektive metode er altså den samlede, resulterende operation som aktiveres, givet typerne af de supplerede argumenter. Den primære metode er F på C2 og D3, som kaldes og som bestemmer værdien af F. Dernæst kaldes de to after-metoder i følgende rækkefølge (most specific last): 1. F på C1 og D1 2. F på C5 og D5 Hvor angives, hvilken metodekombination, der ønskes? Det er en egenskab af den generiske funktion, som jo defineres af defgeneric makroen. 166

5 Metode anvendelighed. (defmethod M ((q1 PS1)... (qn PSn)) (M a1... an) En klasse Et udtryk: (eql form) Problemet: Er metoden M anvendelig på a1... an? Regel: Metoden M er anvendelig på a1... an hvis For alle i Hvis PSi er en klasse, og klassen af ai er C: C <= PS1 (C er klassen PS1, eller en subklasse af PS1). Hvis PSi er (eql form), værdien af form er object. (eql ai object). Kurt Nørmark, Aalborg Universitet 11/6/96 s. 167 Når en parameter specializer, PSi, er på formen (eql form) siger vi, at der specialiseres på et enkeltobjekt. På denne parameterposition er metoden kun anvendelig, hvis argumentet ai er lig med det objekt, som formen evalueres til. Bemærk, at form i (eql form) evalueres i den leksikalske omgivelse, der er til stede i defmethod sammenhæng, og at formen kun evalueres én gang. Vi uddyber specialisering på enkelt-objekter på næste slide. 167

6 Specialisering på enkelt-objekter. Det er muligt at specialisere en parameter i en metode på et enkelt objekt, fremfor en klasse af objekter. Metoden er kun anvendelig, hvis det anvendes på et objekt, der er lig med (eql) med parameterspecialiseringen. Eksempel: (defgeneric coerce (source-object target-type) (:documentation "If possible, coerce source-object to target-type.")) (defmethod coerce ((source string) (target (eql 'list))) (defmethod coerce ((source t) (target-type t)) ; default metode source) (defmethod coerce ((source vector) (target (eql 'list))) (coerce "pip" 'list) => ("p" "i" "p") (coerce "pip" 'cons) => "pip" (coerce #(p i p) 'list) => (p i p) (coerce "p" 'character) => #/p (defmethod coerce ((source string) (target (eql 'char))) Kurt Nørmark, Aalborg Universitet 11/6/96 s. 168 Cons som parameterspecialisering i (eql cons) burde måske dækkes at list tilfældet. Dette er for mig et signal om, at der burde åbnes for kunne anvende parameterspecialiseringer med andre sammenligningsprædikater end eql. Evt. kunne man ønske at anvende prædikater, man selv har defineret. Man kan opfatte typerne string og vector mv. som klasser, vi enten selv har defineret, eller som predefinerede klasser i CLOS. Faktisk er disse typer Common Lisp typer, som automatisk i CLOS opfattes som klasser. Dette forhold vil vi ikke gå så meget op i i vores sammenhæng. 168

7 Oversigt over ordninger. Klasser C1 <= C2 Class precedence order C1 er mindre generel (mere specifik) end C2 Metoder M1 <= M2 M1 er mindre generel (mere specifik) end M2. Ordningen er baseret på class precedence lists, og konkret defineret af ordningen af parameter specialiseringslister. "Hjælpe-ordninger": Parameter specialiserings lister PSL1 <= PSL2 Leksikografisk ordning baseret på ordningen af parameter specialiseringer. Parameter specialisering PS1 <= PS2 PS1 er mindre generel (mere specifik) end PS2. Kurt Nørmark, Aalborg Universitet 11/6/96 s. 169 Denne slide giver en oversigt, over de forskellige ordninger som kommer ind i billedet, for at kunne sortere de anvendelige metoder. Udgangspunktet er ordningen af en klasse, og alle den direkte og indirekte superklasser. Dette er class precedence listen, som blev diskuteret i forrige kapitel. Ordningen af metoder afgøres ene og alene af en ordning defineret på parameter specialiseringslisterne. Dette er en struktur, der er dannet af alle de påkrævede parameters klassetilhørsforhold (eller specialisering på enkeltobjekter). Ordningen af parameterspecialiseringslister induceres af en ordning, vi definerer på de enkelte parameterspecialiseringer. Dette er vist på den næste slide. Det viser sig, at den indbyrdes ordning af to parameter specialiseringer i et og alt er defineret af class precedence listen, som vi tog udgangspunkt i i denne diskusion. Ordningen af parameterspecialiseringslister, og dermed metoder, ud fra den leksikografiske ordning baseret på parameterspecialiseringsordninger, er værd at bide sig fast i. Dette betyder nemlig, at den første parameterposition i en metode er mere betydende end de efterfølgende. Dette er helt analogt til, at strengen abe er mindre end zebra, idet tegnet a er mindre en tegnet z. Hvis to metoders indbyrdes orden ikke kan afgøres via første parameterposition (altså hvis disse parameterspecializers er lig med hinanden) tager vi de efterfølgende parameterpositioner i betragtning (i rekusiv fortolkning, som sædvanlig ved leksikografisk ordning). Bemærk, at det i CLOS er muligt at påvirke, i hvilken rækkefølge parameterne skal indgå i den leksikografiske orden. Dette gøres i argument-precedence-order egenskaben, som kan angives i defgeneric definitioner. 169

8 Ordning af parameter specialiseringer. Defintion. PS1 <= PS2 hvis og kun hvis en af følgende tre tilfælde er opfyldt: 1. PS1 = C1 og PS2 = C2 og C1 <= C PS1 = (eql object) og PS2 = C2 PS1 = (eql object1) og PS2 = (eql object2) Parameter specialisering C1 og C2 betegner klasse navne. : (defmethod F ( (x A ) (y B) )... (defmethod F ( (x C ) (y D) ) I tilfælde 3 vil object1 og object2 være identiske (idet de to metoder, hvori PS1 og PS2 forekommer, begge er anvendelige). Kurt Nørmark, Aalborg Universitet 11/6/96 s. 170 Lad klasserne A, B, C og D være defineret som i hosstående klassehierarki. Relativt til kaldet (F c d), hvor d er en D-instans, og hvor c er en C instans, er begge af ovenstående metoder anvendelige. Hvad er deres indbyrdes ordning? Idet C <= A afgøres rækkefølgen af den første parameterposition. Derved bliver metode 2 mindre generel end metode 1. C A B D 170

9 Standard metodekombination i CLOS: Roller og aktivering. Primære metoder Vigtigste metode Kan bestemme returværdien af en generisk funktion. Default metode rolle. Hjælpemetoder Before metods Udføres før primær metode. Kun sideeffekter. After methods Udføres efter primær metode. Kun sideeffekter. Around methods Kald mest specifikke around metode. Udføres istedet for before+primær+after metoder. Afgør værdien af generisk funktion. Kan eksplicit kalde before+primær+after metoder. Kald alle anvendelig before metoder Mest specifikke først. Kald mest specifikke primær metode Kald alle anvendelige after metoder. Mest specifikke sidst. ( call-next-method) virker på: around metoder primær metoder Kurt Nørmark, Aalborg Universitet 11/6/96 s. 171 Kombinationen af before-metoder, primære metoder og after-metoder i den inderste stiplede ramme ovenfor, kaldes core frameworket. Call-next-method er CLOS primitivet, hvormed man kan lave imperativ (direkte programmørstyret) metodekombination. Primitivet skal benyttes fra around metoder for at aktivere core-frameworket. Med andre ord, det er nødvendigt at aktivere callnext-method fra en eller anden around metode for at aktivere before- primære- og aftermetoder i det mønster, vi diskuterer ovenfor. Mere præcist beskrevet sker der følgende ved kald af call-next-method: Fra en around metode: En around metode aktiverer den around methode, der er den næstmest specifikke around metode, hvis en sådan findes. Fra en around metode, hvortil der ikke findes en mere generel, anvendelig around metode: Denne around metode aktiverer core frameworket. Fra en primær metode: Den mest specikke primære metode aktiverer den næstmest specifikke primære metode. Se endvidere afsnittet Standard Method Combination side 1-29 i rapporten, som giver kort og klar besked om ovenstående. 171

10 Standard metodekombination: et generelt eksempel. + B + A C D Class precedence list af klassen H: H < E < F < B < G < C < D < A + E F G Signaturer: Primær + After H Before Around resultat resultat H E B D C A G B Around Before Primær After Kurt Nørmark, Aalborg Universitet 11/6/96 s. 172 På denne slide antages, at metoder er knyttet til en enkelt klasse i klassehierarkiet givet ovenfor. Dette kan opnåes ved kun at specialisere ét af de påkrævede parameter i de metoder, som vi har antydet. Vi antager også, at alle de pågældende metoder er anvendelige. Glem alt om multimetoder i forhold til dette eksempel. 172

11 Standard metodekombination: trekant eksempel. (defmethod draw ((tri triangle)) "tegner trekantens tre linier") (defmethod draw :after ((tri isoceles)) "tegner indikeringer af to lige lange sider") (defmethod draw :after ((tri right)) "tegner indikeringer af ret vinkel") (defmethod draw :after ((tri equilateral)) "tegner indikering på én side") Kurt Nørmark, Aalborg Universitet 11/6/96 s. 173 Tegning af ligebenet retvinklet trekant Class prec list: ligebenet-ret ligebenet retvinklet trekant. Primær metode tegner trekant Retvinklets after metode tegner vinkel mærke. Ligebenets after metode tegner side mærker. (draw (make-instance 'isocelles-right :side 5) ) 173

12 Standard metodekombination: flere eksempler. Aktive værdier: (Defclass A () ((value :accessor y))) (defmethod y :after ((x A)) "Denne metode aktiveres efter 'value' er aflæst") (defmethod (setf y) :after (new-value (x A)) "Denne metode aktiveres efter 'value' er overskrevet") Doven tilstand : (defclass A () ((state :accessor acc :documentation "state er enten beregnet eller pt. uberegnet"))) (defmethod acc :before ((x A)) (if (not (calculated (slot-value x 'state))) (setf (slot-value x 'state) "den rigtige værdi"))) Kurt Nørmark, Aalborg Universitet 11/6/96 s. 174 En aktiv værdi er et objekt, hvortil man kan knytte handlinger (procedurer), som bliver aktiveret når værdien manipuleres. Mere konkret, kan man arrangere at der aktiveres en handling når værdien aflæses og/eller når værdien overskrives. Det vises i det øverste eksempel, hvordan dette kan arrangeres i CLOS ved brug af after metoder i standard metodekombination. I det nederste eksempel illustreres det hvordan en before metode i standard metodekombination kan realisere doven tilstand. Med doven tilstand mener vi en tilstand, som først bliver beregnet når der er behov for den. I det konkrete eksempel vil before metoden beregne tilstanden på en eller anden måde lige inden den primære metode tilgår den. Jeg har selv brugt netop det ovenstående mønster i en anvendelse, hvor jeg havde en mængde knuder lagret på filer. Nogle knuder er læst op fra filerne, andre er ikke. Hvis jeg tilgår en knude, hvis indhold er på en fil, vil en before metode indlæse filen inden knuden tilgåes via primær metoden. 174

13 Simpel metodekombination. + and append list max min nconc or progn Semantikken af simple indbyggede metodekombinationer: Lad (F a1 a2... an) være et generisk funktionskald. Lad operator være den benyttede metodekombination i F. operator er en af + and append list max min nconc or progn : 1. Around metoder kaldes som ved standard kombination. 2. Flg. kald udføres: (operator (M1 a1 a2... an)... (Mk a1 a2... an)) hvor M1, M2,... Mk er alle anvendelige primære metoder for F Gør kun brug af around og primære metoder Before og after metoder kan (og må) ikke bruges. Kurt Nørmark, Aalborg Universitet 11/6/96 s. 175 Ovenstående viser en metodekombination, som er meget simplere en standard metodekombination. Ideen er at se bort fra before og after metoder, men til gengæld at kombinere alle primære metoder ved brug af en nærmere angivet Common Lisp funktion. Det angives i defgeneric formen, om der skal anvendes en af de simple metodekombinationer, vi diskuterer på denne side, om der skal anvendes standard metodekombination, eller om der skal anvendes en helt tredie metodekombination. Ordningen af operatorerne i formen (operator (M1 a1 a2... an)... (Mk a1 a2... an)) er most-specific-first af de indgående metoder. 175

14 Programmør-definerede metodekombinationer. 1. Simpel og begrænset define-method-combination Brugeren kan selv definere nye metode-kombinationer, der svarer til simple, indbyggede metodekombinationer. 2. Generel og kompliceret define-method-combination definere hvilke metode-roller, som metode-kombinationen understøtter. definerer om der skal være mindst én metode i en rolle. definerer en Lisp-form, som skal udgøre den effektive metode. Den effektive metode har adgang til: Metoderne i de enkelte roller. Argumenterne, som den generiske funktion er kaldt med. Det generiske funktionsobjekt. Kurt Nørmark, Aalborg Universitet 11/6/96 s. 176 Vi vil ikke gå i detaljer med programmør definerede metodekombinationer på dette kursus. Der henvises til beskrivelsen af makroen define-method-combination i kapitel 2 af CLOS rapporten, som indeholder en flere-sidet beskrivelse af define-method-combination, inklusive eksempler. 176

15 Multimetoder og standard metodekombination: paint eksempel. (defgeneric paint (shape medium) :documentation paint shape on medium ) (defmethod paint ((shape rectangle) medium) (defmethod paint ((shape circle) medium) circle geometric-shape color-mixin rectangle color-circle color-rectangle (defmethod paint :before ((shape color-mixin) (medium plotter)) (set-color (color (shape)))) (defmethod paint :before ((shape geometric-shape) (medium output-medium)) (startup medium)) output-medium laser-witer screen plotter (defmethod paint :after ((shape geometric-shape) (medium plotter)) (advance-paper medium)) Kurt Nørmark, Aalborg Universitet 11/6/96 s. 177 Dette eksempel illustrerer både standard metodekombination og multimetoder. Tallene i klassehierarkierne angiver ordningen af superklasserne i de respektive klassedefinitioner. Vi antager at både color-mixin og geometric-shape (implicit) arver fra standard-object. Eksemplet viser to primære metoder, som hhv. udskriver et rektangel og en cirkel på et vilkårligt medium. Det ville naturligvis have været muligt at differentiere mellem medier også i primære metoder (men det har vi ikke gjort her). De to before metoder tager sig af forberedelserne til det egentlige arbejde, som jo altså udføres af en primær metode. Dette forberedende arbejde består hhv. i at starte apparatet på (fra en tænkt dvaletilstand -- ens for alle output medier), og at sætte farvesystemet op på plotteren i forhold til de farver, der måtte være brug for. Aftermetoden køre papiret frem, så plotteren er klar til næste udskrift. Eksempel: (paint my-color-rect plotter1). Vi antager, at my-color-rect er en instans af color-rectangle (som navnet også mere end antyder), at at plotter1 er en instans af en plotter. Class precedence list af klassen color-rectangle er color-rectangle, rectangle, geometric-shape, color-mixin, standard-object, t I så fald vil følgende metoder blive kaldt i denne rækkefølge: paint :before ((shape geometric-shape) (medium output-medium)) paint :before ((shape color-mixin) (medium plotter)) paint ((shape rectangle) medium) paint :after ((shape geometric shape) (medium plotter)) 177

16 Multimetoder: kongruens af trekanter. (defmethod congruent ((tri1 triangle) (tri2 triangle)) (defmethod congruent ((tri1equilateral) (tri2 right)) nil) (defmethod congruent ((tri equilateral) (tri2 equilateral)) (eql (side tri1) (side tri2)))... CLOS sorterer mængden af anvendelige metoder i henhold til parameter listens specificitet. Den mest specifikke (primære) metode udvælges. Kurt Nørmark, Aalborg Universitet 11/6/96 s. 178 Bemærk, at equilateral i vores sammenhæng betyder ligesidet. Ovenstående eksempel viser hvordan en række forskellige tilfælde af kongruens mellem to trekanter kan faktoriseres ud i multimetoder, der tager to trekantsparametre. Det ses, at i nogle tilfælde kan man med det samme melde om ingen kongruens (svar: nil). Man kan sammenligne ovenstående med en tabelstyret tilgangsvinkel. For hvert muligt par af trekantstyper kan vi naturligvis skrive en funktion, der afgør om det pågældende par er kongruente. I nogle tilfælde vil det være hensigtsmæssigt at kunne håndtere funktioner i to eller flere felter sammen. Multimetoder i CLOS tillader sammen med nedarvning i et klassehierarki netop dette. Nedenstående figur forsøger at illustrere denne pointe. Type arg 2 Type arg 1 178

17 Effektiv implementering af generiske funktioner. Ved definition og re-definition af en generisk funktion f og metoder i denne: I en inkrementel og interaktiv omgivelse kan det være for langsomt at foretage systematisk caching af effektive metoder efter hver definition af en funktion.» Udsæt mest muligt af denne caching til udførelsestidspunktet. Ved kald af generisk funktion f: (f a1 a2... an) Lokalisering af den effektive metode for f. Det er for langsomt at kombinere metoderne i den generisk funktion ved hvert kald.» Foretag mest mulig forudberegning og caching på funktionsdefinitionstidspunktet. Hvis hvert argument a i kan være af <= i forskellige typer, kan der findes <=. 1 <= <= n forskellige effektive metoder. Systematisk caching er derfor udelukket. Pragmatisk kompromis (balance mellem tid/plads og effektiv fnk. def/kald): En effektiv metode dannes generelt ved første kald, og memoiseres. Håndter ofte forekommende specialtilfælde mere effektivt, om muligt. Kurt Nørmark, Aalborg Universitet 11/6/96 s. 179 En effektiv implementation af generiske funktioner, i al deres rigdom, er naturligvis alfa og omega for et CLOS system. Vi vil ikke i dette kursus gå i dybden med dette emne, blot kradse lidt i overfladen af problemet. Bemærk den indbyrdes modstrid mellem hvilke bidrag der udføres på funktionsdefinitionstidspunkt, og hvilke bidrag der udføres på funktionskaldstidspunktet (i de to ønsker mærket med >>). Dette leder naturligt til en eller anden trade off mellem effektiv, incrementel programmeringsstil, og effektiv udførelse af et program. En mulig og typisk løsning er at anvende en hashtabel, som mapper klasser (eller tupler af klasser i tilfælde af multimetoder) til en effektiv metode. Problemet er at holde en sådan hashtabel opdateret i forhold til inkrementelle programændringer. Et andet problem (som omtalt ovenfor) er, at tabellen bliver så stor, at det næppe er realistisk at beregne den fuldt ud, fordi en sådan beregning tager tid, og resultatet fylder meget. Ved memoisering husker vi en allerede beregnet effektiv metode, således at den ikke skal genberegnes (kombineres mv.) ved kald på argumenter af samme typer (hvilket nok er mere typisk end man først skulle tro). Det forholder sig således at metode re-definition er forholdsvi let at håndtere effektivt på funktionsdefinitionstidspunkt. Dermed mener vi, at det er overkommeligt for de fleste funktioner (uden alt for mange parametre, og uden alt for mange hjælpemetder) at chace de forskellige effektive metoder. Men det kræver naturligvis lager. Redefinition af en klasse er langt mere problematisk. Hvis man ændrer på superklasserne af en klasse, ændres med ét slag anvendelighedsforholdet af alle metoder på alle subklasser af den berørte klasse. For højtplacerede klasser vil dette tage lang tid at håndtere. Lige så alvorlige problemer opstår hvis man ændrer (sletter, tilføjer, modificerer) slots i en klasse, idet CLOS jo forsøger at opdatere alle eksisterende objekter af den berørte klasse. (Dette så vi på i forrige kapitel). Litteratur: Efficient Method Dispatch in PCL af Gregor Kiczales og Luis Rodriguez, 1990 ACM Conference on Lisp and Functional Programming. 179

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

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

Objekt-orienteret programmering uden klasser: Self.

Objekt-orienteret programmering uden klasser: Self. Objekt-orienteret programmering uden klasser: Self. Sammenligning klasse-baseret og klasseløs programstrukturering. Basale forhold Singulære objekter Dynamisk nedarvning Variable i forhold til metoder.

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

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

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

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

Årsagen til fejl. Erkendelse af fejl. Håndtering af fejl.

Årsagen til fejl. Erkendelse af fejl. Håndtering af fejl. 9 Fejlhåndtering Årsagen til fejl Erkelse af fejl Håndtering af fejl Fejlerkelse og -håndtering i objekt-orienterede sprog Fejlerkelse og -håndtering i Eiffel Udbredelse af fejl i Eiffel Nuanceret fejlhåndtering

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

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

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

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

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

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

Læs mere

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

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

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

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

DM507 Algoritmer og datastrukturer

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

Læs mere

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

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

Forelæsning Uge 4 Torsdag

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

Læs mere

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave

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

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

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

Læs mere

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

It og informationssøgning Forelæsning december 2006 Jakob Grue Simonsen. Diverse emner af almen interesse

It og informationssøgning Forelæsning december 2006 Jakob Grue Simonsen. Diverse emner af almen interesse It og informationssøgning Forelæsning 12 6. december 2006 Jakob Grue Simonsen Diverse emner af almen interesse 1 Gemme objekter til filer I python skal en fil på disken åbnes, før man kan læse eller skrive

Læs mere

Forelæsning Uge 4 Torsdag

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

Læs mere

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

It og informationssøgning Forelæsning oktober 2006 Jakob Grue Simonsen. Klasser

It og informationssøgning Forelæsning oktober 2006 Jakob Grue Simonsen. Klasser It og informationssøgning Forelæsning 7 25. oktober 2006 Jakob Grue Simonsen Klasser Downey, Elkner & Meyers: Chapt. 12-14 Andersen & Simonsen: kap. 7 Vi har tidligere set, at Python tilbyder en række

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

SWC Elementer i klassedefinition

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

Læs mere

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af opgaverne:

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

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

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

DM507 Algoritmer og datastrukturer

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

Læs mere

Eksempel: Skat i år 2000

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

Læs mere

Forelæsning Uge 12 Torsdag

Forelæsning Uge 12 Torsdag Forelæsning Uge 12 Torsdag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning

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

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

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

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

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

Læs mere

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

Introduktion til Funktionsorienteret Programmering.

Introduktion til Funktionsorienteret Programmering. Introduktion til Funktionsorienteret Programmering. Sammenligning med det imperative paradigme Assignment kontra navnebinding. Iterative kontra rekursion. Introduktion til højereordensfunktioner. Evalueringsrækkefølge.

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

Forelæsning Uge 12 Mandag

Forelæsning Uge 12 Mandag Forelæsning Uge 12 Mandag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer Kursus nr. 02326. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne:

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 0205. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af

Læs mere

Multiparadigme Programmering

Multiparadigme Programmering Multi Programmering Repetition: De grundliggende r Systematisk karateristik. Paradigmesupplering. Symmetrisk multi programmering Leda eksempler på logikprogrammering kombineret med imperativ og funktionsorienteret

Læs mere

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

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

Læs mere

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

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

Læs mere

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. 22 Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. Indsættelse i hobe. Sletning af minimalt element i hobe. Repræsentation. 327

Læs mere

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

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

Læs mere

Manual til Groupcare: Indhold, formål og brug

Manual til Groupcare: Indhold, formål og brug Manual til Groupcare: Indhold, formål og brug Indledning Groupcare er en elektronisk, internetbaseret kommunikationsform som vi bruger i forbindelse med din DOL-uddannelse. Grundlæggende set er Groupcare

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

Ugeseddel 4 1. marts - 8. marts

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

Læs mere

Tree klassen fra sidste forelæsning

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

Læs mere

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

En liste, hvor der kun kan angives et svar. En dropdown menu, hvori kun et svar kan vælges

En liste, hvor der kun kan angives et svar. En dropdown menu, hvori kun et svar kan vælges Huskeseddel til uv-evaluering 1. Sådan oprettes en undersøgelse Klik på ikonet Surveys og dernæst det grønne plus Ny undersøgelse. Navngiv din undersøgelse og vælg under Basic options, om der skal være

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

DANMARKS TEKNISKE UNIVERSITET

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

Læs mere

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

Introduktion til funktioner, moduler og scopes i Python

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

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering Gråtonebilleder (som er lidt simplere end farvebilleder) Arrays Kan "opbevare" et antal objekter (som ArrayList) Fast (på forhånd kendt) antal elementer Afleveringsopgave:

Læs mere

TUNGE SKILLEVÆGGE PÅ FLERE LAG TRYKFAST ISOLERING. Input Betondæk Her angives tykkelsen på dækket samt den aktuelle karakteristiske trykstyrke.

TUNGE SKILLEVÆGGE PÅ FLERE LAG TRYKFAST ISOLERING. Input Betondæk Her angives tykkelsen på dækket samt den aktuelle karakteristiske trykstyrke. pdc/jnk/sol TUNGE SKILLEVÆGGE PÅ FLERE LAG TRYKFAST ISOLERING Indledning Teknologisk Institut, byggeri har for Plastindustrien i Danmark udført dette projekt vedrørende bestemmelse af bæreevne for tunge

Læs mere

Kom i gang med Course Tool 1.2

Kom i gang med Course Tool 1.2 Kom i gang med Course Tool 1.2 Indhold Indledning...2 Pris beregning...2 Anvendelse...2 Open Source...2 Anbefalinger...2 Installation...3 USB-Pen...3 Download Libre Office (Draw)...3 Indstil makrosikkerhed...4

Læs mere

Samspillet mellem databaser og kort styres af GeoCAD programmet GeoDB.

Samspillet mellem databaser og kort styres af GeoCAD programmet GeoDB. GeoCad modul GeoDB I GeoCAD er det muligt at koble relationsdatabase til GeoEDIT. Her igennem er det muligt at lagre forskellige oplysninger i databasen og koble disse oplysninger til objekter i kortet.

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

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

1 α K = A t, (SS1) n + g + δ eller: ln yt =lna t +

1 α K = A t, (SS1) n + g + δ eller: ln yt =lna t + Tag Med-Hjem-Eksamen Makroøkonomi,. Årsprøve Efterårssemestret 5 Udleveres mandag den. januar, 6, kl. 10. Afleveres onsdag den 4. januar, 6, senest kl. 10. på: Eksamenskontoret, Center for Sundhed og Samfund

Læs mere

DM13-1. Obligatorisk opgave E.05. Jacob Aae Mikkelsen

DM13-1. Obligatorisk opgave E.05. Jacob Aae Mikkelsen DM13-1. Obligatorisk opgave E.05 Jacob Aae Mikkelsen - 191076 26. september 2005 Indhold Analyse af problemstillingen........................ 2 Spørgsmål 1................................. 3 Spørgsmål

Læs mere

Det kunne godt se ud til at ikke-rygere er ældre. Spredningen ser ud til at være nogenlunde ens i de to grupper.

Det kunne godt se ud til at ikke-rygere er ældre. Spredningen ser ud til at være nogenlunde ens i de to grupper. 1. Indlæs data. * HUSK at angive din egen placering af filen; data framing; infile '/home/sro00/mph2016/framing.txt' firstobs=2; input id sex age frw sbp sbp10 dbp chol cig chd yrschd death yrsdth cause;

Læs mere

Design af IT-medier. Skriftlig prøve 27. august 1999. Alle skriftlige hjælpemidler er tilladt.

Design af IT-medier. Skriftlig prøve 27. august 1999. Alle skriftlige hjælpemidler er tilladt. Design af IT-medier Skriftlig prøve 27. august 1999 Varighed: Hjælpemidler: Bedømmelse: Besvarelse: Opgaver: 4 timer. Alle skriftlige hjælpemidler er tilladt. Karakter efter 13-skalaen. Alle ark skal være

Læs mere

BRUGER KURSUS RAMBØLL HJEMMESIDE

BRUGER KURSUS RAMBØLL HJEMMESIDE Til Forsyningsvirksomheder i Danmark Dokumenttype Brugervejledning Rambøll Hjemmeside Full Responsive Dato Oktober 2017 BRUGER KURSUS RAMBØLL HJEMMESIDE BRUGER KURSUS RAMBØLL HJEMMESIDE Revision 01 Dato

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

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål

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

Kursus navn: Indledende programmering Kursus nr. 02101

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

Læs mere

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur (struktur opbygget af et endeligt antal enkeltdele) blandt mange mulige. Eksempler:

Læs mere

26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler.

26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler. 26 Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler. Hvad er programverifikation? Bevisregel for 'tom kommando'. Bevisregel for assignment. Bevisregler for selektive

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

Programmering og Problemløsning, 2017

Programmering og Problemløsning, 2017 Programmering og Problemløsning, 2017 Martin Elsman Department of Computer Science University of Copenhagen DIKU September 27, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017 September

Læs mere

Fagets IT Introduktion til MATLAB

Fagets IT Introduktion til MATLAB Fagets IT Introduktion til MATLAB Mads G. Christensen mgc@kom.auc.dk Afdeling for Kommunikationsteknologi, Aalborg Universitet. MATLAB 2002 p.1/28 Kursusoversigt 1. Introduktion, matrix-indeksering, -operationer

Læs mere

Vejledning til opgraderet version af Danmarks Arealinformation

Vejledning til opgraderet version af Danmarks Arealinformation Vejledning til opgraderet version af Danmarks Arealinformation Følgende funktioner virker anderledes i HTML5-versionen end i Silverlight-versionen: 1) Vælg/tænd kortlag... 2 2) Tilføj kortlag fra Lagkatalog...

Læs mere

Crash Course i Programmering. HumTek, RUC

Crash Course i Programmering. HumTek, RUC Crash Course i Programmering HumTek, RUC Kursus mål At give en basal introduktion til programmering i sproget Processing At give et overblik over sprogets potentiale At have det sjovt :-) Kursus form Meget

Læs mere

3DS Max 9 og Mental Ray: Projekterfaring vedr. anvendelse af FG + GI og Ambient Occulusion. (samt brugen af FG, Photon og Shadow Map)

3DS Max 9 og Mental Ray: Projekterfaring vedr. anvendelse af FG + GI og Ambient Occulusion. (samt brugen af FG, Photon og Shadow Map) Indholdsfortegnelse: Projekt beskrivelse:...2 1): Out off the box rendering (FG Draft):...2 2): Rendering med FG-Draft og GI:...2 4): Rendering med FG Medium og GI (adv.setup):...3 5): Rendering af scene

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

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

Forelæsning Uge 4 Torsdag

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

Læs mere

Bjørn Grøn. Euklids konstruktion af femkanten

Bjørn Grøn. Euklids konstruktion af femkanten Bjørn Grøn Euklids konstruktion af femkanten Euklids konstruktion af femkanten Side af 17 Euklids konstruktion af femkanten Et uddrag af sætninger fra Euklids Elementer, der fører frem til konstruktionen

Læs mere

Løsning af møntproblemet

Løsning af møntproblemet Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet

Læs mere

Om binære søgetræer i Java

Om binære søgetræer i Java Om binære søgetræer i Java Mads Rosendahl 7. november 2002 Resumé En fix måde at gemme data på er i en træstruktur. Måden er nyttig hvis man får noget data ind og man gerne vil have at det gemt i en sorteret

Læs mere

Dannelse af PDF-dokumenter

Dannelse af PDF-dokumenter Dannelse af PDF-dokumenter Indhold Generere PDF-dokumenter... 2 Håndtering af PDF-dokumentet... 8 Hvordan indsætter man sidetal i PDF-dokumentet?... 8 Hvordan laver man bookmarks i PDF-dokumentet?... 8

Læs mere