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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Casper Fabricius http://casperfabricius.com. ActiveRecord. O/RM i Ruby on Rails

Casper Fabricius http://casperfabricius.com. ActiveRecord. O/RM i Ruby on Rails Casper Fabricius http://casperfabricius.com ActiveRecord O/RM i Ruby on Rails Casper Fabricius Freelance webudvikler - casperfabricius.com 9 års erfaring med webudvikling 6 år med ASP/ASP.NET/C# 3 år med

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

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

Projekt - Visual Basic for Applications N på stribe

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

Læs mere

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

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

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

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

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

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

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

Dokumentation af programmering i Python 2.75

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

Læs mere

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

Programmering i C. Lektion 4. 5. december 2008

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

Læs mere

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

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

Løsning af skyline-problemet

Løsning af skyline-problemet Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle

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

Regulære udtryk og endelige automater

Regulære udtryk og endelige automater Regulære udtryk og endelige automater Regulære udtryk: deklarative dvs. ofte velegnede til at specificere regulære sprog Endelige automater: operationelle dvs. bedre egnet til at afgøre om en given streng

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

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

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

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

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

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

RSA Kryptosystemet. Kryptologi ved Datalogisk Institut, Aarhus Universitet

RSA Kryptosystemet. Kryptologi ved Datalogisk Institut, Aarhus Universitet RSA Kryptosystemet Kryptologi ved Datalogisk Institut, Aarhus Universitet 1 Kryptering med RSA Her følger først en kort opridsning af RSA kryptosystemet, som vi senere skal bruge til at lave digitale signaturer.

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

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

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

ISCC. IMM Statistical Consulting Center. Brugervejledning til beregningsmodul til robust estimation af nugget effect. Technical University of Denmark

ISCC. IMM Statistical Consulting Center. Brugervejledning til beregningsmodul til robust estimation af nugget effect. Technical University of Denmark IMM Statistical Consulting Center Technical University of Denmark ISCC Brugervejledning til beregningsmodul til robust estimation af nugget effect Endelig udgave til Eurofins af Christian Dehlendorff 15.

Læs mere

3. Om skalamønstrene og den indfoldede orden

3. Om skalamønstrene og den indfoldede orden Dette er den tredje af fem artikler under den fælles overskrift Studier på grundlag af programmet SKALAGENERATOREN (forfatter: Jørgen Erichsen) 3. Om skalamønstrene og den indfoldede orden Lad os begynde

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

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

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

GIS. Guide til indlæsning af data i ArcGIS herunder KMS-data fra internettet

GIS. Guide til indlæsning af data i ArcGIS herunder KMS-data fra internettet GIS Af Anders Bartholdy Guide til indlæsning af data i ArcGIS herunder KMS-data fra internettet Baggrundskort fra KMS er en rigtig god resurse der er tilgængelig via ArcGIS. Derfor starter vi med at gennemgå

Læs mere

Modern Concurrency Abstractions for C#

Modern Concurrency Abstractions for C# Modern Concurrency Abstractions for C# Nick Benton Luca Cardelli Cédric Fournet Presenter: Henrik Kragh-Hansen September 27, 2007 Motivation for concurrency Forbedring af concurrency Baggrundsinformation

Læs mere

Test af It-komponent

Test af It-komponent Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side

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

Kryptologi og RSA. Jonas Lindstrøm Jensen (jonas@imf.au.dk)

Kryptologi og RSA. Jonas Lindstrøm Jensen (jonas@imf.au.dk) Kryptologi og RSA Jonas Lindstrøm Jensen (jonas@imf.au.dk) 1 Introduktion Der har formodentlig eksisteret kryptologi lige så længe, som vi har haft et sprog. Ønsket om at kunne sende beskeder, som uvedkommende

Læs mere

Undersøgelser af trekanter

Undersøgelser af trekanter En rød tråd igennem kapitlet er en søgen efter svar på spørgsmålet: Hvordan kan vi beregne os frem til længder, vi ikke kan komme til at måle?. Hvordan kan vi fx beregne højden på et træ eller et hus,

Læs mere

LCD Character display Intro

LCD Character display Intro LCD Character display Intro Der findes flere typer af LCD karakter-displays, fra forskellige firmaer. Her er vist en type, der er blå. Pins: Nummer 1 fra venstre Her er vist en nærmere beskrivelse af de

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

Prepress Serigrafi Grafisk Tekniker Grundforløb. Opgave: Klistermærker i flere farver

Prepress Serigrafi Grafisk Tekniker Grundforløb. Opgave: Klistermærker i flere farver Grafisk Tekniker Grundforløb Opgave: Klistermærker i flere farver I denne opgave skal der skabes et antal klistermærker i flere farver. Temaet er frit. Husk at der i serigrafi skal laves ramme for hver

Læs mere

Opsætning af brugere og temaer i GIS4Mobile

Opsætning af brugere og temaer i GIS4Mobile Opsætning af brugere og temaer i GIS4Mobile Brugerne og deres adgang til data konfigureres gennem et webinterface, som nås via dette link: http://www.geosms.dk/g4m_websetup Grundlæggende skal det fremhæves

Læs mere

Object-Relational Mapping

Object-Relational Mapping Databaser for udviklere () Datamatiker TietgenSkolen Underviser: Allan Helboe 06-06-2010 Problemformulering Denne opgave er et forsøg på at beskrive problemerne der opstår ved anvendelsen af en relationel

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

Log-lineære modeller. Analyse af symmetriske sammenhænge mellem kategoriske variable. Ordinal information ignoreres.

Log-lineære modeller. Analyse af symmetriske sammenhænge mellem kategoriske variable. Ordinal information ignoreres. Log-lineære modeller Analyse af symmetriske sammenhænge mellem kategoriske variable. Ordinal information ignoreres. Kontingenstabel Contingency: mulighed/tilfælde Kontingenstabel: antal observationer (frekvenser)

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

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

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

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter

Læs mere

Datastrukturer (recap)

Datastrukturer (recap) Dictionaries Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data. Operationer: Datastrukturens egenskaber udgøres af de tilbudte operationer (API for adgang

Læs mere

Virkefeltsregler i Java

Virkefeltsregler i Java Virkefeltsregler i Java int i; int k; Sequence s; int j; What s in a name? Brian spillede blændende i søndags! Skolen ligger i Viby Ring til Kirsten og sig at... Et navn fortolkes i en kontekst og konteksten

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 1 (tretten) Eksamensdag: Tirsdag den 8. april 2008,

Læs mere

Call Recorder Apresa Brugermanual

Call Recorder Apresa Brugermanual Call Recorder Apresa Brugermanual Version. 1.100.11 Vidicode Pleje og vedligeholdelse: CR Apresa må ikke blive våd. Hvis den bliver våd, tør den omgående af med en blød, ren klud. Væsker kan indeholde

Læs mere

Statistikudtræk. 1 Introduktion

Statistikudtræk. 1 Introduktion Statistikudtræk MADS MENU: RAPPORT STATISTIK STATISTIKUDTRÆK (D.4.1.) Revideret 20-09-2010 1 Introduktion I MADS kan statistiske data trækkes ud via enten statistikudtræk eller perioderapporter. I statistikudtræk

Læs mere

Klik på menupunktet Format og herunder Units (eller skriv units på kommandolinien)

Klik på menupunktet Format og herunder Units (eller skriv units på kommandolinien) Kogebog til opsætning af standardtegning i AutoCAD RTS/HED side 1 Formål med standardtegning Når man åbner en ny tom tegning i AutoCAD, er den allerede fyldt med informationer om lag, målsætningsstandarder

Læs mere

PROC TRANSPOSE. SAS-tabellen - hensigtsmæssig lagring af data. Copyright 2011 SAS Institute Inc. All rights reserved.

PROC TRANSPOSE. SAS-tabellen - hensigtsmæssig lagring af data. Copyright 2011 SAS Institute Inc. All rights reserved. PROC TRANSPOSE SAS-tabellen - hensigtsmæssig lagring af data Copyright 2011 SAS Institute Inc. All rights reserved. Transponerede tabeller Brede eller smalle? Hvad: Brede tabeller har mange kolonner med

Læs mere

Evaluering af Soltimer

Evaluering af Soltimer DANMARKS METEOROLOGISKE INSTITUT TEKNISK RAPPORT 01-16 Evaluering af Soltimer Maja Kjørup Nielsen Juni 2001 København 2001 ISSN 0906-897X (Online 1399-1388) Indholdsfortegnelse Indledning... 1 Beregning

Læs mere

15. oktober. Maskine Udlejning. Jacob Weng, Jeppe Boese og Mads Anthony. Udlejningsvirksomhed. Roskilde Tekniske Gymnasium 3.4

15. oktober. Maskine Udlejning. Jacob Weng, Jeppe Boese og Mads Anthony. Udlejningsvirksomhed. Roskilde Tekniske Gymnasium 3.4 Maskine Udlejning 15. oktober 2010 Jacob Weng, Jeppe Boese og Mads Anthony Roskilde Tekniske Gymnasium Udlejningsvirksomhed 3.4 Indholdsfortegnelse Problemformulering:... 2 Planlægning:... 2 Analyse af

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet ksamen 06, side af sider anmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. ursusnavn: lgoritmer og datastrukturer ursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer

Læs mere