webForumDet fria alternativet

UML- förstår inte klass- och sekvensdiagram

Programmering

8 svar · 3 564 visningar · startad av JuhuuGirL

Medlem sedan maj 20124 inlägg
Frågan#1

Hjälp! Är det någon som kan hjälpa mig förstå och rita upp klass- och sekvensdiagram?? Jag kan use case diagram och aktivitetsdiagram men ser inget samband med dessa två (klass och sekvens) när jag ska rita upp ett scenario med hjälp av dem. Är det någon som kan rekommendera någon bra hemsida eller någon som kan hjälpa mig förstå dessa två diagram?

Jag har ett exempel på en uppgift som hade underlättat för mig om jag hade kunnat förstå hur man ska rita upp dessa. Ni kanske kan hjälpa mig med det?! Hade varit oerhört tacksam.

Scenario: Modellera ett mjukvarusystem som hanterar scheman pa ett lärosäte.

*Studieadministratörer och schemaläggare kan ändra i schemat. Schemaläggaren kan även andra lokaler for att kunna lägga till salar eller ange storlek och utrustning i dessa.

Studieadministratörer kan skapa nya kurstillfällen och ta bort kurstillfällen. När en kurs skapas eller tas bort så måste schemat ändras så det inte finns kvar bokningar för en kurs som inte går eller så det läggs in bokningar för nya kurser. En bokning har en rubrik, en lärare, en lokal och har en starttid och en sluttid. Rubriken är någon av foljande: föreläsning, övning eller laboration.

Studenter kan öppna och läsa scheman. När en student öppnat schemat för en kurs så kan studenten även anmäla sig till kursen om han eller hon är intresserad av kursen och inte redan är anmäld till denna kurs. Studenter kan även generera personliga scheman som visar en önskad kombination av kurser.*

1. Vilka är klasserna ev. hjälpklasserna som finns i uppgiften ovan och vilka är förkastade? Tips: en styrklass ("controller") kan vara användbar för att kontrollera sekventiellt beteende.

2. Hur gör jag ett sekvensdiagram som visar vad som händer i systemet när följande utförs:

Kursansvarig Ola Persson har kursen DP355. Han kommer på att alla föreläsningar måste ha projektor i taket. Detta krav mailar han till schemaläggaren som kontrollerar alla föreläsningar på kursen och byter sal om den bokade salen inte har projektor i taket?

3. Hur ritar jag ett klassdiagram som binds samman med sekvensdiagrammet?
Inkapsling av operationer och attribut skall tillämpas. Metodparametrar och deras typer samt metodernas returvärde ska framgå. Alla relationer skall vara försedda med multiplicitet, associationsnamn eller rollnamn. Eventuella stereotyper för klasser behöver inte visas.

Med andra ord ska alla meddelande i sekvensdiagrammet ha sin motsvarighet i klassdiagrammet resp. de aktuella metoderna i klassdiagrammet ska ha sin motsvarighet i sekvensdiagrammet

Det här verkar inte allt svårt men jag lyckas aldrig få rätt på det... hjääälp :q

Medlem sedan juli 200012 978 inlägg
#2

Välkommen till wF.
Börja med mycket enkla schema, försök inte att lösa uppgiften som en helhet.
Bygg bitar och block.
Grunderna finns väl här:
http://www.agilemodeling.com/essays/umlDiagrams.htm

Medlem sedan maj 20124 inlägg
#3

Här har jag ritat upp ett par klasser... Är det något som du kanske kan hjälpa mig med eller är jag helt ute och cyklar?

version 1.0.jpg
Medlem sedan juli 200012 978 inlägg
#4

>JuhuuGirL, ser bra ut tycker jag.
Men kom ihåg, jag är en gammal gubbe som lever på övertid ;-)
Så om jag var lat i arbetslivet, är jag som Pensionär, rent av arbetsskygg ;-)
Så ta vara på små exempel, bygg ihop dem så har du en lösning.
UML är inte lätt, kan appliceras ibland, inte alltid.
Det finns alltid avvikelser. Lycka till.
Kom också ihåg att
om man inte kan kommunicera en lösning, är den inte rätt!
visdomsord från Lasp ;-)

Medlem sedan apr. 20042 994 inlägg
#5

Hej JuhuuGirl och välkommen till wF! :)

Jag ritade en översiktsbild över några av UML-diagrammen som jag använde i undervisning för ett antal år sen. Den är inte perfekt, men kanske hjälper till att förstå vilken information som ligger till grund för vad:
allt.JPG
(Har en ännu större/detaljerad bild, men jag tror den mer förvirrar än hjälper om man inte håller en liten föreläsning till den samtidigt.)

Som du ser så baseras klasserna i (design)klassdiagrammet till stor del på de begrepp man får fram, t ex i domänmodellen. I ditt fall nämns ett flertal i uppgiften (tänk substantiv), "kurs", "kurstillfälle", "bokning" mm.

Sekvensdiagrammet talar om hur klasserna kommunicerar med varandra. I min bild så kommer ett anrop (a1) in till instansen av klassen A, vilket sätter igång en kedjereaktion där instansen av A anropar en instans av B osv. Ett anrop är ett metodanrop, med eventuella parametrar. T ex skulle anropet a2 i mitt diagram kunna vara nåt i stil med "skapaKurstillfalle(<parameter>,<parameter>,...)". Då måste klassen som tar emot det metodanropet (B) ha en metod/operator som heter just "skapaKurstillfalle()", även i klassdiagrammet. Parametrarna som skickas med i metodanropet måste också kunna tas omhand av klassen och blir därför attribut till B i klassdiagrammet. Klassen C i mina diagram skulle kunna vara klassen "Kurstillfalle" t ex, och som du ser så skapar B en instans av den i sekvensdiagrammet (pilen går direkt till rutan som definierar klassinstansen och inte till tidslinjen under). Dvs metodanropet b är anropet till klassens konstruktor.

Kolla om du har några bra exempel i din kursbok som du kan utgå ifrån när du ritar dina diagram. Exempel från Craig Larmans bok Applying UML and patterns använder jag fortfarande när jag behöver kolla upp något (även om den boken är världens tegelsten), vet inte vilken kursbok ni har.

Medlem sedan juli 200012 978 inlägg
#6

Ibland längtar jag tillbaka till skolbänken! Inser att jag skulle sitta lugnt och vetgirigt när Fia drog ovanstående.
Dynamiken i berättande kan inte nog framhävas.
Var finns videon? Vill se säger Lasp ;-)

Medlem sedan nov. 20014 054 inlägg
#7

JuhuuGirL skrev:

2. Hur gör jag ett sekvensdiagram som visar vad som händer i systemet när följande utförs:

Kursansvarig Ola Persson har kursen DP355. Han kommer på att alla föreläsningar måste ha projektor i taket. Detta krav mailar han till schemaläggaren som kontrollerar alla föreläsningar på kursen och byter sal om den bokade salen inte har projektor i taket?

Sekvensdiagrammet skall beskriva interaktionen mellan de olika aktörerna eller objekten. Vilka händelser de skapar i en viss tidssekvens.

Den vertikala linjerna/dimensionen i ett sekvensdiagram representerar tiden, ju längre ned efter linjerna, desto längre har tiden framskridit. Den horisontella dimensionen är de olika aktörerna eller objekten.

Så för att visa vad som händer i systemet så gå igenom vilka händelser som finns och mellan vilka aktörer/objekt som det sker. Vilken respons kan komma, vilka request utförs, och i vilken ordning etc.

Medlem sedan maj 20124 inlägg
#8

Här har jag gjort ett sekvensdiagram, men vet inte om det stämmer helt och hållet. Vi har annars boken O'reilly Learning UML 2.0

img001.jpg
Medlem sedan maj 20124 inlägg
#9

Fia skrev:

Hej JuhuuGirl och välkommen till wF! :)

Jag ritade en översiktsbild över några av UML-diagrammen som jag använde i undervisning för ett antal år sen. Den är inte perfekt, men kanske hjälper till att förstå vilken information som ligger till grund för vad:
[bilaga saknas]
(Har en ännu större/detaljerad bild, men jag tror den mer förvirrar än hjälper om man inte håller en liten föreläsning till den samtidigt.)

Som du ser så baseras klasserna i (design)klassdiagrammet till stor del på de begrepp man får fram, t ex i domänmodellen. I ditt fall nämns ett flertal i uppgiften (tänk substantiv), "kurs", "kurstillfälle", "bokning" mm.

Sekvensdiagrammet talar om hur klasserna kommunicerar med varandra. I min bild så kommer ett anrop (a1) in till instansen av klassen A, vilket sätter igång en kedjereaktion där instansen av A anropar en instans av B osv. Ett anrop är ett metodanrop, med eventuella parametrar. T ex skulle anropet a2 i mitt diagram kunna vara nåt i stil med "skapaKurstillfalle(<parameter>,<parameter>,...)". Då måste klassen som tar emot det metodanropet (B) ha en metod/operator som heter just "skapaKurstillfalle()", även i klassdiagrammet. Parametrarna som skickas med i metodanropet måste också kunna tas omhand av klassen och blir därför attribut till B i klassdiagrammet. Klassen C i mina diagram skulle kunna vara klassen "Kurstillfalle" t ex, och som du ser så skapar B en instans av den i sekvensdiagrammet (pilen går direkt till rutan som definierar klassinstansen och inte till tidslinjen under). Dvs metodanropet b är anropet till klassens konstruktor.

Kolla om du har några bra exempel i din kursbok som du kan utgå ifrån när du ritar dina diagram. Exempel från Craig Larmans bok Applying UML and patterns använder jag fortfarande när jag behöver kolla upp något (även om den boken är världens tegelsten), vet inte vilken kursbok ni har.

Tack snälla för din ritning Fia och för att du påpekade vad en klass egentligen är (dvs. substantiv) det har jag nog inte tidigare tänkt på. Jag har några exempel i min bok men för att polletten ska trilla ner hade jag helst velat ha någon vid min sida som beskriver dessa diagram. Till dess fortsätter jag på egen hand.

269 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)