TDP005 Projekt: objektorienterade system

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

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

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

Objektorientering. Grunderna i OO

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

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

Objektorienterad analys och design

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

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

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

Objektorientering Användning

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

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

Introduktion. Byggstenar TDBA

Objektorientering Klasser

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

Föreläsning 15: Repetition DVGA02

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

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

Objektorienterad analys och design

Objektorienterad programutveckling i ett nötskal

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

Inkapsling (encapsulation)

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

Programutvecklingsmetodik

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

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

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

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

Objektorienterad konstruktion

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

Unified Modeling Language 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?

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

Objektorienterad programmering. Grundläggande begrepp

OOMPA 2D1359 Föreläsning 2

Begreppsmodellering i UML

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

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

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

Unified Modeling Language UML

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

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

Begreppsmodellering i UML

(Data)Modellering. nikos dimitrakas rum 2423

Utvecklingsmetoder och processer. UML och OCTUPUS en kort introduktion

RUP - Rational Unified Process

Projektkaos. Chaos-rapporten. 34% av projekten avslutades i tid och enligt budget % misslyckades!

TDDD78 Objektorientering i Java, del 2

Arkitektur Michael Åhs

Symptom på problemen vid programvaruutveckling

Konceptuell modellering. Formalisering, automatisering och effektivisering

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

Övning / handledning Användningsfall

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

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

Föreläsning 8 2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ UML O2P 2000

Objektorienterad programmering

Objektorienterad systemutveckling i ett nötskal

Objektorienterad Programmering (TDDC77)

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

Objektorienterad Programmering (TDDC77)

Programmering = modellering

UML: konceptuell modell. 2203$' ' ) UHOlVQLQJ. Innehåll UML. Strukturella saker UML. Olika typer av diagram Att läsa.

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

Introduktion till arv

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

RUP Rational Unified Process. 17 november 2004

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

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

F2: Krav på objektorienterat språk

Imperativ programmering. Föreläsning 4

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

Geografisk information Representation av förändringar i datamängder

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

Klasshierarkier - repetition

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

Objektorienterad Systemutveckling 1 (7,5 hp)

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

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

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

Konstruktion av klasser med klasser

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

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

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

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

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

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

Föreläsning om OO, OOA och UML

Design. Vad lärde jag mig förra lekfonen? Hur bidrog jag Fll lärandet? Kravhantering sammanfa0ning 13/04/14

Föreläsning 11 Tisdag 6/6 2000

UML-syntax. Lennart Andersson Datavetenskap, LTH. 20 januari 2013

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

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

Arv. Objektorienterad och komponentbaserad programmering

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!

" «Observable» DataGenerator" betyder att klassen DataGenerator ärver från den abstrakta klassen Observable.

Transkript:

TDP005 Projekt: objektorienterade system 10/18/2007 Linköpings universitet 1

Översikt Ø Introduktion Ø UML Ø Objektorinterad programutveckling Ø Analys Ø Design Ø UML Ø Klassdiagram Ø Aktivitetsdiagram Ø Övning

Sagt om c/c++ Evolution of the C programmer: 0 months to 1 month: complete beginner 1 month to 1 year: incomplete beginner 1 year to 2 years: acolyte 2 years to 3 years: adept 3 years to 8 years: expert at 8 years: discovers comp.lang.c 8 years+: buggrit, back to beginner again!" Richard Heathfield. "The great thing about Object Oriented code is that it can make small, simple problems look like large, complex ones." "C++: Hard to learn and built to stay that way." "... one of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs." Robert Firth. "In C++ it's harder to shoot yourself in the foot, but when you do, you blow off your whole leg." Bjarne Stroustrup.

Modellering Ø Modellering är ett medel för att hantera komplexitet Ø Bygger en abstraktion av verkligheten Ø Abstraktioner är förenklingar: Ø Ignorera irrelevanta detaljer Ø Representera relevanta detaljer Ø Vad som är relevant eller inte beror på syftet med modellen

UML Ø Unified Modeling Language Ø Tre objektorienterade notationer som konvergerar mot en Ø Grady Booch (Booch) Ø Ivar Jacobson (OOSE) Ø James Rumbaugh (OMT)

UML Ø Ett verktyg för att uttrycka idéer Ø Nyutvecklare, Framtida utvecklare/underhåll, Kunden, Användarna Ø Kommunicera och utvärdera design Ø Kan tänka på design innan kodning Ø Ger högnivådokumentation Ø En notation inte en metod Ø Har blivit världsstandard Ø Stöds av flera metoder Ø Rational ROSE (kommersiell från Rational) Ø Together/J (kommersiell från Coad) Ø Object Plant (Shareware för Mac) Ø ArgoUML (Open Source från USC)

UML Ø Baserat på objektorienterade principer och begrepp Ø Uttrycker objektorienterade designer visuellt Ø Klasser och objekt Ø Inkapsling och abstraktion Ø Programspråksoberoende Ø Kombinerar flera visuella specifikationstekniker Ø Semi-formellt Ø Definierad syntax men ingen formell semantik

UML 2.0 Ø Strukturdiagram Ø Klassdiagram Ø Component diagrams Ø Component structure diagrams Ø Deployment diagrams Ø Object diagrams Ø Package diagrams Ø Beteendediagram Ø Aktivitetsdiagram Ø Användningsfallsdiagram Ø State machine diagrams Ø Interaktionsdiagram Ø Sekvensdiagram Ø Communication diagrams Ø Interaction overview diagrams Ø Timing diagrams

Vanliga diagram Ø Användningsfall (Use case) Ø Ø Ø Beskriver det funktionella beteendet sett ur ett användarperspektiv En funktion som är synlig för användaren Uppnår ett distinkt mål för användaren Ø Klassdiagram Ø Ø Ø Beskriver den statiska strukturen hos systemet: Objekt, attribut, associationer och subtypning Associationer representerar relationer mellan instanser av klasser Subtyper representerar specialiseringar och generaliseringar Ø Sekvensdiagram Ø Beskriver det dynamiska beteendet mellan aktörer och systemet och mellan systemets objekt Ø Aktivitetsdiagram Ø Beskriver arbetsgång, dataflöde och logiken i ett use case

Användningsfall (Use case) Paket Enkel klocka Aktör Läsa tiden Klockanvändare Ställa tiden Klockreparatör Användningsfall Byta batteri

Klassdiagram Klass Association 1 SimpleWatch 1 1 1 Multiplicitet Attribut 2 1 2 1 PushButton state push() release() LCDDisplay blinkldx blinkseconds() blinkminutes() blinkhours() stopblinking() refresh() Battery load() Operationer Time now()

Sekvensdiagram Objekt Klockanvändare :SimpleWatch :LCDDisplay :Time pressbutton1() pressbutton1() blinkhours() blinkminutes() pressbutton1() pressbutton1&2() incrementminutes() refresh() commitnewtime() stopblinking() Aktivering Meddelande

Aktivitetsdiagram Start Ställ klocka [för sakta] [för fort] Öka Minska slå ihop Slut

Objektorienterad programutveckling Ø Objektorienterad analys Ø Användningsfall Ø Klassdiagram, interaktionsdiagram Ø Objektorienterad design Ø Utnyttjar diagrammen från den objektorienterade analysen Ø Förfinar och modifierar klasserna. Ev. nya klasser Ø Detaljerade beskrivningar av systemet Ø Iterativ process Ø Analysen modellerar Ø Designen konstruerar

Objektdesign, repetition Ø Problemet och lösningen organiseras som en samling av diskreta objekt, inkluderande både datastruktur och beteende Ø Karaktäristika Ø Identitet hos enskilda objekt Ø Abstraktion för att förstå problemet Ø Klassificering av grupper av objekt med gemensamma attribut och beteende Ø Inkapsling för att dölja implementationsdetaljer Ø Arv som tillåter att attribut delas mellan snarlika objekt Ø Polymorfism så att objekt kan ha olika beteende Ø Persistens så att objektets namn, tillstånd och beteende består över tid och rum

Aktiviteter 1. Finn objekten 2. Klassificera objekten 3. Beskriv relationer och händelser 4. Gruppera klasser Ø Gruppera klasser i delsystem 5. Identifiera och beskriv användningsfall och utför scenarier för att verifiera (del)systemet Ø Kan leda till att nya objekt/klasser, samarbetspartners och relationer upptäcks

1. Finn objekten Ø Kravspecifikationen Ø Talhandlingar Ø Egen brainstorming Ø Användningsfall Ø CRC-kort Ø Generell kunskap och intuition Ø Leta bland vanliga objekttyper Ø Entiteter Ø Persistent information, saker och aktiviteter i världen, datastrukturer Ø Gränsobjekt Ø Interaktionen mellan användaren och systemet Ø Kontrollobjekt Ø Ett kontrollobjekt per användningsfall Ø Ett kontrollobjekt per aktör

CRC-kort Ansvar Klass Samarbetspartners Ø Class, Responsibilities, Collaborators Ø Klass = namnet på klassen Ø Ansvar = ansvar/syften med klassen Ø Samarbetspartners = de andra klasser som klassen måste samarbeta med Ø Komplement till diagram Ø Enkla att flytta runt, gruppera och ordna Ø Fokuserar på ansvar hos en klass Ø En klass är ingen passiv databehållare

Exempel Enkel klocka Visa tid Ändra tid Byta batteri Användare, LCDDisplay Användare, Reparatör, LCDDisplay, pushbutton Battery, Reparatör

Talhandlingar Ordklass Modellkomponent Exempel Substantiv, best, egennamn Objekt Sven, min cykel Substantiv, obest Klass Leksak, cykel Verb Metod Köpa, cykla Vara verb Arv Är en, en sorts Ha verb Aggregation Har en Modala verb Begränsning Måste vara Adjektiv Attribut Grön

2. Klassificera objekt Bestämma vilka klasser som objekten är instanser av Ø Namn. Välj namn med omsorg Ø Ansvar. Operationer som kan utföras på objekt från klassen Ø Samarbetspartners. Vilka andra klasser som klassen samarbetar med Ø Varifrån kommer informationen Ø Till vem skall information levereras Ø Kan vara variabel i objektet eller anrop av metoder i andra objekt

3. Beskriv relationer Ø Finna grupper av klasser som hör ihop, samarbetar eller på annat sätt interagerar Ø Statiska eller dynamiska Ø Arv eller association

UML klassdiagram Tre perspektiv: Ø Konceptuell Ø Fokuserar på begreppen/koncepten, dvs klasserna Ø Ingen hänsyn till implementationen Ø Specifikation Ø Tar hänsyn till implementationen Ø Fokuserar på gränssnitten Ø Programmera klassens gränssnitt snarare än implementationen Ø Implementation Ø Visar relationen mellan klasser, arkitekturen

Klassdiagram, uppbyggnad Klassobjekt består av tre delar Ø Namn Ø Attribut Ø Klassinformation som kan accessas och möjligen modifieras Ø Operationer Ø Metoder Ø Grundläggande operationer (t.ex. getvalue, putvalue) kan uteslutas

Klassdiagram, exempel Klass PushButton PushButton state push() release() Operationer Attribut Type Signatur Instans PushButton bool state void push() void release() up: PushButton state = T

Relationer Ø Generalisering Ø En klass är subklass till en annan Ø Realisering Ø En klass implementerar ett gränssnitt Ø Association Ø En klass har attribut av annan klass eller tvärtom Ø Inkapsling Ø En klass är deklarerad i en annan (osynlig utåt) Ø Beroende Ø Annan relation som talar om att modifiering i en klass kan påverka den andra. Bör undvikas

Generalisering Ø En klass ärver eller utvidgar en annan Ø En ofylld triangel med spetsen mot superklassen Ø Hierarkisk relation Ø Subtypen är en specialisering av supertypen Ø Subtypen kan substitueras för supertypen Ø Subtypen ärver gränssnittet Ø Subtypen ärver operationer och attribut

Generaliseringar, exempel Klocka Klocka Digitalklocka Analog klocka Digitalklocka

Realisering och beroende Ø Realisering: Streckad linje med ofylld triangel mot gränssnittet Ø Beroende: Streckad linje med enkel pilspets. InputStream interface DataInput DataManipulering DataInputStream

Associationer Ø Relationer mellan klasser Ø En klass innehåller attribut av annan klass Ø Varje association har två roller (en för varje riktning) Ø Rollerna kan namnges Ø Rollerna kan ha begränsade associationer Ø Roller har multiplicitet Ø Ett fixt värde, 1 Ø Godtyckligt många * Ø En mängd värden, 2,4,7 Ø Värden i intervall, 1..5 Ø Kombinationer, 1..*

Aggregation och Composition Aggregation Ø Specialiserad association för del-av (eller har) hierarkier Ø Öppen diamant placerad vid heldelen inte vid delarna Composition Ø Starkare form av aggregation Ø Fylld diamant placerad vid heldelen inte vid delarna

Association, aggregation, composition, exempel Fordon Bil Hjul Chassi Motor

Association, aggregation, composition, exempel Fordon 4 Hjul 1 1 Bil 1 1 1 Chassi Motor

Association, aggregation, composition, exempel Fordon 4 Hjul 1 1 Bil 1 1 1 Chassi Motor

Association, aggregation, composition, exempel Fordon 4 Hjul 1 1 Bil 1 1 1 Chassi Motor

Association, aggregation, composition, exempel Fordon 4 Hjul lufttryck pumpa() 1 1 Bil 1 1 1 Chassi Motor

Rekursiv aggregering Program * * Block Sammansatta satser Enkla satser

SDL GameEngine

Aktivitetsdiagram Ø Visar flödet mellan aktiviteter och handlingar kopplade till ett givet objekt i termer av Ø En ingång Ø En utgång Ø Handlingar och aktivitetstillstånd, med iteration (*) Ø Övergångar, kan ha skyddsvillkor (guard conditions) Ø Grenar Ø Sammanslagningar Ø Delningar (Forks) Ø Föreningar (Joins) Ø Bra på parallella aktiviteter

Parallella aktiviteter Start Fork Ställ klocka Ställ minuter Ställ timmar Gren [för sakta] [för fort] [för sakta] [för fort] Öka Minska Öka Minska Sammanslagning Join Slut

Aktivitetsdiagram som visar vilken klass som har ansvar (swimlanes) Lager Kundtjänst Start Kassa Ta emot order Fyll i order Skicka räkning Leverera order Ta emot betalning Avsluta order Slut

Slutord Ø Objektorienterad systemutveckling är en iterativ process Ø Viktigt att identifiera objekten Ø UML innehåller många olika diagram för olika syften Ø Välj de som passar för varje enskilt projekt Ø Använd UML-diagram som verktyg för design och implementation Ø Förfina diagrammen succesivt

Övning Ø Handouts