2002-12-03F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.

Slides:



Advertisements
Liknande presentationer
F. Drewes, Inst. f. datavetenskap1 Föreläsning 13: Resolution •Resolution i satslogiken •Resolution i predikatlogiken.
Advertisements

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.
Relationsdatabasdesign
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
OOP Objekt-orienterad programmering
Föreläsning 1.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
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.
Att programmera i språket Java
i olika programmeringsspråk
Objektorienterad programmering i Java
PROCESSPROGRAMMERING
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.
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.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Multipelt arv Drawable draw() move() position bitmap Persistent save() restore() storage_file_name.
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.
Objektorientering.
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.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 1: Inledning administrativt o dyl kursens mål varför programspråksteori? språkkategorier användningsområden.
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.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax Flertydighet i kontextfri.
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
F. Drewes, Inst. f. datavetenskap1 Föreläsning 7: Uttryck och sidoeffekter Uttryck Sidoeffekter Överladdning Tilldelningar i uttryck.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
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.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden.
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.
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.
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.
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.
TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder.
TDP004 Objektorienterad Programmering Fö 6 Objektorientering forts.
TDP004 Objektorienterad Programmering Fö 8 Sammanfattning
Objektorienterad programmering forts
Presentationens avskrift:

F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt arv Smalltalk

F. Drewes, Inst. f. datavetenskap2 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

F. Drewes, Inst. f. datavetenskap3 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.

F. Drewes, Inst. f. datavetenskap4 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).

F. Drewes, Inst. f. datavetenskap5 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() {…}

F. Drewes, Inst. f. datavetenskap6 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

F. Drewes, Inst. f. datavetenskap7 Singel mot multipelt arv Singel 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 ett 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

F. Drewes, Inst. f. datavetenskap8 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].