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

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

Objektorientering. Grunderna i OO

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

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

Objektorienterad analys och design

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Objektorienterad analys och design

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

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

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

Objektorienterad programutveckling i ett nötskal

Imperativ programmering. Föreläsning 4

Objektorienterad konstruktion

Objektorienterad metodik. Programutvecklingsmetodik. Objektmodellen. Varje objekt har en unik identitet

Programutvecklingsmetodik

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

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

Objektorienterad programmering

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

Fyra i rad Javaprojekt inom TDDC32

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

Objektorientering Användning

OOMPA 2D1359 Föreläsning 2

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

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

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

Föreläsning 13 Innehåll

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

"Ä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 15: Repetition DVGA02

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

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

Objektorienterad systemutveckling i ett nötskal

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

Klasshierarkier - repetition

Objektorienterad programmering Föreläsning 5

TDDI82 - Projekt. Christoffer Holm. Institutionen för datavetenskap (IDA)

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

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

TDP005. Föreläsning 3 - UML. Filip Strömbäck

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

Konstruktion av klasser med klasser

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

kl Tentaupplägg

Föreläsning 7. Programmeringsmetodik och programmering i ett objektorienterat språk, 5p

Design av en klass BankAccount som representerar ett bankkonto

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik

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

Inkapsling (encapsulation)

PROGRAMMERINGSTEKNIK TIN212

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

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

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

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

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

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

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77)

Malmö högskola 2007/2008 Teknik och samhälle

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

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

UML. Tomas Czarnecki Institutionen för Informationsbehandling Åbo Akademi,FIN Åbo, Finland url:

Laboration 1 - Grunderna för OOP i Java

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

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

Objektorienterad Programmering (TDDC77)

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

Laboration 3. Uppgift 1

TENTAMEN OOP

Objektorienterad Systemutveckling 1 (7,5 hp)

Översikt. Introduktion. Objektorienterad programutveckling UML UML. Analys Design. Klassdiagram Aktivitetsdiagram

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

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

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

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

Översikt. Introduktion. Objektorienterad programutveckling UML UML. Analys Design. Klassdiagram Aktivitetsdiagram

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

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

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

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

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

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

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

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

Objektorientering Klasser

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Tentamen i Objektorienterad modellering och design

Malmö högskola 2008/2009 CTS

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

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

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

Arv och polymorfism i Java

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

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Tentamen i Objektorienterad modellering och design

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

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

LÖSNINGSFÖRSLAG. Tentamen. Objektorienterad modellering och design. EDA665, 4 poäng

Transkript:

TDDE10 TDDE11, 725G91/2 Objektorienterad programmering i Java, Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Ett större exempel på OOP Objektorienterad Analys (OOA) Objektorienterad Design (OOD) 1

Ett något större exempel En tekniker på en verkstad behöver ett system för att hålla reda på fordon, dess ägare och vad som behöver servas (beroende på typ/modell). Systemkrav: Systemet ska hålla reda på fordon och dess ägare. Teknikern ska kunna lägga till och ta bort fordon. Systemet ska, för ett fordon, kunna generera en checklista över det som skall servas. Nu vet vi hur man bygger klasshirarkier, ritar UML och programmerar OO. Men hur kommer vi fram till vilka klasser som behövs och vilket ansvar de skall ha? 2

Användningsfall (Use Case) Beskriver en interaktion mellan en användare (en aktör) och systemet. Aktören är ofta en människa, men behöver inte vara det. Det kan t.ex. vara ett annat system Utgör en funktion som är utåt synlig. Uppnår ett distinkt mål för användaren. Omfattning kan variera. Innefattar en bild och beskrivande text. (Use-case diagram) Lägg till fordon Tekniker Teknikern lägger till ett fordon till systemet genom att fylla i ett formulär. När teknikern klickar på knappen bekräfta kontrolleras att fordonet inte redan finns i systemet och att det finns i transportstyrelsens register. Skulle något av dessa gälla visas ett felmeddelande, annars läggs fordonet till. 3

Användningsfall (Use Case) (2) Gemensam funktionalitet kan brytas ut. Relationen använder används till att referera till den gemensamma delen. Tekniker Lägg till fordon Generera checklista <<använder>> <<använder>> Hitta fordon i databas Finns även relationen utvidgar som används för att specialisera ett mer generellt användningsfall. T.ex. Ta bort fordon ur databas skulle kunna utvidga hitta fordon i databas. 4

Användningsfall (Use Case) (3) Tekniker Lägg till fordon Generera checklista <<använder>> <<använder>> Hitta fordon i databas En viss väg genom ett användningsfall kallas för ett scenario. T.ex. Teknikern matar in fordonets registreringsnummer och klickar på hitta fordon. Informationen för en MC dyker upp på skärmen. Därefter klickar teknikern på generera checklista. På skärmen dyker det upp en lång lista med olika rubriker (checklistan). 5

Användningsfall (Use Case) (4) Vi kan bygga en hel katalog med aktörer och dess användningsfall. Tekniker Lägg till fordon Generera checklista <<använder>> <<använder>> Hitta fordon i databas Kan vi redan nu identifiera några klasser/objekt? Enkla metoder: Leta substantiv Brainstorming Fordon Checklista Knapp MC Personbil Lastbil Registreringsnummer Databas Transportstyrelsens register? Fönster 6

Klass-kort (CRC-kort) Vi kan använda oss av Klass-kort för att se våra klasser och dess samband. CRC står för Class, Responsibilities and Collaborators. D.v.s Vad har vi för klasser? Vad är deras ansvar? Vilka klasser samarbetar de med? Kan användas tillsammans med, eller som grund till klassdiagram. Fordon Klassnamn Kontrollera giltighet Transportstyrelsen, Databas Generera checklista Checklista, serviceprotokoll Hämta historik Serviceprotokoll Ansvarsområden Ansvarsområden 7

Klass-kort (CRC-kort) (2) Just ansvar för en klass är viktigt att fundera på. Leder bort från tänket att klasserna är passiva databehållare. Underlättar för förståelsen om klassens beteende i stort. Fordon Klassnamn Kontrollera giltighet Transportstyrelsen, Databas Generera checklista Checklista, serviceprotokoll Hämta historik Serviceprotokoll Ansvarsområden Ansvarsområden 8

Klass-kort (CRC-kort) (3) Vi kan nu skapa CRC-kort för våra klasser och dra runt och gruppera dem hur vi vill. Databas Lägg till fordon Fordon Sök/Ta bort fordon Fordon Serviceprotokoll Kontrollera giltighet Generera checklista Hämta historik MC Fordon Transportstyrelsen, Databas, Regnummer Checklista, serviceprotokoll Serviceprotokoll Personbil Visa I textuellt format Checklista Lastbil Hämta information om fordon Transportstyrelsen Fordon, Registreringsnummer Ägare Regnummer 9

Klassdiagram Slutligen bör vi även beskriva relationerna mellan våra funna klasser. Här använder vi gärna klassdiagram. Diagrammet behöver inte vara jättedetaljerat ur andra aspekter i detta läge. Här är attribut utelämnade. Database +addvehicle(vehicle) +findvehicle(licensplate) : Vehicle +removevehicle(licensplate) 1 0..* 1 Vehicle +checkvalidity(database, TransportAgency) +generatechecklist() : Checklist +gethistory() : ServiceRecord[] 1 1 ServiceRecord 0..* MC +generatechecklist() : Checklist Car +generatechecklist() : Checklist Checklist +gettextualformat() : String Truck +generatechecklist() : Checklist TransportAgency +getvehicleinfo(vehicle) : String Owner Licensplate 1 10 1

Ett något större exempel Vi höjer blicken lite. Vi fick lite givna krav. Frågor: Vad skall göras Vilka begränsningar finns Vilken funktionalitet behövs Vilka klasser behövs? Vad är deras ansvar och förhållanden till varandra? Hur skall systemet konstrueras i stort? Behövs GUI, databas, annan infrastruktur? Exakt vilka operationer och attribut innehåller klasserna? Vad är klassernas exakta gränssnitt mot varandra? Kravspecifikation Krav Objektorienterad Analys Use Cases Klassdiagram Analysdokument Objektorienterad Design Designdokument Objektorienterad Programmering CRC-kort Många fler verktyg finns! Interaktionsdiagram Aktivitetsdiagram Moduldiagram o.s.v. I praktiken går man ofta tillbaka (uppåt i figuren) vid behov. 11

Objektorienterad Design I designdokumentet förfinas klassdiagrammet och klassbeskrivningarna. Även Use cases, scenarion och andra diagram som tagits fram i analysfasen finslipas. Ett utdrag från det färdiga designdokumentet: Vehicle Klass Vehicle Beskrivning Klassen Vehicle är superklassen för alla fordon I systemets databas. Klassen lagrar data för ett fordon och ansvarar för giltighetskontroller av fordonet samt generering av checklista. Klassen är abstrakt, eftersom metoden generatechecklist skall överskuggas i basklasserna Car, MC, o.s.v. Konstruktorer Det finns endast en konstruktor som ansvarar för att sätta alla klassens instansvariabler från inkommande parametrar (en per instansvariabel). Publika instansmetoder -plate : LicensePlate -records : ServiceRecord[] -owner : Owner -fabdate : Date -miles : int -automatic : boolean -weight : int +checkvalidity(database, TransportAgency) +generatechecklist() : Checklist +getlicenseplate : LicensPlate +gethistory() : ServiceRecord[] +getowner() : Owner +getfabricationdate() : Date +getmiles() : int +setmiles(int) +isautomatic() : boolean +getweight() : int