Objektorienterad programmering, allmänt

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

Objektorienterad programmering

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

Objektorienterad programmering

Objektorienterad programmering

Objektorienterad programmering

Imperativ programmering. Föreläsning 4

Objektorienterad programmering. Grundläggande begrepp

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

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

SKOLFS. beslutade den XXX 2017.

Objektorienterad analys och design

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

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

PROGRAMMERINGSMETODIK

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

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

OOMPA 2D1359 Föreläsning 2

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

Programmering = modellering

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

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

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

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

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

Objektorienterad analys och design

Föreläsning 15: Repetition DVGA02

Undervisningen i ämnet programmering ska ge eleverna förutsättningar att utveckla följande:

PROGRAMMERINGSMETODIK

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

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

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

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

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

Universe Engine Rapport

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

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

Programmering för språkteknologer II, HT2014. Rum

Objektorienterad konstruktion

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

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

SKOLFS. beslutade den -- maj 2015.

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

729G06 Föreläsning 1 Objektorienterad programmering

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

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

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

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Problemlösning. Planering av program. Konstruktion. Programmeringsmetaforer. Problemlösning. Programmering = Problemlösning

Föreläsning 2 Datastrukturer (DAT037)

Objektorientering Ett av de senaste inneorden i datavärlden. Man baserar uppbyggnaden av ett programsystem på de objekt som ingår i systemet istället

Introduktionsmöte Innehåll

Programmeringsteknik II

1 Klasser och objektorientering Vad är objektorientering?

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

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Projektuppgift - Biblioteket

Designmönster, introduktion. Vad är det? Varför skall man använda mönster?

Projektuppgift - Gymmet

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

Föreläsning 10. ADT:er och datastrukturer

F2: Krav på objektorienterat språk

EDAA01 Programmeringsteknik - fördjupningskurs

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

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

Teoretisk del. Facit Tentamen TDDC (6)

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Tentamen ID1004 Objektorienterad programmering October 29, 2013

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

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

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

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

Inkapsling (encapsulation)

Kursplanering Objektorienterad programmering

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Objektorienterad Programkonstruktion

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Innehålls förteckning

Inledande programmering med C# (1DV402) Introduktion till C#

Introduktion och OO. Objekt-orienterad Programmering och Design (TDA552) Alex Gerdes, HT-2018

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

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2014

Modulär design Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Objektorientering. Grunderna i OO

Projektuppgift - Banken

Föreläsning 2 Datastrukturer (DAT037)

Repetition av OOP- och Javabegrepp

Programmeringsteknik F1/TM1

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

IT OCH PROGRAMMERING I SKOLAN. Jan Erik Moström Peter Vinnervik

Separation of Concern. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017

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

TDDD78 Objektorientering: Lagring och livstid

Transkript:

Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 juni 2005 1

Vilka egenskaper vill vi att program ska ha? Förslag (en partiell lista): De ska... gå snabbt att skriva vara effektiva lösa uppgiften vara lätta att förstå vara lätta att ändra (nåt att tillägga eller ta bort?) 2

Viktiga egenskaper hos ett program (Meyer): 1. Korrekthet 2. Robusthet 3. Utökbarhet 4. Återanvändbarhet 5. Kompatibilitet Andra egenskaper: Effektivitet, portabilitet, testbarhet, säkerhet, användarvänlighet 3

Andra begrepp Idéer som fanns före OOP men som blivit en del av OOP: Abstraktion Modularitet Inkapsling Software engineering Metoder för analys, design 4

Abstraktion Abstrahera betyder att ta bort Exempel: konstruktioner i programspråk för aritmetik, proceduranrop etc, filsystem, I/O,... Idé: dölj den komplexa implementationen med ett gränssnitt som presenterar en enklare modell I ett större system vill man abstrahera olika delproblem. 5

Ett viktigt delmål: Modularitet 1. Att lösa ett problem genom att bryta ner det i delproblem (i moduler). 2. Att lösa ett problem genom att kombinera existerande moduler. 3. Att kunna förstå en del av ett program genom att bara studera någon eller några moduler. 4. En liten förändring av en problemspecifikation kan implementeras genom att ändra en eller ett fåtal moduler. 5. Fel i en modul påverkar endast ett fåtal moduler. 6

Om... När är ett program är inte modulärt? vi har misslyckats med att samla kod som är relevant för en del av systemet i ett litet antal moduler oklara gränssnitt mellan moduler kodduplicering likartad kod på många ställen i programmet 7

Software engineering Begreppet myntades i en NATO-konferens 1968. Problem: Software crisis Önskemål: Samma pålitlighet och produktivitet som i de traditionella ingenjörskonsterna (tex brobyggen, mekaniska konstruktioner,...) Lösning: Formalisera de olika stegen i programutvecklingen: Kravanalys, Design, Implementation, Testning, Underhåll 8

Historik: OOP Simula-67, Norge Byggde på Algol-60 Avsett för simulering Garbage collection, arv, klasser (faktiskt ganska likt Java) Smalltalk, Alan Kay, Xerox, 70-tal Introducerade begreppet objekt-orienterad programmering Allt är objekt Första GUIna skrevs i Smalltalk (och i Lisp) 9

Historik: OOP (forts) C++, Bjarne Stroustrup, Bell Labs Bygger på C med idéer från Simula och Algol-68 Saknar GC Eiffel, Bertrand Meyer Objective C, Object Pascal, Self 10

Principer för OOP (Alan Kay) Allt är ett objekt (dvs alla datastrukturer representeras som objekt). Ett program är en samling objekt Objekten kommunicerar genom att skicka meddelanden till varandra Varje meddelande är en begäran om en handling (aktion) som ska utföras Varje objekt har sitt eget minne Ett objekt kan bestå av andra objekt 11

Principer för OOP (forts) Varje objekt tillhör en klass En klass representerar ett visst beteende alla objekt som är n instanser av samma klass kan utföra samma aktioner. Klasser organiseras i en trädliknande arvshierarki. En klass ärver beteende och datastrukturer från tidigare klasser 12

Objekt, meddelanden, metoder 1. Ett OO program är en samling av interagerande objekt 2. Varje objekt står för en viss tjänst 3. Varje objekt associerar ett antal meddelanden till metoder 4. All kommunikation följer samma protokoll: (a) Ett objekt A (klient) skickar ett meddelande (en begäran) M till objektet B (b) B utför motsvarande metod (c) Kontrollen återgår till A 13

Informationsdöljning (inkapsling) En klient som skickar ett meddelande behöver inte veta hur begäran utförs, bara att den utförs Informationsdöljning är viktigt för återanvändbarhet Kunniga programmerare skapar generella byggstenar (klasser) 14

Klassen/objektet sett inifrån: Ett objekt av några datastrukturer och några funktionsdefinitioner Objektet (dvs den som implementerar klassen) har frihet att använda vilka tekniker som helst för att implementera beteendet Klientprogrammerare använder dem för att skapa objekt 15

Klassen/objektet sett utifrån Levererar en viss tjänst Tar ett visst ansvar (responsibility) Har ett visst beteende 16

Objekt och klasser 1. Varje objekt tillhör en viss klass (är en instans av en viss klass) 2. Klasser är statiska (dvs givna av programmet) 3. Objekt är dynamiska (skapas när programmet körs) 4. Ett objekts beteende definieras av dess klass 5. Ett objekts interna struktur definieras av dess klass 17

OOP jämfört med traditionell programmering Traditionell programmering: Programmet utför operationer på datastrukturer (modifiera ett element i en array, tex) OOP: Ett objekt får en begäran om att utföra en viss handling. Objektet utför aktionen (genom att modifiera lokalt data, eller skicka meddelanden till andra objekt.) Traditionell programmering: Data är globalt, eller lokalt till en funktion 18

OOP jämfört med traditionell programmering (forts) OOP: Allt data tillhör ett visst objekt Traditionell programmering: algoritmer som arbetar på data (verb viktiga) OOP: klasser (substantiv viktiga) ger modularitet gratis" 19

Hur hittar man objekten? När man skriver ett objektorienterat program, hur bestämmer man vad som ska representeras som objekt? Vi vill att objekt i programdesignen ska likna objekt i verkligheten: Nånting synligt eller påtagligt. Nånting väl avgränsat. Nåt som är målet för handlngar. 20

Hur bestämmer man klasstrukturen? En klass ärver från en annan klass om klassen den ärver ifrån representerar ett mera generellt begrepp Exempel: bilar-motorfordon, katter-däggdjur Man definierar ofta abstrakta klasser som inte har egna instanser för att fånga gemensamma egenskaper i olika klasser. 21

Hur bestämmer man klasstrukturen? (forts) Ett program kan skrivas så att det fungerar för alla klasser som ärver från en viss klass (gör det lätt att utöka programmet). Ibland kan det vara intressant att låta klasser ärva ifrån varandra även om det inte finns ett sånt samband (arv av implementation). 22

Vad får vi av OOP? Klassbegreppet ger oss ett sätt att modularisera programmet. Programmet kan förstås en klass i taget. Standardbibliotek definierar klasser som kan användas i nya program. Arv gör det möjligt att skriva program som fungerar även med klasser som kom till i efterhand. 23