Klassediagrammer er en type af UML (Unified Modeling Language) diagram brugt i software engineering til visuelt at repræsentere strukturen og relationerne mellem klasser i et system. UML er et standardiseret modelleringssprog, der hjælper med at designe og dokumentere softwaresystemer. De er en integreret del af softwareudviklingsprocessen og hjælper i både design- og dokumentationsfasen.
Vigtige emner til klasseskemaet
- Hvad er klassediagrammer?
- Hvad er en klasse?
- UML klassenotation
- Relationer mellem klasser
- Formålet med klassediagrammer
- Fordele ved klassediagrammer
- Sådan tegner du klassediagrammer
- Brug eksempler på klassediagrammer
Hvad er klassediagrammer?
Klassediagrammer er en type UML (Unified Modeling Language) diagram, der bruges i software engineering til visuelt at repræsentere strukturen og relationerne mellem klasser i et system, dvs. bruges til at konstruere og visualisere objektorienterede systemer.
I disse diagrammer er klasser afbildet som bokse, der hver indeholder tre rum til klassenavn, attributter og metoder. Linjer, der forbinder klasser, illustrerer associationer, der viser relationer såsom en-til-en eller en-til-mange.
Klassediagrammer giver et overblik over et systems design på højt niveau og hjælper med at kommunikere og dokumentere softwarens struktur. De er et grundlæggende værktøj i objektorienteret design og spiller en afgørende rolle i softwareudviklingens livscyklus.
Hvad er en klasse?
I objektorienteret programmering (OOP) er en klasse en blueprint eller skabelon til at skabe objekter. Objekter er forekomster af klasser, og hver klasse definerer et sæt attributter (datamedlemmer) og metoder (funktioner eller procedurer), som de objekter, der er oprettet fra den klasse, vil besidde. Attributterne repræsenterer objektets karakteristika eller egenskaber, mens metoderne definerer den adfærd eller handlinger, som objektet kan udføre.
UML klassenotation
klassenotation er en grafisk repræsentation, der bruges til at skildre klasser og deres relationer i objektorienteret modellering.
vikas diviakirti
- Klassenavn:
- Klassens navn er typisk skrevet i det øverste rum i klasseboksen og er centreret og fed.
- Egenskaber:
- Attributter, også kendt som egenskaber eller felter, repræsenterer datamedlemmerne i klassen. De er opført i det andet rum i klasseboksen og inkluderer ofte synligheden (f.eks. offentlig, privat) og datatypen for hver attribut.
- Metoder:
- Metoder, også kendt som funktioner eller operationer, repræsenterer klassens adfærd eller funktionalitet. De er opført i det tredje rum i klasseboksen og inkluderer synligheden (f.eks. offentlig, privat), returtype og parametre for hver metode.
- Synlighedsnotation:
- Synlighedsnotationer angiver adgangsniveauet for attributter og metoder. Almindelige synlighedsnotationer omfatter:
+>for offentligheden (synlig for alle klasser)->for privat (kun synlig i klassen)#>for beskyttet (synlig for underklasser)~>for pakke eller standardsynlighed (synlig for klasser i samme pakke)
- Synlighedsnotationer angiver adgangsniveauet for attributter og metoder. Almindelige synlighedsnotationer omfatter:
Parameter Retning
I klassediagrammer refererer parameterdirektionalitet til indikationen af informationsstrømmen mellem klasser gennem metodeparametre. Det hjælper med at specificere, om en parameter er et input, et output eller begge dele. Disse oplysninger er afgørende for at forstå, hvordan data sendes mellem objekter under metodekald.

Der er tre hovedparameterretningsnotationer, der bruges i klassediagrammer:
- I (Input):
- En inputparameter er en parameter, der overføres fra det kaldende objekt (klient) til det kaldte objekt (server) under en metodekald.
- Det er repræsenteret af en pil, der peger mod den modtagende klasse (den klasse, der ejer metoden).
- Ud (output):
- En outputparameter er en parameter, der sendes fra det kaldte objekt (server) tilbage til det kaldende objekt (klient) efter metodeudførelsen.
- Det er repræsenteret af en pil, der peger væk fra den modtagende klasse.
- InOut (Input og Output):
- En InOut-parameter fungerer som både input og output. Den fører information fra det kaldende objekt til det kaldte objekt og omvendt.
- Det er repræsenteret af en pil, der peger mod og væk fra den modtagende klasse.
Relationer mellem klasser
I klassediagrammer beskriver relationer mellem klasser, hvordan klasser er forbundet eller interagerer med hinanden i et system. Der er flere typer relationer i objektorienteret modellering, der hver tjener et specifikt formål. Her er nogle almindelige typer relationer i klassediagrammer:
1. Forening
En association repræsenterer et tovejsforhold mellem to klasser. Det angiver, at forekomster af en klasse er forbundet med forekomster af en anden klasse. Associationer er typisk afbildet som en ubrudt linje, der forbinder klasserne, med valgfri pile, der angiver retningen af forholdet.
Lad os forstå association ved hjælp af et eksempel:
Lad os overveje et simpelt system til at administrere et bibliotek. I dette system har vi to hovedenheder:
Book>ogLibrary>. HverLibrary>indeholder flereBooks>, og hverBook>hører til en bestemtLibrary>. Dette forhold mellemLibrary>ogBook>repræsenterer en forening.
Klassen Bibliotek kan betragtes som kildeklassen, fordi den indeholder en reference til flere forekomster af Bogklassen. Bogklassen vil blive betragtet som målklassen, fordi den tilhører et bestemt bibliotek.
java konventioner navngivning
2. Direkte Forening
En rettet tilknytning i et UML-klassediagram repræsenterer et forhold mellem to klasser, hvor tilknytningen har en retning, hvilket indikerer, at en klasse er forbundet med en anden på en bestemt måde.
- I en rettet tilknytning tilføjes en pilespids til tilknytningslinjen for at angive retningen af forholdet. Pilen peger fra den klasse, der initierer foreningen, til den klasse, der er målrettet eller påvirket af foreningen.
- Direkte foreninger bruges, når foreningen har et bestemt flow eller retningsbestemt, såsom at angive hvilken klasse der er ansvarlig for at starte foreningen eller hvilken klasse der har en afhængighed af en anden.
Overvej et scenario, hvor en lærerklasse er knyttet til en kursusklasse i et universitetssystem. Den rettede tilknytningspil kan pege fra lærerklassen til kursusklassen, hvilket indikerer, at en lærer er tilknyttet eller underviser i et bestemt kursus.
- Kildeklassen er Lærerklassen. Lærerklassen indleder foreningen ved at undervise i et bestemt forløb.
- Målklassen er kursusklassen. Kursusklassen er påvirket af foreningen, da den undervises af en bestemt lærer.
3. Aggregation
Aggregation er en specialiseret foreningsform, der repræsenterer et hel-delt forhold. Det betegner et stærkere forhold, hvor en klasse (helheden) indeholder eller er sammensat af en anden klasse (delen). Aggregation er repræsenteret af en diamantform på siden af hele klassen. I denne form for forhold kan den underordnede klasse eksistere uafhængigt af sin overordnede klasse.
Lad os forstå aggregering ved hjælp af et eksempel:
Virksomheden kan betragtes som helheden, mens medarbejderne er delene. Medarbejdere tilhører virksomheden, og virksomheden kan have flere ansatte. Men hvis virksomheden ophører med at eksistere, kan medarbejderne stadig eksistere selvstændigt.
4. Sammensætning
Sammensætning er en stærkere form for aggregering, hvilket indikerer et mere væsentligt ejerskab eller afhængighedsforhold. I sammensætning kan delklassen ikke eksistere uafhængigt af hele klassen. Sammensætningen er repræsenteret af en udfyldt diamantform på siden af hele klassen.
Lad os forstå sammensætning ved hjælp af et eksempel:
Forestil dig en digital kontaktbogsapplikation. Kontaktbogen er helheden, og hver kontaktpost er en del. Hver kontaktpost er fuldt ejet og administreret af kontaktbogen. Hvis kontaktbogen slettes eller destrueres, fjernes alle tilknyttede kontaktposter også.
Dette illustrerer sammensætningen, fordi eksistensen af kontaktposterne afhænger helt af tilstedeværelsen af kontaktbogen. Uden kontaktbogen mister de enkelte kontaktposter deres betydning og kan ikke eksistere alene.
5. Generalisering (arv)
Arv repræsenterer et er-et forhold mellem klasser, hvor en klasse (underklassen eller barnet) arver egenskaberne og adfærden fra en anden klasse (superklassen eller forælderen). Arv er afbildet med en ubrudt linje med en lukket, hul pilespids, der peger fra underklassen til superklassen.
java sorteringsliste
I eksemplet med bankkonti kan vi bruge generalisering til at repræsentere forskellige typer konti såsom foliokonti, opsparingskonti og kreditkonti.
Bankkonto-klassen fungerer som den generelle repræsentation af alle typer bankkonti, mens underklasserne (Anfordringskonto, Opsparingskonto, Kreditkonto) repræsenterer specialiserede versioner, der arver og udvider basisklassens funktionalitet.
6. Realisering (grænsefladeimplementering)
Realisering indikerer, at en klasse implementerer funktionerne i en grænseflade. Det bruges ofte i tilfælde, hvor en klasse realiserer de operationer, der er defineret af en grænseflade. Realisering er afbildet med en stiplet linje med en åben pilespids, der peger fra implementeringsklassen til grænsefladen.
Lad os overveje scenariet, hvor en person og en virksomhed begge realiserer en ejergrænseflade.
- Ejergrænseflade: Denne grænseflade inkluderer nu metoder såsom erhverve(ejendom) og disponere(ejendom) for at repræsentere handlinger relateret til erhvervelse og bortskaffelse af ejendom.
- Personklasse (realisering): Person-klassen implementerer Owner-grænsefladen og giver konkrete implementeringer til metoderne erhverve(ejendom) og bortskaffe(ejendom). For eksempel kan en person erhverve ejerskab af et hus eller afhænde en bil.
- Selskabsklasse (realisation): På samme måde implementerer Corporation-klassen også Owner-grænsefladen, der tilbyder specifikke implementeringer for erhverve(egenskab) og bortskaffe(ejendom)-metoderne. For eksempel kan et selskab erhverve ejerskab af fast ejendom eller afhænde firmabiler.
Både Person- og Corporation-klasserne realiserer Owner-grænsefladen, hvilket betyder, at de giver konkrete implementeringer for erhvervelses-(ejendoms-) og bortskaffelses-(ejendoms)-metoderne defineret i grænsefladen.
7. Afhængighedsforhold
Der eksisterer en afhængighed mellem to klasser, når en klasse er afhængig af en anden, men forholdet er ikke så stærkt som association eller arv. Det repræsenterer en mere løst koblet forbindelse mellem klasser. Afhængigheder er ofte afbildet som en stiplet pil.
Lad os overveje et scenario, hvor en person afhænger af en bog.
- Personklasse: Repræsenterer en person, der læser en bog. Personklassen afhænger af bogklassen for at få adgang til og læse indholdet.
- Bogklasse: Repræsenterer en bog, der indeholder indhold, der skal læses af en person. Bogklassen er uafhængig og kan eksistere uden Person-klassen.
Personklassen afhænger af Bogklassen, fordi den kræver adgang til en bog for at læse dens indhold. Bogklassen er dog ikke afhængig af Personklassen; den kan eksistere uafhængigt og er ikke afhængig af Person-klassen for dens funktionalitet.
8. Brugsforhold (afhængighed).
Et brugsafhængighedsforhold i et UML-klassediagram indikerer, at en klasse (klienten) bruger eller afhænger af en anden klasse (leverandøren) til at udføre bestemte opgaver eller få adgang til visse funktioner. Klientklassen er afhængig af de tjenester, der leveres af leverandørklassen, men ejer eller opretter ikke forekomster af den.
- Brugsafhængigheder repræsenterer en form for afhængighed, hvor en klasse afhænger af en anden klasse for at opfylde et specifikt behov eller krav.
- Klientklassen kræver adgang til specifikke funktioner eller tjenester leveret af leverandørklassen.
- I UML-klassediagrammer er brugsafhængigheder typisk repræsenteret af en stiplet pilelinje, der peger fra klientklassen til leverandørklassen.
- Pilen angiver retningen af afhængigheden, hvilket viser, at klientklassen afhænger af de tjenester, som leverandørklassen leverer.
Overvej et scenarie, hvor en bilklasse afhænger af en FuelTank-klasse for at styre brændstofforbruget.
vandmærke i word
- Bilklassen skal muligvis have adgang til metoder eller attributter for FuelTank-klassen for at kontrollere brændstofniveauet, påfylde brændstof eller overvåge brændstofforbruget.
- I dette tilfælde har bilklassen en brugsafhængighed af FuelTank-klassen, fordi den bruger sine tjenester til at udføre visse opgaver relateret til brændstofstyring.
Formålet med klassediagrammer
Hovedformålet med at bruge klassediagrammer er:
- Dette er den eneste UML, der passende kan skildre forskellige aspekter af OOPs-konceptet.
- Korrekt design og analyse af applikationer kan være hurtigere og mere effektivt.
- Det er grundlaget for implementering og komponentdiagram.
- Den inkorporerer forlæns og omvendt konstruktion.
Fordele ved klassediagrammer
- Modelleringsklassestruktur:
- Klassediagrammer hjælper med at modellere strukturen af et system ved at repræsentere klasser og deres attributter, metoder og relationer.
- Dette giver et klart og organiseret overblik over systemets arkitektur.
- Forstå relationer:
- Klassediagrammer viser relationer mellem klasser, såsom associationer, sammenlægninger, sammensætninger, arv og afhængigheder.
- Dette hjælper interessenter, herunder udviklere, designere og forretningsanalytikere, med at forstå, hvordan forskellige komponenter i systemet er forbundet.
- Meddelelse:
- Klassediagrammer fungerer som et kommunikationsværktøj mellem teammedlemmer og interessenter. De giver en visuel og standardiseret repræsentation, der let kan forstås af både tekniske og ikke-tekniske målgrupper.
- Plan for implementering:
- Klassediagrammer tjener som en blueprint for softwareimplementering. De guider udviklere i at skrive kode ved at illustrere klasserne, deres egenskaber, metoder og forholdet mellem dem.
- Dette kan være med til at sikre overensstemmelse mellem designet og den faktiske implementering.
- Kodegenerering:
- Nogle softwareudviklingsværktøjer og rammer understøtter kodegenerering fra klassediagrammer.
- Udviklere kan generere en betydelig del af koden fra den visuelle repræsentation, hvilket reducerer chancerne for manuelle fejl og sparer udviklingstid.
- Identifikation af abstraktioner og indkapsling:
- Klassediagrammer tilskynder til identifikation af abstraktioner og indkapsling af data og adfærd inden for klasser.
- Dette understøtter principperne for objektorienteret design, såsom modularitet og informationsskjul.
Sådan tegner du klassediagrammer
Tegning af klassediagrammer involverer visualisering af strukturen af et system, herunder klasser, deres attributter, metoder og relationer. Her er trinene til at tegne klassediagrammer:
- Identificer klasser:
- Start med at identificere klasserne i dit system. En klasse repræsenterer en blueprint for objekter og bør indkapsle relaterede attributter og metoder.
- Liste attributter og metoder:
- For hver klasse skal du angive dens attributter (egenskaber, felter) og metoder (funktioner, operationer). Inkluder oplysninger såsom datatyper og synlighed (offentlig, privat, beskyttet).
- Identificer relationer:
- Bestem forholdet mellem klasserne. Almindelige relationer omfatter associationer, sammenlægninger, sammensætninger, arv og afhængigheder. Forstå arten og mangfoldigheden af disse forhold.
- Opret klassebokse:
- Tegn et rektangel (klasseboks) for hver identificeret klasse. Placer klassens navn i det øverste rum i kassen. Inddel æsken i rum for egenskaber og metoder.
- Tilføj attributter og metoder:
- Inde i hver klasseboks skal du angive attributterne og metoderne i deres respektive rum. Brug synlighedsnotationer (+ for offentlig, – for privat, # for beskyttet, ~ for pakke/standard).
- Tegn forhold:
- Tegn linjer for at repræsentere relationer mellem klasser. Brug pilene til at angive retningen af associationer eller afhængigheder. Forskellige linjetyper eller notationer kan bruges til forskellige relationer.
- Etiketrelationer:
- Mærk relationerne med mangfoldighed og rollenavne, hvis det er nødvendigt. Multiplicity angiver antallet af forekomster involveret i relationen, og rollenavne tydeliggør hver klasses rolle i relationen.
- Gennemgå og forfin:
- Gennemgå dit klassediagram for at sikre, at det nøjagtigt repræsenterer systemets struktur og relationer. Forfin diagrammet efter behov baseret på feedback og krav.
- Brug værktøjer til digital tegning:
- Mens du kan tegne klassediagrammer på papir, kan brug af digitale værktøjer give mere fleksibilitet og nem modifikation. UML-modelleringsværktøjer, tegnesoftware eller endda specialiserede diagramværktøjer kan være nyttige.
Brug eksempler på klassediagrammer
- Systemdesign:
- Under systemdesignfasen bruges klassediagrammer til at modellere den statiske struktur af et softwaresystem. De hjælper med at visualisere og organisere klasser, deres attributter, metoder og relationer, hvilket giver en plan for systemimplementering.
- Kommunikation og samarbejde:
- Klassediagrammer fungerer som et visuelt kommunikationsværktøj mellem interessenter, herunder udviklere, designere, projektledere og kunder. De faciliterer diskussioner om systemets struktur og design, hvilket fremmer en fælles forståelse blandt teammedlemmer.
- Kodegenerering:
- Nogle softwareudviklingsmiljøer og -værktøjer understøtter kodegenerering baseret på klassediagrammer. Udviklere kan generere kodeskeletter, hvilket reducerer manuel kodningsindsats og sikrer sammenhæng mellem design og implementering.
- Test og testplanlægning:
- Testere bruger klassediagrammer til at forstå forholdet mellem klasser og planlægge testcases i overensstemmelse hermed. Den visuelle repræsentation af klassestrukturer hjælper med at identificere områder, der kræver grundig test.
- Reverse Engineering:
- Klassediagrammer kan bruges til reverse engineering, hvor udviklere analyserer eksisterende kode for at skabe visuelle repræsentationer af softwarestrukturen. Dette er især nyttigt, når dokumentationen er knap eller forældet.