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



Relevanta dokument
Objektorientering. Grunderna i OO

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

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

Inkapsling (encapsulation)

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

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

Föreläsning 15: Repetition DVGA02

Föreläsning 1. Kursinformation. Utvecklingsprocessen. Kravspecifikation. Gruppindelning.

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

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

Imperativ programmering. Föreläsning 4

Objektorienterad analys och design

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

Objektorienterad konstruktion

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Objektorienterad programmering. Grundläggande begrepp

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

Objektorienterad programmering, allmänt

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

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

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

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

Objektorientering Klasser

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

729G75: Programmering och algoritmiskt tänkande. Tema 1. 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

Lite om databasdesign och modellering

Programmering = modellering

Objektorienterad programmering

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

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

729G06 Föreläsning 1 Objektorienterad programmering

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

Objektorientering Användning

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

Objektorienterad analys och design

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

Objektorienterad programmering

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

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

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

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

Tentamen i Objektorienterad modellering och design

Design och konstruktion av grafiska gränssnitt

Design och konstruktion av grafiska gränssnitt

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

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

Tentamen i Objektorienterad modellering och design Helsingborg

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

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

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

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

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

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

Introduktion till arv

Praktikum i programvaruproduktion

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

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

Relationer mellan objekt

Tentamen i Grundläggande programmering STS, åk 1 fredag

Objektorienterad analys och design

"Ä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 8. Arv. Arv (forts) Arv och abstrakta klasser

Design av en klass BankAccount som representerar ett bankkonto

Klasshierarkier - repetition

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

Fyra i rad Javaprojekt inom TDDC32

Arkitektur Michael Åhs

Tentamen i Objektorienterad modellering och diskreta strukturer

Laboration 1 - Grunderna för OOP i Java

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

Kursplanering Objektorienterad programmering

Frågor och svar till tentamen i Kravhantering

Teoridel (svaren direkt på lydelsen)

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

OOMPA 2D1359 Föreläsning 2

PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning

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

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

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

Objektorienterad Systemutveckling 1 (7,5 hp)

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

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

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

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Tentamen i Objektorienterad modellering och design

Spelet i sig är inte avancerat men projektet ställer en del krav på implementationen bland annat:

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

Information. Computer

Objektorienterad Programmering DAT043. Föreläsning 10 13/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

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

Arv och polymorfism i Java

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

Användningsfalls- mönster

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

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

Transkript:

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

Vår process Kravbeskrivning (3 dagar). Enkel form av användningsfall (use cases). Analys och design (1 vecka). Design av GUI enligt MDI-kursen. Implementation (4 veckor). I huvudsak en iteration med tillägg om tid medger. Enhetstest av viktiga klasser.

Objektorienterad analys och design Varning! Litteraturen är inte ening om hur (eller om) man kan skilja på analys och design vid objektorienterad programutveckling. En tänkbar distinktion Objektorienterad analys: studera krav på systemet (t.ex. från användarfall) och modellera den relevanta delen av världen i form av objekt och relationer mellan dessa. Objektorienterad design: strukturera program i klasser och beskriv hur dessa är relaterade (arv, association, mönster, ). Kom ihåg: klass vs objekt En klass är en del av programmets text. Den utgör en mall från vilken instanser kan skapas under exekveringen.

Diskussion Beprövad erfarenhet Design är svårt. Många metoder har föreslagits, men det fortsätter att vara svårt. En vecka analys och design??? Varför så mycket arbete med detta? Är det inte bättre att börja programmera direkt?

Objekt ur olika synvinklar Modellbyggarens synvinkel Ett objekt är en modell av en del av världen, fysisk eller begreppsmässig, har attribut och uppvisar karakteristiska beteenden. Programmerarens synvinkel Ett objekt är en dataabstraktion som kapslar in ett tillstånd och tillhandahåller metoder som avläser och/eller påverkar detta tillstånd.

Några mål med vårt arbete Vi vill åstadkomma ett system som: uppfyller sin uppgift så bra som möjligt är så enkelt att förstå som möjligt är så enkelt att modifiera som möjligt är som enkelt att bygga ut som möjligt är så enkelt att implementera som möjligt är felfritt... Designdokumenten måste ge så välspecificerade beskrivningar av de olika delsystemen att varje programmerare vet vad han/hon skall göra.

Därför analys och design! God design Är en förutsättning för en lyckad produkt. Är enklare att implementera. Dålig design Ger ett system som är svårt att underhålla/modifiera. Ger ett system som är felbenäget. Ger ett system som är svår att utveckla i team.

Objektorienterad analys I analysfasen bestäms VAD som systemet skall klara av att göra. Analysens syfte är att vara en brygga mellan kravspecifikationen och designen. Målet är att förstå problemet och bygga en objektorienterad modell av problemdomänen. Analysen fokuserar på de funktionella kraven, dvs systemet betraktas utifrån. Analysen skall vara oberoende av programmeringsspråk och val av användargränsnitt (för att ge en generell lösning). Analysen skapar en terminologi och notation för det fortsatta arbetet. Resultatet från analysen är en beskrivning av de konceptuella objekt (entiteter, klasser) som ingår i problemdomänen, vilka egenskaper och beteenden de har, samt hur de samverkar med varandra.

Objektorienterad analys i två faser Utforskande fas 1) Finn objekt i problemdomänen. 2) För varje objekt: Beskriv kortfattat syftet med objektet. Beskriv de attribut (egenskaper) som objektet har. Beskriv de beteenden (operationer) som objektet har. Analyserande fas (kan även ses som en del av designen) 1) Klassificera objekten. 2) Beskriv relationer mellan klasserna. 3) Skapa och exekvera scenarion för att validera systemet. 4) Gruppera klasserna.

Analys: att hitta objekt En ofta rekommenderad metod Läs igenom systembeskrivning och användarfall, notera alla substantiv som kandidater till att vara objekt. Stryk alla vaga, problemoberoende ord ur listan. Identifiera och slå ihop synonymer. Identifiera attribut.

Ett exempel Vi tänker oss ett system för att boka och sälja biljetter till en biograf med flera salonger. Följande skall gälla för systemet: systemadministratörer kan lägga in föreställningar i systemet säljare kan boka och sälja biljetter ekonomisystemet kan få information om sålda biljetter. Låt oss betrakta några användningsfall.

Användningsfall 1 Lägg till en film Aktör: Systemadministratör. Mål: Lägg till en film och dess föreställningar till systemet. Interaktion: Användaren anmodas att ge filmens namn och premiärdatum. Systemet visar grafisk vy med tillgängliga visningstider för de olika salongerna den kommande månaden. Användaren väljer ett antal av dessa alternativ. Systemet bekräftar och lagrar valen. Prioritet: 1. Tidsåtgång: 3 dagar.

Användningsfall 2 Sälja biljetter Aktör: Säljare. Mål: Sälja ett antal biljetter till en viss föreställning. Interaktion: Användaren anger en film. Systemet visar en grafisk vy av salongen för nästa föreställning med lediga och upptagna platser markerade. Användaren kan markera ett antal lediga platser och sälja dem. Prioritet: 1. Tidsåtgång: 2 dagar.

Objekt eller attribut Begrepp som kan modelleras med fördefinierade typer som strängar eller datum, eller med en enkel typ som heltal, modelleras inte vidare som egna objekt utan endast som attribut till andra objekt. Exempel En film har (bland annat) attributen namn och premiärdatum.

Fortsatt modellering: fler attribut Fler attribut När kandidater till objekt identifierats kan man ofta finna fler naturliga attribut. Exempel En film har attributen speltid, språk, regissör, Exempel En plats har ett attribut som anger om den är ledig, såld eller bokad.

Fortsatt modellering: fler beteenden Exempel En film har sannolikt inga intressanta beteenden i detta system; ett filmobjekt lagrar bara sina attribut i inkapslad form. Identifiera beteenden Studera användarfallen för att identifiera operationer som objekten skall kunna utföra. Exempel En föreställning skall kunna sälja ett antal platser boka ett antal platser sälja bokade platser rapportera antal sålda platser.

En föreställnings livscykel Föreställningen läggs in i systemet. Platser bokas och säljs upprepade gånger. Försäljningsresultat rapporteras. Föreställningen tas bort ur systemet. Tillståndsdiagram För objekt med icke trivial livscykel kan denna illustreras med tillståndsdiagram.

Relationer mellan objekt Användningsfall kan också visa relationer mellan objekt: Vem utnyttjar vems tjänst? Om A utnyttjar en operation som B kan utföra, så måste A känna till B. Vem är ett specialfall av vem? Om A är en speciell sorts B, så kan vi modellera med en hierarki. Vem är en del av vem? Om A är en komponent i B, så har B (en referens till) A som attribut.

Scenarion flygplan 1 1 2 trafiktorn 5 ankomsthall flygplan 2 3 4 Flygplats Landvetter landningsbana 2 landningsbana 1 1. Ett flygplan begär landningstillstånd av trafiktornet. 2. Trafiktornet svarar med en lämplig landningsbana. 3. Flygplanet meddelar landningsbanan att det skall landa. 4. Landningsbanan meddelar trafiktornet att planet landat. 5. Trafiktornet meddelar ankomsthallen att ett flygplan anlänt.

Från analys till design Resultat av analysen En lista av objekt med attribut och beteenden. En (ofullständig) kunskap om relationer mellan objekt. Design Nu övergår vi från att analysera systemet till att designa programmet. Under designen betraktas systemet inifrån och syftet är att bestämma HUR systemet tekniskt skall realiseras, samt att skapa en tydlig bild av hur koden skall struktureras.

Från analys till design Första steg: Översätt objekten till klasser (typiskt med samma namn). objekt klass attribut instansvariabel operation publik metod Beskriv klasserna m.h.a. UML (se Jia och nätet)

Designprinciper för OOP Decoupling minimera beroendet mellan klasser. Delegering skicka vidare uppgifter till klassser som är bäst lämpade för jobbet. Inkapsling abstrahera bort implementationsdetaljer. Gränssnitt kommunicera med objekt via meddelanden, ingen kännedom om objektets inre. Abstraktion skapa begrepp på högre nivå genom att gömma undan detaljer i klasser och metoder. Modularitet bryt ner systemet i sammanhängande men sinsemellan löst kopplade delsystem.

Fortsatt design Typiska steg Lägg till implementationsinriktade klasser. Skriv klasskelett! Börja skriva användarmanualen för att förfina användarfallen och därmed bekräfta designen. Utnyttja relationer: Relationer medför ofta attribut som refererar till objekt av en annan klass; hierarkier implementeras med subklasser. Specifika parametrar och resultattyper för publika metoder; specificera beteendet med text. Använd javadoc! Hantera GUI via en MVC arkietektur. Inför interfaces för att få lösare kopplingar i programmet. Försök hitta designmönster. Men koda inte metoderna ännu!

MVC med passiv modell Om modellen endast kan uppdateras via GUI:t kan följande principiella arkitektur användas:

MVC med aktiv modell Om modellen uppdateras också på annat sätt (t.ex. via inkommande paket från nätet) måste modellen ha ansvar för att informera vyn/vyerna då den förändras. Ofta används mönstret Observer:

Koppling En bra design bör ha låg koppling mellan klasserna (d.v.s. få förbindelser I klassdiagrammet) Hög koppling Låg koppling

Några allmänna råd Håll nere komplexiteten; designa enkelt. Pröva alternativa ideer till design; var beredda att ändra er! Var restriktiv med att använda subklasser (extends)! Designa klasser med hög kohesion; alla metoder jobbar på samma gemensamma data (instansvariabler). En klass skall göra en sak och göra den bra. Designa för förändringar; försök hitta naturliga generaliseringar. Försök hitta designmönster; återuppfinn inte hjulet.

Design av GUI Typiska steg Analysera användningsfallen för att finna önskade komponenter. Organisera enligt principen från MDI kursen. Gör prototyp(er) på papper. Testa på utomstående.

Designdokumentets innehåll Ungefärlig innehållsförteckning Övergripande struktur hos ert program (klasser/interface och relationer); i förekommande fall indelning i delsystem. Använd UML:s klassdiagram (se Jia och nätet). För varje klass/interface en beskrivning av Syfte (kort textuell beskrivning) Publika metoder med signatur och specifikation Eventuellt redan identifierade privata metoder och instansvariabler (ej för interface). En mer detaljerad beskrivning av användargränssnittets design (val av komponenter) med motiveringar.

Läsanvisningar Kapitel 2 i Object-Oriented Software Development Using Java av Xiaoping Jia. Kapitel 5 i Code Complete av Steve McConnell. Detta kapitel finns som sample chapter på bokens hemsida (se kursens hemsida).