logo

Klassdiagram | Unified Modeling Language (UML)

Klassdiagram är en typ av UML (Unified Modeling Language) diagram som används inom mjukvaruteknik för att visuellt representera strukturen och relationerna mellan klasser i ett system. UML är ett standardiserat modelleringsspråk som hjälper till att designa och dokumentera mjukvarusystem. De är en integrerad del av mjukvaruutvecklingsprocessen och hjälper till i både design- och dokumentationsfasen.



Viktiga ämnen för klassschemat

Vad är klassdiagram?

Klassdiagram är en typ av UML-diagram (Unified Modeling Language) som används inom mjukvaruteknik för att visuellt representera strukturen och relationerna mellan klasser inom ett system, dvs. används för att konstruera och visualisera objektorienterade system.

I dessa diagram är klasser avbildade som rutor, som var och en innehåller tre fack för klassnamn, attribut och metoder. Linjer som förbinder klasser illustrerar associationer och visar relationer som en-till-en eller en-till-många.



Klassdiagram ger en överblick över ett systems design på hög nivå, vilket hjälper till att kommunicera och dokumentera programvarans struktur. De är ett grundläggande verktyg i objektorienterad design och spelar en avgörande roll i mjukvaruutvecklingens livscykel.

Vad är en klass?

I objektorienterad programmering (OOP) är en klass en ritning eller mall för att skapa objekt. Objekt är instanser av klasser, och varje klass definierar en uppsättning attribut (datamedlemmar) och metoder (funktioner eller procedurer) som objekten som skapas från den klassen kommer att ha. Attributen representerar objektets egenskaper eller egenskaper, medan metoderna definierar de beteenden eller åtgärder som objektet kan utföra.



UML klassnotation

klassnotation är en grafisk representation som används för att skildra klasser och deras relationer i objektorienterad modellering.

industri och fabrik

  1. Klassnamn:
    • Namnet på klassen skrivs vanligtvis i det övre facket i klasslådan och är centrerat och fetstilt.
  2. Attribut:
    • Attribut, även kända som egenskaper eller fält, representerar datamedlemmarna i klassen. De är listade i det andra facket i klassrutan och inkluderar ofta synligheten (t.ex. offentlig, privat) och datatypen för varje attribut.
  3. Metoder:
    • Metoder, även kända som funktioner eller operationer, representerar klassens beteende eller funktionalitet. De är listade i det tredje facket i klassrutan och inkluderar synlighet (t.ex. offentlig, privat), returtyp och parametrar för varje metod.
  4. Synlighetsnotation:
    • Synlighetsnoteringar anger åtkomstnivån för attribut och metoder. Vanliga synlighetsbeteckningar inkluderar:
      • +>för allmänheten (synligt för alla klasser)
      • ->för privat (visas endast inom klassen)
      • #>för skyddad (synlig för underklasser)
      • ~>för paket eller standardsynlighet (synlig för klasser i samma paket)

Parameter Riktning

I klassdiagram avser parameterriktbarhet indikeringen av informationsflödet mellan klasser genom metodparametrar. Det hjälper till att specificera om en parameter är en ingång, en utgång eller båda. Denna information är avgörande för att förstå hur data skickas mellan objekt under metodanrop.

klass-notation-med-parameter-riktning

Det finns tre huvudparameterriktningsbeteckningar som används i klassdiagram:

  • I (ingång):
    • En indataparameter är en parameter som skickas från det anropande objektet (klienten) till det anropade objektet (servern) under en metodanrop.
    • Den representeras av en pil som pekar mot den mottagande klassen (klassen som äger metoden).
  • Ut (utgång):
    • En utdataparameter är en parameter som skickas från det anropade objektet (servern) tillbaka till det anropande objektet (klienten) efter metodexekveringen.
    • Den representeras av en pil som pekar bort från den mottagande klassen.
  • InOut (ingång och utgång):
    • En InOut-parameter fungerar som både ingång och utgång. Den överför information från det anropande objektet till det anropade objektet och vice versa.
    • Den representeras av en pil som pekar mot och bort från den mottagande klassen.

Relationer mellan klasser

I klassdiagram beskriver relationer mellan klasser hur klasser är sammankopplade eller interagerar med varandra inom ett system. Det finns flera typer av relationer i objektorienterad modellering, som var och en tjänar ett specifikt syfte. Här är några vanliga typer av relationer i klassdiagram:

1. Förening

En association representerar ett dubbelriktat förhållande mellan två klasser. Det indikerar att instanser av en klass är kopplade till instanser av en annan klass. Associationer avbildas vanligtvis som en heldragen linje som förbinder klasserna, med valfria pilar som indikerar förhållandets riktning.

Låt oss förstå association med ett exempel:

Låt oss överväga ett enkelt system för att hantera ett bibliotek. I det här systemet har vi två huvudenheter:Book>ochLibrary>. VarjeLibrary>innehåller fleraBooks>, och var och enBook>tillhör en specifikLibrary>. Detta förhållande mellanLibrary>ochBook>företräder en förening.

Klassen Library kan betraktas som källklassen eftersom den innehåller en referens till flera instanser av klassen Bok. Bokklassen skulle betraktas som målklassen eftersom den tillhör ett specifikt bibliotek.

jsp javatpoint

2. Riktad förening

En riktad association i ett UML-klassdiagram representerar en relation mellan två klasser där associationen har en riktning, vilket indikerar att en klass är associerad med en annan på ett specifikt sätt.

  • I en riktad association läggs en pilspets till på associationsraden för att indikera riktningen för relationen. Pilen pekar från klassen som initierar föreningen till klassen som riktas mot eller påverkas av föreningen.
  • Riktade associationer används när föreningen har ett specifikt flöde eller riktning, som att ange vilken klass som är ansvarig för att initiera föreningen eller vilken klass som har ett beroende av en annan.

Tänk på ett scenario där en lärarklass är associerad med en kursklass i ett universitetssystem. Den riktade associationspilen kan peka från Lärarklassen till Kursklassen, vilket indikerar att en lärare är associerad med eller undervisar i en specifik kurs.

  • Källklassen är Lärarklassen. Lärarklassen initierar föreningen genom att undervisa i en specifik kurs.
  • Målklassen är kursklassen. Kursklassen påverkas av föreningen då den undervisas av en specifik lärare.

3. Aggregation

Aggregation är en specialiserad associationsform som representerar en hel-del relation. Det betecknar ett starkare förhållande där en klass (helheten) innehåller eller är sammansatt av en annan klass (delen). Aggregation representeras av en diamantform på sidan av hela klassen. I denna typ av relation kan barnklassen existera oberoende av sin förälderklass.

Låt oss förstå aggregering med ett exempel:

Företaget kan betraktas som en helhet, medan de anställda är delarna. Anställda tillhör företaget, och företaget kan ha flera anställda. Men om företaget upphör att existera kan de anställda fortfarande existera självständigt.

4. Sammansättning

Komposition är en starkare form av aggregering, vilket indikerar ett mer betydande ägar- eller beroendeförhållande. I sammansättning kan delklassen inte existera oberoende av hela klassen. Sammansättningen representeras av en fylld diamantform på sidan av hela klassen.

Låt oss förstå komposition med ett exempel:

Föreställ dig en digital kontaktboksapplikation. Kontaktboken är helheten och varje kontaktpost är en del. Varje kontaktpost ägs till fullo och hanteras av kontaktboken. Om kontaktboken raderas eller förstörs tas även alla tillhörande kontaktposter bort.

Detta illustrerar sammansättningen eftersom förekomsten av kontaktposterna helt beror på närvaron av kontaktboken. Utan kontaktboken förlorar de enskilda kontaktposterna sin betydelse och kan inte existera på egen hand.

5. Generalisering (arv)

Arv representerar ett är-ett förhållande mellan klasser, där en klass (underklassen eller barnet) ärver egenskaperna och beteenden från en annan klass (superklassen eller föräldern). Arv avbildas med en heldragen linje med en sluten, ihålig pilspets som pekar från underklassen till superklassen.

numpy standardavvikelse

I exemplet med bankkonton kan vi använda generalisering för att representera olika typer av konton såsom löpande konton, sparkonton och kreditkonton.

Klassen Bankkonto fungerar som den allmänna representationen av alla typer av bankkonton, medan underklasserna (Current Account, Savings Account, Credit Account) representerar specialiserade versioner som ärver och utökar basklassens funktionalitet.

6. Realisering (gränssnittsimplementering)

Realisering indikerar att en klass implementerar funktionerna i ett gränssnitt. Det används ofta i fall där en klass realiserar de operationer som definieras av ett gränssnitt. Förverkligandet avbildas av en streckad linje med en öppen pilspets som pekar från den implementerande klassen till gränssnittet.

Låt oss överväga scenariot där en person och ett företag båda realiserar ett ägargränssnitt.

  • Ägargränssnitt: Detta gränssnitt innehåller nu metoder som förvärv (egendom) och avyttra (egendom) för att representera åtgärder relaterade till förvärv och avyttring av egendom.
  • Personklass (förverkligande): Klassen Person implementerar ägargränssnittet och tillhandahåller konkreta implementeringar för metoderna förvärv (egenskap) och avyttra (egenskap). En person kan till exempel förvärva äganderätten till ett hus eller göra sig av med en bil.
  • Företagsklass (Realisation): På samma sätt implementerar Corporation-klassen också Owner-gränssnittet, som erbjuder specifika implementeringar för förvärv (egenskap) och avyttra (egenskap) metoder. Till exempel kan ett företag förvärva ägande av fastigheter eller avyttra företagsfordon.

Både klasserna Person och Corporation realiserar ägargränssnittet, vilket innebär att de tillhandahåller konkreta implementeringar för metoderna förvärv (egenskap) och avyttra (egenskap) definierade i gränssnittet.

7. Beroenderelation

Ett beroende existerar mellan två klasser när en klass förlitar sig på en annan, men relationen är inte lika stark som association eller arv. Det representerar en mer löst kopplad koppling mellan klasser. Beroenden avbildas ofta som en streckad pil.

Låt oss överväga ett scenario där en person är beroende av en bok.

  • Personklass: Representerar en person som läser en bok. Klassen Person beror på bokklassen för att få tillgång till och läsa innehållet.
  • Bokklass: Representerar en bok som innehåller innehåll som ska läsas av en person. Klassen Bok är oberoende och kan existera utan klassen Person.

Klassen Person beror på bokklassen eftersom den kräver åtkomst till en bok för att kunna läsa dess innehåll. Bokklassen är dock inte beroende av personklassen; den kan existera oberoende och förlitar sig inte på klassen Person för dess funktionalitet.

8. Användningsförhållande (beroende).

En användningsberoenderelation i ett UML-klassdiagram indikerar att en klass (klienten) använder eller är beroende av en annan klass (leverantören) för att utföra vissa uppgifter eller komma åt viss funktionalitet. Klientklassen förlitar sig på de tjänster som tillhandahålls av leverantörsklassen men äger eller skapar inte instanser av den.

  • Användningsberoenden representerar en form av beroende där en klass är beroende av en annan klass för att uppfylla ett specifikt behov eller krav.
  • Kundklassen kräver tillgång till specifika funktioner eller tjänster som tillhandahålls av leverantörsklassen.
  • I UML-klassdiagram representeras användningsberoenden vanligtvis av en streckad pillinje som pekar från klientklassen till leverantörsklassen.
  • Pilen indikerar beroendets riktning, vilket visar att klientklassen beror på de tjänster som tillhandahålls av leverantörsklassen.

Tänk på ett scenario där en bilklass är beroende av en FuelTank-klass för att hantera bränsleförbrukningen.

ekta kapoor skådespelare
  • Bilklassen kan behöva komma åt metoder eller attribut för FuelTank-klassen för att kontrollera bränslenivån, fylla på bränsle eller övervaka bränsleförbrukningen.
  • I det här fallet har Car-klassen ett användningsberoende av FuelTank-klassen eftersom den använder sina tjänster för att utföra vissa uppgifter relaterade till bränslehantering.

Syfte med klassdiagram

Huvudsyftet med att använda klassdiagram är:

  • Detta är den enda UML som på lämpligt sätt kan skildra olika aspekter av OOPs koncept.
  • Korrekt design och analys av applikationer kan vara snabbare och effektivare.
  • Det är basen för distribution och komponentdiagram.
  • Den innehåller framåt- och bakåtteknik.

Fördelar med klassdiagram

  • Modelleringsklassstruktur:
    • Klassdiagram hjälper till att modellera strukturen i ett system genom att representera klasser och deras attribut, metoder och relationer.
    • Detta ger en tydlig och organiserad bild av systemets arkitektur.
  • Förstå relationer:
    • Klassdiagram visar relationer mellan klasser, såsom associationer, aggregationer, sammansättningar, arv och beroenden.
    • Detta hjälper intressenter, inklusive utvecklare, designers och affärsanalytiker, att förstå hur olika komponenter i systemet är sammankopplade.
  • Kommunikation:
    • Klassdiagram fungerar som ett kommunikationsverktyg mellan gruppmedlemmar och intressenter. De ger en visuell och standardiserad representation som lätt kan förstås av både teknisk och icke-teknisk publik.
  • Ritning för implementering:
    • Klassdiagram fungerar som en ritning för implementering av programvara. De vägleder utvecklare att skriva kod genom att illustrera klasserna, deras attribut, metoder och relationerna mellan dem.
    • Detta kan bidra till att säkerställa överensstämmelse mellan designen och den faktiska implementeringen.
  • Kodgenerering:
    • Vissa mjukvaruutvecklingsverktyg och ramverk stöder kodgenerering från klassdiagram.
    • Utvecklare kan generera en betydande del av koden från den visuella representationen, vilket minskar risken för manuella fel och sparar utvecklingstid.
  • Identifiera abstraktioner och inkapsling:
    • Klassdiagram uppmuntrar identifiering av abstraktioner och inkapsling av data och beteende inom klasser.
    • Detta stöder principerna för objektorienterad design, såsom modularitet och informationsdöljande.

Hur man ritar klassdiagram

Att rita klassdiagram innebär att visualisera strukturen i ett system, inklusive klasser, deras attribut, metoder och relationer. Här är stegen för att rita klassdiagram:

  1. Identifiera klasser:
    • Börja med att identifiera klasserna i ditt system. En klass representerar en ritning för objekt och bör kapsla in relaterade attribut och metoder.
  2. Lista attribut och metoder:
    • För varje klass, lista dess attribut (egenskaper, fält) och metoder (funktioner, operationer). Inkludera information som datatyper och synlighet (offentlig, privat, skyddad).
  3. Identifiera relationer:
    • Bestäm sambanden mellan klasserna. Vanliga relationer inkluderar associationer, aggregationer, sammansättningar, arv och beroenden. Förstå karaktären och mångfalden av dessa relationer.
  4. Skapa klasslådor:
    • Rita en rektangel (klassruta) för varje identifierad klass. Placera klassnamnet i det övre facket i lådan. Dela lådan i fack för attribut och metoder.
  5. Lägg till attribut och metoder:
    • Inuti varje klassruta, lista attributen och metoderna i deras respektive fack. Använd synlighetsbeteckningar (+ för offentlig, – för privat, # för skyddad, ~ för paket/standard).
  6. Rita relationer:
    • Rita linjer för att representera relationer mellan klasser. Använd pilarna för att ange riktningen för associationer eller beroenden. Olika linjetyper eller notationer kan användas för olika relationer.
  7. Etikettrelationer:
    • Märk relationerna med mångfald och rollnamn om det behövs. Multiplicity anger antalet instanser som är involverade i relationen, och rollnamn förtydligar varje klasss roll i relationen.
  8. Granska och förfina:
    • Granska ditt klassdiagram för att säkerställa att det korrekt representerar systemets struktur och relationer. Förfina diagrammet efter behov baserat på feedback och krav.
  9. Använd verktyg för digital ritning:
    • Även om du kan rita klassdiagram på papper, kan användningen av digitala verktyg ge mer flexibilitet och enkel modifiering. UML-modelleringsverktyg, ritprogram eller till och med specialiserade diagramverktyg kan vara till hjälp.

Använd fall av klassdiagram

  • Systemdesign:
    • Under systemdesignfasen används klassdiagram för att modellera den statiska strukturen hos ett mjukvarusystem. De hjälper till att visualisera och organisera klasser, deras attribut, metoder och relationer, vilket ger en plan för systemimplementering.
  • Kommunikation och samarbete:
    • Klassdiagram fungerar som ett visuellt kommunikationsverktyg mellan intressenter, inklusive utvecklare, designers, projektledare och kunder. De underlättar diskussioner om systemets struktur och design, vilket främjar en delad förståelse mellan teammedlemmar.
  • Kodgenerering:
    • Vissa mjukvaruutvecklingsmiljöer och verktyg stöder kodgenerering baserat på klassdiagram. Utvecklare kan generera kodskelett, vilket minskar manuella kodningsinsatser och säkerställer överensstämmelse mellan design och implementering.
  • Testning och testplanering:
    • Testare använder klassdiagram för att förstå sambanden mellan klasser och planera testfall därefter. Den visuella representationen av klassstrukturer hjälper till att identifiera områden som kräver grundlig testning.
  • Reverse Engineering:
    • Klassdiagram kan användas för reverse engineering, där utvecklare analyserar befintlig kod för att skapa visuella representationer av mjukvarustrukturen. Detta är särskilt användbart när dokumentationen är knapp eller föråldrad.