OOMPA 2D1359 Föreläsning 2

Relevanta dokument
2203$' ' ) UHOlVQLQJ Objektorienterad Modellering Programmering och Analys

Laboration 1: Figurer i hierarki

OOMPA 2D1359 Föreläsning 3

OOMPA 2D1359 Föreläsning 8

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

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

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

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

Objektorienterad programmering

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

Objektorienterad programmering, allmänt

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

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

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

Imperativ programmering. Föreläsning 4

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

Föreläsning 15: Repetition DVGA02

Objektorientering Användning

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

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

TDDE10 TDDE11, 725G91/2. Objektorienterad programmering i Java, Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Objektorienterad programmering. Grundläggande begrepp

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

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

Objektorientering. Grunderna i OO

Objektorienterad konstruktion

Föreläsning 13 Innehåll

Objektorienterad programmering

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

Objektkonstruktion. Vilka sorter finns? Varför ärver vi? Aggregering ger en lösare koppling till delarna än komposition. 1nJUDÃJUXQGOlJJDQGHÃUHJOHU

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

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

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

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

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

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

Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl

Introduktion till arv

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

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

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

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd

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

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

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

Lösningar till tentamen i EDAF25

Utvecklingsmetoder och processer. UML och OCTUPUS en kort introduktion

1 Klasser och objektorientering Vad är objektorientering?

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

Föreläsning 5. Föreläsning 5. Klasser och objekt. Klasser och objekt. Klasser och objekt

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

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

Klasser och objekt. Henrik Johansson. August 20, 2008

Föreläsning 5. Föreläsning 5

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

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

Modeller, Objekt och Klasser

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

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

Lösningar till tentamen i EDAF25

Klasshierarkier - repetition

Arv. Objektorienterad och komponentbaserad programmering

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

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

Exempel på användning av arv: Geometriska figurer

Objektorienterad Programmering (TDDC77)

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

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

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

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Objektorienterad analys och design

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

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

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

Tentamen i Objektorienterad modellering och diskreta strukturer

Objektorienterad Programmering (TDDC77)

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

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

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

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

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

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

Laboration 2: Designmönster

Classes och Interfaces, Objects och References, Initialization

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

Enkla variabler kontra referensvariabel

OOP Objekt-orienterad programmering

Separation of Concern. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

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

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt

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

Design av en klass BankAccount som representerar ett bankkonto

Laboration 2: Designmönster

Transkript:

OOMPA 2D1359 Föreläsning 2 Objektorienterad Modellering Programmering och Analys Objektorientering grunder l Vad är OO? Programspråk?, paradigm?, gränssnitt?, struktur?, eller? l Termer och fundament Objekt, klass, hierarki, arv, inkapsling, polymorfi, meddelande, metod, instans l Scenarier För att beskriva typiska och viktiga aktiviteter l CRC-kort Teknik för att beskriva och ta fram objekt, klasser och relationer - 1 - Vad menas med att vara objektorienterad? l Svaret beror på om frågan avser programspråk, användargränssnitt, en tillämpning, en databas eller en analys och designmetod Kategori "Definition" Vad är det byggt C++, Smalltalk, Java. Gränssnittsbyggare. Kodgenerator. med? Återanvändbara komponenter Hur arbetar det? Frågande snarare än berättande. Identifierande av enheter och sändande av meddelanden. Vad behandlar det? Abstraktioner som modellerar ett problem. Hur är det Moduler. Grundenheterna enkla att integrera. Generella beskrivningar strukturerat? av klasser av ting. Generalisering och specialisering, inkapsling, Vad mer kan man göra med det? polymorfi, arv. Systemet kan utvidgas med ändringar som propagerar ut över systemet utan att dom behöver dupliceras eller "förstöra" icke relaterade delar - 2-1

... l Objektorienterat språk Baseras på inkapsling, polymorfi och arv l Objektorienterad användargränssnitt Delarna i gränssnittet är objekt/komponenter l Objektorienterad tillämpning eller verktyg Ändringsbara, återanvändbara och utvidgbara komponenter l Objektorienterad databas Representerar, lagrar och återskapar objektmodeller l Objektorienterad analys och design Består av tekniker att hitta objekt, för att strukturera relationer, eller hantera processen att skapa objekt. - 3 - Varför objektorientering? l Separerar gränssnitt från implementation l Avbildar världen på ett enkelt och naturligt sätt l Objekt förbereder system för förändring l Objekt tillåter att (bara) delar av systemet fungerar Andra delar kan byggas klart senare l Objekt är naturliga att återanvända - 4-2

Vad är ett objekt? l Ett objekt En beskrivning av beteende Har ett väldefinierat gränssnitt som specificerar beteendet oberoende av implementationen. Andra objekt kan interagera med objektet via det givna gränssnittet. Implementationen beskriver hur objektet skall reagera Ett objekt består av l privata delar, dolda och ej åtkomliga av andra objekt l publika delar, som är åtkomliga för andra objekt Ett objekt instansieras från en klass myaccount = new Account(); metod instans Inkapsling Klass youraccount = new Account(); - 5-0 300 l Meddelandesändning Vi aktiverar ett objekt genom att skicka meddelanden till det myaccount.balance(); youraccount.balance(); Vissa meddelanden kan ha argument myaccount.deposit(300); youraccount.deposit(500); 0 500 200 x = 100; myaccount.withdraw(x); youraccount.deposit(x); 600 100 myaccount.transfer(100, youraccount); 700-6 - 3

l Objektsammansättning Objekt kan vara definierade mha andra objekt l en bil bil består av en kaross, en motor, en bensintank, dörrar etc dessa objekt kan i sin tur bestå av andra objekt l en dörr består av ett handtag, ett fönster, ett lås, osv Ett objekt som består av andra objekt kan delegera ansvar till dessa objekt l Bilen delegerar ansvaret för dörrlåsningen till dörren som i sin tur delegerar detta till låset. Vi kan enkelt byta lås (från tex mekaniskt till elektroniskt) utan att ändra varken bil eller dörr. - 7 - l Ett annat exempel är en bild som består av linjer, rektanglar eller andra bilder bild bild bild linje bild rektangel rektangel linje rektangel - 8-4

Vad är en klass? l En klass är en beskrivning av en viss uppsättning av objekts attribut och beteende attributen kallas för instansvariabler beteendet beskrivs med hjälp av metoder instansvariabel med initialvärde balance = 0 Account balance = balance + amount; metoder operationer/ meddelanden deposit(amount) withdraw(amount) transfer(amount, anotheraccount) balance() return balance; balance = balance amount; withdraw(amount); anotheraccount.deposit(amount); - 9 - Klasser ordnas i hierarkier subklasserna ärver från sina superklasser superklass subklass Vehicle start() stop() move() superklass superklass LandVehicle subklass AirVehicle takeoff() land() superklass Car Train GolfCart Airplane Glider - 10-5

Metodbindning l Metod söks först i mottagarens klass därefter i Vehicle superklasser airplane = new Airplane(); Hittas ingen metod i rotklassen så genereras ett felavbrott! airplane.start(); 1: sök i klassen - 11 - superklass 3: fortsätt i superklassens 2: sök i superklassen start() stop() move() Airplane AirVehicle takeoff() land() Glider Arvshierarkier l I VisualWorks\Smalltalk hittar vi följande klasshierarki Object () Magnitude () ArithmeticValue () Number () FixedPoint ( numerator denominator scale ) Fraction ( numerator denominator ) Integer () LargeInteger () LargeNegativeInteger () LargePositiveInteger () SmallInteger () LimitedPrecisionReal () Double () Float () - 12-6

Subklasser kan skriva över metoder Försök att hitta klasser genom att abstrahera gemensamt beteende och ordna dem hierarkiskt genom att låta klasser som är (eng. is-a) av viss underordnad typ bli subklasser. Exempel: Kvadrat är-en rektangel. Cirkel är-en ellips. Rectangle extent : Point tostring() :String draw() : void Square tostring() : String draw() : void Shape position : Point tostring() :String draw() : void moveby(distance) : void Ellipse extent : Point tostring() :String draw() : void Circle tostring() : String draw() : void return "Jag är en figur!" //vi gör ingenting som default! position.translate(distance.x, distance.y); return "Jag är en ellips i position " + positon.tostring(); primitivedrawoval(postion, extent); max = Math.max(extent.x, extent.y); primitivedrawoval( new Point(max, max)); - 13 - Polymorfi och överskrivning l Olika klasser kan ha metoder med samma namn, s.k. polymorfi r1 = new Rectangle(); // Instansiera klassen Rectangle c1 = new Circle(); // Skapa en instans av klassen Circle /* Nu skickar vi meddelandet draw till både r1 och c1 */ r1.draw(); c1.draw(); /* vilket ger olika resultat trots att vi skickar samma meddelande till olika objekt */ - 14-7

Design och utveckling l Vilken typ av projekt kan vara avgörande för hur man går tillväga Programmera i det lilla l kod skapas av en eller få programmerare. En enskild person kan ha överblick och vara insatt i alla delar av projektet. l Huvudproblem (mjukvara): designa och utveckla algoritmer Programmera i det stora l mjukvaran tas fram av ett stort team. Vissa personer kan specificera eller designa andra kan koda vissa komponenter, slutintegration/applikationen görs kanske av en tredje grupp, osv. Ingen person har möjlighet att sätta sig in alla delar av projektet. l Huvudproblem (mjukvara): hantera kommunikationen mellan olika delar av projektet. - 15 - Arbeta med scenarier l Identifiera viktiga delar av systemet l Beskriv dem med steg-för-steg beskrivningar i vanlig text beskriver händelseförlopp börjar och slutar på godtyckligt (/lämpligt) ställe innefattar objekt, delsystem eller en blandning av dessa används för att beskriva dynamiken hos systemet används för att testa framtagna modeller används för att konstruera modeller kan användas vid verifiering av system kan också utgöra basen för dokumentation av systemet - 16-8

... l Ofta hittar man scenarier genom att utgå från hur användaren skall interagera med systemet Senare kan man (kanske) hitta delscenarier och beskriva hur objekten interagerar med varandra l Exempel (Pelle i Piteå skickar post till Olle i Umeå) Pelle postar brevet i Piteå brevlådan Posten sorteras Brevet transporteras till posten i Umeå Posten sorteras Brevet delas ut - 17 - Sekvensdiagram l Scenarier brukar beskrivas med sekvensdiagram och andra interaktionsdiagram Pelle Piteåposten Umeåposten Olle posta sortera transportera sortera dela ut - 18-9

Dela upp på delkomponenter l Identifiera vad som skall göras och sedan vem som skall göra det l Då man börjar få någorlunda klart för sig vad man skall konstruera är det dags att identifiera komponenter l Komponenterna (systemen) delas sedan upp på delkomponenter (delsystem) l Detta är ofta en brainstormingliknande iterativ process - 19 - Tumregler l En komponent skall ha en liten mängd väldefinierat ansvar Ändringar skall påverka så få som möjligt l En komponent skall interagera så lite som möjligt med andra komponenter Att minska kopplingen (eng. coupling) mellan olika komponenter ökar sannolikheten för att ändringar göras med minimal inverkan på andra komponenter - 20-10

CRC-kort (Class-Responsibility-Collaborators) l Av Cunningham och Beck under mitten av 80-talet. l Togs fram för att lära ut objektorienterad programmering med Smalltalk l För att ge komponenter fysisk presentation l Bra vid brainstorming /spånande l Process: Man skriver ner klasser på kort (allt man kommer på) Efter ett tag när man har ett (tillräckligt) antal klasser väljer man ut dom bästa Sedan går man över till att identifiera ansvarsområden och beteende för varje klass Sedan identifieras samarbete klasser emellan Man försöker också ordna klasserna hierarkiskt samt identifiera abstrakta klasser - 21 -... l Ett blankt CRC-kort Klassnamn Superklass: Subklasser: Ansvar Samarbetspartners - 22-11