logo

Klasės diagrama | Vieningoji modeliavimo kalba (UML)

Klasių diagramos yra tam tikras tipas UML (Unified Modeling Language) diagrama, naudojama programinės įrangos inžinerijoje, siekiant vizualiai pavaizduoti klasių struktūrą ir ryšius sistemoje. UML yra standartizuota modeliavimo kalba, kuri padeda kurti ir dokumentuoti programinės įrangos sistemas. Jie yra neatsiejama programinės įrangos kūrimo proceso dalis, padedanti tiek projektavimo, tiek dokumentacijos etapuose.



Svarbios klasės diagramos temos

Kas yra klasių diagramos?

Klasių diagramos yra UML (Unified Modeling Language) diagramos tipas, naudojamas programinės įrangos inžinerijoje, siekiant vizualiai pavaizduoti klasių struktūrą ir ryšius sistemoje, t. y. naudojamos objektinėms sistemoms kurti ir vizualizuoti.

Šiose diagramose klasės vaizduojamos kaip langeliai, kurių kiekviename yra trys skyriai klasės pavadinimui, atributams ir metodams. Klases jungiančios linijos iliustruoja asociacijas, parodydamos santykius vienas su vienu arba vienas su daugeliu.



Klasių diagramos pateikia aukšto lygio sistemos dizaino apžvalgą, padeda palaikyti ryšį ir dokumentuoti programinės įrangos struktūrą. Jie yra pagrindinė objektinio dizaino priemonė ir atlieka lemiamą vaidmenį programinės įrangos kūrimo cikle.

Kas yra klasė?

Objektiniame programavime (OOP) klasė yra objektų kūrimo projektas arba šablonas. Objektai yra klasių egzemplioriai, ir kiekviena klasė apibrėžia atributų (duomenų narių) ir metodų (funkcijų arba procedūrų) rinkinį, kurį turės iš tos klasės sukurti objektai. Atributai atspindi objekto savybes arba savybes, o metodai apibrėžia elgesį ar veiksmus, kuriuos objektas gali atlikti.



UML klasės žymėjimas

klasių žymėjimas yra grafinis vaizdas, naudojamas klasėms ir jų ryšiams pavaizduoti objektinio modeliavimo metu.

styginių metodai

  1. Klasės pavadinimas:
    • Klasės pavadinimas paprastai rašomas viršutiniame klasės langelio skyriuje ir yra centre bei paryškintas.
  2. Atributai:
    • Atributai, taip pat žinomi kaip savybės arba laukai, žymi klasės duomenų narius. Jie pateikiami antrame klasės laukelio skyriuje ir dažnai apima kiekvieno atributo matomumą (pvz., viešą, privatų) ir duomenų tipą.
  3. Metodai:
    • Metodai, taip pat žinomi kaip funkcijos arba operacijos, atspindi klasės elgesį arba funkcionalumą. Jie yra išvardyti trečiame klasės laukelio skyriuje ir apima kiekvieno metodo matomumą (pvz., viešą, privatų), grąžinimo tipą ir parametrus.
  4. Matomumo žymėjimas:
    • Matomumo žymos rodo atributų ir metodų prieigos lygį. Įprasti matomumo ženklai apima:
      • +>viešai (matoma visoms klasėms)
      • ->privačiai (matoma tik klasėje)
      • #>apsaugotam (matoma poklasiams)
      • ~>paketui arba numatytajam matomumui (matomas to paties paketo klasėms)

Parametrų kryptingumas

Klasių diagramose parametrų kryptingumas reiškia informacijos srauto tarp klasių per metodo parametrus nurodymą. Tai padeda nurodyti, ar parametras yra įvestis, išvestis, ar abu. Ši informacija yra labai svarbi norint suprasti, kaip duomenys perduodami tarp objektų metodų iškvietimų metu.

klasės žymėjimas su parametrų kryptingumu

Klasių diagramose naudojami trys pagrindiniai parametrų kryptingumo žymėjimai:

  • Į (įvestis):
    • Įvesties parametras yra parametras, perduodamas iš skambinančio objekto (kliento) į iškviestą objektą (serverį) metodo iškvietimo metu.
    • Jį pavaizduoja rodyklė, nukreipta į priimančią klasę (klasę, kuriai priklauso metodas).
  • Išvestis (išvestis):
    • Išvesties parametras yra parametras, perduodamas iš iškviesto objekto (serverio) atgal į iškviečiantį objektą (klientą) po metodo vykdymo.
    • Jį žymi rodyklė, nukreipta nuo priimančios klasės.
  • Įvestis (įvestis ir išvestis):
    • „InOut“ parametras naudojamas kaip įvestis ir išvestis. Jis perduoda informaciją iš skambinančio objekto į iškviečiamą objektą ir atvirkščiai.
    • Jį žymi rodyklė, nukreipta į priimančią klasę ir nuo jos.

Santykiai tarp klasių

Klasių diagramose ryšiai tarp klasių apibūdina, kaip klasės yra sujungtos arba sąveikauja viena su kita sistemoje. Objektiniame modeliavime yra keletas ryšių tipų, kurių kiekvienas tarnauja tam tikram tikslui. Štai keletas dažniausiai pasitaikančių santykių tipų klasių diagramose:

1. Asociacija

Asociacija yra dvikryptis ryšys tarp dviejų klasių. Tai rodo, kad vienos klasės egzemplioriai yra sujungti su kitos klasės egzemplioriais. Asociacijos paprastai vaizduojamos kaip ištisinė linija, jungianti klases, su pasirenkamomis rodyklėmis, nurodančiomis ryšio kryptį.

Supraskime asociaciją naudodami pavyzdį:

Panagrinėkime paprastą bibliotekos valdymo sistemą. Šioje sistemoje turime du pagrindinius subjektus:Book>irLibrary>. KiekvienasLibrary>yra keliBooks>, ir kiekvienasBook>priklauso konkrečiamLibrary>. Šis santykis tarpLibrary>irBook>atstovauja asociacijai.

Bibliotekos klasė gali būti laikoma šaltinio klase, nes joje yra nuoroda į kelis knygos klasės egzempliorius. Knygų klasė būtų laikoma tiksline klase, nes ji priklauso konkrečiai bibliotekai.

sujungimas java eilutė

2. Vadovaujama asociacija

Nukreiptas susiejimas UML klasių diagramoje reiškia ryšį tarp dviejų klasių, kur asociacija turi kryptį, nurodant, kad viena klasė yra susieta su kita tam tikru būdu.

  • Nukreiptoje asociacijoje prie asociacijos linijos pridedama rodyklė, nurodanti ryšio kryptį. Rodyklė nukreipta nuo klasės, kuri inicijuoja susiejimą, į klasę, kuriai taikoma susiejimas arba kuriai ji veikia.
  • Nukreiptos asociacijos naudojamos, kai asociacija turi tam tikrą srautą arba kryptingumą, pavyzdžiui, nurodant, kuri klasė yra atsakinga už asociacijos inicijavimą arba kuri klasė priklauso nuo kitos.

Apsvarstykite scenarijų, kai Mokytojo klasė yra susieta su kurso klase universiteto sistemoje. Nukreipta susiejimo rodyklė gali būti nukreipta iš mokytojo klasės į kurso klasę, nurodant, kad mokytojas yra susijęs su konkrečiu kursu arba jo moko.

  • Šaltinio klasė yra Mokytojų klasė. Mokytojų klasė inicijuoja asociaciją dėstant konkretų kursą.
  • Tikslinė klasė yra kurso klasė. Kurso klasę veikia asociacija, nes ją dėsto konkretus mokytojas.

3. Sujungimas

Sujungimas yra specializuota asociacijos forma, kuri atspindi visos dalies ryšį. Tai reiškia stipresnį ryšį, kai vienoje klasėje (visoje) yra arba yra sudaryta iš kitos klasės (dalies). Agregaciją vaizduoja deimanto forma visos klasės šone. Tokio tipo santykiuose antrinė klasė gali egzistuoti nepriklausomai nuo pirminės klasės.

Supraskime agregaciją naudodami pavyzdį:

Įmonė gali būti laikoma visuma, o darbuotojai yra dalys. Įmonei priklauso darbuotojai, o įmonėje gali būti keli darbuotojai. Tačiau, įmonei nustojus egzistuoti, darbuotojai ir toliau gali egzistuoti savarankiškai.

4. Sudėtis

Sudėtis yra stipresnė agregavimo forma, nurodanti reikšmingesnį nuosavybės ar priklausomybės ryšį. Kompozicijoje dalies klasė negali egzistuoti nepriklausomai nuo visos klasės. Kompoziciją vaizduoja užpildyta deimanto forma visos klasės šone.

Supraskime kompoziciją naudodami pavyzdį:

Įsivaizduokite skaitmeninę kontaktų knygos programą. Kontaktų knyga yra visuma, o kiekvienas kontaktų įrašas yra dalis. Kiekvienas kontaktų įrašas visiškai priklauso kontaktų knygai ir jį valdo. Jei kontaktų knyga ištrinama arba sunaikinama, visi susiję kontaktų įrašai taip pat pašalinami.

Tai iliustruoja kompoziciją, nes kontaktų įrašų buvimas visiškai priklauso nuo kontaktų knygos buvimo. Be kontaktų knygos atskiri kontaktų įrašai praranda prasmę ir negali egzistuoti patys.

5. Apibendrinimas (paveldėjimas)

Paveldėjimas reiškia ryšį tarp klasių, kai viena klasė (poklasis arba antrinis) paveldi kitos klasės (viršklasės arba pirminės klasės) savybes ir elgesį. Paveldėjimas vaizduojamas ištisine linija su uždara tuščiavidure rodyklės smaigaliu, nukreiptu iš poklasio į viršklasę.

java eilutę į masyvą

Banko sąskaitų pavyzdyje galime naudoti apibendrinimą, kad pavaizduotume skirtingus sąskaitų tipus, pvz., einamąsias sąskaitas, taupomąsias sąskaitas ir kredito sąskaitas.

Banko sąskaitų klasė yra apibendrinta visų tipų banko sąskaitų reprezentacija, o poklasiai (Einamosios sąskaitos, Taupomosios sąskaitos, Kredito sąskaita) yra specializuotos versijos, kurios paveldi ir išplečia pagrindinės klasės funkcionalumą.

6. Realizavimas (sąsajos įgyvendinimas)

Realizacija rodo, kad klasė įgyvendina sąsajos funkcijas. Jis dažnai naudojamas tais atvejais, kai klasė realizuoja sąsajos apibrėžtas operacijas. Realizacija pavaizduota punktyrine linija su atvira rodyklės galvute, nukreipta iš diegimo klasės į sąsają.

Panagrinėkime scenarijų, kai asmuo ir korporacija įgyvendina savininko sąsają.

  • Savininko sąsaja: Ši sąsaja dabar apima tokius metodus kaip įsigijimas (nuosavybė) ir disponavimas (nuosavybė), kad būtų pateikti veiksmai, susiję su turto įsigijimu ir perleidimu.
  • Asmenų klasė (realizacija): Asmenų klasė įgyvendina savininko sąsają, pateikdama konkrečius įsigijimo (nuosavybės) ir disponavimo (nuosavybės) metodų įgyvendinimus. Pavyzdžiui, asmuo gali įgyti nuosavybės teisę į namą arba disponuoti automobiliu.
  • Korporacijos klasė (realizacija): Panašiai korporacijų klasė taip pat įgyvendina savininko sąsają, siūlydama specifinius įsigijimo (nuosavybės) ir disponavimo (nuosavybės) metodų įgyvendinimus. Pavyzdžiui, korporacija gali įsigyti nekilnojamojo turto nuosavybės teisę arba disponuoti įmonės transporto priemonėmis.

Tiek Asmens, tiek Korporacijos klasės realizuoja savininko sąsają, tai reiškia, kad jos pateikia konkrečius sąsajoje apibrėžtų įsigijimo (nuosavybės) ir disponavimo (nuosavybės) metodų įgyvendinimus.

r c kalba

7. Priklausomybės santykiai

Priklausomybė tarp dviejų klasių egzistuoja, kai viena klasė remiasi kita, tačiau ryšys nėra toks stiprus kaip asociacija ar paveldėjimas. Tai reiškia laisvesnį ryšį tarp klasių. Priklausomybės dažnai vaizduojamos kaip brūkšninė rodyklė.

Panagrinėkime scenarijų, kai žmogus priklauso nuo knygos.

  • Asmens klasė: Reiškia asmenį, kuris skaito knygą. Asmens klasė priklauso nuo knygos klasės, kad galėtumėte pasiekti ir skaityti turinį.
  • Knygų klasė: Reiškia knygą, kurioje yra turinio, kurį žmogus turi perskaityti. Knygų klasė yra nepriklausoma ir gali egzistuoti be Asmens klasės.

Asmens klasė priklauso nuo knygos klasės, nes norint perskaityti jos turinį, reikia prieigos prie knygos. Tačiau Knygų klasė nepriklauso nuo Asmens klasės; ji gali egzistuoti savarankiškai ir savo funkcionalumu nesiremia Asmens klase.

8. Naudojimo (priklausomybės) ryšys

Naudojimo priklausomybės ryšys UML klasių diagramoje rodo, kad viena klasė (klientas) naudojasi arba priklauso nuo kitos klasės (tiekėjo), kad atliktų tam tikras užduotis arba pasiektų tam tikras funkcijas. Klientų klasė remiasi tiekėjų klasės teikiamomis paslaugomis, tačiau jai nepriklauso ir jos nekuria.

  • Naudojimo priklausomybės yra priklausomybės forma, kai viena klasė priklauso nuo kitos klasės, kad atitiktų konkretų poreikį ar reikalavimą.
  • Kliento klasei reikalinga prieiga prie konkrečių funkcijų ar paslaugų, kurias teikia tiekėjo klasė.
  • UML klasių diagramose naudojimo priklausomybės paprastai vaizduojamos punktyrine linija, nukreipta iš kliento klasės į tiekėjo klasę.
  • Rodyklė rodo priklausomybės kryptį, rodanti, kad kliento klasė priklauso nuo tiekėjo klasės teikiamų paslaugų.

Apsvarstykite scenarijų, kai automobilio klasė priklauso nuo FuelTank klasės, kad būtų galima valdyti degalų sąnaudas.

  • Automobilių klasei gali tekti pasiekti FuelTank klasės metodus ar atributus, kad patikrintų degalų lygį, papildytų degalų arba stebėtų degalų sąnaudas.
  • Šiuo atveju automobilių klasė yra priklausoma nuo FuelTank klasės, nes ji naudoja savo paslaugas tam tikroms su degalų tvarkymu susijusioms užduotims atlikti.

Klasių diagramų paskirtis

Pagrindinis klasių diagramų naudojimo tikslas yra:

  • Tai vienintelis UML, galintis tinkamai pavaizduoti įvairius OOP koncepcijos aspektus.
  • Tinkamas programų projektavimas ir analizė gali būti greitesnis ir efektyvesnis.
  • Tai yra diegimo ir komponentų diagramos pagrindas.
  • Ji apima tiesioginę ir atvirkštinę inžineriją.

Klasių diagramų pranašumai

  • Modeliavimo klasės struktūra:
    • Klasių diagramos padeda modeliuoti sistemos struktūrą, vaizduojant klases ir jų atributus, metodus ir ryšius.
    • Tai suteikia aiškų ir organizuotą sistemos architektūros vaizdą.
  • Santykių supratimas:
    • Klasių diagramos vaizduoja ryšius tarp klasių, pvz., asociacijas, agregacijas, kompozicijas, paveldėjimą ir priklausomybes.
    • Tai padeda suinteresuotosioms šalims, įskaitant kūrėjus, dizainerius ir verslo analitikus, suprasti, kaip yra sujungti skirtingi sistemos komponentai.
  • Bendravimas:
    • Klasių diagramos yra komunikacijos priemonė tarp komandos narių ir suinteresuotųjų šalių. Jie pateikia vaizdinį ir standartizuotą vaizdą, kurį gali lengvai suprasti tiek techninė, tiek netechninė auditorija.
  • Diegimo planas:
    • Klasių diagramos yra programinės įrangos diegimo planas. Jie padeda kūrėjams rašyti kodą, iliustruodami klases, jų atributus, metodus ir ryšius tarp jų.
    • Tai gali padėti užtikrinti projekto ir faktinio įgyvendinimo nuoseklumą.
  • Kodo generavimas:
    • Kai kurie programinės įrangos kūrimo įrankiai ir sistemos palaiko kodo generavimą iš klasių diagramų.
    • Kūrėjai gali sugeneruoti didelę kodo dalį iš vaizdinio atvaizdavimo, sumažindami rankinių klaidų tikimybę ir sutaupydami kūrimo laiką.
  • Abstrakcijų ir inkapsuliavimo identifikavimas:
    • Klasių diagramos skatina identifikuoti abstrakcijas ir įtraukti duomenis bei elgesį klasėse.
    • Tai palaiko į objektą orientuoto projektavimo principus, tokius kaip moduliškumas ir informacijos slėpimas.

Kaip piešti klasių diagramas

Kuriant klasių diagramas, vizualizuojama sistemos struktūra, įskaitant klases, jų atributus, metodus ir ryšius. Štai žingsniai, kaip braižyti klasių diagramas:

  1. Identifikuokite klases:
    • Pradėkite identifikuodami klases savo sistemoje. Klasė yra objektų planas ir turėtų apimti susijusius atributus ir metodus.
  2. Atributų ir metodų sąrašas:
    • Kiekvienai klasei surašykite jos atributus (ypatybes, laukus) ir metodus (funkcijas, operacijas). Įtraukite tokią informaciją kaip duomenų tipai ir matomumas (viešas, privatus, apsaugotas).
  3. Nustatykite santykius:
    • Nustatykite ryšius tarp klasių. Įprasti ryšiai apima asociacijas, agregacijas, kompozicijas, paveldėjimą ir priklausomybes. Supraskite šių santykių prigimtį ir įvairovę.
  4. Sukurkite klasės dėžutes:
    • Kiekvienai identifikuotai klasei nupieškite stačiakampį (klasės langelį). Įdėkite klasės pavadinimą į viršutinį dėžutės skyrių. Padalinkite dėžutę į skyrelius atributams ir metodams.
  5. Pridėti atributus ir metodus:
    • Kiekvienos klasės laukelyje nurodykite atributus ir metodus atitinkamuose skyriuose. Naudokite matomumo žymes (+ viešajam, – privačiam, # apsaugotam, ~ paketui/numatytajam).
  6. Nubrėžkite santykius:
    • Nubrėžkite linijas, kad pavaizduotų ryšius tarp klasių. Rodyklėmis nurodykite asociacijų ar priklausomybių kryptį. Įvairiems ryšiams gali būti naudojami skirtingi linijų tipai arba žymėjimai.
  7. Etikečių ryšiai:
    • Jei reikia, pažymėkite ryšius su daugybe ir vaidmenų pavadinimais. Daugybė nurodo atvejų, susijusių su ryšiu, skaičių, o vaidmenų pavadinimai paaiškina kiekvienos klasės vaidmenį santykiuose.
  8. Peržiūrėkite ir patikslinkite:
    • Peržiūrėkite savo klasės diagramą, kad įsitikintumėte, jog ji tiksliai atspindi sistemos struktūrą ir ryšius. Patikslinkite diagramą pagal poreikį, atsižvelgdami į atsiliepimus ir reikalavimus.
  9. Skaitmeniniam piešimui naudokite įrankius:
    • Nors klasių diagramas galite piešti popieriuje, skaitmeninių įrankių naudojimas gali suteikti daugiau lankstumo ir lengvesnio modifikavimo. Gali būti naudingi UML modeliavimo įrankiai, piešimo programinė įranga ar net specializuoti diagramų sudarymo įrankiai.

Klasių diagramų naudojimo atvejai

  • Sistemos dizainas:
    • Sistemos projektavimo etape klasių diagramos naudojamos statinei programinės įrangos sistemos struktūrai modeliuoti. Jie padeda vizualizuoti ir organizuoti klases, jų atributus, metodus ir ryšius, pateikia sistemos diegimo planą.
  • Bendravimas ir bendradarbiavimas:
    • Klasių diagramos yra vaizdinė komunikacijos priemonė tarp suinteresuotųjų šalių, įskaitant kūrėjus, dizainerius, projektų vadovus ir klientus. Jie palengvina diskusijas apie sistemos struktūrą ir dizainą, skatindami bendrą komandos narių supratimą.
  • Kodo generavimas:
    • Kai kurios programinės įrangos kūrimo aplinkos ir įrankiai palaiko kodo generavimą pagal klasių diagramas. Kūrėjai gali generuoti kodo griaučius, sumažindami rankinio kodavimo pastangas ir užtikrindami nuoseklumą tarp projektavimo ir įgyvendinimo.
  • Testavimas ir bandymų planavimas:
    • Bandytojai naudoja klasių diagramas, kad suprastų ryšius tarp klasių ir atitinkamai suplanuotų bandymų atvejus. Vizualus klasių struktūrų vaizdavimas padeda nustatyti sritis, kurias reikia kruopščiai išbandyti.
  • Atvirkštinės inžinerijos:
    • Klasių diagramos gali būti naudojamos atvirkštinei inžinerijai, kai kūrėjai analizuoja esamą kodą, kad sukurtų vaizdinius programinės įrangos struktūros vaizdus. Tai ypač naudinga, kai trūksta dokumentų arba jie pasenę.