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

Størrelse: px
Starte visningen fra side:

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

Transkript

1 10 Nedarvning I. Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Dynamisk binding og virtuelle operationer. Decentraliseret/centraliseret software arkitektur. bstrakte klasser. Nedarvning og genbrug. I denne forelæsning introduceres nedarvning og de vigtige begreber og mekanismer, der er knyttet til nedarvning. Denne forelæsning knytter sig ikke til et specielt sprog. Specielt er denne forelæsning ikke knyttet til Eiffel. I næste forelæsning vil vi se på, hvordan nedarvning understøttes i Eiffel, og vi vil se på nogle eksempel-programmer programmeret i Eiffel. I den tredie og sidste forelæsning om nedarvning vil vi se på, hvordan nedarvning og specifikation med logiske udtryk hænger sammen. Endvidere vil vi i denne forelæsning diskutere nedarvning fra mere end én klasse. 137

2 Udvidelse og specialisering (I). Der er ofte behov for at udvide en abstrakt datatype med nye egenskaber eller at redefinere eksisterende egenskaber til nye egenskaber. har alle 's egenskaber, plus nogle nye. Vi ønsker ikke i at skulle gentage eksisterende egenskaber fra. Vi ønsker at fastholde, at der eksisterer objekter, der kun har 's egenskaber. og operationer skal tilgås og anvendes på samme måde i instanser af. implementeres derfor som en ny klasse, der arver fra klassen. Udvidelse fører til specialisering af typen. Objekter af typen er også af typen. Objekter af typen er mere specifikke og detaljerede end objekter af typen. Som det diskuteres i af OOSC afspejler udvidelse og specialisering to forskellige perspektiver. Når vi taler om udvidelse, refererer vi de nye egenskaber, vi tillægger. Når vi taler om specialisering tænker vi på den delmængde af objekter, der kan siges at have disse udvidede (eller ændrede) egenskaber. Denne slide udtrykker nogle helt centrale ønsker til udvidelses- og specialiseringsmekanismen i objekt-orienterede programmeringssprog. Som vi vil se på næste slide, afspejles disse to syn i hhv. intension og ekstension. Disse begreber blev allerede introduceret i forelæsningen om abstrakte datatyper. 138

3 Udvidelse og specialisering (II). En klasse arver fra Intension() Extension() Intension() Extension() Intensionen Tilføjelse af nye egenskaber Udvidelse Extensionen Indsnævring af begrebet Specialisering Lad os minde om definitionerne på intension og extension: Intension : karakteristiske, påkrævede egenskaber. Extension : mængden af fænomener, som er dækket (beskrevet) af begrebet. Den fede oval betegner hhv. intension() og extension(). Her og i det følgende vil vi grafisk illustrere at arver fra ved den lille figur i øverste højre hjørne. emært at relationen mellem og ikke er symmetrisk på nogen måde. I stedet for at have en pil på linien mellem og benytter vi konsekvent konventionen at superklasser (dem vi arver fra) er foroven, og subklasser (dem der arver) er nedenunder. 139

4 Eksempel: udvidelse og specialisering. bank-konto check-konto aktionær-konto gevinst-konto Egenskaber (Intension) ankkonto: + Kontoid Indestående Ejer Rentesats Checkkonto: ntal frie checks Indløs-check! Objekter (Extension) Mængden af checkkonti Mængden af bankkonti En instans af en checkkonto har alle bankkontoegenskaberne og alle de mere specifikke chekkontoegenskaber. Det er vigtigt at bide mærke i, at i et objekt af typen checkkonto, er disse egenskaber ligeværdige, og de kan bruges på samme måde. I en klient af checkkonto skal man således ikke tænke på, om denne eller hin egenskab oprindelig er programmeret i selve klassen checkkonto, i bankkonto, eller måske i en evt. superklasse til bankkonto. Disse observationer afspejler noget helt centralt i den objekt-orienterede programmeringsstil. 140

5 Klasser, nedarvning og klassehierarkier. Syntaktisk udvides en klasse, som arver fra en anden klasse, med angivelse af en eller flere superklasser. Én superklasse: enkelt nedarvning (single inheritance). Flere superklasser: multipel nedarvning (multiple inheritance). ngivelse af superklasser i klasse-definitioner definerer et klassehierarki: class end class inherit from end class C inherit from end class D inherit from C end C D Nedarvning af egenskaber fra en klasse til en klasse er et programmeringssprogligt modstykke til specialisering af begrebet til. Vi siger ofte, at vi specialiserer klassen, når vi angiver, at er en superklasse til klassen ; og vi siger, at der er et specialiserings/generaliseringsforhold mellem klasserne og. Tilsvarende er sammenhængen mellem en klasse og instanser af klassen et modstykke til klassificering/eksemplificering mellem begreber og fænomener. Hvis en klasse har en attribut (variabel) af typen, kan en instans af gennem attributnavnet referere til en instans af klassen. Dette definerer, som bekendt, en anden relation mellem klasser: klasse-klient forholdet. Det er vigtigt at holde disse sammenhænge mellem klasse-klasse og klasse-instans helt klar. Der henvises til forelæsningen om abstrakte datatyper, hvor nogle af ovennævnte "ord" er defineret og beskrevet. Opgave: Diskuter muligheden af at indføre generaliserings-specialiserings forholdet mellem klasser via klasse-klient forholdet. Mere konkret: Vi ønsker, at er en superklasse til. Kan vi arrangere dette ved i at erklære en variabel x af typen, således at vi stadig opnår en form for nedarvning af variable og routiner? 141

6 Instantiering og initialisering af klasser. med nedarvning. En klasse, der arver fra en anden klasse, instantieres som ét objekt, der har alle egenskaber fra og. C Initialisering af instanser af en subklasse. Problem: Hvordan kombineres initialiseringsoperationerne i subklasse og superklasser? En instans af klassen D D egenskaber C egenskaber D egenskaber Vi nøjes på denne slide med at identificere initialiseringsproblemet af attributter i superklassen. I næste forelæsning vil vi se på, hvordan det er løst i Eiffel. 142

7 Interfaces til klienter og og subklasser. er en subklasse af : Interfaces til klienter: 1. De egenskaber i, som klienter af kan anvende De egenskaber i +, som klienter af kan anvende. Interfaces mellem sub/superklasser: 2. De egenskaber i, som operationer i kan anvende De egenskaber i +, som operationer i subklasser kan anvende. På denne slide benytter vi notationen + for klassen for at understrege, at har egenskaberne i foruden sine egne. Som omtalt i en tidligere forelæsning er en klasse's interface den mængde af klassens egenskaber, som er synlig og brugbar udaftil i forhold til klassen. I princippet kan de fire illustrerede interfaces defineres helt uafhængigt af hinanden. I alle praktiske sammenhænge, og i kendte objekt-orienterede sprog, er der dog en kobling mellem de forskellige interfaces. Koblingen kan f.eks. være, at 1 er en delmængde af 2, eller at 1 er en delmængde af 3. Interfaces af typen 2 og 4 afspejler egenskaber defineret i superklasser, som er tilgængelige i subklasser. I nogle sprog er dette interface identisk med mængden af egenskaber i superklassen. Det er, med andre ord, ikke muligt i sådanne sprog at have noget privatliv i en klasse i forhold til superklasser. Der er meget stor variation fra sprog til sprog mht. til de faciliteter, der stilles til rådighed for definition af interfaces. 143

8 Statiske og dynamiske typer. Den statiske type af en variabel eller parameter er den type, hvoraf variablen eller parameteren er erklæret. Den dynamiske type af en variabel eller parameter er typen af det objekt, variablen eller parameteren refererer til. X: ; Y: ; X.create(); Y.create(); X har statisk type Y har statisk type X har dynamisk type Y har dynamisk type class end -- class inherit end -- --hvis lovligt: X := Y; Y := X X har dynamisk type Y har dynamisk type Skelnen mellem statisk og dynamisk type af en variabel eller parameter er meget vigtig for at kunne forstå det nært beslægtede emne: statiske kontra dynamisk binding og virtuelle operationer. Vi vender tilbage til dette på efterfølgende slides. Det er også muligt og nyttigt at tale om den statiske hhv. den dynamiske type af et udtryk. Via typeerklæringer af variable, operatorer og funktioners resultat kan man udtale sig om et udtryks statiske type. På næste slide vil vi definere under hvilke omstændigheder de to assignmentets nederst på denne slide er lovlige. 144

9 Polymorfi. "Polymorfi": mangeformethed Variable og parametre kan referere til objekter af mere end én type. Lad være en subklasse af. Typiske regler for assignment og operationskald: v := e ntag, at v har statisk type : v:. ssignmentet er lovligt i typemæssig forstand hvis den statiske type af e er en klasse, der er en subklasse til. f(e) ntag at f er en procedure eller funtion defineret som f(p: ). Kaldet er lovligt i typemæssig forstand hvis den statiske type af e er en klasse, der er en subklasse til. F.eks. lovlige, hvis e har statisk type. Polymorfi betyder som omtalt "mangeformethed". Med lidt andre ord kan man tænke på polymorfi som det at kunne "have eller antage forskellige former". Man kan naturligvis ikke give universelle regler for assignments og operationskald på tværs af programmeringssprog. De viste regler udmærker sig ved, at de kan checkes på det tidspunkt programmet oversættes. Årsagen til dette er, at der kun indgår statiske typer i reglerne. Dette er en stor fordel, idet man så undgår relativt kostbare checks på programmets udførelsestidspunkt. Lad os vende tilbage til de to assignments X := Y og Y:= X fra forrige slide. Ifølge reglen indført på denne slide er X := Y lovlig, idet den statiske type af Y (nemlig ) er en subklasse af den statiske type af X (nemlig ). Igen ifølge reglen er Y := X ulovlig. Årsagen er, at X s statiske type () ikke er en subklasse af Y s statiske type (). Når de to assignments forekommer i den viste rækkefølge, kan det føles restriktivt ikke at tillade Y:= X. Forskellige sprog har forskellige konventioner på dette punkt. Nogle sprog tillader Y := X, og disse sprog følger således ikke de regler, vi har formuleret på denne slides. Sådanne sprog må ty til typecheck på programmets udførelsestidspunkt. I forelæsningen "Nedarvning II" vender vi tilbage til disse ting (se slide "Typesammenlignelighed og reverse assignment attempt"). 145

10 Statisk og dynamisk binding. X: ; Y: ; X.create(); Y.create(); X := Y; X.op() op fra klassen eller fra klassen? class op () is do end end -- class inherit op () is do end end -- Dynamisk binding: Den dynamiske type af X er bestemmende for bindingen af op. Statisk binding: Den statiske type af X er bestemmende for bindingen af op. Hvis der anvendes statisk binding, kaldes op fra klassen i X.op(). Omvendt, hvis der anvendes dynamisk binding, kaldes op fra den specialiserede klasse i X.op(). I sprog med statiske typer (i programteksten) er det vigtigt, at anvendelse af dynamisk binding ikke svækker typesikkerheden. Sproget må derfor gennem de sproglige regler sikre, at uanset den dynamiske type af X, findes der en operation op, der kan anvendes. Man må ikke forveksle betegnelserne 'statisk binding' og 'dynamisk binding', som anvendt i objekt-orienteret sammenhæng, med 'statisk navnebinding' og 'dynamisk navnebinding', som defineret i forelæsningerne om grundlæggende begreber i programmeringssprog. (Sidstnævnte handler om, efter hvilken disciplin frie navne i en konstruktion bindes). 146

11 Dynamisk binding og virtuelle operationer. Problem: I hvilke situationer skal der anvendes dynamisk binding, og i hvilke skal der anvendes statisk binding? Forskellige løsninger: Programmør-bestemt. Egenskab ved operationer: Operationer, der "binder dynamisk" defineres som virtuelle. Sprog-bestemt Sproget anvender dynamisk (eller statisk) binding i alle situationer. Årsagen til, at vi har sat statisk binding i parantes nederst på sliden, er, at hvis der helt firkantet og én gang for alle skal vælges mellem statisk binding og dynamisk binding, så er dynamisk binding langt den mest nyttige og interessante. I den næste forelæsning, som primært handler om hvordan nedarvning finder sted i Eiffel, vil vi vende tilbage til, hvordan forskellige sprog takler dette problem. 147

12 Decentraliseret softwarearkitektur. procedure tilskriv_renter(k: bankkonto) begin if k.type = checkkonto then tilskriv_rente_checkkonto(k) elsif k.type = aktionærkonto then tilskriv_rente_aktionærkonto(k) elsif k.type = gevinstkonto then tilskriv_rente_gevinstkonto(k) else end Der er behov for eksplicit typediskrimination i programmet. Hver transaktionstype pr. operation kræver sit eget navn. Introduktion af en ny kontotype kræver globale ændringer i programmet. Introduktion af ny transaktion kræver lokale ændringer i programmet. k.tilskriv_rente bank-konto check-konto aktionær-konto gevinst-konto k: bank-konto Den dynamiske type af k bestemmer implicit, hvilken rentetilskrivningsform, der anvendes. Det samme operationsnavn kan anvendes på alle kontotyper. Introduktion af en ny kontotype kræver lokale ændringer i programmet. Introduktion af ny transaktion kræver globale ændringer i programmet. Det antages, at der findes en operation tilskriv_rente på alle typer af bankkonti i kontohierarkiet. Løsningen til venstre er en mulig konventionel løsning, givet vi ønsker at have een abstraktion, der tilskriver rente. Løsningen til højre er den naturlige objekt-orienterede løsning, som er centreret om dataabstraktion. Som man kan se, er den objekt-orienterede løsning "god", hvis man tilføjer en ny kontotype; den anden løsning er "god", hvis man tilføjer en ny operation på tværs af alle kontotyper. En "god" løsning i denne sammenhæng er karakteriseret ved, at man kan nøjes med at ændre lokalt for at gennemføre ændringen. I den objekt-orienterede løsning må man ændre globalt, hvis det kræves, at nye operationer defines på de enkelte kontotyper. Hvis en ny operation på kontotyperne kan udtrykkes ved hjælp af de allerede eksisterende operationer på kontotyperne, er den objekt-orienterede løsning dog stadigvæk "god". 148

13 bstrakte klasser (I). En klasse er en abstrakt klasse, hvis der findes operationer i klassen med en ikke-defineret krop. Sådanne operationer kan siges at være forudannoncerede. Forudannoncerede operationer i en abstrakt klasse skal defineres i subklasser af. Overordnede egenskaber af et begreb kan defineres i en abstrakt klasse. Definition af detaljerede egenskaber kan finde sted i subklasser, hvor der er mere detaljeret viden til stede. Det er muligt at specificere en forudannonceret operation med pre- og postbetingelser. Det er ikke muligt at lave instanser af en abstrakt klasse. En klasse, som ikke indeholder forudannoncerede operationer, vil vi omtale som en konkret klasse. 149

14 bstrakte klasser (II). P: Q: R: bstrakt klasse. forudannonceret operation fuldt ud defineret operation Q: bstrakt klasse. Q er fuldt ud defineret i. C P: S: Konkret klasse. P er fuldt ud defineret i C. S er en udvidelse af C i forhold til. Denne slide viser et hierarki af tre klasser; som arver fra, og C som arver fra. og er abstrakte klasser. Dog er "lidt mere konkret" end, idet operationen Q i er defineret fuldt ud. C er en konkret klasse, hvori både P og Q er fuldt ud definerede operationer. Endvidere er der kommet en ny operation S til. 150

15 Eksempel på anvendelse af abstrakte klasser. ankkonto Indsæt: Hæv: Tilskriv_rente: jourfør operation ajourfør ().. ẇhile not ajour do current.tilskriv_rente ajour := end end -- ajourfør Checkkonto Tilskriv_rente: andre egenskaber ktinærkonto Tilskriv_rente: andre egenskaber Gevinstkonto Tilskriv_rente: andre egenskaber Klassen bankkonto er, som det kan ses, en abstrakt klasse, idet klassen indeholder en operation, som kun er forudannonceret, men ikke defineret fuldt ud. Denne operation er tilskriv_rente, som ikke kan defineres på det generelle niveau, idet meningen af rentetilskrivningen antages at afhænge af typen af kontoen. Rentetilskrivning til en chekkonto afhænger f.eks. typisk af, hvor mange checks man har brugt i en given periode. Operationen ajourfør er tiltænkt at skulle føre en konto up-to-date, bl.a. med hensyn til tilskrivning af renter. Hvis det antages, at den eneste måde, ajourføringen afhænger af kontotypen på, er gennem rentetilskrivningen, kan vi programmere ajourfør på det generelle niveau. Gennem dynamisk binding vil ajourfør referere til "den rigtige" rentetilskrivningsteknik. Ovenstående er meget bemærkelsesværdigt. 151

16 Genbrug og nedarvning. Genbrugelighed af software: Tilpasning af eksisterende software frem for programmering af nyt. Klasser, organiseret i et klassehiearki, er velegnede komponenter til både brug og genbrug: rug: En klasse er lukket: Kan gemmes, oversættes og bruges af klienter. Genbrug: En klasse er åben: Kan tilpasses og udvides, uden at forstyrre klienter af den originale klasse. Kan bruges som superklasse til andre klasser. Meyer fører en diskussion om disse ting i i OOSC. Se også afsnit 2.3 i OOSC. 152

17 Terminologi. 1. er superklasse af (superclass) 2. er basisklasse for (base class) 3. er forgænger til (ancestor) 4. er forældre til (parent) Simula Smalltalk C++ Eiffel Eiffel 1. er subklasse af (subclass) 2. er afledt klasse af (derived class) 3. er efterkommer af (descendent) 4. er arving af (heir) Simula Smalltalk C++ Eiffel Eiffel Denne slide viser forskellig terminologi, der benyttes for relationerne mellem en klasse og en klasse, som arver fra. Vi vil tillade os i disse noter at bruge notationen i flæng og afhængig af hvilken sproglig kultur, vi diskuterer. Vi foretrækker dog den oprindelige Simula/Smalltalk terminologi (nok mere af gammel vane, end fordi det nødvendigvis er den mest klare måde at udtrykke sig på). Sammenlign den grafiske notation for og på denne slide med den tilsvarende på sliden "Udvidelse og specialisering (I)". Notationen på denne slide er naturlig, idet klasserne og er syntaktisk adskilte konstruktioner i programteksten. Den grafiske notation fra sliden "Udvidelse og specialisering (I)" giver derimod det bedste billede af objekterne, der instantieres ud fra klasserne hhv. Dette er den tilbagevendende skelnen mellem elementerne i en programbeskrivelse (klasse-beskrivelser) og elementer i en programudførelse (objekter). 153

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

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

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

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

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

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

Å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

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

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

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

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

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

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

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

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

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

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

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

METODER ARV KLASSER. Grundlæggende programmering Lektion 5 METODER KLASSER ARV Grundlæggende programmering Lektion 5 1 METODER Sekvenser af kode om samme emne 2 REPETITION Række af statements der udfører en handling Mindst én metode der hedder main Forskellen

Læs mere

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

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

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

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

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

Læs mere

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

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

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

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

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

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

Læs mere

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

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

SWC eksamens-spørgsmål. Oversigt

SWC eksamens-spørgsmål. Oversigt SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition

Læs mere

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

Sproget Rascal (v. 2)

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

Læs mere

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

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

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

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

Læs mere

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

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

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

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

Læs mere

Bits DM534. Rolf Fagerberg, 2012

Bits DM534. Rolf Fagerberg, 2012 Bits DM534 Rolf Fagerberg, 2012 Resume af sidst Overblik over kursus Introduktion. Tre pointer: Datalogi er menneskeskabt og dynamisk. Tidslinie over fremskridt mht. ideer og hardware. Algoritme er et

Læs mere

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

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

Læs mere

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

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

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

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

Læs mere

[FUNKTIONER] Hvornår kan vi kalde en sammenhæng en funktion, og hvilke egenskaber har disse i givet fald. Vers. 2.0

[FUNKTIONER] Hvornår kan vi kalde en sammenhæng en funktion, og hvilke egenskaber har disse i givet fald. Vers. 2.0 MaB Sct. Knud Gymnasium, Henrik S. Hansen % [FUNKTIONER] Hvornår kan vi kalde en sammenhæng en funktion, og hvilke egenskaber har disse i givet fald. Vers..0 Indhold Funktioner... Entydighed... Injektiv...

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

Moduler i Standard ML

Moduler i Standard ML Moduler i Standard ML Hans Hüttel December 2001 I løbet af datalogikurset har vi haft glæde af en hel række forskellige standardmoduler som f.eks. Math, Int, Real og String. Disse moduler kan, har vi set,

Læs mere

8 Specifikation med Logiske Udtryk.

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

Læs mere

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

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

Kommentar fra KMS til Specifikation af Serviceinterface for Person

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

Læs mere

Pointen med Funktioner

Pointen med Funktioner Pointen med Funktioner Frank Nasser 0. april 0 c 0080. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette er en

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

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

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

Læs mere

Kontraktbaseret Design. Anker Mørk Thomsen

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

Læs mere

Høringssvar vedr. Serviceinterface for Person

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

Læs mere

Errata pr. 1. sept Rettelser til Ypsilon 1. udgave, 1. oplag

Errata pr. 1. sept Rettelser til Ypsilon 1. udgave, 1. oplag Errata pr. 1. sept. 2009 Rettelser til Ypsilon 1. udgave, 1. oplag Rettelserne herunder er foretaget i 2. oplag af bogen. Desuden forekommer der mindre rettelser i 2. oplag, som ikke er medtaget her, da

Læs mere

Rettelser til Pilen ved træets rod

Rettelser til Pilen ved træets rod Rettelser til Pilen ved træets rod Hans Hüttel Pr. 12. juni 2003 Nedenstående rettelser er indsamlet af mig selv, Peter Poulsen, Martin Maach og ikke mindst Lars Schunk i løbet af foråret 2003. Simple

Læs mere

Hvad er Objekter - Programmering

Hvad er Objekter - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som

Læs mere

Lektion 6. Grundlæggende programmering i VR

Lektion 6. Grundlæggende programmering i VR Lektion 6 Grundlæggende programmering i VR Plan for i dag Simpelt FPS Triggerzones og animationer C# og objekt orienteret programmering Interfaces Generics Google Cardboard Video om VRs fremtid App til

Læs mere

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

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

Pointen med Differentiation

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

Læs mere

{ } { } {( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )}

{ } { } {( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )} Stokastisk eksperiment Et stokastisk eksperiment er et eksperiment, hvor vi fornuftigvis ikke på forhånd kan have en formodning om resultatet af eksperimentet. Til gengæld kan vi prøve at sige noget om,

Læs mere

Martin Geisler. Uge 49, 2001

Martin Geisler. Uge 49, 2001 Min dintprog-browser Martin Geisler Uge 49, 2001 Resumé Dette dokument beskriver tankerne bag min dintprog-browser, en browser skrevet i Java der skal kunne fortolke en mindre delmængde af HTML 4, kaldet

Læs mere

Noter til dm529. Jonas Nyrup. 11. november 2011

Noter til dm529. Jonas Nyrup. 11. november 2011 Noter til dm529 Jonas Nyrup 11. november 2011 Indhold 1 Kravdisciplinen: Kravmodellen og Indfangning af Krav 2 1.1 (ikke)-funktionelle krav...................... 2 1.2 Kravattributter...........................

Læs mere

15 Arrays og Lister samt Stakke og Køer.

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

Læs mere

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002

Databasesystemer. Databaser, efterår Troels Andreasen. Efterår 2002 Databaser, efterår 2002 Databasesystemer 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

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

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

Lær Python - Dag 4, modul 2 Objektorienteret programmering

Lær Python - Dag 4, modul 2 Objektorienteret programmering Lær Python - Dag 4, modul 2 Objektorienteret programmering Simon J. Larsen 28. oktober 2017 Institut for Matematik og Datalogi Metoder Metoder Indtil videre har vi kun brugt objekter til at gemme værdier.

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

Forelæsning Uge 5 Mandag

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

Læs mere

Forelæsning Uge 2 Torsdag

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

Læs mere

01017 Diskret Matematik E12 Alle bokse fra logikdelens slides

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

Læs mere

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

Metodehåndbog. Begrebsmodeller, Informationsmodeller og Begrebsdefinitioner. Udarbejdet i fællesskab mellem Udbetaling Danmark/KL/KOMBIT

Metodehåndbog. Begrebsmodeller, Informationsmodeller og Begrebsdefinitioner. Udarbejdet i fællesskab mellem Udbetaling Danmark/KL/KOMBIT Metodehåndbog Begrebsmodeller, Informationsmodeller og Begrebsdefinitioner Udarbejdet i fællesskab mellem Udbetaling Danmark/KL/KOMBIT Indhold Introduktion... 2 Begrebsmodeller, informationsmodeller og

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

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

10 Metodekombination og multimetoder i CLOS.

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

Læs mere

Forelæsning Uge 2 Torsdag

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

Læs mere

Forelæsning Uge 2 Torsdag

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

Læs mere

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

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

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

Læs mere

Forelæsning Uge 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

Tema. Dagens tema: Indfør centrale statistiske begreber.

Tema. Dagens tema: Indfør centrale statistiske begreber. Tema Dagens tema: Indfør centrale statistiske begreber. Model og modelkontrol Estimation af parametre. Fordeling. Hypotese og test. Teststørrelse. konfidensintervaller Vi tager udgangspunkt i Ex. 3.1 i

Læs mere

Gruppeteori. Michael Knudsen. 8. marts For at motivere indførelsen af gruppebegrebet begynder vi med et eksempel.

Gruppeteori. Michael Knudsen. 8. marts For at motivere indførelsen af gruppebegrebet begynder vi med et eksempel. Gruppeteori Michael Knudsen 8. marts 2005 1 Motivation For at motivere indførelsen af gruppebegrebet begynder vi med et eksempel. Eksempel 1.1. Lad Z betegne mængden af de hele tal, Z = {..., 2, 1, 0,

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

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater Design by Contract Bertrand Meyer 1986 Design and Programming by Contract Michael R. Hansen & Anne Haxthausen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design

Læs mere

Funktionsterminologi

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

Læs mere

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

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

Læs mere

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

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

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

Læs mere

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

Grafmanipulation. Frank Nasser. 14. april 2011

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

Læs mere

Funktionsterminologi

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

Læs mere

Oprids over grundforløbet i matematik

Oprids over grundforløbet i matematik Oprids over grundforløbet i matematik Dette oprids er tænkt som en meget kort gennemgang af de vigtigste hovedpointer vi har gennemgået i grundforløbet i matematik. Det er en kombination af at repetere

Læs mere

Patientlister. Tilføj / rediger eksisterende lister. VEJLEDNING Patientlister

Patientlister. Tilføj / rediger eksisterende lister. VEJLEDNING Patientlister Patientlister Tilføj / rediger eksisterende lister Patientlister benyttes til at holde styr på, hvilke patienter der f.eks. har fået lavet et implantat, skal have narkose eller på anden vis, skal figurere

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

Vejledning til udarbejdelse af jobfunktionsroller og tilknytning til brugersystemroller

Vejledning til udarbejdelse af jobfunktionsroller og tilknytning til brugersystemroller Vejledning til udarbejdelse af jobfunktionsroller og tilknytning til brugersystemroller Indhold 1. Introduktion... 2 1.1 Baggrund... 2 2. Adgangsstyring for brugervendte systemer... 3 2.1 Brugervendte

Læs mere

Maple. Skærmbilledet. Vi starter med at se lidt nærmere på opstartsbilledet i Maple. Værktøjslinje til indtastningsområdet. Menulinje.

Maple. Skærmbilledet. Vi starter med at se lidt nærmere på opstartsbilledet i Maple. Værktøjslinje til indtastningsområdet. Menulinje. Maple Dette kapitel giver en kort introduktion til hvordan Maple 12 kan benyttes til at løse mange af de opgaver, som man bliver mødt med i matematiktimerne på HHX. Skærmbilledet Vi starter med at se lidt

Læs mere