29 Opsamling af Objekt-orienteret Programmering.
|
|
- Pia Nielsen
- 7 år siden
- Visninger:
Transkript
1 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. Klasse nedarvning og nedarvnings-teknikker. 'Køber' eller 'arving'? Co-varians og contra-varians. Indskrænkning af klient-interface. 411
2 Bottom-up kontra top-down design. Bottom-up design: abstraktioner over definitioner, som indkapsler data (= klasser). Små enheder, som er data-abstraktioner, tilpasses og kombineres til gradvis større enheder. Enhedernes genbrugsværdi er relativ stor. Top-down design: Store enheder, som er procedure-abstraktioner, forfines og nedbrydes til gradvis mindre enheder. Enhedernes genbrugsværdi er relativ lille. abstraktioner over kommandoer (= procedurer) eller udtryk (= funktioner). Objekt-orienteret programmering lægger primært op til bottom-up design. 412
3 En klasse tilbyder en samling af tjenester. En klasse C tilbyder en samling af tjenester (= features) til kunder (= klienter). Tjenester fra en klasse er ligeværdige. Tjenester forekommer separat, og løsrevet fra bestemte anvendelsesordener og -kombinationer. Mængden af tjenester af passende afrundet. Hvormange tjenester må der være i en klasse? Tilgodese kravene om separation og afrundethed af tjenester. Tilgodese overskuelighed, forståelighed og læsbarhed. Faktoriser variationer og basale egenskaber ud i hhv. sub- og superklasser En klasser udfører ikke noget. Den tilbyder noget. Ligeværdighed: Det er udelukkende varens værdi for kunden, der afgør, om den bliver købt. Minimale bånd på kombination og orden: Det er kunden som bestemmer i hvilken kombination og orden egenskaberne skal anvendes. Selvom to operationer i en given anvendelsessituation altid bruges sammen, er der gode grunde til ikke at svejse dem sammen i klassen. Selv om nogle mennesker altid spiser sovs til kartofler, er det hensigtsmæssigt at ingredienserne sælges hver for sig. Afrundethed: for at opnå den bedste genbrugsværdi, uden snæver hensyntagen til en specifik brugssituation. På ovenstående figur betyder et '+' en forøgelse af antallet af tjenester, og et '-' en formindskelse. 413
4 Hvordan finder man på klasser og objekter Inspirationskilder: Begreber og fænomener i systemets omverden. Begreber bliver til klasser. Fænomener bliver til objekter, som er instanser af klasser. Klasser i programmeringsomgivelsens bibliotek. Tilpasning af eksisterende klasser er mere attraktiv end Opfindelse af nye klasser. Systematisk dataoverførsel mellem en mængde af relaterede procedurer eller funktioner: Indfør en dataabstraktion (en klasse), hvori procedurerne og funktionerne er operationer. Det sidste tilfælde (procedurer med systematisk dataflow) er beskrevet i stor detalje, og ud fra et eksempel, i 12.3 af OOSC. 414
5 Gode klasser er dataabstraktioner. En klasse skal beskrive en mængde af objekter. - Typisk flere objekter af samme klasse. - Det skal være naturligt at lave instanser af klassen. Objekter skal have tilstand, som på ethvert tidspunkt i dets levetid skal være meningsfuld. - Meningsfuldhed: udtrykkes af invarianten. Der skal være relevante og meningsfulde operationer på objekterne. - Relevans: operationerne skal "arbejde på" objekternes tilstand. - Meningsfuldhed: Operationer skal respektere invarianten. Klasser beskriver og dækker over objekter: Antag man har en klasse, og man ønsker at benytte en operation i klassen. Antag endvidere at dette dybest set burde kunne lade sig gøre, uden at lave et objekt af klassen. Det objekt-orienterede programmeringssystem tvinger dog programmøren til at lave en dummy instans af klassen, således man kan sige dummy.nyttig-operation(parametre). Klassen er i dette tilfælde ikke en dataabstraktion. Man kan forestille sig en klasse med en operation, som blot benytter det omkringliggende objekts tilstand til intern bogholderi information. Eksempel: Operation som genererer tilfældige tal. Operation med hukommelse. En sådan klasse er ikke en dataabstraktion. 415
6 Eksempel på en dårlig klasse. Class udskriv_regning_operation feature {NONE} Kunde_navn: string; Vare_liste: list[varer]; hent_regnings_info(info_kilde: XX) is do definer Kunde_navn og Vare_liste end; feature udskriv_regning(info_kilde: XX; info_destination: YY) is do hent_regnings_info(info_kilde); udskriv regningen på info_destination end Klassen er entydigt bygget op omkring en handling, ikke om data. Klassen beskriver ikke tilstand, som er meningsfuld i den fulde livstid af instanser. Det er unaturligt at instantiere klassen. Operationerne i klassen er for tæt koblede. end For bedre at kunne diskutere egenskaberne af gode klasser, vil vi her studere en dårlig klasse. På næste slide vises en forbedret udgave af dette eksempel. 416
7 Eksempel på en forbedret klasse. Class regning feature {NONE} Kunde_navn: string; Vare_liste: list[varer]; create(navn: string; varer: LIST[varer]) is do... end; feature udskriv(info_destination: YY) is do... end; -- andre operationer på regninger end; Ideen med denne klasse er at beskrive dataabstraktionen regning. En regning har både tilstand og et antal af operationer, som opererer på tilstanden. Det er disse operationer som udgør klientinterfacet af klassen. Bemærk særligt, at vi nu har en create operation, som opretter en regning. 417
8 Interfaces. A B En klasse er typisk - relativt åben i forhold til subklasser, og - mere lukket i forhold til klienter. B s klient-interface er typisk en udvidelse af A s klient-interface. Eiffel klasser: Total åbenhed mellem A og B. Uafhængighed mellem A's og B's klient-interfaces. Inducerer typeproblem 2 Typeproblem 2 vil blive beskrevet senere i dette kapitel. 418
9 Interfaceteknikker. En Abstrakt klasse som definerer klient interfacet, men ikke repræsentation af tilstand. A En konkret klasse, der definerer en dataabstration, men intet klient interface. A B C D Klasser, der definerer repræsentationen af tilstand samt tilknyttede operationer, men blot afspejler A's klient interface. Funktionelt ækvivalente objekter, med forskellig repræsentation kan sam-eksistere. B C D Klasser, der hver for sig definerer egne syn på dataabstraktionen, som arves fra A. Syn: - Udvalget af operationer. - Teminologi. 419
10 Nedarvning. Tilføjelse af nye egenskaber til nogle eksisterende egenskaber. Redefinition af nogle eksisterende egenskaber. Kontrolleret redefinition: A op(x: S) Op har samme antal parametre som A's op. Specifikation af op: Prebetingelsen må ikke styrkes. B op(x: T) Postbetingelsen må ikke svækkes. Signaturen af op: Den effektive invariant af klassen B er styrket i forhold til invarianten af A. Co-varians: T er en subklasse af S. Contra-varians: T er en superklasse af S. Eiffel foreskriver co-varians. Inducerer typeproblem 1. Vi vil også vende tilbage til typeproblem 1 senere i denne forelæsning. 420
11 Nedarvningsteknikker (1). Definition af specialiseringer. X Y a: X; b: Y!!b.create(...); Objektet refereret af b er et Y-objekt, men det opfattes også som et X-objekt. Extensionen af Y-begrebet er en delmængde af extensionen af X-begrebet. Eksempel: Træ Binært-træ Binært-søgetræ AVL-træ Multivejs-træ Multivejs-søgetræ B-træ Definition af generaliseringer: Understøttes ikke af sproglige mekanismer i objekt-orienterede programmeringssprog. 421
12 Nedarvningsteknikker (2). Formidling af operationer og konstanter som ønskes umiddelbart til rådighed. X Y a: X; b: Y --meningsløst!!b.create(...); I operationerne på klassen Y er egenskaberne i X umiddelbart tilgængelige, som om de var definerede i selve Y. X er ikke nogen dataabstration. Extensionen af X er meningsløs. Eksempel: Geometrisk-figur Globale-konstanter Mat-bibliotek Cirkel Muligheden for at have multiple super-klasser er essentiel. På denne slide antages, at klassen X indeholde er samling af operationer og/eller konstanter, som ønskes gjort tilgængelig i klassen Y. 422
13 Nedarvningsteknikker (3). "The mariage of convenience": Specialisering, som i tilgift bliver tilført nogle nødvendige mekanismer til realisering af den ønskede funktionalitet af den specialiserede klasse. Eksempel: Abstrakt klasse som definerer interfacet Klasse som definerer implementations-mekanismer Stack Array Fixed_stack Muligheden for at have multiple super-klasser er essentiel. "The mariage of convenience" er et specialtilfælde af den anvendelse af nedarvning, som forekommer på den forrige slide. 423
14 'Køber' eller 'Arving'? Problem: Klassen B har behov at benytte A-egenskaber. Skal B være en klient af A, eller skal B arve fra A? Arve: hvis B er en A. hvis B ønsker umiddelbar adgang til egenskaberne i A. B får adgang til en relativ stor, men potentiel ustabil mængde af operationer, inklusiv repræsentation af data. Ofte relevant hvis A ikke er en dataabstraktion, men en løsere samling procedurer eller konstanter. Klient: hvis B har en A-del. B får adgang til en relativ mindre, men mere stabil mængde af operationer (repræsentationsuafhængighed). 424
15 Typeproblem 1. Co-varians. Klasser og nedarvning: A B op(x: S) op(x: T) Objekter og operationskald: S T Typer af operationsparametre varierer på samme måde, som de klasser, hvori operationerne befinder sig. op(x: T) is do x.t_operation end Aref: A; Bref: B; Sref: S;!!Bref.create(...);!!Sref.create(...); Aref := Bref; Aref.op(Sref) --Aref betegner et B-objekt --OK idet Aref har statisk type A. --Op i klassen A tager et objekt af typen S som parameter. --Via dynamisk binding anvendes B's op. --En T-operation på et S-objekt er meningsløst. Vi antager, at op er redefine'et i forbindelse med, at B arver fra A. Co-varians problemet's kerne: Vi kalder operationen op på et objekt af typen B. Dette objekt er refereret gennem en variabel, der er erklæret af (har statisk type A). Ud fra et statisk synspunkt er det derfor OK at overføre et S-objekt til operationskaldet. På grund af dynamisk binding bliver det imidlertid operationen op fra klassen B, som kaldes. Dette er en tidsindstillet bombe, idet op fra B kan kalde en T-operation på sin parameter. Kald af en T-operation på et S-objekt er klart meningsløst. Hvad skal der til for at "demontere" den tidsindstillede bombe? Et run-time check på, at (i vort tilfælde) x faktisk refererer til et T-objekt. For mange run-time checks gør programmer langsomme. Derfor strør compiler-skrivere ikke om sig med sådanne. I vores Eiffel implementation opstår der en grim fejl på udførelsestidspunktet når T-operationen kaldes på S-objektet. På næste slide viser vi den sammen situation, blot med contra-varians. 425
16 Typeproblem 1. Contra-varians. Klasser og nedarving: A B op(x: S) op(x: T) Objekter og operationskald: T S Typer af operationsparametre varierer på modsat måde, som de klasser, hvori operationerne befinder sig. op(x: T) is do x.t_operation end Aref: A; Bref: B; Sref: S;!!Bref.create(...);!!Sref.create(...); Aref := Bref; Aref.op(Sref) --Aref betegner et B-objekt --OK idet Aref har statisk type A. --Op i klassen A tager et objekt af typen S som parameter. --Via dynamisk binding anvendes B's op. --En T-operation på et S-objekt er altid meningsfuld. Bemærk at vi stadig benytter den sammen grafiske konvention for nedarvning mellem klasser: Den mest generelle klasse angives øverst på papiret; Den mest specifikke klasse angives nederst. Problemerne på denne slide er anderledes end på den forrige. Det er et problem med contra-varians, at Eiffel-reglerne ikke overholdes. Eiffel-compileren checker reglen, og programmet kan ikke oversættes. Men filosofien bag Eiffel kan naturligvis være forkert. Det er et problem med contra-varians, at det forekommer mere sjældent i praktisk objektorienteret programmering end co-varians. Det er til gengæld ikke et problem, at der i operationen op i B kaldes en T_operation på x, som er et S-objekt. 426
17 Co-varians i praktisk OO programmering. Eksempel: match(k: bog_kriterium): boolean is do... end; Litteratur Bog Tidsskrift Rapport Afhandling match(k: tidsskrift_kriterium): boolean is do... end; Litteratur_kriterium Bog_kriterium Tidsskrift_kriterium Rapport_kriterium match(k: litteratur_kriterium): boolean is deferred end match(k: rapport_kriterium) : boolean is do... end; match(k: afhandling_kriterium) : boolean is do... end; Afhandling_kriterium Påstanden og dermed pointen på denne slide er følgende: I praktiske sammenhænge har man behov for at berige parametre i takt med at man beriger klasser. I klassehierarkiet i eksemplet specialiseres klassen af litteratur til bøger, tidsskrifter, tekniske rapporter og afhandlinger. I takt hermed har man også behov for at specialisere parameteren af match, som jo er det kriterium, ud fra hvilket match bestemmer, om et givet stykke litteratur matcher de i kriteriet givne egenskaber. Når der kommer nye egenskaber til i et specialiseret stykke litteratur, opstår der et naturligt behov for nye egenskaber i det tilhørende match-kriterium. Typeproblemerne, som de blev omtalt på sliden om co-varians, optræder (1) hvis en variabel via brug af polymorfi-reglerne refererer et mere specifikt objekt, og (2) hvis der på dette objekt kaldes en operation med et argument, der er et mere generelt objekt. I praksis er det atypisk, at (2) holder. Vi kan observere at typesammenligneligheden i Eiffel (og de fleste andre OO-sprog) tillader, at en match operation med parameter p kan kalde en mere generel match operation med samme parameter p. (Dette har vi undertiden kaldt imperativ metode-kombination). Ved anvendelse af contra-varians ville dette ikke være muligt. 427
18 Typeproblem 2. Indskrænkninger i klient-interfacet. Klasser og nedarving: A B Objekter og operationskald: Aref: A; Bref: B;!!Bref.create(...); Aref := Bref; class A feature -- x, y og z eksporteres x... is... y... is... z... is end class B export x, y inherit A export {NONE} z; {ANY} x, y feature -- nothing. end Aref.z --Statisk set har Aref en z-egenskab. --Dynamisk set er denne egenskab ikke tilgængelig på --objekter. Fra et statisk synspunkt er der ikke noget i vejen med ovenstående program. Eiffel compileren (i version 2.3) opdager ingen fejl. Det ville generelt set kræve omfattende (statisk) analyse af programmet for at erkende, at Aref kan (i dette tilfælde vil ) referere til et B-objekt. Det er selvfølgelige let at erkende, at B har en mere snæver eksport end klassen A. I Eiffel 2.3 er der ikke indlagt run-time check, som fanger ovenstående tilfælde. Så på trods af, at z ikke er en del af B's klient-interface, er vi i stand til at referere til z i det B-objekt, som refereres via Aref. 428
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 mereRename 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 mere4 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 mere13 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 mere30 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 mereObjektorientering. 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 mere22 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Å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 mere3 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 mere2 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 mere12 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 mereAbstrakte 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 mere26 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 mere28 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 mereObjektorienteret 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 mereObjekt-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 mereUgeseddel 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 mereMETODER 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 mereDatalogi 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 mere16 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 merePolymorfi. 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 mere5 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 mereObjects 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 mereMetaklasser 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 mereVideregå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 mereTree 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Å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 mereclass 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 mereER-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 mereModuler 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 mereclass 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 mereCitation 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 mereHypotesetest. Altså vores formodning eller påstand om tingens tilstand. Alternativ hypotese (hvis vores påstand er forkert) H a : 0
Hypotesetest Hypotesetest generelt Ingredienserne i en hypotesetest: Statistisk model, f.eks. X 1,,X n uafhængige fra bestemt fordeling. Parameter med estimat. Nulhypotese, f.eks. at antager en bestemt
Læs mereKommentar 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 mereDesign 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 mereKlasser 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 mereSkriftlig 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 mereBasale 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 mereSkriftlig 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 mereER-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 mereDANMARKS TEKNISKE UNIVERSITET
DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler
Læs mereExceptions i Delphi. Try except
Exceptions i Delphi Exceptions er en teknik til at fange fejl under programafviklingen. Ikke programmeringsfejl, men fejl der opstår i forskellige situationer, f.eks. en fil der mangler en fil der er skrivebeskyttet,
Læs mereSkriftlig Eksamen Algoritmer og Datastrukturer (dads)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Tirsdag den 27. maj 2003, kl. 9.00 3.00 Opgave (25%) For konstanten π = 3.4592... gælder identiteten π 2 6 =
Læs mereSoftware 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 mereb) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.
Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning
Læs mereRolf Fagerberg. Forår 2012
Forår 2012 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: DM502 og DM503 Timer: 50% forelæsninger, 50% øvelser Forudsætninger: DM502 og DM503 Eksamenform: Skriftlig eksamen: Timer: 50% forelæsninger,
Læs mereDesign 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 mereSkriftlig 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 mereSkriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)
Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM58) Institut for Matematik & Datalogi Syddansk Universitet Torsdag den 7 Januar 010, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger,
Læs mere18 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 mereSoftware 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 mereIntroduktion til DM507
Introduktion til DM507 Rolf Fagerberg Forår 2017 1 / 20 Hvem er vi? Underviser: Rolf Fagerberg, IMADA Forskningsområde: algoritmer og datastrukturer 2 / 20 Hvem er vi? Underviser: Rolf Fagerberg, IMADA
Læs mereAlgoritmeskabeloner: 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 mereLektion 6. Grundlæggende programmering i VR
Lektion 6 Grundlæggende programmering i VR Plan for i dag Simpelt FPS Triggerzones og animationer C# og objekt orienteret programmering Interfaces Generics Google Cardboard Video om VRs fremtid App til
Læs mereAAU, Programmering i Java Intern skriftlig prøve 18. maj 2007
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal
Læs mereUML 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 mereRolf Fagerberg. Forår 2015
Forår 2015 Dagens program 1 2 3 4 5 Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Deltagere: BA i Datalogi BA i Software
Læs mere15 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 mereEksempel: 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 mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Introduktion til kurset Rolf Fagerberg Forår 2019 1 / 20 Hvem er vi? Underviser: Rolf Fagerberg, Institut for Matematik og Datalogi (IMADA) Forskningsområde: algoritmer
Læs mere12 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 mereRolf Fagerberg. Forår 2014
Forår 2014 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: Format: Programmering og Diskret matematik I (forelæsninger), TE (øvelser), S (arbejde selv og i studiegrupper) Eksamenform: Skriftlig
Læs mereAffine 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 mere01017 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 mereSider og segmenter. dopsys 1
Sider og segmenter dopsys 1 Lokal vs global sideallokering (1) Med (a) som udgangspunkt giver (b) lokal hhv. (c) global allokering forskellige resultater dopsys 2 Lokal vs global sideallokering (2) Den
Læs mere10 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 mereForelæ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 mereObjektorienteret 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 mereKontraktbaseret 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 mereSider og segmenter. dopsys 1
Sider og segmenter dopsys 1 Lokal vs global sideallokering (1) Med (a) som udgangspunkt giver (b) lokal hhv. (c) global allokering forskellige resultater dopsys 2 Lokal vs global sideallokering (2) Den
Læs mereRolf Fagerberg. Forår 2015
Forår 2015 Dagens program 1 2 3 4 5 Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Deltagere: BA i Datalogi BA i Software Engineering BA i Matematik-Økonomi BA i Anvendt Matematik BA
Læs mereEmmas og Frederiks nye værelser - maling eller tapet?
Emmas og Frederiks nye værelser - maling eller tapet? Emmas og Frederiks familie skal flytte til et nyt hus. De har fået lov til at bestemme, hvordan væggene på deres værelser skal se ud. Emma og Frederik
Læs mereForelæsning Uge 12 Torsdag
Forelæsning Uge 12 Torsdag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereMatematikkens metoder illustreret med eksempler fra ligningernes historie. Jessica Carter Institut for Matematik og Datalogi, SDU 12.
illustreret med eksempler fra ligningernes historie Institut for Matematik og Datalogi, SDU 12. april 2019 Matematiklærerdag, Aarhus Universitet I læreplanen for Studieretningsprojektet står: I studieretningsprojektet
Læs mereDatalogi 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 mereLagervisning. Dina Friis, og Niels Boldt,
Lagervisning Dina Friis, dina@diku.dk og Niels Boldt, boldt@diku.dk 6. april 2001 Kapitel 1 Sammenfatning Dette dokument er et eksempel på en delvis besvarelse af G-opgaven stillet på Datalogi 0 2000-2001.
Læs mereSkriftlig Eksamen Algoritmer og Datastrukturer (dads)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Onsdag den. august 200, kl. 9.00.00 Opgave (25%) Lad A = A[] A[n] være et array af heltal. Længden af det længste
Læs mereMultiparadigme Programmering
Multi Programmering Repetition: De grundliggende r Systematisk karateristik. Paradigmesupplering. Symmetrisk multi programmering Leda eksempler på logikprogrammering kombineret med imperativ og funktionsorienteret
Læs mereHjerner 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 mereIntroduktion til ActionScript
Introduktion til ActionScript 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 på
Læs mereKlasser og nedarvning
Datalogi C, Efterår 2004 OH er, forelæsning 21/9-2004 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Opgaven til senere: Generalisere
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereHvad 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 mereKlasser 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 mereSWC 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 mere8 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 mereRolf Fagerberg. Forår 2013
Forår 2013 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: DM536 og DM537 Timer: 50% forelæsninger, 50% øvelser Forudsætninger: DM536 og DM537 Eksamenform: Skriftlig eksamen: Timer: 50% forelæsninger,
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 20. april, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereForslag til ny struktur - overblik
BESKRIVELSESVÆRKTØJ Forslag til ny struktur - overblik Den korte version Udarbejdet af Molio 2018-03-01 Høringsversion Molio 2018 1 Indledning og formål Molio ønsker at omlægge beskrivelsesværktøjets struktur.
Læs mereAnalyse 10. juni 2015
Analyse 1. juni 21 Hvad har valgkampen handlet om indtil videre? Af Nicolai Kaarsen I november 214 tilkendegav danskerne, at emner som arbejdsløshed, indvandring og beskyttelse af miljøet var blandt de
Læs mereDanmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave
Læs mereDatabasesystemer, 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 mereSide 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 mereGrundlæggende køretidsanalyse af algoritmer
Grundlæggende køretidsanalyse af algoritmer Algoritmers effektivitet Størrelse af inddata Forskellige mål for køretid Store -notationen Klassiske effektivitetsklasser Martin Zachariasen DIKU 1 Algoritmers
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 10. april, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereForelæsning Uge 12 Mandag
Forelæsning Uge 12 Mandag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse
Læs mereAnalyse, 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 mereDanmarks 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 mereMat H /05 Note 2 10/11-04 Gerd Grubb
Mat H 1 2004/05 Note 2 10/11-04 Gerd Grubb Nødvendige og tilstrækkelige betingelser for ekstremum, konkave og konvekse funktioner. Fremstillingen i Kapitel 13.1 2 af Sydsæters bog [MA1] suppleres her med
Læs mere