| ||||||||||||
Nota En aquest material, s'inclouran fragments de codi :simple-java: Java. L'objectiu d'aquest material NO és aprendre a desenvolupar el codi Java, sinó entendre els conceptes del diagrama de classes i la programació orientada a objectes. UML¶UML és l’acrònim, en anglès, de Unified Modeling Language, és a dir, Llenguatge unificat de modelització. UML són un conjunt de notacions gràfiques que serveixen per especificar, dissenyar, elaborar i documentar models de sistemes i, en particular, d’aplicacions informàtiques. A partir d’aquestes notacions gràfiques o diagrames, l’analista i el dissenyador podran recrear les característiques que caldrà que tingui l’aplicació informàtica que els desenvolupadors hauran de crear posteriorment. En l’actualitat és el llenguatge de modelització de sistemes més conegut i utilitzat. Gaudeix d’una acceptació pràcticament universal i, entre altres beneficis, ha tingut l’efecte d’impulsar el desenvolupament d’eines de modelització gràfica del programari orientat a l’objectes. Els avantatges de la notació UML són els següents:
Cal tindre en compte que:
UML incorpora una gran varietat de diagrames: Diagrames estàtics¶Diagrames dinàmics¶Institut Obert de Catalunya Diagrames dinàmics En aquesta unitat didàctica ens centrarem en els estàtics Diagrames de classes. Diagrames de classes¶Els diagrames de classes són uns diagrames estàtics que mostren les classes i les relacions entre elles. És un dels diagrames més utilitzats en les fases d’anàlisi i de disseny que es basen en UML. Un diagrama de classes representa les classes que seran utilitzades dins el sistema i les relacions que existeixen entre elles. Aquest tipus de diagrames són utilitzats durant les fases d’anàlisi i de disseny dels projectes de desenvolupament de programari. És en aquest moment en què es comença a crear el model conceptual de les dades que farà servir el sistema. Per això s’identifiquen els components (amb els seus atributs i funcionalitats) que prendran part en els processos i es defineixen les relacions que hi haurà entre ells. Un diagrama de classes porta vinculats alguns conceptes que ajudaran a entendre'n la creació i el funcionament en la seua totalitat. Aquests conceptes són:
Institut Obert de Catalunya Resum dels elements d'un diagrama de classes Classes. Atributs i mètodes¶Una classe és una representació d'un objecte del món real o abstracte, el qual està compost d'atributs, que representen característiques de l'objecte, i els mètodes, que representen les accions de l'objecte. Es representen amb la notació UpperCamelCase, és a dir, comencen en majúscula i cada paraula comença en majúscula. Atributs¶Els atributs (també anomenats propietats o característiques) són les dades detallades que contenen els objectes. Aquests valors corresponen a l’objecte que instancia la classe i fa que tots els objectes siguen diferents entre si. Cada atribut té assignat un tipus i una multiplicitat. Es representen amb la notació lowerCamelCase, és a dir, comencen en minúscula i cada paraula comença en majúscula. El tipus indica la naturalesa de les dades (numèriques, alfanumèriques, booleanes, ...). Els tipus poden ser:
La multiplicitat indica quants diferents valors poden haver en un atribut:
Mètodes¶Els mètodes implementen les accions que es podran dur a terme sobre els atributs. Ofereixen la possibilitat d’aplicar canvis sobre els atributs, però també moltes altres accions relacionades amb l’objecte, com obrir-lo o tancar-lo, carregar-lo, fer càlculs...{.box} Cada mètode es defineix amb un nom i cal especificar els paràmetres que rep i el valor que retorna.
Els mètodes poden llançar Excepcions, que són errors que poden ocórrer durant l'execució de codi. Si el mètode pot llançar alguna excepció concreta, cal indicar-ho. Representació¶Les classes és representen amb un rectangle dividit en 3 apartats:
Advertència L'objectiu d'aquesta unitat és entendre els conceptes de la Programació Orientada a Objectes. No heu de realitzar la transformació a codi Java. S'adjunta en el material per veure un exemple concret d'implementació d'aquesta estructura. Transformació a codi Java Aquesta classe es podria traduir amb el següent codi:
Objectes. Instanciació¶Un objecte és una instanciació d’una classe. El concepte instanciació indica l’acció de crear una instància d’una classe. La creació d’una instància d’una classe es realitza mitjançant una crida al mètode constructor d’una classe en temps d’execució del programa. Mentre que una classe defineix el disseny conceptual, un objecte és la especificació d'un element d'aquesta classe. Instanciació de la classe Persona
A partir de la classe
Visibilitat¶La visibilitat d’un atribut o d’un mètode definirà l’àmbit des del qual podran ser utilitzats aquests elements. Aquesta característica està directament relacionada amb el concepte d’orientació a objectes anomenat encapsulació, mitjançant el qual es permet als objectes decidir quina de la seva informació serà més o menys pública per a la resta d’objectes.{.box} Les possibilitats per a la visibilitat, tant d’atributs com de mètodes, són:
En Java es considera una bona pràctica NO definir atributs com a Els mètodes
Enumeracions¶Les enumeracions son classes representen un tipus de dada que sols permet un conjunt definit de valors. Les enumeracions es representen amb un rectangle amb el nom de la classe en UpperCamelCase, i els valors de l'enumeració es representen amb MAJÚSCULES, ja que es consideren constants. Exemple d'enumeració
En l'exemple, tenim l'enumeració Relacions entre classes¶Les relacions en un diagrama de classes especifiquen quines classes estan relacionades. Per relació s'entén que un objecte interactue d'alguna manera amb un altre objecte.{.box} Exemple de relació entre classes Podem veure la classe
Les relacions també tenen assignada una multiplicitat, que especifica amb quants objectes d'una classe es relaciona l'altre objecte de l'altra classe. Les multiplicitats s'especifiquen de la mateixa manera que la multiplicitat dels atributs (consultar taula). Si una classe té una altra classe com a atribut, estan relacionades i aquest atribut es defineix en la associació entre les dues. Exemple de relació amb multiplicitat En l'exemple anterior, es pot observar que una És a dir:
Associació¶Les relacions entre les diferents classes, generalment, s'anomenen associacions. Aquestes relacions es representen mitjançant una línia contínua, sense fletxes ni cap altre símbol als extrems. És un tipus de relació estructural que defineix les connexions entre dos o més objectes. Una associació amb dos extrems es diu que és binària; seria el cas de l’exemple d’un client que reserva una habitació d’hotel. Una associació amb tres extrems es diu que és ternària. Institut Obert de Catalunya Exemple d'associació ternària Associació reflexiva¶Una associació reflexiva és una associació entre una classe amb ella mateixa. Aquest tipus d'associació és útil per modelar relacions jeràrquiques o recursives. Exemple d'associació reflexiva En l'exemple, la classe
Navegabilitat¶La navegabilitat especifica si una instància d'una classe pot accedir eficientment als objectes de l'altra classe de la relació.
Institut Obert de Catalunya Exemple de navegabilitat en una associació Exemple En aquest exemple s'indica que Agregació¶Una relació d’associació d’agregació és un cas especial d’associació entre dos o més objectes. Es tracta d’una relació del tipus tot-part. Aquest tipus de relació implica dos tipus d’objectes, l’objecte anomenat base i l’objecte que estarà inclòs a l’objecte base. Si desapareix l’objecte base, el o els objectes que es troben inclosos en l’objecte base no desapareixeran i podran continuar existint amb les seves funcionalitats pròpies. La relació d’associació d’agregació es representa mitjançant una línia contínua que finalitza en un dels extrems per un rombe buit, sense omplir. El rombe buit s’ubicarà a la part de l’objecte base. Institut Obert de Catalunya Exemple d'agregació Exemple L’objecte base és l’objecte anomenat Composició¶Una relació de composició és un cas especial d’associació entre dos o més objectes. És una relació del tipus tot-part. És una relació molt semblant a la relació d’agregació, amb la diferència que hi ha una dependència d’existència entre l’objecte base i l’objecte (o els objectes) que hi està inclòs. Si deixa d’existir l’objecte base, deixarà d’existir també el o els objectes inclosos. El temps de vida de l’objecte inclòs depèn del temps de vida de l’objecte base. La relació d’associació de composició es representa mitjançant una línia contínua finalitzada en un dels extrems per un rombe pintat. Exemple de composició Exemple L’objecte base Dependència¶Un altre tipus de relació entre classes és la relació de dependència. Aquest tipus de relació es representa mitjançant una fletxa discontínua entre dos elements. L’objecte del qual ix la fletxa es considera un objecte dependent. L’objecte al qual arriba la fletxa es considera un objecte independent. Es tracta d’una relació semàntica. Si hi ha un canvi en l’objecte independent, l’objecte dependent es veurà afectat. Exemple de dependència Exemple L’objecte Per exemple, el Herència, especialització o generalització¶La relació de generalització es dona entre dues classes on hi ha un vincle que es pot considerar d’herència. Una classe és anomenada classe mare o superclasse. L’altra (o les altres) són les anomenades classes filles, subclasses o especialitzacions, que hereten els atributs, els mètodes i el comportament de la classe mare. Aquest tipus de relació queda especificat mitjançant una fletxa que ix de la classe filla i que acaba a la classe mare. Exemple de relació de generalització Exemple La classe Classe associativa¶Quan una associació té propietats o mètodes propis es representa com una classe unida a la línia de l’associació per mitjà d’una línia discontínua. Tant la línia com el rectangle de classe representen el mateix element conceptual: l’associació. Institut Obert de Catalunya Exemple de classe associativa Exemple La classe Recursos addicionals¶Exemples¶Bibliografia¶Aquest material és una obra derivada del material: Altres referències consultades:
| ||||||||||||