390 likes | 707 Views
Klasser. Modeller. I dag. Domænemodellens rolle er central:. Objekter og klasser. Objekt: 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
E N D
Klasser Modeller
I dag Domænemodellens rolle er central: Softwarekonstruktion 6
Objekter og klasser • Objekt: • 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 Softwarekonstruktion 6
UML objekt notation Softwarekonstruktion 6
Klassediagram Softwarekonstruktion 6
* 0 .. Bil P er son * 0.. Eksempel på associering UML notation • Beskriver sammenhæng mellem objekter. • Kan være: • 0..*, 1..*, 0..1 eller 1..1 • Her ”mange-til-mange” Softwarekonstruktion 6
Generaliseringsstruktur Softwarekonstruktion 6
UML notation Eksempel på generaliseringsstruktur Er det her rigtigt? Softwarekonstruktion 6
Mønstere:Løsningpåofteforekommendemodelleringsproblemer • Genstands-beskrivelse • Relatering • Composite • Mmfl. 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?? Softwarekonstruktion 6
Nyttige mønstre: RelateringKlassediagram 1. Udkast plus objektdiagram • Problem: Associeringen mellem ordre og vare har selv nogle egenskaber - registrering af antal bestilte varer Softwarekonstruktion 6
Relaterings mønstretLø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 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? Softwarekonstruktion 6
Opgave . Udarbejd klassediagram for web-bestilling af blomster mv. • Tag udgangspunkt i beskrivelsen af use casen: ”Afgiv ordre” Softwarekonstruktion 6
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? Softwarekonstruktion 6
Use case realisering 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 Softwarekonstruktion 6
Use case realisering 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) 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 Softwarekonstruktion 6
Eksempel 1 Softwarekonstruktion 6
Deltagende klasser: AddCourse Softwarekonstruktion 6
nsdiagram: AddCourse Softwarekonstruktion 6
Kollaborationsdiagram: AddCourse(en anden måde at vise samme interaktion på) Softwarekonstruktion 6
Eksempel 2: DeleteCourse Softwarekonstruktion 6
Sekvensdiagram:DeleteCourse Håndteres automatisk i moderne sprog Softwarekonstruktion 6
UML syntaks for meddelelser • return = message(parameter: parameterType):returnType • eksempler: • p=getPerson(id) • p=getPerson(id:personId) • p=getperson(id:personId):Person Softwarekonstruktion 6
Syntaks for kombineret fragmenter og operatorer Softwarekonstruktion 6
Kollaborationsdiagram med forgreninger 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 Softwarekonstruktion 6
Opgave • Indtast diagrammerne i Rose (vi hjælpes ad) 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 Softwarekonstruktion 6
Analyseklassediagram for AddCourse og DeleteCourse 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. 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!! 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 Softwarekonstruktion 6
Fra use cases til interaktionsdiagram 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 Softwarekonstruktion 6