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

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

TDP005 Projekt: objektorienterade system

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

Objektorientering. Grunderna i OO

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

Objektorienterad analys och design

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

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

Introduktion. Byggstenar TDBA

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

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

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

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

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

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

Objektorientering Användning

Inkapsling (encapsulation)

Objektorienterad programutveckling i ett nötskal

Föreläsning 15: Repetition DVGA02

Objektorientering Klasser

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

Objektorienterad analys och design

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

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

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

Programutvecklingsmetodik

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

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

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

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

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

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

OOMPA 2D1359 Föreläsning 2

RUP - Rational Unified Process

Begreppsmodellering i UML

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

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

Objektorienterad konstruktion

Objektorienterad programmering, allmänt

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

Unified Modeling Language UML

Objektorienterad programmering. Grundläggande begrepp

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

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

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

Begreppsmodellering i UML

Symptom på problemen vid programvaruutveckling

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

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

Klasshierarkier - repetition

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

Föreläsning 8 2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ UML O2P 2000

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

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

Unified Modeling Language UML

Utvecklingsmetoder och processer. UML och OCTUPUS en kort introduktion

Objektorienterad programmering

Konceptuell modellering. Formalisering, automatisering och effektivisering

Objektorienterad Systemutveckling 1 (7,5 hp)

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

Arkitektur Michael Åhs

TDDD78 Objektorientering i Java, del 2

Objektorienterad Programmering (TDDC77)

Imperativ programmering. Föreläsning 4

RUP Rational Unified Process. 17 november 2004

Introduktion till arv

Objektorienterad Programmering (TDDC77)

Programmering = modellering

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

Objektorienterad systemutveckling i ett nötskal

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

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

Arv. Objektorienterad och komponentbaserad programmering

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Konstruktion av klasser med klasser

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

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

(Data)Modellering. nikos dimitrakas rum 2423

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

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

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

Tentamen i Objektorienterad modellering och diskreta strukturer

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

Konceptuell modellering

Föreläsning 9: Arv och UML

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

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

Objektorienterad analys och design

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

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

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

Föreläsning 11 Tisdag 6/6 2000

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

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

Föreläsning om OO, OOA och UML

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

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och diskreta strukturer

Transkript:

Översikt Introduktion UML Objektorienterad programutveckling Analys Design UML Klassdiagram Aktivitetsdiagram

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/verktyg Rational ROSE (kommersiell från Rational/IBM) Together/J (kommersiell från TogetherSoft/Borland) Object Plant (Shareware för Mac) ArgoUML (Open Source från USC) Tips: https://www.genmymodel.com/

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 Interaktionsdiagram Sekvensdiagram Communication diagrams Interaction overview diagram Timing diagrams Beteendediagram Aktivitetsdiagram Användningsfallsdiagram State machine 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

Vanliga diagram Sekvensdiagram Beskriver det dynamiska beteendet mellan aktörer och systemet och mellan systemets objekt Aktivitetsdiagram Beskriver hur arbetsgång, dataflöde och logik hänger ihop

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 LCDDisplay Operationer isblinking : bool blinkseconds() blinkminutes() blinkhours() stopblinking() refresh() Attribut

Klassdiagram Association Klass 2 1 SimpleWatch 1 1 1 1 2 Multiplicitet 1 PushButton LCDDisplay Battery Time push() release() Operationer isblinking : bool blinkseconds() blinkminutes() blinkhours() stopblinking() refresh() charge : float load() Attribut now()

Sekvensdiagram Objekt Klockanvändare : SimpleWatch : LCDDisplay : Time pressbutton1() pressbutton1() blinkhours() blinkminutes() pressbutton1() pressbutton1&2() incrementminutes() refresh() commitnewtime() stopblinking() Livslinje 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

Objektorienterad design, repetition Problemet och lösningen organiseras som en samling av diskreta objekt, inkluderande både datastruktur och beteende Karaktäristik Abstraherar funktionalitet till diskreta objekt 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 relaterade objekt kan ha olika beteende

Aktiviteter objektdesign 1. Finn objekten 2. Klassificera objekten 3. Beskriv relationer och händelser 4. 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 Iterativt, upprepa stegen vid behov

1. Finn objekten Kravspecifikationen Talhandlingar Egen brainstorming Användningsfall 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

Talhandlingar Ordklass Modellkomponent Exempel Substantiv, best, egennamn Objekt Sven, min cykel, leksaken Substantiv, obest Klass Leksak, cykel, kunder 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

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

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 i världen Ingen hänsyn till implementationen Specifikation Fokus på objekten som software-abstraktioner Inte bunden till någon specifik implementation Fokuserar på gränssnitten Modellera klassens gränssnitt snarare än implementationen Implementation Fokus på en specifik software-implementation Bundet till en viss teknologi och språk 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 Signatur Type PushButton State : bool push( times : int ) : void release() : void PushButton State push() release() Operationer Attribut Instans Up : PushButton State = T

Attribut Kan markera vilken synlighet attributen har + # - ~ public protected private package

Relationer Generalisering (arv) 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. Klassen kan till exempel vara parameter till en metod. (Bör undvikas i diagram)

Generalisering En klass ärver eller utvidgar en annan generell klass 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 Digitalklocka Analog Klocka

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) Man kan ange riktning på en association m.h.a. pil(ar) 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..*

Exempel roller Person 1 äger 0..* +ägare +ägt djur Husdjur Hund Katt

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 Båda klasserna har normalt samma livscykel Fylld diamant placerad vid heldelen inte vid delarna

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

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 Start Kundtjänst 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 enskild situation Använd UML-diagram som verktyg för design och implementation Förfina diagrammen successivt