12 Nedarvning III. Noter. Multipel nedarvning. Nedarvning og assertions. PS1 -- Nedarvning III. Kurt Nørmark, Aalborg Universitet, 1994.

Størrelse: px
Starte visningen fra side:

Download "12 Nedarvning III. Noter. Multipel nedarvning. Nedarvning og assertions. PS1 -- Nedarvning III. Kurt Nørmark, Aalborg Universitet, 1994."

Transkript

1 12 Nedarvning III. Multipel nedarvning. Nedarvning og assertions. 169

2 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 en egenskab i både klassen A og. c er en instans af klassen C. c.x : x fra A eller x fra? Navnesammenfaldsproblemet: Hvilken egenskab refererer x til i C? Kombinationsproblemet: Kan x fra A og kombineres i C? Selektionsproblem: Kan man fra C vælge mellem x fra A eller? Replikationsproblemet: Ønsker vi to x-er i C? Når vi taler om navnesammenfald som et problem er det ud fra en filosofi om, at et navn kun kan referere til én egenskab (én routine og/eller én attribut). Hvis flere engenskaber har samme navn er det tvetydigt, hvilken egenskab vi egentlig mener. En alternativ filosofi består i, at vi refererer til begge (alle) egenskaber i en eller anden kombination. Kunststykket er naturligvis så at finde ud af, hvordan man generelt, eller for bestemte slags egenskaber, kan danne kombinationer. Vi vil senere i denne forelæsning vende tilbage til kombinationsproblemet. 170

3 Gentagen nedarvning. A A C Direkte gentagen nedarvning Man arver to eller flere gange fra den samme klasse. Forekommer i Eiffel hvis man ønsker at replikere en attribut i A. Forekommer også hvis man ønsker både at redefinere og rename en feature fra A. A D Indirekte gentagen nedarvning Forekommer meget ofte i Eiffel, uden at man er bevidst om det, eksempelvis med A som ANY. Man ønsker meget sjældent at replikere egenskaberne i A En klasse kan ikke arve direkte eller indirekte fra sig selv. Gentagen nedarvning kaldes i den engelske Eiffel litteratur for repeated inheritance. På den næste slide vil vi set på et praktisk forekommende eksempel på direkte gentagen nedarvning i Eiffel. Normalt anvender vi ikke pile når vi illustrerer nedarvning grafisk. Der er en implicit orientering, således at superklasser altid er øverst, og subklasserne er nedenunder. Nederst på denne slide illustrerer vi, at nedarvning fra sig selv er forbudt. Så der er altså grænser

4 Rename og redefine idiom i Eiffel. Situation: Operationen f er defineret i klassen A. A f f, g Operationen f redefineres i. 's operation f skal kalde A's operation f. g er det nye navn for f fra A. f i redefinerer f fra A. f i kalder gennem navnet g f fra A. class inherit A rename f as g end inherit A redefine f select f end feature f(...) is do... g(...)... end --f end Denne slide viser en sproglig udtryksform, der er så typisk, at vi kalder det et idiom. Et idiom er en (ikke teknisk) betegnelse for en typisk sproglig udtryksform, Det beskrevne idiom er et, man efterhånden tilegner sig, uden nødvendigvis ved hver anvendelse at tænke dybt over, hvad man egentlig udtrykker. Gennem gentagen nedarvning fra A kan vi både rename og redefinere operationen f. Derved kan den redefinerede f i kalde g, som jo altså er den feature, vi i A kalder f. Select er en mekanisme, der i Eiffel kun anvendes i forbindelse med gentagen nedarvning. Den fortæller generelt hvilken version af f der skal være gældende, i tilfælde af dynamisk binding. Interesserede læsere henvises til 11.6 og følgende afsnit i Eiffel the Language. 172

5 Eksempel på anvendelse af multipel nedarvning (1). bankkonto bankkonto_med_transaktions_historie checkkonto gevinstkonto bankkonto checkkonto transaktions-historie gevinstkonto checkkonto_med_historie gevinstkonto_med_historie Denne slide viser igen et klassehierarki for forskellige bankkonti. Klassen bankkonto_med_transaktions_historie udvider klassen bankkonto med en hukommelse, hvor hver enkelt transaktion på kontoen registreres. Dette kan f.eks. senere bruges som basis for kontoudtog. På den nederste del af illustrationen er vist, hvordan transaktionshistorien er faktoriseret ud og mixet sammen med de to forskellige kontotyper ved brug af multipel nedarvning. Det giver formodentlig ikke mening at instantiere transaktions_historie uden en eller anden bankkonto. På denne og de næste slides er de super-subklasse relationer, der repræsenterer specialisering tegnet med fede linier. Andre anvendelser af super-subklasse relationen er tegnet med tynde linier. 173

6 Eksempel på anvendelse af multipel nedarvning (2). Et hierarki af trekantstyper. I hierarkiet af trekanter arver en ligebenet retvinklet trekant både fra ligebenede trekanter og fra retvinklede trekanter. En ligebenet retvinklet trekant er både en ligebenet trekant og en retvinklet trekant. emærk forskellen mellem trekanteksemplet og bankkontoeksemplet fra forrige slide. Vi kan ikke på samme måde sige, at en checkkonto med historie er en checkkonto og en transaktionshistorie. 174

7 Eksempel på anvendelse af multipel nedarvning (3). Problem: Der findes ikke et oplagt globalt sted i et Eiffel program, hvor delte definitioner kan beskrives. Løsning: Konstanter og delte objekter (i termer af "once funktioner") defineres i en klasse, f.eks. i klassen KONSTANTER. Alle klasser, som har brug for adgang til konstanterne og de delte objekter, arver fra KONSTANTER. C KONSTANTER To anvendelser af multipel nedarvning: C er en specialisering af ("C er en "). KONSTANTER er blot gjort tilgængelig for C Vi har i kapitlet "asal objekt-orienteret programmering II" diskuteret, hvordan man kan definere konstanter i Eiffel. I denne sammenhæng introducerede vi de såkaldte oncefunktioner, som også omtales på denne slide. Sammenlign problemet, som rejses på denne slide, med det tilsvarende problem, og ikke mindst den oplagte løsning, i Pascal og de fleste andre sprog. Løsningen er naturligvis at placere definitionerne, som vi ønsker at dele, på et globalt tilgængeligt sted i programmet. I Pascal er dette sted på det yderste scopeniveau; de fleste sprog har et sådant globalt sted. Men Eiffel har ikke. Filosofien i Eiffel er den, at mange definitioner et sådant sted kan sænke program-genbrugsværdien. Man kan ikke løsrive dele af programmet, og flytte disse til et andet sted uden også at flytte de delte programdefinitioner (fra det globale sted) med. 175

8 Eksempel på anvendelse af multipel nedarvning (4). Fornuftsægteskab. Stack[T] Array[T] Fixed_stack[T] Stack er en abstrakt klasse, som ikke indeholder repræsentationsbeslutninger. Fixed_stack er en konkret klasse Arver den noble funktionaliet fra Stack. Arver den substantielle funktionaliet fra Array. Dette fornuftsægteskab mellem på den ene side den fornemme Stack, som har en række fine egenskaber på facaden, men er tom inden i og på den anden side det solide Array, som har en række primitive egenskaber uden at vide, hvordan de kan anvendes på et højere plan er beskrevet nærmere i OOSC afsnit

9 Anvendelser af multipel nedarvning. Opsamling. "egrebsmæssig sund multipel nedarvning". Specialisering af to klasser, som har overlappende ekstensioner. Umiddelbar tilgang til nogle definitioner. Når man har behov for at stille en samling af definitioner til rådighed for en klasse, f.eks. konstanter eller et matematisk funktionsbibliotek. Uniform aggregering. Uniform aggregering af egenskaber fra to eller flere klasser. "The mariage of convenience". I forbindelse med konkretisering af abstrakt klasse, hvor egenskaber fra en anden klasse er nødvendige. Denne slide opsamler nogle årsager til at benytte sig af multipel nedarvning. Der er vist eksempler på de fleste af disse ting på tidligere slides i dette kapitel. Hierarkiet af trekanter giver et eksempel på begrebsmæssig sund multipel nedarvning fordi de bagvedliggende begreber er naturlige specialiseringer af hinanden. Uniform aggregering er eksemplificeret gennem bankkonto eksemplet. Transaktionshistorie og f.eks. checkkonto egenskaber er slået sammen, og "summen af egenskaber" er gjort tilgængelig i klassen checkonto_med_historie. Denne aggregering er uniform, idet man ikke i checkonto_med_historie kan se, hvorfra den enkelte egenskab stammer. Der er måske kun en nuanceforskel mellem uniform aggregering og umiddelbar tilgang. Vi tænker dog på umiddelbar tilgang som en måde at stille definitioner (såsom funktioner og konstanter) tilrådighed, hvorimod uniform aggregering adderer substans (typisk attributter og tilhørende naturlige operationer). 177

10 Teknikker til løsning af navnesammenfalds-problemet På navne-anvendelsestidspunktet: Krav om eksplicit programmør-angivelse af det foretrukne navn. På klasse-definitionstidspunktet: Ændring af navne, som er i konflikt med hinanden, når der dannes en klasse med multiple superklasser. På klassedefinitions-tidspunktet: Fastlæggelse af dominans-rækkefølge af klasser Tilfældig (non-deterministisk) valg af navn, som indgår i en navnekonflikt. Forbud mod navnesammenfald. På denne slide opremser vi en række teknikker til løsning af navnesammenfaldsproblemet. Den første løsning er anvendt i C++. Den består i, at hver anvendelse af et tvetydigt navn skal "påklistres" (kvalificeres med) information, som gør det kvalificerede navn utvetydigt. I C++ skriver man klasse_navn::navn. Den anden løsning er Eiffel løsningen, ved brug af rename. Den tredie løsning kendes fra bl.a. CLOS, the Common Lisp Object System, hvor rækkefølgen af superklasserne i en klasse bliver afgørende for, hvilke egenskaber der kommer til at dominere. De to sidste løsninger kendes vist nok ikke fra noget (objekt-orienteret) programmeringssprog. 178

11 Kombinationsproblemet. Hvilke muligheder for kombination af egenskaber har man i tilfælde af navnesammenfald? Kombination af operationer (metodekombination) som har samme navn. Giver mening ved både enkelt og multipel nedarvning. A op op A op C op C D op E F op Imperativ metodekombination Eksplicit programmering af et samarbejde mellem op operationerne. Deklarativ metodekombination aseret på en abstraktion over et fast samarbejdsmønster. Kombination af operationer med samme navn i et nedarvningshierarki er et vigtigt emne i mange objekt-orienterede programmeringssprog. I tilfældet til venstre ovenfor (hvor C arver fra A) er det almindeligt at op i C påkalder sig op i A. Nogle sprog har specielle sproglige mekanismer der gør det enkelt at programmere dette (imperativ metodekombination). Det varierer fra sprog til sprog om det er op i C eller op i A som har kontrollen over kombinationen. I Eiffel bruger man rename-redefine idiomet (se tidligere i dette kapitel) til a berede vejen for en kombination af op fra A og C. Deklarativ metodekombination er først og fremmest kendt fra objekt-orienterede sprog i Lisp familien: Flavors og CLOS. Deklarativ metodekombination kan basere sig på, at alle metoder, som har samme navn, har tilknyttet en rolle. I CLOS har man bl.a. en before-rolle, en primær rolle og en after rolle. Én af de deklarative metodekombinationer forløber ved, at alle before-metoder kaldes, hvorefter den mest specifikke primære metode kaldes, hvorefter alle after-metoder kaldes. Alt dette er meget spændende! Interesserede læsere henvises til CLOS litteraturen for yderligere detaljer (f.eks. Keene: Object-Oriented Programming in Common Lisp, Addison Wesley). 179

12 egrebsmæssig sund multipel nedarvning. A C-objekter er af typen A. C D Der er et overlap mellem ekstensionen af typen og C (ditto mellem D og C). ' D' åde og D klasser med og uden C egenskaber er tilstede. Extension(A) Extension(') Extension(C) Extension(D') Extension() Extension(D) Denne slide tager udgangspunkt i, at hvis er en subklasse af A, da er ekstension() en delmængde af ekstension(a). Dette har vi diskuteret allerede i den første forelæsning om nedarvning. For begrebsmæssig sund multipel nedarvning vil vi kræve, at dette krav om indlejring af ekstensioner holder for alle de specialiserede klasser. Dette giver billedet som vist ovenfor. Eksemplet hvor multipel nedarvning anvendes i forbindelse med definition af et klassehierarki for trekanter repræsenterer, hvad vi kalder begrebsmæssig sund multipel nedarvning. 180

13 Multipel nedarvning med 'mixins'. M A C Egenskaberne i M virker som et krydderi på egenskaberne i hhv. og C. åde de krydrede og ikke-krydrede klasser er tilgængelige. ' C' Extension(M) Extension(A) Extension() Extension(C) I dette tilfælde er der ikke noget overlap mellem ekstensionerne af A og M. Det vil typisk være tilfældet, at der overhovedet ikke eksisterer instanser (objekter) af typen M. M kan kun meningsfuldt instantieres når det sker "sammen med andre klasser". Derfor har vi tegnet extension(m) med stiplede linier. Det vil endvidere typisk være sådan, at klasserne ' og C' er helt trivielle: De indeholder ikke andet end en inherit, M (hhv inherit C, M) samt evt. renamings. Visse steder i litteraturen kaldes sådanne klasser 'aggregate classes', fordi de udelukkende samler egenskaber fra to grene. Aggregeringen er dog speciel derved, at egenskaberne sidestilles; vi kan ikke se forskel på, om en egenskab kommer fra den ene eller den anden gren. Dette har vi tidligere omtalt som uniform aggregering. 181

14 Multipel og/eller gentagen nedarvning i Eiffel. class name inherit superclass-1 renamerenamings export export adaptations redefineredefinitions end;... superclass-n renamerenamings export export adaptations redefineredefinitions end creation list of creation proc feature features Feature tilpasning For hver superklasse er der mulighed for feature tilpasning. Ved navnesammenfald blandt superklassernes features kan man via renaming opnå sammenfald, hvis navnene på egenskaberne er ens (efter evt. renaming) replikation, hvis navnene er forskellige. end Ovenfor har vi vist en forholdsvis generel skabelon for en klasse der arver fra n superklasser. Der er mulighed for featuretilpasning for hver superklasse. Vi har nævnt rename, redefine og export tilpasningerne. Der findes to andre, som der dog er betydelig mindre behov for. Dette er select (som vi har set anvendt i forbindelse med rename-redefine idiomet tidligere i denne forelæsning). Det andet er undefine, hvormed man kan gøre en effektiv feature abstrakt (deferred). Se kapitel 10 i Eiffel the Language, som handler om feature tilpasning. Hvis man ikke har behov for featuretilpasning kan man helt springe det over. Derved får vi følgende mere simplere skabelon: class name inherit superclass-1; superclass-2;... superclass-n creation list of creation proc feature features end 182

15 Nedarvning og 'assertions' (I). Problemet: Hvordan virker specifikationen af en subklasse i forhold til specifikationen af superklassen? class A feature op(...) is require pre-op1 do... ensure post-op1 end; --op... invariant class-a-invariant end --class A??? class inherit A redefine op end feature op(...) is require else pre-op2 do... ensure then post-op2 end; --op... invariant class--invariant end --class Gældende prebetingelse i pre-op2 or else pre-op1 Gældende postbetingelse: i post-op2 and then post-op1 Effektiv klasseinvariant i : class--invariant and then effektiv(class-a-invariant) Pre- og postbetingelserne samt klasseinvarianten udgør en specifikation af den datatype, som klassen definerer. Denne slide beskriver hvordan gældende prebetingelse og gældende postbetingelse af eksporterede operationer dannes på tværs af nedarvning. Lad mig her minde om, at vi også har talt om effektive pre- og postbetingelser, nemlig som konjunktionen (and-ing) af de formulerede betingelser og klasseinvarianten. Dette var før nedarvning kom ind i billedet. Vi definerer nu den effektive prebetingelse af en operation op i en klasse som den gældende prebetingelse af op i and then den effektive klasseinvariant af. Vi har en ganske tilsvarende definition for postbetingelsen. Hvis en prebetingelse ikke angives eksplict i en redefineret operation (såsom i op i ), opfattes den som værende false. Dette er hensigtsmæssigt idet false or else pre-op-1 = pre-op-1 Tilsvarende, hvis en postbetingelse ikke angives eksplicit. I denne situation opfattes postbetingelsen som værende true. Sliden definerer også den effektive invariant af klassen, som konjunktionen af den formulerede invariant i og (rekursivt) den effektive invariant af A. I det viste tilfælde (hvor A ikke arver fra nogen klasse - i det mindste eksplict) kan vi betragte class-ainvariant som værende lig med den effektive class-a-invariant. Assertions i forhold til redefinition beskrives i afsnit af Eiffel the Language, hvortil der henvises for yderligere detaljer. 183

16 Nedarvning og 'assertions' (II). Prebetingelser: Prebetingelsen af op i er svagere end den tilsvarende prebetingelse af op i A. Postbetingelser: Postbetingelsen af op i er stærkere end den tilsvarende postbetingelse af op i A. Invarianter: En operation op i en specialiseret klasse må ikke forhindre at arbejdet bliver udført skal gøre arbejdet mindst lige så godt som en operation op i en mere generel klasse. Den effektive klasseinvariant i er stærkere end den effektive klasseinvariant i A. A op op Denne slide skal forstås som en forlængelse af den forrige slide. Operationen op redefineres altså i klassen i forhold til op i klassen A. På denne slide udtrykkes det, hvad det vil sige at specifikationen af en operation er en delspecifikation af en anden. Hvad betyder det at "A1 er stærkere end A2" når A1 og A2 er boolske udtryk? Vi definerer det til at betyde at A1 => A2. Tilsvarende betyder "A1 er svagere end A2" at "A2 er stærkere end A1", altså at A2 => A1. Der mindes om, at de pre- og postbetingelser, vi skriver i et Eiffel-program kaldes de formulerede pre- og postbetingelser. På forrige slide diskuterede vi de gældende prebetingelser og gældende postbetingelser, der tog pre- og postbetingelser i superklasser i betragtning. De gældende pre- og postbetingelser skal konjungeres med de effektive klasseinvarianter for at få de egentlige betingelser, som skal gælde før og efter operationsaktivering. Hvad angår klasseinvarianten skal vi kun angive styrkelsen af denne i subklassen. Med andre ord er den effektive invariant af lig med den effektive invariant af A and den formulerede invariant af. Herved bliver det automatisk således, at invarianten altid styrkes fra en klasse til en subklasse af denne. Man kan sige, at i Eiffel3 nedarves både pre- og postbetingelser og klasseinvarianten. De nedarvede assertions kombineres på forskellig vis med de formulerede assertions. I Eiffel2 var det kun klasseinvarianten, der blev nedarvet. 184

17 Eksempel på nedarvning og invarianter. Invariant-ligebenet: Invariant-generel, To sider er lige lange Invariant-generel : 3 sider og 3 vinkler, vinkelsum < epsilon Invarivant-retvinklet: Invariant-generel, Phytagoras Invariant-ligesidet: Invariant-ligebenet, tredie side har samme længde som de to andre. Invariant-retvinklet-ligebenet: Invariant-retvinklet, Invariant-ligebenet Hver invariant er navngivet på denne slide. Navnet er skrevet med fede typer. Den effektive invariant er angivet for hver trekantstype. Kursiverede udsagn er de udsagn, som knytter sig direkte til de enkelte typer af trekanter. De kursiverede udsagn er altså de formulerede invarianter af klasserne. emærk, at retvinklede, ligebenede trekanter ikke bidrager med egne udsagn. Disse trekanters invariant er konjunktionen af de to bidrag fra superklasserne. På næste slide har vi igen hierarkiet af trekanttyper samt operationen, der beregner arealet af de forskellige typer. Antag, at areal-operationen er defineret på alle trekantstyper. Til højre på næste slide er pre-betingelserne af disse areal-operationer givet. Areal-operationen har en parameter, der angiver den mindste usikkerhed, hvormed areal operationen kan kaldes. I takt med, at vi specialiserer trekantstyperne kan vi beregne arealet mere og mere eksakt. Dette betyder, at vi tillader mindre usikkerheder for mere specialiserede trekantstyper. Dette kan ses ved at sammenligne prebetingelserne. emærk at udsagnet "usikkerhed > 10e-7" er svagere end f.eks. udsagnet "usikkerhed > 10e-5". (Fortsættes) 185

18 Eksempel på nedarvning og pre-betingelser. t: generel_trekant; t1: ligebenet_trekant; t2: retvinklet_ligebenet_trekant; t1.create(...); t2.create(...); if some_condition then t := t1 else t:= t2 end;...t.areal(max_usikkerhed); areal(usikkerhed: real) pre_areal: usikkerhed > 10e-4 pre_areal: usikkerhed > 10e-7 pre_areal: usikkerhed > 10e-5 pre_areal: usikkerhed > 10e-7 pre_areal: usikkerhed > 10e-8 ( er startet nederst på forrige noteark) Usikkerhedsparameteren bliver anvendt i areal-operationernes postbetingelse på f.eks. denne måde: abs(result - rigtig-aral ) < usikkerhed. I dette eksempel vil det nok være svært at udtrykke rigtig-areal. emærk at ovenstående kursiverede udsagn (såsom usikkerhed > 10e-7 for retvinklede trekanter) er den formulerede prebetingelse: require else usikkerhed > 10e-7. Disjunktion (or-ing) med prebetingelsen af generelle trekanter efterlader denne formulerede prebetingelse uændret. I tilfældet retvinklet, ligebenet trekant, som arver fra ligebenet hhv. retvinklet trekant bliver den gældende prebetingelse (usikkerhed > 10e-5) or else (usikkerhed > 10e-7) or else (usikkerhed > 10e- 8) som jo koger ned til usikkerhed > 10e-8. En variabel t, som er af den mest generelle trekantstype, kan tilskrives trekanter af mere specifikke trekantsobjekter. Dette er polymorfi. Hvis arealoperationen anvendes på t vil den mest specifikkeareal operation blive anvendt i forhold til den dynamiske type af t. Dette er dynamisk binding. Filosofien er nu den, at prebetingelsen af operationer i specifikke klasser ikke må stille hindringer i vejen for, at de bliver kaldt. Ved at se på programmet (statisk betragtning) kan vi ikke vide om t er en ligebenet trekant eller en retvinklet ligebenet trekant. Meyer ønsker at anlægge den mest defensive betragtning: Selv om en meget specifik arealoperation skulle blive kaldt, må dens prebetingelse ikke være stærkere end generelle operationers prebetingelser. Med andre ord: specifikke operationer skal altid kunne kaldes, hvis deres mere generelle modstykker kan kaldes. Postbetingelsen af specifikke operationer kræves tilsvarende at være stærkere end postbetingelserne af de tilsvarende mere generelle operationer. Dette er nok et mere intuitivt rimeligt krav, og det svarer helt til stramningen af invarianten. Så det gør vi ikke mere ud af her. 186

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

Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Abstrakte klasser. 10 Nedarvning I. Udvidelse og specialisering. Klassehierarkier. Nedarvningsterminologi. Interfaces. Statiske og dynamiske typer. Polymorfi. Dynamisk binding og virtuelle operationer. Decentraliseret/centraliseret

Læs mere

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

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

Å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

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

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

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

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

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

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

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

Elementær Matematik. Mængder og udsagn

Elementær Matematik. Mængder og udsagn Elementær Matematik Mængder og udsagn Ole Witt-Hansen 2011 Indhold 1. Mængder...1 1.1 Intervaller...4 2. Matematisk Logik. Udsagnslogik...5 3. Åbne udsagn...9 Mængder og Udsagn 1 1. Mængder En mængde 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Å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

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

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

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

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

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

2 Funktionsorienteret programmering i Scheme.

2 Funktionsorienteret programmering i Scheme. 2 Funktionsorienteret programmering i Scheme. Lisp og Scheme. Listebegrebet i Lisp. Funktionsdefinition og lambdaudtryk. Navnebinding. Iteration. Første-klasses funktioner. Closures som klasser. Praktisk

Læs mere

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser.

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. 25 Sortering III. Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. Sortering ved fletning, med fire bånd, i én fase (balanceret fletning). Polyfase fletning med tre bånd. Generaliseret

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

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

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

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

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

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

Eksempel på den aksiomatisk deduktive metode

Eksempel på den aksiomatisk deduktive metode Eksempel på den aksiomatisk deduktive metode Et rigtig godt eksempel på et aksiomatisk deduktivt system er Euklids Elementer. Euklid var græker og skrev Elemeterne omkring 300 f.kr. Værket består af 13

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

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

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

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

Trekanter. Frank Villa. 8. november 2012

Trekanter. Frank Villa. 8. november 2012 Trekanter Frank Villa 8. november 2012 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 1 1.1

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

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

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

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

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

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

3. Om skalamønstrene og den indfoldede orden

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

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave

Læs mere

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

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

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

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42

t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42 Slide 1/42 Hvad er matematik? 1) Den matematiske metode 2) Hvad vil det sige at bevise noget? 3) Hvor begynder det hele? 4) Hvordan vælger man et sæt aksiomer? Slide 2/42 Indhold 1 2 3 4 Slide 3/42 Mængder

Læs mere

Greenfoot En kort introduktion til Programmering og Objekt-Orientering

Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot er et computer-program, som kan benyttes til at skrive andre computer-programmer, i et programmeringssprog kaldet Java.

Læs mere

Matematiske metoder - Opgaver

Matematiske metoder - Opgaver Matematiske metoder - Opgaver Anders Friis, Anne Ryelund 25. oktober 2014 Logik Opgave 1 Find selv på tre udtalelser (gerne sproglige). To af dem skal være udsagn, mens det tredje ikke må være et udsagn.

Læs mere

Kalkulus 2 - Grænseovergange, Kontinuitet og Følger

Kalkulus 2 - Grænseovergange, Kontinuitet og Følger Kalkulus - Grænseovergange, Kontinuitet og Følger Mads Friis 8. januar 05 Indhold Grundlæggende uligheder Grænseovergange 3 3 Kontinuitet 9 4 Følger 0 5 Perspektivering 4 Grundlæggende uligheder Sætning

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

Undersøgelser af trekanter

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

Læs mere

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

Et SML-program til at finde rødder i en kontinuert funktion

Et SML-program til at finde rødder i en kontinuert funktion Et SML-program til at finde rødder i en kontinuert funktion Hans Hüttel Ole Høgh Jensen 11 januar 2002 Indhold 1 Om denne tekst 1 2 Hvad er bisektion? 1 3 Specifikation af vores program 2 4 SML-versionen

Læs mere

Noter til Perspektiver i Matematikken

Noter til Perspektiver i Matematikken Noter til Perspektiver i Matematikken Henrik Stetkær 25. august 2003 1 Indledning I dette kursus (Perspektiver i Matematikken) skal vi studere de hele tal og deres egenskaber. Vi lader Z betegne mængden

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

t a l e n t c a m p d k Matematik Intro Mads Friis, stud.scient 27. oktober 2014 Slide 1/25

t a l e n t c a m p d k Matematik Intro Mads Friis, stud.scient 27. oktober 2014 Slide 1/25 Slide 1/25 Indhold 1 2 3 4 5 6 7 8 Slide 2/25 Om undervisningen Hvorfor er vi her? Hvad kommer der til at ske? 1) Teoretisk gennemgang ved tavlen. 2) Instruktion i eksempler. 3) Opgaveregning. 4) Opsamling.

Læs mere

Programmering og Problemløsning, 2017

Programmering og Problemløsning, 2017 Programmering og Problemløsning, 2017 Typer og Mønstergenkendelse Martin Elsman Datalogisk Institut Københavns Universitet DIKU 23. Oktober, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017

Læs mere

VisualDRG brugermanual

VisualDRG brugermanual VisualDRG brugermanual VisualDRG er en grafisk fremstilling af grupperingslogikken der bliver brugt i forbindelse med finansiering af sundhedsvæsnet, herunder mellemregional afregning og kommunal medfinansiering.

Læs mere

Forelæsning Uge 4 Torsdag

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

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Vinter 1998/99 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 16% Opgave 2 12% Opgave 3 10% Opgave

Læs mere

Forelæsning Uge 4 Torsdag

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

Læs mere

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

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger

Læs mere

How to do it on screen - 5

How to do it on screen - 5 TEGNINGER OG CLIPART Illustrationer kan bruges til at skabe grafisk brud i en tekst, men det er sjældent nødvendigt ved præsentationer, da tekstmængden på det enkelte dias børe være lille. Desuden kan

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

Database for udviklere. Jan Lund Madsen PBS10107

Database for udviklere. Jan Lund Madsen PBS10107 Database for udviklere Jan Lund Madsen PBS10107 Indhold LINQ... 3 LINQ to SQL og Arkitektur... 3 O/R designere... 5 LINQ Den store introduktion med.net 3.5 er uden tvivl LINQ(udtales link): Language-INtegrated

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

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

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel: Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra

Læs mere

Analyse, problemområde, anvendelsesområde

Analyse, problemområde, anvendelsesområde OOA&D, kap. 1-5 Fiktiv case Det supermarked I dagligt handler i, skal have et integreret kasse-, lagerstyrings- og EDI-system. Systemet skal gøre det muligt at sænke varebeholdningen uden at der kommer

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

Oversigt. Modellering.6. Begrebsmodellering. Begrebsapparat til OO. Fænomener og begreber. Objektorienteret modellering

Oversigt. Modellering.6. Begrebsmodellering. Begrebsapparat til OO. Fænomener og begreber. Objektorienteret modellering Oversigt Modellering Begrebsmodellering, UML og Java Begrebsapparat til objektorientering Begrebsopfattelser og -modellering Strukturer: specialisering, aggregering, associering Anvendes til organisering

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

Spilstrategier. 1 Vindermængde og tabermængde

Spilstrategier. 1 Vindermængde og tabermængde Spilstrategier De spiltyper vi skal se på her, er primært spil af følgende type: Spil der spilles af to spillere A og B som skiftes til at trække, A starter, og hvis man ikke kan trække har man tabt. Der

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl. 9.00 13.00 Opgave 1 (25%) Denne opgave handler om multiplikation af positive heltal.

Læs mere

Matematik for stx C-niveau

Matematik for stx C-niveau Thomas Jensen og Morten Overgård Nielsen Matematik for stx C-niveau Frydenlund Nu 2. reviderede, udvidede og ajourførte udgave Nu 2. reviderede, udvidede og ajourførte udgave Matema10k Matematik for stx

Læs mere

Lektion 3. Grundlæggende programmering i VR

Lektion 3. Grundlæggende programmering i VR Lektion 3 Grundlæggende programmering i VR Plan for i dag UML Usecase diagrammer Aktivitets diagrammer Klasse diagrammer Udforskning af forskelligt VR og andre måder at udvide virkeligheden på Cardboard

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

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

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

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

Sådan gør du i GeoGebra.

Sådan gør du i GeoGebra. Sådan gør du i GeoGebra. Det første vi skal prøve er at tegne matematiske figurer. Tegne: Lad os tegne en trekant. Klik på trekant knappen Klik på punktet ved (1,1), (4,1) (4,5) og til sidst igen på (1,1)

Læs mere