logo

Diagrama de classe | Llenguatge de modelatge unificat (UML)

Els diagrames de classes són un tipus de UML Diagrama (Lenguatge de modelatge unificat) utilitzat en enginyeria del programari per representar visualment l'estructura i les relacions de les classes en un sistema. UML és un llenguatge de modelatge estandarditzat que ajuda a dissenyar i documentar sistemes de programari. Són una part integral del procés de desenvolupament de programari, ajudant tant en les fases de disseny com de documentació.



Temes importants per al diagrama de classe

Què són els diagrames de classe?

Els diagrames de classes són un tipus de diagrama UML (Lenguatge de modelització unificat) utilitzat en enginyeria del programari per representar visualment l'estructura i les relacions de les classes dins d'un sistema, és a dir, s'utilitzen per construir i visualitzar sistemes orientats a objectes.

En aquests diagrames, les classes es representen com a quadres, cadascun conté tres compartiments per al nom de classe, els atributs i els mètodes. Les línies que connecten classes il·lustren associacions, mostrant relacions com ara un a un o un a molts.



Els diagrames de classe ofereixen una visió general d'alt nivell del disseny d'un sistema, ajudant a comunicar i documentar l'estructura del programari. Són una eina fonamental en el disseny orientat a objectes i tenen un paper crucial en el cicle de vida del desenvolupament de programari.

Què és una classe?

A la programació orientada a objectes (OOP), una classe és un pla o plantilla per crear objectes. Els objectes són instàncies de classes, i cada classe defineix un conjunt d'atributs (membres de dades) i mètodes (funcions o procediments) que tindran els objectes creats a partir d'aquesta classe. Els atributs representen les característiques o propietats de l'objecte, mentre que els mètodes defineixen els comportaments o accions que l'objecte pot realitzar.



Notació de classe UML

La notació de classe és una representació gràfica utilitzada per representar classes i les seves relacions en el modelatge orientat a objectes.

descarregar vídeos de youtube a vlc

  1. Nom de la classe:
    • El nom de la classe s'escriu normalment al compartiment superior del quadre de classe i està centrat i en negreta.
  2. Atributs:
    • Els atributs, també coneguts com a propietats o camps, representen els membres de dades de la classe. S'enumeren al segon compartiment del quadre de classe i sovint inclouen la visibilitat (p. ex., públic, privat) i el tipus de dades de cada atribut.
  3. Mètodes:
    • Els mètodes, també coneguts com a funcions o operacions, representen el comportament o la funcionalitat de la classe. S'enumeren al tercer compartiment del quadre de classe i inclouen la visibilitat (p. ex., públic, privat), el tipus de retorn i els paràmetres de cada mètode.
  4. Notació de visibilitat:
    • Les notacions de visibilitat indiquen el nivell d'accés dels atributs i mètodes. Les notacions de visibilitat habituals inclouen:
      • +>per al públic (visible per a totes les classes)
      • ->per a privat (visible només dins de la classe)
      • #>per a protegits (visibles per a les subclasses)
      • ~>per a la visibilitat del paquet o per defecte (visible per a les classes del mateix paquet)

Paràmetre Direccionalitat

En els diagrames de classes, la direccionalitat dels paràmetres es refereix a la indicació del flux d'informació entre classes a través dels paràmetres del mètode. Ajuda a especificar si un paràmetre és una entrada, una sortida o tots dos. Aquesta informació és crucial per entendre com es passen les dades entre objectes durant les trucades de mètodes.

notació-classe-amb-direccionalitat-de-paràmetres

Hi ha tres notacions principals de direccionalitat dels paràmetres que s'utilitzen en els diagrames de classes:

  • En (entrada):
    • Un paràmetre d'entrada és un paràmetre passat de l'objecte cridant (client) a l'objecte cridat (servidor) durant la invocació d'un mètode.
    • Es representa amb una fletxa que apunta cap a la classe receptora (la classe propietaria del mètode).
  • Sortida (sortida):
    • Un paràmetre de sortida és un paràmetre passat de l'objecte cridat (servidor) a l'objecte cridant (client) després de l'execució del mètode.
    • Es representa amb una fletxa que apunta lluny de la classe receptora.
  • InOut (entrada i sortida):
    • Un paràmetre InOut serveix tant d'entrada com de sortida. Transporta informació de l'objecte cridant a l'objecte cridat i viceversa.
    • Es representa amb una fletxa que apunta cap i lluny de la classe receptora.

Relacions entre classes

En els diagrames de classes, les relacions entre classes descriuen com les classes estan connectades o interaccionen entre elles dins d'un sistema. Hi ha diversos tipus de relacions en el modelatge orientat a objectes, cadascuna amb un propòsit específic. Aquests són alguns tipus de relacions habituals als diagrames de classes:

1. Associació

Una associació representa una relació bidireccional entre dues classes. Indica que les instàncies d'una classe estan connectades a instàncies d'una altra classe. Les associacions es representen normalment com una línia sòlida que connecta les classes, amb fletxes opcionals que indiquen la direcció de la relació.

Entenem l'associació amb un exemple:

Considerem un sistema senzill per gestionar una biblioteca. En aquest sistema, tenim dues entitats principals:Book>iLibrary>. CadascúLibrary>conté múltiplesBooks>, i cadascunBook>pertany a un determinatLibrary>. Aquesta relació entreLibrary>iBook>representa una associació.

La classe Library es pot considerar la classe font perquè conté una referència a diverses instàncies de la classe Book. La classe Book es consideraria la classe objectiu perquè pertany a una biblioteca específica.

format de cadena java llarg

2. Associació dirigida

Una associació dirigida en un diagrama de classes UML representa una relació entre dues classes on l'associació té una direcció, que indica que una classe està associada amb una altra d'una manera específica.

  • En una associació dirigida, s'afegeix una punta de fletxa a la línia d'associació per indicar la direcció de la relació. La fletxa apunta des de la classe que inicia l'associació fins a la classe que està sent objectiu o afectada per l'associació.
  • Les associacions dirigides s'utilitzen quan l'associació té un flux o direccionalitat específics, com ara indicar quina classe és responsable d'iniciar l'associació o quina classe té una dependència d'una altra.

Considereu un escenari en què una classe de professor s'associa amb una classe de curs en un sistema universitari. La fletxa d'associació dirigida pot apuntar des de la classe del professor fins a la classe del curs, indicant que un professor està associat o imparteix un curs específic.

  • La classe d'origen és la classe del professor. La classe de Mestres inicia l'associació impartint un curs específic.
  • La classe objectiu és la classe del curs. La classe del curs es veu afectada per l'associació ja que està sent impartida per un professor específic.

3. Agregació

L'agregació és una forma especialitzada d'associació que representa una relació de part sencera. Denota una relació més forta on una classe (el tot) conté o està composta per una altra classe (la part). L'agregació es representa amb una forma de diamant al costat de tota la classe. En aquest tipus de relació, la classe fill pot existir independentment de la seva classe pare.

Entenem l'agregació utilitzant un exemple:

L'empresa es pot considerar com el tot, mentre que els treballadors són les parts. Els empleats pertanyen a l'empresa, i l'empresa pot tenir diversos empleats. Tanmateix, si l'empresa deixa d'existir, els empleats encara poden existir de manera independent.

4. Composició

La composició és una forma més forta d'agregació, que indica una relació de propietat o dependència més significativa. En la composició, la classe de part no pot existir independentment de tota la classe. La composició es representa amb una forma de diamant farcit al costat de tota la classe.

Entenem la composició amb un exemple:

Imagineu una aplicació de llibre de contactes digital. La llibreta de contactes és el tot, i cada entrada de contacte n'és una part. Cada entrada de contacte és totalment propietat i gestionada pel llibre de contactes. Si s'elimina o es destrueix la llibreta de contactes, també s'eliminen totes les entrades de contactes associades.

Això il·lustra la composició perquè l'existència de les entrades de contacte depèn completament de la presència de la llibreta de contactes. Sense la llibreta de contactes, les entrades de contacte individuals perden el seu significat i no poden existir per si soles.

5. Generalització (herència)

L'herència representa una relació és-una entre classes, on una classe (la subclasse o fill) hereta les propietats i els comportaments d'una altra classe (la superclasse o pare). L'herència es representa amb una línia sòlida amb una punta de fletxa buida i tancada que apunta des de la subclasse a la superclasse.

travessa prèvia d'un arbre

En l'exemple dels comptes bancaris, podem utilitzar la generalització per representar diferents tipus de comptes, com ara comptes corrents, comptes d'estalvi i comptes de crèdit.

La classe de compte bancari serveix com a representació generalitzada de tot tipus de comptes bancaris, mentre que les subclasses (compte corrent, compte d'estalvis, compte de crèdit) representen versions especialitzades que hereten i amplien la funcionalitat de la classe base.

6. Realització (Implementació de la interfície)

La realització indica que una classe implementa les característiques d'una interfície. Sovint s'utilitza en els casos en què una classe realitza les operacions definides per una interfície. La realització es representa amb una línia discontínua amb una punta de fletxa oberta que apunta des de la classe d'implementació a la interfície.

Considerem l'escenari en què una persona i una corporació realitzen una interfície de propietari.

  • Interfície del propietari: Aquesta interfície ara inclou mètodes com ara adquirir (propietat) i disposar (propietat) per representar accions relacionades amb l'adquisició i la disposició de la propietat.
  • Classe de persona (realització): La classe Person implementa la interfície Owner, proporcionant implementacions concretes per als mètodes adquirir(propietat) i disposar(propietat). Per exemple, una persona pot adquirir la propietat d'una casa o disposar d'un cotxe.
  • Classe corporativa (realització): De la mateixa manera, la classe Corporation també implementa la interfície Owner, oferint implementacions específiques per als mètodes d'adquirir (propietat) i disposar (propietat). Per exemple, una corporació pot adquirir la propietat de béns immobles o disposar de vehicles de l'empresa.

Les classes Person i Corporation realitzen la interfície Owner, és a dir, proporcionen implementacions concretes per als mètodes d'adquirir (propietat) i disposar (propietat) definits a la interfície.

fitxer d'extensió java

7. Relació de dependència

Existeix una dependència entre dues classes quan una classe es basa en una altra, però la relació no és tan forta com l'associació o l'herència. Representa una connexió més fluixa entre les classes. Les dependències sovint es representen com una fletxa discontínua.

Considerem un escenari en què una persona depèn d'un llibre.

  • Classe de persona: Representa una persona que llegeix un llibre. La classe Persona depèn de la classe Llibre per accedir i llegir el contingut.
  • Classe de llibres: Representa un llibre que conté contingut per ser llegit per una persona. La classe Book és independent i pot existir sense la classe Persona.

La classe Persona depèn de la classe Llibre perquè requereix accés a un llibre per llegir-ne el contingut. Tanmateix, la classe Llibre no depèn de la classe Persona; pot existir de manera independent i no es basa en la classe Person per a la seva funcionalitat.

8. Relació d'ús (dependència).

Una relació de dependència d'ús en un diagrama de classes UML indica que una classe (el client) utilitza o depèn d'una altra classe (el proveïdor) per realitzar determinades tasques o accedir a determinades funcionalitats. La classe de client es basa en els serveis que ofereix la classe de proveïdor, però no en posseeix ni en crea instàncies.

  • Les dependències d'ús representen una forma de dependència on una classe depèn d'una altra classe per satisfer una necessitat o requisit específic.
  • La classe de client requereix accés a funcions o serveis específics proporcionats per la classe de proveïdor.
  • En els diagrames de classes UML, les dependències d'ús es representen normalment amb una línia de fletxa discontínua que apunta des de la classe de client fins a la classe de proveïdor.
  • La fletxa indica la direcció de la dependència, mostrant que la classe de client depèn dels serveis que ofereix la classe de proveïdor.

Penseu en un escenari en què una classe de cotxe depèn d'una classe de FuelTank per gestionar el consum de combustible.

  • És possible que la classe Car hagi d'accedir a mètodes o atributs de la classe FuelTank per comprovar el nivell de combustible, omplir combustible o controlar el consum de combustible.
  • En aquest cas, la classe Car té una dependència d'ús de la classe FuelTank perquè utilitza els seus serveis per realitzar determinades tasques relacionades amb la gestió del combustible.

Propòsit dels diagrames de classe

L'objectiu principal de l'ús de diagrames de classes és:

  • Aquest és l'únic UML que pot representar adequadament diversos aspectes del concepte OOP.
  • El disseny i l'anàlisi adequats de les aplicacions poden ser més ràpids i eficients.
  • És la base per al desplegament i el diagrama de components.
  • Incorpora enginyeria directa i inversa.

Beneficis dels diagrames de classes

  • Modelització de l'estructura de classes:
    • Els diagrames de classes ajuden a modelar l'estructura d'un sistema mitjançant la representació de classes i els seus atributs, mètodes i relacions.
    • Això proporciona una visió clara i organitzada de l'arquitectura del sistema.
  • Comprensió de les relacions:
    • Els diagrames de classes representen les relacions entre classes, com ara associacions, agregacions, composicions, herència i dependències.
    • Això ajuda les parts interessades, inclosos els desenvolupadors, dissenyadors i analistes empresarials, a entendre com estan connectats els diferents components del sistema.
  • Comunicació:
    • Els diagrames de classe serveixen com a eina de comunicació entre els membres de l'equip i les parts interessades. Proporcionen una representació visual i estandarditzada que es pot entendre fàcilment tant per un públic tècnic com per un públic no tècnic.
  • Pla per a la implementació:
    • Els diagrames de classes serveixen com a model per a la implementació del programari. Guien els desenvolupadors per escriure codi il·lustrant les classes, els seus atributs, mètodes i les relacions entre ells.
    • Això pot ajudar a garantir la coherència entre el disseny i la implementació real.
  • Generació de codi:
    • Algunes eines i marcs de desenvolupament de programari admeten la generació de codi a partir de diagrames de classes.
    • Els desenvolupadors poden generar una part important del codi a partir de la representació visual, reduint les possibilitats d'errors manuals i estalviant temps de desenvolupament.
  • Identificació d'abstraccions i encapsulació:
    • Els diagrames de classes fomenten la identificació d'abstraccions i l'encapsulació de dades i comportament dins de les classes.
    • Això admet els principis del disseny orientat a objectes, com ara la modularitat i l'amagat d'informació.

Com dibuixar diagrames de classe

Dibuixar diagrames de classes implica visualitzar l'estructura d'un sistema, incloses les classes, els seus atributs, mètodes i relacions. Aquests són els passos per dibuixar diagrames de classe:

  1. Identificar classes:
    • Comenceu identificant les classes del vostre sistema. Una classe representa un pla d'objectes i hauria d'encapsular els atributs i mètodes relacionats.
  2. Llista d'atributs i mètodes:
    • Per a cada classe, enumera els seus atributs (propietats, camps) i mètodes (funcions, operacions). Inclou informació com ara tipus de dades i visibilitat (públic, privat, protegit).
  3. Identificació de relacions:
    • Determinar les relacions entre classes. Les relacions comunes inclouen associacions, agregacions, composicions, herència i dependències. Comprendre la naturalesa i la multiplicitat d'aquestes relacions.
  4. Crea quadres de classe:
    • Dibuixa un rectangle (quadre de classe) per a cada classe identificada. Col·loqueu el nom de la classe al compartiment superior de la caixa. Dividiu la caixa en compartiments per als atributs i mètodes.
  5. Afegeix atributs i mètodes:
    • Dins de cada quadre de classe, enumereu els atributs i mètodes als seus respectius compartiments. Utilitzeu notacions de visibilitat (+ per a públic, – per a privat, # per a protegit, ~ per a paquet/per defecte).
  6. Dibuixa relacions:
    • Dibuixa línies per representar les relacions entre classes. Utilitzeu les fletxes per indicar la direcció de les associacions o dependències. Es poden utilitzar diferents tipus de línies o anotacions per a diverses relacions.
  7. Relacions d'etiquetes:
    • Etiqueta les relacions amb multiplicitat i noms de rol si cal. La multiplicitat indica el nombre d'instàncies implicades en la relació, i els noms de rol aclareixen el paper de cada classe en la relació.
  8. Revisa i perfecciona:
    • Reviseu el vostre diagrama de classe per assegurar-vos que representa amb precisió l'estructura i les relacions del sistema. Refineu el diagrama segons sigui necessari en funció dels comentaris i dels requisits.
  9. Utilitzeu eines per al dibuix digital:
    • Tot i que podeu dibuixar diagrames de classe en paper, l'ús d'eines digitals pot proporcionar més flexibilitat i facilitat de modificació. Les eines de modelatge UML, el programari de dibuix o fins i tot les eines de diagramació especialitzades poden ser útils.

Casos d'ús dels diagrames de classes

  • Disseny del sistema:
    • Durant la fase de disseny del sistema, s'utilitzen diagrames de classes per modelar l'estructura estàtica d'un sistema de programari. Ajuden a visualitzar i organitzar les classes, els seus atributs, mètodes i relacions, proporcionant un model per a la implementació del sistema.
  • Comunicació i col·laboració:
    • Els diagrames de classe serveixen com a eina de comunicació visual entre les parts interessades, inclosos desenvolupadors, dissenyadors, gestors de projectes i clients. Faciliten les discussions sobre l'estructura i el disseny del sistema, promovent una comprensió compartida entre els membres de l'equip.
  • Generació de codi:
    • Alguns entorns i eines de desenvolupament de programari admeten la generació de codi basat en diagrames de classes. Els desenvolupadors poden generar esquelets de codi, reduint els esforços de codificació manual i garantint la coherència entre el disseny i la implementació.
  • Proves i planificació de proves:
    • Els provadors utilitzen diagrames de classes per entendre les relacions entre classes i planificar casos de prova en conseqüència. La representació visual de les estructures de classe ajuda a identificar les àrees que requereixen proves exhaustives.
  • Enginyeria inversa:
    • Els diagrames de classes es poden utilitzar per a l'enginyeria inversa, on els desenvolupadors analitzen el codi existent per crear representacions visuals de l'estructura del programari. Això és especialment útil quan la documentació és escassa o obsoleta.