From Wikipedia, the free encyclopedia
En el món de l'enginyeria de programari un diagrama de classes en UML (Unified Modeling Lenguage) és un tipus de diagrama estàtic que descriu l'estructura d'un sistema mostrant les seves classes, atributs i les relacions entre ells. Els diagrames de classes són utilitzats durant el procés d'anàlisi i disseny dels sistemes, a on es crea el disseny conceptual de la informació que utilitzarà el sistema, i els components que s'encarregaran del seu funcionament i de la relació entre l'un i l'altre.
El diagrama de classes és el bloc principal del modelatge orientat a objectes. Es fa servir tant per la traducció de models detallats a codi de programació com pel modelat conceptual general de la sistemàtica de l'aplicació. També es poden usar en el modelatge de dades.[1] Les classes i les interaccions entre elles són els objectes més importants que s'han de representar en un diagrama de classes.
Al diagrama, les diferents classes es representen amb una caixa dividida en tres parts:
En el disseny d'un sistema, el nombre de classes s'identifica i s'agrupa en un diagrama de classes que ajuda a determinar les relacions estàtiques que hi ha entre els objectes. Les classes sovint són separades amb subclasses per fer un disseny conceptual més detallat.
Amb l'objectiu de descriure més detalladament el comportament dels sistemes, aquests diagrames de classes es poden complementar amb un diagrama d'estats o una màquina d'estats d'UML.[2]
UML proporciona mecanismes per representar les parts d'una classe, tals com els atributs i els mètodes i informació addicional sobre aquests.
Per especificar les visibilitat de la part d'una classe (per exemple qualsevol atribut o mètode) aquestes són les anotacions que s'han de posar just abans del nom:[3]
+ | Pública |
- | Privada |
# | Protegida |
/ | Derivada (es pot combinar amb una de les altres) |
~ | Paquet |
L'UML proporciona dos tipus de camps per les nostres parts: instància i classificador.[4]
Per indicar un camp classificador per una part subratllem el nom. En canvi, les parts instància, s'assumeixen per defecte.
Les relacions són el terme general que cobreix els diferents tipus de connexions lògiques entre els objectes del diagrama. En UML podem veure les següents relacions:
Els enllaços són les relacions bàsiques entre dos objectes. En UML es representen amb línes rectes entre els objectes.
El diagrama de classes és un exemple d'associació entre dues classes. Una associació presenta un grup d'enllaços. Les associacions binàries solen ser representades com una línia. Una associació pot tenir qualsevol nombre d'enllaços cap a una classe. Si hi ha 3 enllaços llavors la podem denominar associació ternària. Una associació pot ser anomenada: als seus extrems es poden etiquetar amb els noms en funció del seu rol, indicadors de propietat, multiplicitat, visibilitat i altres propietats.
Hi ha quatre tipus diferents d'associacions:
Les dues primeres són les més comunes. Per exemple: una classe vol es relacionaria amb la classe avió bidireccionalment. L'associació representa la relació estàtica entre els objectes de les classes. Per exemple: "El departament ofereix cursos", és una relació d'associació.
El diagrama de classes mostra l'agregació entre dues classes. L'agregació és una variant dels objectes que tenen una relació d'associació; l'agregació és més específica que l'associació. És una associació que representa una part de la relació o la seva totalitat. Com a tipus d'associació, l'agregació pot ser anomenada i tenir les mateixes etiquetes que l'associació. Tot i això, l'agregació no pot incloure més de dues classes, per tant ha de ser una associació binaria.
L'agregació pot tenir lloc quan la classe és una col·lecció o un contenidor d'altres classes, però quan una classe continguda no té un cicle de vida fortament lligat amb la classe contenidora, si el contenidor és destruït el seu contingut no. A l'UML es representa gràficament com un rombe buit al costat de la classe contenidora en la línia que uneix les dues classes (contenidora i continguda). L'agregat és semànticament un objecte estès que es tracta com una unitat en moltes operacions, encara que físicament està fet de diversos objectes menors.
La composició és una relació més forta que la relació d'associació i també és més específica que l'associació. La composició normalment té una dependència més forta del ‘’cicle de vida’’ entre les instàncies de la classe contenidor i de les instàncies de les classes contingudes: Si el contenidor es destrueix, totes les instàncies que estaven contingudes en el contenidor també es destrueixen. Cal veure que, quan es pugui, una part es pot eliminar del contenidor abans que el contenidor s'elimini i llavors no seria eliminada com a part del contenidor. La representació gràfica en UML de la composició és un rombe opac al costat de la classe contenidora en la línia que uneix la classe contenidora i la continguda.
Quan intentem representar relacions senceres reals; per exemple: un engranatge és una part d'un cotxe, llavors una relació de composició és més apropiada. En canvi, quan es representa un software o una relació en una base de dades; per exemple: L'engranatge amb el model ‘’ENG01’’ és una part del cotxe amb el model CM01, el millor és utilitzar una relació d'agregació, ja que l'engranatge ENG01 també podria ser part d'un altre cotxe a part del cotxe amb model ‘’CM01’’. És per això que sovint la relació d'agregació s'anomena contenidor “catàleg” per diferenciar-la dels contenidors “físics” de les composicions.
En dissenyar una classe s'ha de pensar en com es pot identificar un objecte real, com una persona, un transport, un document o un paquet. Aquests exemples de classes d'objectes reals, és sobre el que un sistema es dissenya. Durant el procés del disseny de les classes es prenen les propietats que identifiquen com a únic a l'objecte i altres propietats addicionals com a dades que corresponen a l'objecte. Amb els següents exemples es defineixen tres objectes que s'inclouen en un diagrama de classes:
Exemple 1: Una persona té nombre de document d'identificació, noms, cognoms, data de naixement, gènere, adreça postal, possiblement també tingui número de telèfon de casa, del mòbil, FAX i correu electrònic.
Exemple 2: Un sistema informàtic pot permetre administrar el compte bancari d'una persona, per la qual cosa tindrà un número de compte, nombre d'identificació del propietari del compte, saldo actual, moneda en la qual es maneja el compte.
Exemple 3: Un altre objecte pot ser "Maneig de Compte", on les operacions bancàries d'un compte (com en l'exemple 2) es manejaran realitzant diferents operacions que en el diagrama de classes només es representen com a operacions, que poden ser:
Aquests exemples constitueixen diferents classes d'objectes que tenen propietats i/o operacions que contenen un context i un domini, els primers dos exemples són classes de dades i el tercer classe de lògica de negoci, depenent de qui dissenyi el sistema es poden unir les dades amb les operacions.
El diagrama de classes inclou molta més informació com la relació entre un objecte i un altre, l'herència de propietats d'un altre objecte, conjunts d'operacions/propietats que són implementades per a una interfície.
Una classe abstracta és una classe de la qual no se'n poden instanciar directament objectes. Per tant, els objectes lligats a una classe abstracta s'han de crear necessàriament en alguna de les seves subclasses (especialització / generalització).
REPRESENTACIÓ UML: una classe abstracta s'acostuma a posar en itàliques (cursiva).
Una classe associació és una associació que té el mateix comportament que una classe. L'associació i la classe associació representen un sol element del model i, per tant, els noms de l'associació i de la classe associació han de coincidir.
REPRESENTACIÓ UML: Es representa amb un rectangle de classe que s'uneix per mitjà d'una línia puntejada a la línia que representa l'associació
Algunes eines CASE (i tampoc Java) no permet treballar amb classes associació, per poder-hi treballar cal descompondre les classes associacions en dues associacions i una classe.
Una interfície, aproximadament com una classe abstracte, és una classe que dona nom a una llista d'operacions abstractes, sense indicar-ne la implementació. Només defineix la signatura completa de les seves operacions (nom, tipus de paràmetre i tipus de retorn), però no té atributs ni implementa les operacions. És a dir, una interfície no pot ser instanciada.
D'aquesta forma, l'especificació d'una funcionalitat queda separada de la seva implementació.
REPRESENTACIÓ UML: la classe interfície porta l'estereotip «interface» sobre el nom d'aquesta.
Es pot establir una associació entre una classe C i una interfície I, sempre que la navegabilitat sigui de C cap a I. Tot i que la interfície I no pot ser instanciada, cal interpretar aquesta associació en sentit que un objecte de la classe C té referències a objectes de classes que implementen la interfície I, i per tant pot rebre missatges de C.
És una relació d'herència entre dos classes, una de les quals és superclasse de l'altra (subclasse).
La subclasse és considerada una forma "d'especialització", subtipus, de la superclasse i la superclasse una "generalització", supertipus, de la subclasse.
A la pràctica, això significa que qualsevol instància de la subclasse és també una instància de la superclasse. La superclasse també és coneguda com: classe "pare", classe base o tipus base; i la subclasse com: classe "filla", classe derivada, tipus derivat o tipus heretat.
Una interfície pot ser una especialització d'una interfície de més alt nivell.
REPRESENTACIÓ UML: una generalització/especialització es representa per un segment amb un extrem triangular apuntant cap a la superclasse.
La implementació d'una interfície per una classe concreta s'anomena realització. Dit de forma general, una realització és una relació entre dos elements del model UML, en què un d'aquests elements implementa el comportament que l'altre especifica.
Una classe pot implementar diverses interfícies i una interfície pot ser implementada per més d'una classe.
REPRESENTACIÓ UML: una realització es simbolitza per una línia a trossos amb una fletxa, triangle buit, que apunta des de la classe implementadora a la classe interfície.
Una dependència entre dues classes és una relació entre aquestes, de manera que un canvi a un objecte de la classe proveïdora B pot forçar canvis a un objecte de la classe client A.
Una classe A depèn d'una altra classe B si:
REPRESENTACIÓ UML: una dependència d'una classe A respecte de B s'indica amb una fletxa puntejada que va de A fins a B.
La multiplicitat, situada a un extrem d'una associació, indica el nombre de possibles instàncies de la classe d'aquest extrem que es poden associar amb una instància de la classe de l'altre extrem.
REPRESENTACIÓ UML: una associació es representa amb una línia amb una punta de fletxa opcional que indica el paper de l'objecte en la relació, i una notació opcional a cada extrem que indica la multiplicitat de les instàncies de l'entitat, és a dir, el nombre d'objectes que participen en l'associació.
Una restricció és una condició que tota implementació del disseny ha de satisfer. La restricció limita els valors que les entitats (objectes, classes, atributs, associacions...) poden prendre.
REPRESENTACIÓ UML: En un diagrama de classes les restriccions s'escriuen entre { } i es col·loquen vora l'entitat restringida.
Un estereotip permet afegir informació extra als elements del model (classes, dependències, color/tipus de rol…).
REPRESENTACIÓ UML: El nom d'un estereotip s'escriu entre << ... >> sobre del nom de l'element.
Un qualificador és un atribut d'una associació binària que serveix per a determinar unívocament un objecte o conjunt d'objectes d'una de les classes, la classe objectiu, que estan relacionats a través de l'associació.
Les associacions qualificades es fan servir com a identificadors i la seva multiplicitat acostuma a ser: 0..1, 1 i *. (El qualificador es fa servir com a clau de la Map).
REPRESENTACIÓ UML: Es representa per un rectangle que s'adjunta a l'extrem de l'associació situat al costat de la classe font, que és la classe oposada a la classe objectiu.
Un paquet és una col·lecció d'elements del model (classes, altres paquets, casos d'ús…) relacionats lògicament. Permeten organitzar diagrames complexos, agrupant diversos elements. Es representen per rectangles amb petites pestanyes a la part superior. El nom del paquet es posa dins del rectangle o de la pestanya.
Un paquet depèn d'un segon paquet, si els canvis fets al segon paquet poden forçar canvis en el primer. Naturalment, la dependència entre classes de diferents paquets implica la dependència entre els corresponents paquets. Els paquets continguts en altres paquets veuen tot allò que el paquet contenidor importa.
REPRESENTACIÓ UML: les dependències entre paquets s'indiquen amb fletxes puntejades.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.