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

29 Opsamling af Objekt-orienteret Programmering.

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

Læs mere

Rename og redefine. Abstrakte klasser. Dynamisk binding.

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

Læs mere

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

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

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

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

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

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

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

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

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

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

Å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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[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

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

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

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

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

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

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

{ } { } {( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )} 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

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

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

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

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

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

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

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

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

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

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

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

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

Indholdsfortegnelse. BUANCO Kort layout C8win

Indholdsfortegnelse. BUANCO Kort layout C8win Indholdsfortegnelse Indholdsfortegnelse... 1 Software... 2 Notesblok/Notepad (Indbygget i Windows)... 2 C8win... 2 Opret en ny layout fil... 3 Tilføj indhold i en layout fil... 5 Kortlayout generelt...

Læs mere

Funktionel afhængighed

Funktionel afhængighed Databaser, efterår 2002 Funktionel afhængighed 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

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

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

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

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

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

Multiparadigme Programmering

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

Læs mere

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

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

OVERGANGS- OG OPBYGNINGSEFFEKTER

OVERGANGS- OG OPBYGNINGSEFFEKTER OVERGANGS- OG OPBYGNINGSEFFEKTER Kan PowerPoint ikke animere, kan programmet i stedet lave overgangs- og opbygningseffekter. Ikke mindst opbygningseffekter giver rige muligheder, for at lave særdeles avancerede

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

Assignment #5 Toolbox Contract

Assignment #5 Toolbox Contract Assignment #5 Toolbox Contract Created by: René Kragh Trine Randløv E mail address cph rk70@cphbusiness.dk 23 11 2014 1 Introduktion Dette dokument indeholder en vertikal kontrakt for et system som skal

Læs mere

Projekt 1.4 Tagrendeproblemet en instruktiv øvelse i modellering med IT.

Projekt 1.4 Tagrendeproblemet en instruktiv øvelse i modellering med IT. Projekt 1.4 Tagrendeproblemet en instruktiv øvelse i modellering med IT. Projektet kan bl.a. anvendes til et forløb, hvor en af målsætningerne er at lære om samspillet mellem værktøjsprogrammernes geometriske

Læs mere

1 KlassifikationStruktur

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

Læs mere

Parallelisering/Distribuering af Genetiske Algoritmer

Parallelisering/Distribuering af Genetiske Algoritmer Parallelisering/Distribuering af Genetiske Algoritmer Hvorfor parallelisere/distribuere? Standard GA algoritme Modeller Embarassing parallel Global (fitness evaluering) Island (subpopulation) Grid/Cellular

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

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

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

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

Læs mere

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

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

Læs mere

Introduktion til ActionScript, fortsat

Introduktion til ActionScript, fortsat Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling

Læs mere

Grafer og graf-gennemløb

Grafer og graf-gennemløb Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

Læs mere

Læseplan for valgfaget teknologiforståelse. (forsøg)

Læseplan for valgfaget teknologiforståelse. (forsøg) Læseplan for valgfaget teknologiforståelse (forsøg) Indhold Indledning 3 Trinforløb for 7.- 9. klassetrin 4 Design 4 Programmering 5 Indledning Valgfaget teknologiforståelse er etårigt og kan vælges i

Læs mere

Klasse 1.4 Michael Jokil 03-05-2010

Klasse 1.4 Michael Jokil 03-05-2010 HTX I ROSKILDE Afsluttende opgave Kommunikation og IT Klasse 1.4 Michael Jokil 03-05-2010 Indholdsfortegnelse Indledning... 3 Formål... 3 Planlægning... 4 Kommunikationsplan... 4 Kanylemodellen... 4 Teknisk

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

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

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

Læs mere

Grafer og graf-gennemløb

Grafer og graf-gennemløb Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

Læs mere

Kapital- og rentesregning

Kapital- og rentesregning Rentesregning Rettet den 28-12-11 Kapital- og rentesregning Kapital- og rentesregning Navngivning ved rentesregning I eksempler som Niels Oles, hvor man indskyder en kapital i en bank (én gang), og banken

Læs mere

Begreber og principper Arkitekturframeworket PCMEF. Det er softwarearkitekturen der gør den store forskel mht.

Begreber og principper Arkitekturframeworket PCMEF. Det er softwarearkitekturen der gør den store forskel mht. Softwarearkitektur Begreber og principper Arkitekturframeworket PCMEF Arkitekturdesignmønstre Indledning Det er softwarearkitekturen der gør den store forskel mht. Forståelighed, dvs hvor let det er at

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

Use cases... 3. IT Systemer... 3. Generelt Om IT Systemer og snitflader... 3. Generelt Oprette IT System... 5

Use cases... 3. IT Systemer... 3. Generelt Om IT Systemer og snitflader... 3. Generelt Oprette IT System... 5 USE CASES INDHOLDSFORTEGNELSE Use cases... 3 IT Systemer... 3 Generelt Om IT Systemer og snitflader... 3 Generelt Oprette IT System... 5 Generelt Oprette IT System Synlighed, applikationstyper og forretningstype...

Læs mere

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning:

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning: Introduktion til EA3 Mit navn er Marc de Oliveira. Jeg er systemanalytiker og datalog fra Københavns Universitet og denne artikel hører til min artikelserie, Forsimpling (som også er et podcast), hvor

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

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

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

Læs mere

Affine rum. a 1 u 1 + a 2 u 2 + a 3 u 3 = a 1 u 1 + (1 a 1 )( u 2 + a 3. + a 3. u 3 ) 1 a 1. Da a 2

Affine rum. a 1 u 1 + a 2 u 2 + a 3 u 3 = a 1 u 1 + (1 a 1 )( u 2 + a 3. + a 3. u 3 ) 1 a 1. Da a 2 Affine rum I denne note behandles kun rum over R. Alt kan imidlertid gennemføres på samme måde over C eller ethvert andet legeme. Et underrum U R n er karakteriseret ved at det er en delmængde som er lukket

Læs mere

Punktmængdetopologi. Mikkel Stouby Petersen. 1. marts 2013

Punktmængdetopologi. Mikkel Stouby Petersen. 1. marts 2013 Punktmængdetopologi Mikkel Stouby Petersen 1. marts 2013 I kurset Matematisk Analyse 1 er et metrisk rum et af de mest grundlæggende begreber. Et metrisk rum (X, d) er en mængde X sammen med en metrik

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

Brugervejledning Joomla

Brugervejledning Joomla Brugervejledning Joomla Denne brugervejledning vil guide dig gennem de funktioner, som du skal bruge for at redigere indhold på dit website. Indholdsfortegnelse LOG- IN:... 2 OPRET ARTIKEL:... 3 INDSÆT

Læs mere

Real-time programming safety in Java and Ada

Real-time programming safety in Java and Ada Real-time programming safety in Java and Ada Bo Sandén Presenter: Thomas Bøgholm 25. oktober 2007 Forfatteren Artiklen Synkroniserings Begreber Bo Sandén Professor på Colorado Technical University Beskæftiger

Læs mere

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

JavaScript. nedarvning.

JavaScript. nedarvning. JavaScript er et sprog, der kan give en hjemmeside mere funktionalitet og gøre den interaktiv, så den reagerer på læsernes handlinger. CGI (Common Gateway Interface) har hidtil været de protokoller, man

Læs mere

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

1. Intoduktion. Undervisningsnoter til Øvelse i Paneldata

1. Intoduktion. Undervisningsnoter til Øvelse i Paneldata 1 Intoduktion Før man springer ud i en øvelse om paneldata og panelmodeller, kan det selvfølgelig være rart at have en fornemmelse af, hvorfor de er så vigtige i moderne mikro-økonometri, og hvorfor de

Læs mere