Objektorienterad programmering. Grundläggande begrepp

Relevanta dokument
Imperativ programmering. Föreläsning 4

Objektorienterad programmering

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Objektorienterad programmering

Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 5. När skall man använda implementationsarv? När skall man använda implementationsarv?

729G06 Föreläsning 1 Objektorienterad programmering

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Kopiering av objekt i Java

Arv och klassbibliotek

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Föreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Repetition av OOP- och Javabegrepp

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Repetition av OOP- och Javabegrepp

Föreläsning 15: Repetition DVGA02

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

TDA550 Objektorienterad programmering, fortsättningskurs. Föreläsning 1. Introduktion Variabler och typer

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 16 Arv. Jan Lönnberg T Grundkurs i programmering

Datastrukturer och algoritmer

OOMPA 2D1359 Föreläsning 2

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

OOP Objekt-orienterad programmering

DAT043 - Föreläsning 7

Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018

Principles of subclasses Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).

Kursplanering Objektorienterad programmering

Objektorienterad konstruktion

Arv. Objektorienterad och komponentbaserad programmering

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Klasshierarkier - repetition

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Classes och Interfaces, Objects och References, Initialization

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

TDDD78, TDDE30, 729A Typhierarkier del 3 När och hur vill vi använda dem? Några Best Practices

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

Programmering = modellering

729G06 Programmering och logik. Info om pythondelen & introduktion till objektorienterad programmering.

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

F2: Krav på objektorienterat språk

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Introduktion till arv

Objektorienterad Programmering (TDDC77)

Introduktion. Den objektorienterade modellen Grundläggande begrepp Klass Klassen som abstraktion

Föreläsning 9: Arv och UML

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

TDDD78 Objektorientering i Java, del 2

1 Klasser och objektorientering Vad är objektorientering?

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

TDDD78, TDDE30, 729A Typhierarkier del 2 Vad krävs? Hur fungerar det?

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Objektorientering Klasser

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Programmering och algoritmiskt tänkande. Tema 3, föreläsning 1 Jody Foo

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Personal. Objektorienterad programmeringsmetodik 5DV133. Kursmål. Kursens uppläggning. Lärare. Handledare och gruppövningar.

Objektorienterad Programmering (TDDC77)

SKOLFS. beslutade den XXX 2017.

Transkript:

Objektorienterad programmering Grundläggande begrepp

Hur beskriver vi objekt? Vill ha en representationsoberoende beskrivning Abstrakta datatyper! Data Operationer

Objekt Representerar en verklig eller abstrakt sak/enhet med en väldefinierad roll i problemdomänen Ett objekt har tillstånd, beteende och unik identitet Allt är objekt (dvs alla datastrukturer representeras som objekt)

Exempel 1 - objekt Tillstånd: Grön, Ford, 4 hjul, parkerad Beteende: Starta, stanna, accelerera, Bromsa, svänga höger, svänga vänster Samma tillstånd, samma beteende men ett annat objekt

Objekt, forts. Attribut objektets egenskaper, tillstånd Kallas ibland instansvariabler Metoder objektets beteende Funktioner/procedurer med tillgång till objektets attribut Kan ändra objektets tillstånd

Exempel 2 - objekt b1:bok name = Muminpappans memoarer utgavs = 1968 författare = p1:person förnamn = Tove efternamn = Jansson

Exempel 3 - objekt b1:bok namn = Muminpappans memoarer utgavs = 1968 författare = b2:bok namn = Trollkarlens hatt utgavs = 1948 författare = p1:person förnamn = Tove efternamn = Jansson

Notation Antag att variabeln b1 refererar till ett Book-objekt, då är b1.namn objektets namn-attribut b1.författare.förnamn???

Inkapsling Objektets tillstånd är inte tillgängligt utifrån. Endast en del av objektets attribut och metoder syns utåt - objektets gränssnitt. Gränssnittet är en abstraktion av objektet. Tillståndsövergångar triggas genom att objektets gränssnittsmetoder körs. Skyddar objektet mot fel i andra objekt.

Exempel 4 - inkapsling Färg: grön Hastighet: 0 gasa bromsa Ändra hastighet

Inkapsling i olika språk Smalltalk Attribut är lokala men metoder kan exporteras Eiffel Attribut och metoder kan exporteras, ingen skillnad syntaktiskt Java Synlighet deklareras för attribut och metoder Hur gör man för att läsa/ändra värdet på ett attribut Smalltalk?

Objektorienterad design är en konstruktion av mjukvarusystem som strukturerade samlingar av implementationer av abstrakta datatyper.

Kommunikation Objekt skickar meddelanden till varandra Ett meddelande är en begäran om en handling som ska utföras När ett objekt får ett meddelande körs motsvarande metod

Exempel 5 - meddelanden Färg: grön Hastighet: 0 gasa! me:person name = Aletta age = 17

Objektorienterade program Ett OO program är en värld befolkad av objekt som kommunicerar med varandra

Klasser En klass är en mall för objekt Klassen definierar vilka attribut och metoder objekten ska ha Ett objekt är en instans av en klass Objekt som är instanser av samma klass har samma beteende Klassen är objektets typ Alla objekt av en viss klass kan användas på samma sätt de har samma gränssnitt.

Exempel 6 Klass & objekt name age Person get_older me:person name = Aletta age = 17 someguy:person name = Bertil age = 56 myfriend:person name = Cecilia age = 32

Tänk på Objekt är run-time element som skapas under körning Klasser är statiska beskrivningar av möjliga objekt instanser av klassen Vid run-time finns bara objekt I programmet finns endast klasser

Detta är INTE OO Att stoppa in all information i ett objekt Att använda objekt som struktar i C Objekt med otydligt ansvar Vagt definierade gränssnitt

Tänk på Ett programmeringsspråk kan ge stöd för programmering enligt en viss paradigm men ett program blir inte objektorienterat bara för att det är skrivet i Java. objektorienterade program kan skrivas i vilket språk som helst.

Arv Mål: Återanvändning Definiera gemensamma egenskaper i en klass Inkludera dessa egenskaper i nya klasser Lägg till specifika egenskaper till de nya klasserna Fördelar: Mindre kod Lätt att underhålla

Exempel: Arv, forts. lön Anställd Programmerare projekt Person namn ålder adress getname() poäng Student

Hur relateras klasser genom arv? Arv betyder att en klass ärver implementation av en annan Arv definierar en transitiv är en hierarki Klasserna bör vara konceptuellt relaterade

När klass A ärver av klass B A ärver alla attribut och metoder som finns i B A är en subklass till B B är en superklass eller föräldraklass till A

Effekter av arv Alla subklasser till en gemensam superklass har samma grundegenskaper, alltså har de gemensamt gränssnitt

Polymorfism Många skepnader Ett gränssnitt kan ha flera olika implementationer Ett namn kan beteckna olika saker, olika typer av objekt Ex. aperson.getname() fungerar oavsett om aperson är ett Person-, Anställd-, Studenteller Programmerare-objekt.

Hittills Strikt arv endast utvidgning av klasser Lätt att hantera Oflexibelt Förhindrar återanvändning Lösning: Tillåt att ärvda egenskaper ändras / omdefinieras Bag insert( ) delete( ) empty( ) size( )??? Set

Icke-strikt arv Bag Ärvda egenskaper kan omdefinieras Mer flexibilitet Förenklar återanvändning insert( ) delete( ) empty( ) size( ) Set redefine insert

Statisk bindning Omdefinitioner gäller före ärvda egenskaper Samma anrop har alltså olika effekt

Dynamisk bindning Det kan finnas flera olika metoder att välja mellan, beroende på objektets typ.

Rekommendation Använd arv endast när det är lämpligt att ärva implementation, och subklassen representerar en delmängd av superklassen Ofta är det lämpligt att introducera en ny klass som rymmer gemensamma datastrukturer och metoder.

Multipelt arv En klass kan ärva från flera superklasser Problem?

Arv i några olika språk Java Tillåter inte multipelt arv annat än i en begränsad form en klass kan implementera fler interface C++, Eiffel Tillåter multipelt arv