Klasser Modeller
Domænemodellens rolle er central: I dag 07-04-2017 Softwarekonstruktion 6
Objekter og klasser Objekt: Et objekt tilhører en klasse Klasse: en helhed med identitet, tilstand og adfærd Et objekt tilhører en klasse Klasse: en beskrivelse af en samling af objekter med samme struktur, adfærdsmønster og attributter Til enhver klasse hører en mængde af objekter 07-04-2017 Softwarekonstruktion 6
UML objekt notation 07-04-2017 Softwarekonstruktion 6
Klassediagram 07-04-2017 Softwarekonstruktion 6
Eksempel på associering UML notation Bil P er son .. * 0.. Beskriver sammenhæng mellem objekter. Kan være: 0..*, 1..*, 0..1 eller 1..1 Her ”mange-til-mange” 07-04-2017 Softwarekonstruktion 6
Generaliseringsstruktur 07-04-2017 Softwarekonstruktion 6
Eksempel på generaliseringsstruktur UML notation Er det her rigtigt? 07-04-2017 Softwarekonstruktion 6
Mønstere: Løsning på ofte forekommende modelleringsproblemer Genstands-beskrivelse Relatering Composite Mmfl. 07-04-2017 Softwarekonstruktion 6
Nyttige mønstre: genstands-beskrivelse Biludlejning Kunde = kunden, aftale= lejekontrakt og ydelse = biler Ordresalg Kunde = kunden, aftale = ordre og ydelse = varer Kursuscenter Kunde= kursist, aftale= tilmelding og ydelse = kursusafh Bibliotek?? 07-04-2017 Softwarekonstruktion 6
Nyttige mønstre: Relatering Klassediagram 1. Udkast plus objektdiagram Problem: Associeringen mellem ordre og vare har selv nogle egenskaber - registrering af antal bestilte varer 07-04-2017 Softwarekonstruktion 6
Relaterings mønstret Løsningsmuligheder Løsning: Tilføjelse af en associeringsklasse Alternativ 1: Navngivning af associering med tilhørende attributter Alternativ 2: En ny klasse Delordre – kaldes ofte Ordrelinie eller Varelinie 07-04-2017 Softwarekonstruktion 6
Aggregering vs. associering Aggregering kan ses som en “del-helhed” forbindelse Associering er en mere “løs” forbindelse mellem objekter Kan komponenten eksistere selvstændigt? Kan komponenten skiftes ud? Hvem har ansvaret for oprettelsen af komponenten? 07-04-2017 Softwarekonstruktion 6
Opgave . Udarbejd klassediagram for web-bestilling af blomster mv. Tag udgangspunkt i beskrivelsen af use casen: ”Afgiv ordre” 07-04-2017 Softwarekonstruktion 6
Use case realisering Interaktionsdiagrammer Sekvensdiagrammer UP’s Analyse Use case realisering Interaktionsdiagrammer Sekvensdiagrammer
Analyse og design i UP Både analysen og design i UP beskriver hvordan use cases kan realiseres ved hjælp af samarbejdende objekter Analysen er teknologineutral og kan betragtes som en slags overordnet design Der vises klasser fra problemdomænet (kursist, kursus ..) ikke løsningsdomænet (database.., gui , netværk …) I designet indarbejdes teknologi-afhængige aspekter Hvilken type database? Hvilke designklasser indkapsler databasen? 07-04-2017 Softwarekonstruktion 6
Use case realisering 07-04-2017 Softwarekonstruktion 6
Use case realisering Målene for analysen er: At finde de analyseklasser der skal bruges i realiseringen af use cases At finde ud af hvilke beskeder (metode kald) de enkelte objekter skal sende til hinanden for at kunne realisere use cases At sikre konsistens mellem krav og analyse ved løbende at opdatere kravsmodellerne Use case realisering handler om at fastlægge, hvordan klasser skal samarbejde for at realisere systemets funktionalitet i et dynamisk view 07-04-2017 Softwarekonstruktion 6
Use case realisering 07-04-2017 Softwarekonstruktion 6
UML interaktionsdiagrammer De vigtigste er: Sekvensdiagrammer Kollaborationsdiagrammer Elementerne i diagrammerne: Livslinjer for de deltagende objekter Fx: minkonto: Konto (objekt:Klasse) Beskeder, som er en specifik kommunikation mellem livslinjerne Fx: FindKonto(kontonr) 07-04-2017 Softwarekonstruktion 6
Interaktions diagrammer Kollaborations diagrammer objekt interaktion i graf eller netværks format fokus på strukturelle aspekter Sekvens diagrammer interaktionen vises I stakit format tids ordnet sekvens af handlinger 07-04-2017 Softwarekonstruktion 6
Eksempel 1 07-04-2017 Softwarekonstruktion 6
Deltagende klasser: AddCourse 07-04-2017 Softwarekonstruktion 6
nsdiagram: AddCourse 07-04-2017 Softwarekonstruktion 6
Kollaborationsdiagram: AddCourse (en anden måde at vise samme interaktion på) 07-04-2017 Softwarekonstruktion 6
Eksempel 2: DeleteCourse 07-04-2017 Softwarekonstruktion 6
Sekvensdiagram:DeleteCourse Håndteres automatisk i moderne sprog 07-04-2017 Softwarekonstruktion 6
UML syntaks for meddelelser return = message(parameter: parameterType):returnType eksempler: p=getPerson(id) p=getPerson(id:personId) p=getperson(id:personId):Person 07-04-2017 Softwarekonstruktion 6
Syntaks for kombineret fragmenter og operatorer 07-04-2017 Softwarekonstruktion 6
Kollaborationsdiagram med forgreninger 07-04-2017 Softwarekonstruktion 6
Opgave: Godbid Domænemodellen for Godbid er vist på figuren Lav use cases og interaktions diagrammer for følgende: Opret Bord Opret Bestilling Opret Medarbejder 07-04-2017 Softwarekonstruktion 6
Opgave Indtast diagrammerne i Rose (vi hjælpes ad) 07-04-2017 Softwarekonstruktion 6
Analyse klassediagram I analyse klassediagrammet vises klasser, attributter og metoder, som illustrer den use case, der arbejdes med Attributter overføres fra domænemodellen Metoder tilføjes på klasserne: Indgående beskeder til en klasse betyder, at klassen må definere en modsvarende metode Metoderne specificeres ved at angive deres navn (beskeden) i operationsdelen på klassen 07-04-2017 Softwarekonstruktion 6
Analyseklassediagram for AddCourse og DeleteCourse 07-04-2017 Softwarekonstruktion 6
Trivielle metoder Følgende metoder navngives som regel ikke: metoder til at generere og destruere objekter. Ved at definere klasserne specificere vi implicit, at de findes. Deres design og placering afhænger af programmeringssproget metoder til aflæsning og opdatering af attributter på et objekt (properties). Ved definition af attributterne specificerer vi implicit, at disse findes. metoder til at finde og tilføje objekter på multiobjekter. 07-04-2017 Softwarekonstruktion 6
Opgave: Godbid Lav et analyse klassediagram Indtast det i Rose Lav et nyt klassediagram (som kaldes for analyseklasse diagram). Overfør klasserne fra domænemodellen Bemærk: Analyse klassediagrammet er ikke det samme som domænemodellen!! 07-04-2017 Softwarekonstruktion 6
Fra use cases til interaktionsdiagram Hvis der er mange trin i en use case kan der være en fordel først at finde og navngive input- og output systemhændelser mellem hhv. aktør og system i en tidsmæssig orden efter use casens forløb 07-04-2017 Softwarekonstruktion 6
Fra use cases til interaktionsdiagram 07-04-2017 Softwarekonstruktion 6
Opgave: Afgiv Ordre (blomster) Gå use casen Afgiv Ordre igennem (den vi lavede for interflora) Find og navngiv input system hændelser mellem bruger og system (output hændelser behøver ikke at blive navngivet). Analyser herefter hver input systemhændelse i et interaktionsdiagram Overfør de fundne metoder til analyse klassediagrammet 07-04-2017 Softwarekonstruktion 6