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

Relevanta dokument
F2: Krav på objektorienterat språk

Imperativ programmering. Föreläsning 4

Kursens mål. Objektorienterad programmering. Kursupplägg. Tillgodoräknande. Kursbok. Labsalar

Objektorienterad programmering

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

Objektorienterad programmering. Grundläggande begrepp

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

Dynamisk bindning och polymorfism

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

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

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

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

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

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

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

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

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

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

Classes och Interfaces, Objects och References, Initialization

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

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

Objektorienterad programmering, allmänt

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

Objektorienterad Programmering (TDDC77)

Arv. Objektorienterad och komponentbaserad programmering

Objektorienterad Programmering (TDDC77)

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

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

OOP Objekt-orienterad programmering

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

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

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

TDDC76 - Programmering och Datastrukturer

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

Objektorienterad konstruktion

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

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

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

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

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

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

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

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

Objektorienterad programmering

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

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

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

Föreläsning 15: Repetition DVGA02

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

Objekt och klasser - Introduktion

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

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

JAVA Mer om klasser och objektorientering

Klasshierarkier - repetition

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Subtyping, co- och contra-variance. Objekt-orienterad programmering och design Alex Gerdes, 2016

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

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

Föreläsning 4. Polymorfism. Polymorfism Dynamisk bindning Inkapsling Information hiding Access-metoder och mutator-metoder

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

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

Introduktion till arv

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

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

TDDC76 Programmering och datastrukturer

Imperativ programmering. Föreläsning 2

KLASSER. Inkapsling Abstrakt datatyp Public och private. Klassmedlemmar Datamedlemmar Exempel Funktionsmedlemmar

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

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

Generisk klass med typparameter Inre klass - ListIterator

Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018

DAT043 - Föreläsning 7

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

1 Klasser och objektorientering Vad är objektorientering?

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Laboration 1 - Grunderna för OOP i Java

Sammansatta datatyper Generics: Parametrisk polymorfism

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

Kopiering av objekt i Java

Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer

Imperativ programmering

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Det objektorienterade synsättet. Objekt. Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med.

Objektorienterad Programmering (TDDC77)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Datastrukturer och algoritmer

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Transkript:

Objektorienterade språk Historik Simula 67 Smalltalk 80 Procedurorienterad programmering Subprogram Programbibliotek Dataorienterad programmering Abstrakta datatyper Objektbaserade språk, föregångare till Objektorienterade programmeringsspråk Smalltalk, Eiffel och Java är rena objektorienterade språk C++ och Ada stödjer objektorientering Det går att programmera objektorienterat i C eller assembler för den delen Språket måste stödja någon form av inkapsling. T.ex. på fil-nivå Den objekt-orienterade modellen Beskriver vad som agerar (objekten) Gemensamt språk för alla Intressenter Nivåer Tidpunkter Hög nivå utan detaljer Jämför med icke-oo Procedurella språk/metoder Beskriver hur något utförs Data ligger ofta centralt och alla rutiner kan komma åt det Programflödet är det viktiga 1

Vad är ett objekt? Relationer VAD hanterar vårt system Har tillstånd minne Operationer Identitet mitt:_konto Saldo insättning() 500 Klass-Objekt Användning Association Aggregat Arv Krav Tre krav måste vara uppfyllda: Abstrakt datatyp Arv Polymorfism och dynamisk bindning Den abstrakta datatypen kallas ofta klass Data kallas attribut, funktionaliteten finns i metoder Anrop av en metod kallas att skicka ett meddelande till ett objekt Inkapsling Inkapsling brukar också tas upp som ett krav på ett objektorienterat språk C++ har tre nivåer av inkapsling private protected public Java har även package scope 2

Tillbaka till 80-talet Problem med objektbaserade språk Abstrakta datatyperna borde kunna återanvändas Alla typdefinitioner oberoende och på samma nivå Lösningen heter arv Data och funktionalitet kan ärvas och modifieras Återanvändning utan ändring i redan skriven kod Inom systemet Av generella bibliotek Applikationsspecifika Återanvändning Väldefinierade klasser Köpa färdigt Inom koncernen Problem med återanvändning Målet ej uttalat av projektledningen Avsätta resurser i planeringen Socialt/psykologiskt Snäva tidsramar - ej generell kod Använder ej annans kod Administrativt Insamling, kvalitetsgranskning Dokumentera, katalogisera, distribuera Söka och finna Arv En subklass ärver från en basklass (kallas också superklass) Åtkomst av basklassens attribut och metoder kan styras Metoder kan omdefinieras (override) Två sorters metoder och två sorters attribut Instansmetoder och attribut Klassmetoder och attribut 3

Computing with an Object- Oriented Language Ett objektorienterat program som körs kan ses som en samling datorer/objekt som kommunicerar via meddelanden Varje objekt är en abstraktion av en dator i den mening att den lagrar data och kan manipulera det Objektorienterad programmering är att lösa problem genom att identifiera objekten i problemet och sedan simulera dem, dess processer och den nödvändiga kommunikationen Avvägningar vid design av ett objektorienterat språk Tre sätt att angripa problemet med typsystemet: Den rena modellen Allt är objekt, från det minsta heltal till det största datasystem + Elegant form - De enklaste operationer måste ske genom metodanrop Utgå från ett imperativt språk och lägg till en objektmodell + Snabbare - Mycket större, mer komplext system Tre sätt Objektmodell i botten men med imperativ stil för primitiva datatyper + Snabbt för heltal och andra primitiva typer - Komplikationer när metoder bara kan ta objekt som parametrar -> Wrapper Classes C++, Java hör till den senare typen Allt är objekt utom de primitiva datatyperna som int, double, String och fält [] är objekt i Java Statisk eller dynamisk typkontroll? Om språket skall vara starkt typat: -> statisk typkontroll Restriktioner vid polymorfism Två sorters typkontroll vid metodanrop: Parametrarna måste stämma Returtypen likaså Kanske tillåtet med assignment compability Alternativet är dynamisk typkontroll Vänta med kontrollen tills metoden anropas Kostsamt och försenar typkontrollen 4

Allokering/deallokering av objekt Var allokera objekten? Tre sätt : Statiskt av kompilatorn Dynamiska objekt på stacken Eller på heapen med new Om new det enda sättet -> uniform metod Inga pekare som måste derefereras a la C++ C++ har alla sätten - och alla problemen Java har bara new (allt på heapen) Stack Heap Stack och heap Dynamiska variabler, tex parametrar, lokala variabler int, double, referenser Allt som skapas med new, dvs alla objekt, inklusive fält och strängar Risk för fragmentering -> Garbage Collector Vi använder new, sen då? Hur deallokera objekten? ->Explicit Problem men dangling pointers C++ har delete -> Implicit Vi behöver Garbage Collection i någon form Java har GC 5