Tema 3 – Objektorienterad design med UML

Tema 3 behandlar objektorienterad design och hur UML används för att beskriva programvarans struktur inför implementationen.

Kursmål

  • A1: Förstå principerna för objektorienterad design.
  • B1: Utveckla objektorienterade modeller i UML för olika problem.
  • B2: Översätta objektorienterade modeller till ett objektorienterat programmeringsspråk och omvänt.

Syfte

Temat introducerar objektorienterad design, där analysmodeller förfinas till detaljerade designmodeller som kan implementeras. Du får lära dig att beskriva ett mjukvarusystems statiska och fysiska struktur med klassdiagram, paketdiagram, komponentdiagram och distributionsdiagram.

Objektorienterad design hjälper oss att hantera komplexitet, skapa modulära lösningar och överbrygga avståndet mellan analys och implementation. Temat introducerar också ansvarsdriven design som metod för att fördela beteenden och samarbetsansvar mellan objekt.

Innehåll

Objektorienterad design

Analysmodellen förfinas till en design med klasser, attribut, metoder och relationer.

Klassdiagram

Klassdiagram beskriver systemets statiska struktur med bland annat klasser, associationer, beroenden och multiplicitet.

Paketdiagram

Paketdiagram organiserar klasser i logiska enheter. Det stödjer modularitet och kan minska kopplingen mellan systemets delar.

Komponentdiagram

Komponentdiagram beskriver driftsättningsbara mjukvaruenheter och deras gränssnitt.

Distributionsdiagram

Distributionsdiagram visar hur komponenter placeras på hårdvarunoder och beskriver systemets struktur under körning.

Ansvarsdriven design

Ansvarsdriven design används för att identifiera objekts ansvar och samarbeten innan den detaljerade klassdesignen bestäms. CRC-kort, Class–Responsibility–Collaborator, kan användas för att utforska klassers ansvar och samarbetspartner.

Grundläggande designprinciper

Temat introducerar KISS, låg koppling och hög sammanhållning.

Läsanvisningar

Läs följande avsnitt i Craig Larmans Applying UML and Patterns:

  • kapitel 13 om paketdiagram,
  • kapitel 16 om klassdiagram,
  • avsnitt 17.3 om ansvarsdriven design,
  • avsnitt 37.1 om distributionsdiagram,
  • avsnitt 37.2 om komponentdiagram.

Studiefrågor

Objektorienterad design

  1. Vad är syftet med objektorienterad design, och hur förfinar den resultatet från analysen?
  2. Hur hjälper klassdiagram oss att förstå systemets struktur innan vi börjar programmera?
  3. Vilka är de viktigaste delarna i ett klassdiagram, och hur relaterar de till objekts ansvar?

UML-klassdiagram

  1. Vilka är de grundläggande delarna i ett UML-klassdiagram? Lista och beskriv minst fem.
  2. Hur visas associationer, aggregationer och kompositioner i ett UML-klassdiagram?
  3. Vilken betydelse har multiplicitet i klassdiagram?
  4. Hur visas arv i ett UML-klassdiagram?
  5. Vilka roller har attribut och operationer i en UML-klass?
  6. Vad är skillnaden mellan en klass och ett gränssnitt?
  7. På vilka två sätt kan gränssnitt visas i UML-klassdiagram?
  8. Vad betyder synlighetsmarkörerna +, - och # i UML-klassdiagram?
  9. Hur visas beroenden i UML-klassdiagram?
  10. Vad är associationsklasser, och hur används de i UML?
  11. Hur används paket för att organisera UML-klassdiagram?
  12. Vilka vanliga fel bör undvikas när man skapar UML-klassdiagram?
  13. Hur kan UML-klassdiagram underlätta kommunikationen i ett utvecklingsteam?

Paketdiagram

  1. Vad är ett paketdiagram, och hur stödjer det modulär design?
  2. Hur påverkar beroenden mellan paket systemets underhållbarhet?

Komponent- och distributionsdiagram

  1. Vad är en komponent i UML, och hur relaterar den till gränssnitt?
  2. Hur beskriver distributionsdiagram ett systems struktur under körning?
  3. Vilka är de viktigaste delarna i ett distributionsdiagram, till exempel noder, artefakter och kommunikationsvägar?

Ansvarsdriven design

  1. Vad innebär ansvar inom objektorienterad design?
  2. Hur skiljer sig ansvarsdriven design från en traditionell metod där klasserna bestäms först?
  3. Hur hjälper CRC-kort oss att identifiera objekts ansvar och samarbeten?
  4. Vad är huvudfokus för ansvarsdriven design inom mjukvaruutveckling?
  5. Vilken roll har CRC-kort inom ansvarsdriven design?
  6. Hur identifieras ansvar för en klass med hjälp av ansvarsdriven design?
  7. Vilka fördelar ger ansvarsdriven design när klassers beteenden ska bestämmas?
  8. Hur avgörs samarbetet mellan klasser inom ansvarsdriven design?
  9. Hur bidrar ansvarsdriven design till hög sammanhållning i en mjukvarumodul?
  10. Jämför ansvarsdriven design med traditionella procedurorienterade arbetssätt.
  11. Vilken betydelse har roller inom ansvarsdriven design?

Designbeslut

  1. Vilka faktorer bör vägas in när olika designalternativ utvärderas?
  2. Hur kan avvägningar påverka designbeslut?
  3. Hur påverkar begränsningar i budget, tid och teknik designbeslut?

Frågor om temat ställs i Zulip för Kalmar campus och distans.