2003-12-02Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella.
Repetition inför provet
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
OOP Objekt-orienterad programmering
Föreläsning 1.
ObjektOrienterad analys och design. SVP Vt2009 Föreläsning nr 2, måndag 8 april kl Diskussion (kurshemsida): Om designuppgiften Om projektuppgiften.
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
Arv.
Abstract & sealed.
Inkapsling.
Polymorfism.
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Objektorienterad programmering i Java
PROCESSPROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
4. Arv och dynamisk bindning
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Vektorer (klassen Vector) Sortering
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Polymorfism.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Räckvidd och synlighet. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Synlighet (meddelandesändning) Det.
Arv.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
MV500B: Introduktion till interaktiv ljuddesign David Yanagisawa, Anders-Petter Andersson 4.5 högskolepoängLektion 3.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Introduktion till klasser, objekt och BlueJ Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Föreläsning 1. Innehåll Introduktion till objektorientering –OOP (objektorienterad programmering) –Objekt, instanser, klasser C++ –OO i C++ –Standardbibliotek.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
Objektorienterad programmering i Java
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Objektorienterad programmering
1 Föreläsning 8 Mer om klasser och objektorientering.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
Arv repetition Arv = Är relation Tillgänglighet public, protected och private. Överklass ös Direkt härledd underklass dhu: Class dhu : public ös{} Indirekt.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Programmeringsteknik
F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Föreläsning 5 Klasser och instanser
OOP - teori1 OOP del II– Föreläsning 5 vecka 6. OOP - teori2 Klasser Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax.
OOP&M - teori1 OOP del II– Föreläsning 2 vecka 46 Konstruktorer Instansmetoder Kapitel 14 i kursboken.
OOP&M - teori1 OOP&M del II– Föreläsning 5 vecka 50 OBJEKT Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle Book String.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
Objektorienterad programmering sid. 1 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Objektorienterad programmering OOP = objektbaserad programmering.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 13: Resolution Resolution i satslogiken Resolution i predikatlogiken.
TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder.
TDP004 Objektorienterad Programmering Fö 6 Objektorientering forts.
TDP004 Objektorienterad Programmering Fö 8 Sammanfattning
Objektorienterad programmering forts
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Enkelt arv eller multipelt arv? Smalltalk

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 2 Objektorienterad programmering Objektorienterad programmering bygger på grundtanken att det inte är underprogrammen som står i centrum utan dataobjekten. Beräkning sker genom att skicka och reagera på meddelanden. Meddelandena motsvarar underprogramsanrop i impera- tiva språk och funktionsapplikation i funktionella språk Datatyper kallas klasser, deras dataelement instanser och underprogram metoder

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 3 OO och ADT:er Informationsmaskering hindrar återanvändning av gemensamma delar i nära relaterade ADT:er Inget stöd för att skapa familjer av ADT:er som är varianter av varandra Om ADT A utökas till ADT B kan det vara ineffektivt att inte kunna referera till implementeringsdetaljer i A Att ADT:er är parvis oberoende leder till ostrukturerade program Objektorientering kan ses som ett försök att generalisera ADT-konceptet med syfte på att undvika dess problem.

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 4 OO och ADT:er (2) Subklasser ärver variabler och metoder från superklasser Ärvda metoder kan modifieras och nya kan läggas till Subklassen kan få tillgång till implementeringsdetaljer som annars är maskerade Fördelar  modifiering och det effektiva skapandet av varianter är lätt  program får en träd- eller grafliknande klasstruktur MEN: Samtidigt minskas fördelarna som ADT:er ger Objektorientering försöker undvika ADT-problemen med hjälp av konceptet arv (eng. inheritance).

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 5 Dynamisk bindning ger polymorphism var x: shape;// x är av typen shape x = new shape(); x.draw();// någon standardfigur ritas x = new square(); x.draw();// en kvadrat ritas x = new circle(); x.draw();// en cirkel ritas Metodanrop binds dynamiskt till den korrekta metoddefinitionen av respektive underklass. Det ger (en viss typ av) polymorphism. class circle (subklass) method draw() {…} class square (subklass) method draw() {…} class shape (superklass) method draw() {…}

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 6 Implementering av dynamisk bindning För varje objekt skapas en tabell ("class instance record") som innehåller alla lokala variabler plus en referens till klassens virtuella metodtabell ("virtual method table") instansvariabel m instansvariabel 1 VMT class instance record metod n metod 1 virtuell metodtabell Formatet är statiskt för varje klass Bara en kopia behövs

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 7 Enkelt mot multipelt arv Enkelt arv: Till varje klass finns det max en superklass (  super-/subklassrelationen bildar ett träd) Multipelt arv: En klass tillåts ha flera superklasser (  super-/subklassrelationen bildar en acyklisk graf) A B' C B Problem som multipelt arv medför:  namnkollision (vilket x menas om flera ärvs?)  diamantformat arv fördubblar variabler och metoder  invecklade relationer mellan klasser  låg läsbarhet

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 8 Andra designfrågor Renodlad objektparadigm eller blandad? (OO-språk eller stöd för OO? Två typsystem?) Är subklasser också subtyper? (Kan en variabel av föräldratyp alltid ersätta en variabel av subtyp? Kan ”saker” i föräldern gömmas för subklassen?) Hur mycket dynamisk bindning? Allokeras objekt på stack eller heap? Avallokering?

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 9 Avslutningsvis lite småprat fac | result i | result  i  1. [i < self] whileTrue: [i  i + 1. result  result * i ]. ^result. fakultet, while-loop fac | result | result  1. 2 to: self do: [:i | result  result * i]. ^result. fakultet, for-loopfakultet, rekursiv fac self > 0 ifTrue: [^ self * (self - 1) fac] ifFalse: [^ 1].