Professional Documents
Culture Documents
I. INTRODUCCIÓ 3
I. 1. Diagrames d’UML 3
I. 1. DIAGRAMES D’UML
Diagrames d’estructura, que descriuen aspectes del sistema de programari considerat que són es-
tructurals (allò que el sistema té). N’hi ha els següents:
• diagrama de paquets,
• diagrama de perfil,
• diagrama de classes,
• diagrama d’objectes,
• diagrama d’estructures compostes,
• diagrama de components,
• diagrama de desplegament.
Diagrames de comportament, que representen l‘activitat del sistema (allò que el sistema pot fer) des
de diferents punts de vista. N’hi ha els següents:
• diagrama de casos d’ús,
• diagrama d’estats,
• diagrama d’activitats,
• diagrama d’interacció, que té aquestes variants:
o diagrama de seqüències,
o diagrama de comunicacions,
o diagrama de visió general de la interacció,
o diagrama temporal.
II. 1. ELEMENT
Els models dels diferents nivells consten d’elements; un element és un concepte que té representació
en els models mitjançant un símbol geomètric bidimensional, una línia o una sèrie alfanumèrica
(String).
Un element tipificat és un element que pot tenir diferents valors pertanyents a un cert conjunt; a
aquest conjunt se l’anomena tipus.
Un element derivat és un element redundant que s’obté mitjançant un algorisme a partir d’altres ele-
ments del model.
Notació
Quan es descriu la sintaxi dels elements textuals els fragments de text (mots clau, parèntesis etc.) es-
tàndard d’UML es representen en cursiva i entre cometes mentre que aquells noms i expressions que
són propis del model representat estan en lletra normal. La lletra cursiva també té altres usos en altres
contexts.
II. 2. ESTEREOTIP
És una variant d’un element - anomenat element base de l’estereotip – la qual té almenys la mateixa
estructura i relacions amb altres elements que l’element base però pot tenir aspectes addicionals i té un
ús més restringit que l’element base.
Notació de l’estereotip
Quan es fa ús d’un estereotip se’l representa pel mateix símbol (potser amb diferent color o textura)
que l’element base, més el nom de l’estereotip entre ‘«’ i ‘»’ (cometes llatines), o també per un símbol
específic de l’estereotip en qüestió.
II. 3. VISIBILITAT
La visibilitat és un atribut dels elements que delimita quins altres elements del model hi tenen accés;
és una enumeració (vegeu l’apartat III. 1. 2. 2. ) que té aquests valors:
• “+” o “public”, que vol dir que l’element és accessible per aquells elements que poden accedir a
l’espai de noms que el conté directament;
• “-” o “private”, que significa que l’element només és accessible pels elements de l’espai de noms
que el conté directament;
• “#” o “protected”, que vol dir que l’element només és visible per als elements del seu mateix espai
de noms A i per als elements d’espais de noms generalitzats per A;
• “~” o “package”, que només es pot aplicar a elements continguts directament en un espai de noms
que no és un paquet i aleshores vol dir que l’element només és visible per als elements continguts
directament o indirectament dins el paquet que conté el seu espai de noms.
El comentari és una explicació en llenguatge natural destinada només a ser llegida i que, per tant, no
té cap efecte sobre el funcionament del sistema modelitzat ni ha de ser interpretada per l’eina de mo-
delatge.
Qualsevol element o grup d’elements d’un model pot tenir comentaris associats.
Notació
Va dins d’un símbol de nota, que representa un full de paper apaïsat amb un angle doblegat:
comentari
Si es refereix a tot un diagrama un comentari pot aparèixer aïllat a dintre seu; si no, es recomana que
estigui connectat amb cadascun dels elements als quals fa referència per línies discontínues, per tal que
no hi hagi dubte de quins són els elements al·ludits.
II. 5. CLASSIFICADOR
El classificador té nombrosos estereotips estàndard (per exemple, la classe), alguns dels quals per la
seva banda també tenen estereotips estàndard.
Notació
Un classificador en general es representa per un rectangle, que pot estar dividit horitzontalment en di-
versos compartiments, dels quals l’únic obligatori és el superior, que conté el nom del classificador i al
damunt l’estereotip corresponent.
«estereotip»
Nom classificador
Molts estereotips del classificador tenen un símbol específic, altre que el rectangle.
II. 6. INSTÀNCIA
Cada un dels valors d’un classificador n’és una instància (instance). Una instància pot pertànyer a di-
versos classificadors alhora.
Notació
Les instàncies es representen pel mateix símbol que els classificadors respectius. Allà on en el cas d’un
classificador hi ha el nom del classificador, en el cas d’una instància hi ha el nom de la instància (opta-
tiu) i tot seguit “:” i la llista dels classificadors a què pertany separats per comes; tots dos noms van
subratllats. El nom d’un classificador pot anar precedit del seu estereotip.
«estereotip»
inst:Cl1, Cl2
La multiplicitat d’una col·lecció estableix quins valors pot tenir la seva cardinalitat. En el cas més ge-
neral és una sèrie d’especificacions d’intervals de la forma límit_inferior“..”límit_superior separades per
comes.
Els límits de cada interval poden ser valors enters no negatius o bé expressions parametritzades que
donin un resultat enter; a més el límit superior o tots dos poden ser substituïts per “*”, que indica que
qualsevol valor enter no negatiu és vàlid; quan els dos límits d’un interval coincideixen se’n pot posar
només un.
Per exemple la multiplicitat 0..1, 3, 5..* indica que el valor de la cardinalitat pot ser qualsevol enter no negatiu llevat de 2 i 4.
0..* equival a *..* i per tant a *. La multiplicitat 0..0 està permesa.
Quan una multiplicitat forma part d’una especificació textual més llarga està delimitada per “[“ i ”]”,
però no pas quan està sola acompanyant un element gràfic.
Si el límit superior és més gran que 1 la multiplicitat pot anar seguida de les propietats següents:
• “unique”, que vol dir que no s’admeten valors duplicats, o “nonunique”; per defecte és “unique”
• “ordered”, que vol dir que les instàncies estan ordenades per algun criteri, o “unordered”; per de-
fecte és “unordered”.
II. 7. DEPENDÈNCIA
Una dependència expressa que un o més elements d’un model (clients) depenen, per a la seva realit-
zació o especificació, d’un o més altres elements (subministradors, suppliers).
Hi ha molts estereotips estàndard de la dependència, que sovint només s’apliquen a alguns tipus
d’elements.
Notació
Una dependència es representa per una fletxa de punta oberta i línia discontínua del client cap al sub-
ministrador, amb l’estereotip al costat:
«estereotip»
Cada diagrama d’UML es representa opcionalment dins d’un marc amb una capçalera, així:
capçalera
diagrama
És el diagrama d’estructura bàsic i més general; serveix per a definir classificadors de tota mena i rela-
cions de diferents tipus entre ells.
III. 1. 1. Classes
Una classe descriu un conjunt d’entitats que tenen les mateixes propietats, comportament, relacions i
semàntica. La classe és un estereotip del classificador i per tant en principi pot tenir instàncies, que
s’anomenen objectes.
Un aspecte característic dels objectes és que tenen identitat, cosa que significa que dos objectes poden
ser diferents encara que tinguin valors idèntics en tots els atributs. Les instàncies de classificadors
qualssevol no tenen identitat en general.
Les característiques estructurals de les classes s’anomenen propietats i poden ser de dues menes:
• Atributs, quan formen part de la classe. Per a cada objecte cada atribut pot tenir un valor o
més, que han de pertànyer a un tipus que s’especifica. Els valors dels diferents atributs constitu-
eixen l’estat de l’objecte, el qual reflecteix en cada moment l’efecte acumulat dels comporta-
ment que l’han afectat.
• Extrems d’associació (vegeu l’apartat III. 1. 3. ).
X Un atribut derivat és un atribut que és element derivat (vegeu l’apartat II. 1. ), i per tant se’n pot
obtenir el valor a partir d’altres elements per mitjà d’un algorisme que es pot descriure per mitjà d’una
restricció que ha de complir el valor de l’atribut derivat per a ser correcte.
Les característiques de comportament de les classes són les operacions, les quals descriuen el com-
portament de la classe. Cada operació té una signatura que en descriu els eventuals paràmetres i va-
lors de retorn. Les operacions en altres contexts s’anomenen mètodes o serveis; en UML un mètode és
una descripció de la implementació d’una operació.
Els atributs de classe no prenen valors per a cada objecte sinó per a tota la classe en conjunt; anàlo-
gament, les operacions de classe no es demanen en relació a un objecte concret sinó en relació a la
classe en general.
Quan es parla simplement d’atributs o operacions s’entén que són a nivell d’objecte; quan es volen dife-
renciar dels de nivell de classe se’ls anomena atributs d’objecte i operacions d’objecte.
Una classe, igual que els altres estereotips del classificador, es representa per mitjà d’un rectangle, que
pot ser compartimentat verticalment o no.
• El compartiment superior o únic porta el nom de la classe i, si s’escau, les seves propietats com a
element del model i l’estereotip (“class”, que és l’estereotip per defecte del classificador), tot cen-
trat. El nom de la classe és obligatori i no hi pot haver dues classes del mateix nom dins el mateix
paquet; es recomana que els noms de classe estiguin en negreta (i comencin per majúscula i
estiguin centrats, com es recomana per als noms de classificador en general).
• La resta de compartiments, quan existeixen, contenen una llista cadascun. Hi ha dues llistes estàn-
dard: la del segon compartiment, que descriu els atributs (d’objecte i de classe), i la del tercer, que
Nom de la classe
Nom de la classe
llista d’atributs
llista d’operacions
La llista d’atributs
Es recomana que els noms dels atributs comencin per minúscula i que el conjunt de
l’especificació de cada atribut estigui alineada per l’esquerra.
La llista d’operacions
La visibilitat pot tenir els valors de l’apartat II. 3. A una operació de visibilitat “private” només s’hi pot
accedir des de la mateixa classe, i a una operació de visibilitat “protected” només s’hi pot accedir des de
la mateixa classe o una de les seves subclasses. Si no s’indica la visibilitat no se’n suposa cap valor per
defecte, sinó que es considera una propietat oculta.
Les operacions abstractes (vegeu l’apartat III. 1. 4. 1. ) tenen o bé la signatura en cursiva o bé la pro-
pietat “abstract”.
Es recomana que els noms de les operacions comencin per minúscula i que el conjunt de
l’especificació de cada operació estigui alineat per l’esquerra.
Exemples de classes:
estático
Punt subrayado método
:
-x: Real Lis constructor
-y: Real
+crear (in x: Real, in y: Real)
La classe Punt té dos atributs x i y de visibilitat privada i una operació de classe crear que té dos paràmetres d’entrada de ti-
pus real, x i y.
Rectangle
La classe Rectangle té els atributs: extrems, públic, que és una matriu de 2 elements que tenen com a tipus la classe Punt (de
l’exemple anterior); gruixLinia, protegit, de tipus Integer i valor inicial 1; i area, públic, derivat segons la fórmula de la restric-
ció annexa, de tipus Real. Les operacions són getGruixLinia, pública, sense paràmetres, amb un valor de retorn de tipus Inte-
ger; setGruixLinia, pública, amb un paràmetre d’entrada nouGruix i un de sortida vellGruix, tots dos de tipus Integer; calculA-
rea, privada, sense paràmetres i amb un valor de retorn de tipus Real; nouRectangle, pública i de classe, amb els paràmetres
d’entrada de tipus Punt extrem1 i extrem2 i com a valor de retorn un objecte de la mateixa classe Rectangle; aquesta opera-
ció té l’estereotip constructor, com totes les que hi hagués eventualment a sota d’ella mentre no aparegués un altre estereotip
(també es pot indicar l’estereotip a cadascuna, immediatament després de la visibilitat si n’hi ha).
Hem vist que quan un classificador és una classe a les seves instàncies se’ls diu objectes. La notació de
Si l’objecte pertany a uns determinats estats d’una classe, després del nom de la classe ve, entre “[” i
“]”, la llista dels estats separats per comes.
De cada atribut es pot especificar el valor, de la manera indicada a la figura següent; el tipus dels atri-
buts es pot ometre, perquè ja s’ha especificat a la descripció de la classe. Si un atribut pren successi-
vament diversos valors durant la vida de l’objecte, es pot o bé indicar la llista corresponent o bé repre-
sentar l’objecte com a diversos objectes que difereixen en el valor de l’atribut en qüestió, que quan
aquests valors són successius en el temps poden estar relacionats dos a dos per dependències “beco-
mes”.
Exemple:
Objecte i classe
El símbol de l’esquerra representa un objecte concret de la classe de la dreta. Dins l’objecte s’ha mostrat el tipus només d’un
dels atributs, però normalment es mostra per a tots o per a cap.
III. 1. 2. 1. Interfície
És un classificador que consisteix en una declaració de característiques (en el sentit de l’apartat II. 5. )
de visibilitat pública i eventualment restriccions i màquines d’estat de protocol (vegeu l’apartat IV. 2. 2.
) que componen el contracte de la interfície. Com que és només una declaració no se’n poden crear
instàncies directament; per tant és un classificador no instanciable i ha d’estar implementada per al-
menys un classificador instanciable que implementi com a mínim el contracte de la interfície.
Entre una interfície i un classificador que la implementa hi ha la mateixa relació – una dependència de realització (apartat II.
7. ) que entre un tipus i la seva classe d’implementació.
En particular, totes les operacions d’una interfície les ha de tenir també – amb la mateixa signatura
respectivament- tot classificador que la implementi, i els atributs que té han de ser implementats
d’alguna manera (no necessàriament a base de tenir declarats atributs idèntics, públics). Un classifica-
dor pot implementar diverses interfícies alhora; inversament, una interfície pot ser implementada per
instàncies de diversos classificadors en diferents moments.
Com a classificador que és, una interfície es pot representar amb el símbol de classificador amb
l’estereotip “interface”, i aquesta és l’única notació quan es representa aïllada, però quan es representa
relacionada amb altres classificadors té dos símbols específics:
• La dependència d’implementació entre una interfície i un classificador que la implementa (interfí-
cie suportada pel classificador) es pot representar així:
Classificador
Interfície
• La dependència d’un classificador envers una interfície que fa servir (interfície requerida pel clas-
Classificador
Interfície
Exemples:
Cadena
ClasseClient
.....
.....
+esIgual (o: String): Boolean .....
Comparable
La interfície Comparable pretén declarar totes les operacions que hauran de tenir aquelles classes que vulguin permetre que
dos dels seus objectes es puguin comparar segons algun criteri d’igualtat que només queda definit dins la implementació de
l’operació esIgual dins la classe Cadena, que és la que implementa Comparable. La classe ClasseClient utilitza la interfície
Comparable, en el sentit que la implementació d’alguna operació de ClasseClient crida alguna operació de Comparable.
Narmalmente clase implem intal
.
Amb la notació general de les dependències “use” i de realització:
Peneste caso
la clase incluye las
,
met de la interface para gecut
Cadena
.
ClasseClient
.
«interface»
..... «use»
Comparable .....
+esIgual (o: String): Boolean +esIgual (o: Object): Boolean .....
CASO GURIOSO
(La dependència de realització té una notació diferent de la de les altres dependències, com s’ha asse-
nyalat a l’apartat II. 7. ).
Els tipus de dades són classificadors que tenen les característiques següents:
• Les seves instàncies s’anomenen valors i no tenen identitat, a diferència dels objectes; per tant
dos valors iguals no es poden distingir, a diferència de dos objectes amb el mateixos valors a tots
el atributs que tanmateix poden ser objectes diferents;
• les seves operacions no tenen efectes col·laterals, cosa que vol dir que no canvien el valor de
cap atribut ni envien missatges.
Un aclariment sobre els efectes col·laterals: l'operació d'addició de nombres, per exemple, no altera el valor de cap atribut
perquè els nombres sumats no tenen identitat; una altra cosa seria prendre el valor d'un atribut d’un objecte, sumar-li quel-
com i substituir el valor anterior per aquesta suma, ja que aleshores canviaria l’estat de l’objecte.
Són tipus de dades les enumeracions i els tipus dits primitius, a més dels que es puguin definir.
Enumeració
Una enumeració és un tipus de dades, les instàncies del qual són literals que s’especifiquen un a un.
Tipus primitius
Són tipus de dades predefinits, les instàncies dels quals no tenen estructura (és a dir, són atòmiques).
Les seves operacions poden estar especificades altrament que en UML (amb les notacions de l’Àlgebra,
per exemple).
w
Els tipus de dades en general es representen pel símbol de classificador, amb l’estereotip “dataType”.
Poden tenir compartiments d’atributs i d’operacions, igual que la classe, i eventualment compartiments
addicionals per a d’altra informació. Els tipus primitius tenen l’estereotip “primitive”. L’enumeració es
representa per un classificador amb l’estereotip “enumeration” que després d’eventuals compartiments
per als atributs i per a les operacions pot tenir un compartiment especial amb la llista dels seus literals.
Exemple:
ante
Import agenpare
un
para
«enumeration» -
valores
GEI
Ensenyament
conjunto de
GET
GEE
Literals
Una associació té diversos extrems d’associació (association end) a cadascun dels quals hi ha un
classificador que fa un cert paper (role) en l’associació. Un classificador pot fer múltiples papers en la
mateixa associació, els quals hauran de tenir noms diferents.
Una associació amb dos extrems es diu binària, amb tres ternària, etc.
L’existència d’una associació implica l’existència d’enllaços (links) d’ella que són tuples formades per
instàncies dels classificadors dels seus extrems, una per a cada extrem.
Com a cas especial, una associació pot establir més d’un enllaç entre les mateixes instàncies dels classi-
ficadors; llavors aquests enllaços han de tenir un identificador que els distingeixi.
En una associació binària, quan es pot accedir de manera eficient en temps d’execució a la instància o
instàncies d’un dels extrems b a partir d’una instància de l’altre extrem a amb la qual tenen enllaços de
l’associació es diu que hi ha navegabilitat des d’a cap a b.
ADA – UML bàsic pàg. 13
Una associació derivada és una associació redundant que és conseqüència de restriccions o d’altres
associacions; per exemple la que resulta de combinar dues associacions amb un extrem comú.
Classe associativa és una associació que és alhora una classe; cal considerar que una associació és
una classe quan els seus enllaços (enllaços objectes) tenen atributs i/o operacions per ells mateixos,
això és, que no siguin de cap de les instàncies que enllacen.
Un qualificador és un atribut o llista d’atributs d’un extrem d’una associació binària o de l’associació
mateixa, si és classe associativa; aleshores la multiplicitat d’aquest extrem delimita el nombre
d’objectes enllaçats que tenen els mateixos valors en aquests atributs per a cada objecte de l’altre ex-
trem.
Una associació binària es pot representar mitjançant una línia contínua que uneix els classificadors dels
dos extrems.
Una associació amb 3 extrems o més es representa mitjançant un rombe buit (més gros que el que in-
dica una agregació, vegeu l’apartat III. 1. 3. 3. ) unit per línies als classificadors. Aquest rombe també
es pot utilitzar, opcionalment, en el cas d’associacions binàries.
gmiipicidad
ipcoleción
;
Associació binària amb nom, sentit, navegació, papers i multiplicitats
d
popicday
Empresa
Osertidode
lloc de treball
lectune
conenacadeno Persona
0..1
empleador t
{ordered} 1..*
empleat
Aquesta associació significa que cada persona, en el paper d’empleat, pot tenir un lloc de treball en una empresa, la qual fa el
paper d’empleador; tota empresa té almenys una persona en el paper d’empleat i els empleats de cada empresa estan orde-
nats segons algun criteri no especificat.
* Nombres solo en las asociaciones
Extrem d’associació binària considerat com a atribut
necesario
que sea
.
Empresa
Correspon a l’associació anterior, però només en part: no s’hi pot especificar de quantes empreses pot ser empleat una perso-
na.
o
Classe associativa binària amb sentit, navegació, papers i multiplicitats
-
Lloc de treball
Empresa Persona
0..2 {ordered} 1..*
empleador empleat
relac
Guarda into sobre la
.
Lloc de treball
entre das clases
salari: float
És com l’associació lloc de treball anterior, llevat que aquí l’associació té un atribut i per tant ha de ser una classe associativa i
-
en conseqüència el seu nom ha de començar per majúscula. Si la cardinalitat màxima del paper empleador fos 1 no caldria la
classe associativa: n’hi hauria prou d’afegir a la classe Persona l’atribut salari.
Associació derivada
assignatures del curs vatributo derivado
Curs Assignatura
{nonunique}
alumnes de l’assignatura
Categoria
Departament
0..1
categoria
1..*
Categoria 2..5
Empleat
2..5
Empleat 0..1
principal
Associacions binàries Classe associativa caract
-
Categoria EmpDept
"
1..* categoria: Categoria
1..*
2..5
2..5 1..*
Empleat Empleat Departament
EmpDept
2..5
1..*
1..* Enamerantionss
Categoria
Departament
L’associació amb qualificador significa que a cada departament hi ha entre 2 i 5 empleats de cada categoria i que cada emple-
at pertany almenys a un departament. Com que la categoria és un atribut de l’empleat, és independent de l’associació, i per
tant un empleat que pertany a diversos departaments té les mateixes categories en tots ells.
L’associació ternària vol dir que a cada departament hi ha entre 2 i 5 empleats de cada categoria, per a cada empleat i cate-
goria hi ha un departament o cap (per exemple, perquè si un empleat no té una certa categoria no la té a cap departament), i
per a cada empleat i departament hi ha una categoria o cap (per exemple, perquè si un empleat no pertany a un departament
determinat no hi té cap categoria). Un empleat pot tenir diverses categories però cada una en un departament diferent, i pot
estar en diversos departaments però amb una categoria diferent en cadascun.
Les tres associacions binàries volen dir que per a cada departament hi ha entre 2 i 5 empleats, prescindint de la categoria, i
per a cada categoria hi ha entre 2 i 5 empleats, prescindint del departament; per a cada empleat hi ha almenys una categoria,
per una banda, i almenys un departament, per una altra. Cada departament té almenys una categoria i cada categoria està
almenys en un departament.
La classe associativa vol dir que a cada departament hi ha entre 2 i 5 empleats, cada empleat està almenys en un departa-
ment i hi té una categoria, que pot ser diferent segons el departament però no cal que ho sigui.
1
Proveidor
1
{xor}
Compte
Client
1
Cada compte correspon o bé a un client o bé a un proveïdor; si les multiplicitats de Proveidor i Client fossin 0..1 hi podria ha-
ver comptes que no fossin ni d’un client ni d’un proveïdor.
Una associació binària és una agregació si el seu significat és que un objecte en un extrem (objecte
component, pertanyent a la classe component) és part d’un objecte de l’altre extrem (objecte agregat
pertanyent a la classe agregada).
En una relació d’agregació l’objecte agregat “coneix” els seus objectes components (i pot demanar-los
operacions, per exemple) però no viceversa, en general.
De vegades es diu que una composició és una agregació per conteniment, mentre que una agregació no
composició és una agregació per referència, tenint en compte que els objectes components en una
agregació existeixen independentment de l’objecte compost i per tant fora d’ell.
Una classe agregada duu un indicador d’agregació, que és un rombe més petit que el que representa
les associacions no binàries - ple en el cas d’una composició i buit en cas contrari- posat al costat d’ella
damunt la línia que representa l’associació amb una classe component.
Exemples:
Agregació
0..1 {xor} porter 1
0..1 defensa 3
EquipDeFutbol Jugador
0..1 mig 2
0..1 davanter 5
Representa la composició clàssica d’un equip de futbol. Cada jugador o bé juga en un equip o en cap, i un jugador només pot
estar en una de les quatre posicions, o en cap si no juga en cap equip. Se suposa que els defenses, per exemple, són inter-
Composició
Universitat 1 1..*
CentreUniversitari
Una universitat està formada per centres (facultats i escoles), cada centre fa part d’una sola universitat, es crea lligat a ella i
no pot passar d’una universitat a una altra, i si se suprimeix una universitat tots els seus centres se suprimeixen també.
Entre classes l’herència consisteix en què la subclasse té almenys tots els atributs, operacions, associa-
cions i dependències de la superclasse.
Una subclasse pot ser-ho de diverses superclasses alhora (herència múltiple) i, independentment, pot
ser superclasse d’altres classes (jerarquia d’herència).
Un conjunt de generalització pot tenir nom (imprescindible quan damunt el classificador hi ha definit
més d’un conjunt de generalització) i se li pot especificar una cadena de propietats de la forma {p1,
p2} en la qual p1 pot ser “complete” (que significa que tota instància del classificador pertany també a
algun dels subconjunts) o la seva contrària “incomplete”, que és opció per defecte; p2 pot ser o bé
“overlapping” que indica que hi pot haver instàncies del classificador que pertanyin a diversos dels seus
subconjunts, o bé la seva contrària “disjoint”, que és opció per defecte.
Classe abstracta
Quan un classificador abstracte és una classe (classe abstracta) pot tenir operacions abstractes,
que no estan implementades i per tant no tenen mètode (en el sentit de l’apartat III. 1. 1. 1. ), sinó
que simplement representen una generalització d’operacions de les seves subclasses, totes les quals
han de tenir implementada l’operació mitjançant un mètode (excepte en el cas d’una subclasse que si-
gui també classe abstracta amb operacions abstractes, cas en el qual la implementació de les operaci-
ons abstractes es pot diferir a les seves subclasses directes o indirectes.
Exemples
Ensenyament
{complete, disjoint}
A la figura de l’esquerra el classificador AlumneDoctorat és subconjunt del classificador Alumne. Com que no és abstracte hi
A la figura del mig les propietats del conjunt de generalització anomenat Ensenyament indiquen que tota instància d’Alumne
ha de pertànyer almenys a algun dels classificadors que l’especialitzen (cosa que és redundant amb el fet que Alumne és abs-
tracte) i que entre les seves instàncies no n’hi pot haver que siguin alhora de dos o més dels subconjunts d’Alumne, per
exemple d’AlumneGEI i d’AlumneGET.
A la figura de la dreta s’especifica que tot alumne de doctorat és alhora alumne i professor.
Entre interfícies hi pot haver herència, fins i tot múltiple, igual que entre classes. Si un classificador C
implementa una interfície I, implementa també totes aquelles interfícies de les quals I hereta.
Exemple:
«interface»
C
I
op_a()
op-a() op_b()
«interface»
C1
I1
op_c()
op-c()
La classe C1 implementa les operacions op_a() i op_c() de la interfície I1; tant la classe com la interfície hereten l’operació
op_a() respectiva. op_b() de C no implementa cap operació d’I.
Entre dues associacions hi pot haver una relació de generalització/especialització; si són classes associ-
atives, la generalització/especialització es pot representar entre les línies de les dues associacions i/o
entre els símbols de les classes associatives respectives. Una classe associativa pot heretar d’una classe
ordinària.
Exemples:
Tot parell empresa – client enllaçat per l’associació client habitual ho està també per l’associació client qualsevol però no vice-
versa. És a dir, un client habitual d’una empresa n’és també un client qualsevol.
ClientQualsevol
Empresa Client
ClientHabitual
ClientHabitual
ClientQualsevol ^vendes: Single
vendes: Single descompte: int
ADA – UML bàsic pàg. 19
És com el diagrama anterior però ara l’associació ClientQualsevol té una atribut, vendes, i per tant és classe associativa;
aquest atribut és heretat per la classe associativa ClientHabitual, que a més té l’atribut propi descompte; amb una de les dues
fletxes de generalització/especialització n’hi hauria prou. Si ClientQualsevol no tingués atributs no caldria que fos classe asso-
ciativa i aleshores una classe associativa heretaria d’una associació no classe.
El diagrama de casos d’ús identifica els comportaments executants d’un classificador generalment com-
plex (per exemple un programari) i especifica amb quins usuaris i altres entitats exteriors tenen in-
teracció (en el sentit que en reben informació o els en donen o són engegats per elles) i també certes
relacions entre aquests comportaments.
IV. 1. 1. Conceptes
IV. 1. 1. 1. Subjecte
El subjecte d’un diagrama de casos d’ús és el classificador de context dels comportaments executants
representats al diagrama. Pot ser qualsevol cosa que tingui comportaments: un sistema informàtic o
físic en general, un subsistema, un component o una classe.
Notació
El subjecte no se sol representar; ara bé, com que és un classificador, es pot representar pel símbol de
classificador; aleshores té un compartiment dins del qual hi ha representats els seus casos d’ús.
IV. 1. 1. 2. Actor
Un actor és un conjunt de papers que fa una entitat física o virtual externa al subjecte en relació als
comportaments d’aquest. A través d’aquests papers l’actor interactua amb el subjecte, i cada paper té a
veure amb un dels casos d’ús del subjecte.
A una sola d’aquestes entitats externes li poden correspondre diversos actors, si les interaccions que té amb el sistema de
maquinari i programari són prou diverses per considerar que fa diferents grups de papers en relació a ell. Aquesta circumstàn-
cia no es veuria pas al diagrama.
Per exemple un actor Comptable representa tots els comptables que hi pugui haver que participin en els mateixos casos d’ús
de la mateixa manera.
Notació de l’actor
Un actor es pot representar com un classificador sense atributs ni operacions amb l’estereotip “actor”, o
bé amb el dibuix següent acompanyat pel nom de l’actor (el qual va en cursiva en el cas d’un actor abs-
tracte); també es poden definir símbols específics, no estàndard, per a actors altres que els usuaris.
Actor1
Els actors es poden representar a nivell de classificador o a nivell d’instància, cosa que es distingeix
mitjançant el format del nom, de la mateixa manera que per a un classificador en general (vegeu
l’apartat II. 6. ).
Entre actors pot haver-hi relacions de generalització/especialització i per tant herència, que con-
sisteixen en què l’actor especialitzat hereta els papers que té l’actor generalitzat en relació a casos d’ús
del subjecte. Pot haver-hi actors abstractes, qualsevol instància dels quals que intervingui en una
execució concreta d’un cas d’ús ha de pertànyer a algun dels actors que l’especialitzen.
Exemple:
Usuari
Engegador
Rellotge
Aquest diagrama expressa que un Engegador (suposem que anomenarem així l’actor primari d’alguns casos d’ús d’un cert
subjecte) pot ser o bé un usuari o bé el rellotge; el fet que Engegador sigui un actor abstracte exclou altres possibilitats (és a
dir, tota instància d’Engegador ha de ser instància o bé d’Usuari o bé de Rellotge).
Un cas d’ús és un comportament executant del subjecte; és engegat de manera directa o indirecta (és
a dir, des de dins d’un altre cas d’ús) per un actor i lliura uns resultats concrets a un actor o a diversos
o a un altre cas d’ús.
Un cas d’ús designa un comportament que ha de tenir el subjecte, però el diagrama de casos d’ús no
descriu en què consisteix, aquest comportament.
Els casos d’ús es representen per el·lipses que porten el nom respectiu a dins. Una representació alter-
nativa dels casos d’ús és amb un símbol de classificador amb una el·lipse com a icona representativa de
l’estereotip.
Cdu1
Entre actors i casos d’ús només hi ha associacions binàries, que representen la interacció entre ells.
Aquestes associacions poden tenir multiplicitats a les quals la cardinalitat màxima sigui més gran que 1
i aleshores
• en el cas de l’extrem corresponent a l’actor vol dir que en una sola execució del cas d’ús hi pot
intervenir més d’una instància de l’actor
• i en el cas de l’extrem corresponent al cas d’ús vol dir que una instància de l’actor pot intervenir
en diverses execucions del cas d’ús, per bé que no queda determinat si aquestes execucions són
simultànies o successives.
La interacció entre actor i cas d’ús pot incloure l’engegada del cas d’ús per l’actor (aleshores diem que
n’és l’actor primari), o bé pot consistir només en què l’actor rebi informació i en subministri quan el
subjecte li ho demani (és el cas dels actors secundaris del cas d’ús). A nivell de classificador un cas
d’ús pot tenir diversos actors primaris alternatius, però cada execució (és a dir, cada instància) del cas
d’ús serà engegada per una sola instància d’un dels actors primaris.
Exemple:
Biblioteca
Consulta
Lector
Prestec
Bibliotecari
El subjecte Biblioteca té dos casos d’ús, Consulta i Prestec, cadascun dels quals té un sol actor (necessàriament primari ja que
altrament no es podrien pas executar), Lector i Bibliotecari respectivament.
Exemples:
Extensió
Des del cas d’ús B quan es compleix una certa condició es crida l'A, que és un cas d’ús que també pot ser cridat directament
per un actor primari, el qual és el mateix per a tots dos casos d’ús. Per exemple quan B crea un enllaç segons una associació i
A crea un dels objectes enllaçats: aquest objecte es pot crear sense necessitat d'enllaçar-lo, i llavors A és executat directa-
ment pel seu actor primari; o pot ser executat perquè fa falta per a la creació d'un enllaç, i en aquest cas és cridat des de B.
Inclusió
En comptes de definir uns casos d’ús A, B, C, etc. que tenen una part Z en comú, es defineixen A' = A sense Z, etc. i es diu
que A', B', C', etc. inclouen Z. Z no pot ser engegat directament i per tant no té actor primari.
Especialització
El cas d’ús que crea un empleat estranger podria ser una especialització del que crea un empleat normal, ja que en el primer
cas s'ha de fer el mateix que en el segon i a més s'ha de donar informació sobre el permís de residència i el permís de treball.
Quan un cas d'ús A tracta un objecte d'una classe C i un altre B tracta un objecte d'una subclasse de C entre A i B hi haurà
sovint una relació d’especialització paral·lela a la de les classes esmentades. El procés de B sense el d’A no és cap cas d'ús in-
dependent, ni tan sols un cas d'ús.
La situació de l’exemple d’inclusió també es podria representar fent que A, B, C, etc. heretin de Z; aquesta opció és més gene-
ral que la inclusió perquè no cal que els passos heretats siguin consecutius dins el cas d’ús que els hereta mentre que en la in-
clusió el cas d’ús inclòs s’executa tot de cop.
Notacions
Les dependències d’extensió i d’inclusió es representen pel símbol general de dependència (fletxa dis-
contínua de punta oberta) amb la paraula clau “extend” o “include”, respectivament. Una dependència
d’extensió pot tenir associada una nota com aquesta:
Condition: {restr1}
Extension point: punt1
Els punts d’extensió d’un cas d’ús s’especifiquen en una llista de punts d’extensió dins un compartiment
del cas d’ús cadascun dels punts d’extensió té un nom que pot anar seguit de “:” i una explicació.
Cdu1
extension points
punt1
Sistema de comptabilitat
1
Assentament
0..* «extend»
Extension points CreacioCompte
Compte llegit
Comptable
«include»
DadesCompte
2ari
TancamentMensual
«include» 0..* 1
1 0..* CapAdjunt
Tancament
TancamentAnual
CapComptable
L’actor CapComptable és una especialització de Comptable; Comptable només pot intervenir en el casos d’ús Assentament i
CreacioCompte (dels quals és l’actor primari ja que no n’hi ha d’altre), mentre que l’actor CapComptable és actor primari del
cas d’ús Tancament i també, per herència, d’Assentament i CreacioCompte. El cas d’ús CreacioCompte estén el cas d’ús As-
El diagrama d’estats descriu el conjunt dels comportaments de les instàncies d’un classificador, o el
d’un classificador no instanciable, en termes del seu pas per diferents situacions, que anomenem estats.
Els canvis d’un estat a un altre són, per una banda, conseqüència d’esdeveniments (apartat IV. 2. 1. 2.
), i per una altra, causa de l’execució de comportaments, i poden estar subjectes a condicions.
IV. 2. 1. 1. Senyal
Un senyal és una instància que un objecte o1 envia a un altre o2 i com a conseqüència d’aquest envi-
ament s’executa un comportament que té o2 com a objecte de context. Aquest comportament no pot
tornar cap resposta a o1. Un senyal pot tenir paràmetres.
El senyal és un estereotip del classificador. Entre senyals pot haver-hi herència, i el que s’hereta són els
paràmetres i els efectes provocats pel senyal.
Notació
Exemple
«signal»
Senyal1
-par1: String
Una recepció de senyal és un estereotip de l’operació que es troba generalment dins una classe o in-
terfície i indica que les instàncies del classificador que la conté reaccionen al senyal executant algun
comportament.
Notació
Una recepció de senyal es representa en forma d’una operació d’estereotip “signal”. Com que no pot
tornar cap valor no pot tenir paràmetres out ni inout ni valor de retorn. Tampoc no pot tenir visibilitat ni
la propietat “isQuery”.
Un esdeveniment (event) és un succés que pot produir-se dins el sistema o el seu entorn i quan té
lloc pot provocar l’execució d’un comportament o alterar-la. Aquest efecte de l’esdeveniment pot ser
immediat o bé diferit.
Es considera que els esdeveniments que es van produint al llarg del temps es col·loquen en una cua, de
la qual el sistema els agafa per a processar-los un a un, de manera que fins que no ha acabat el procés
d’un esdeveniment no comença a processar el següent.
ADA – UML bàsic pàg. 26
Un disparador (trigger) és un element que especifica que una ocurrència d’esdeveniment del tipus
indicat en ell pot engegar un cert comportament.
I inversament, tant l’engegada com la fi d’un comportament generen esdeveniments que poden enge-
gar d’altres comportaments a través dels disparadors corresponents.
La notació dels tipus d’esdeveniment depèn de la seva categoria segons la classificació anterior:
• Esdeveniments de missatge:
▪ Un tipus d’esdeveniment de crida es descriu per mitjà de la llista d’operacions que engega, ca-
dascuna seguida opcionalment d’una llista entre parèntesi dels noms dels atributs de l’objecte
que rep l’esdeveniment, separats per comes, als quals s’assignen els successius paràmetres de
l’operació:
operació1”,” operació2 “(”atr1”, ”atr2,... “)”.
▪ Un tipus d’esdeveniment de senyal es descriu de manera anàloga a un esdeveniment de crida
senyal1”,” senyal2 “(”par1”, ”par2,... “)”.
▪ Un tipus d’esdeveniment anyReceive s’indica amb “all”.
• Esdeveniments de temps:
o Un esdeveniment de pas d’un cert temps es descriu amb l’expressió
“after” “(” expressió_que_permet_calcular_un_interval_de_temps “)”.
S’entén que l’interval comença a comptar-se des del moment en que l’objecte de context va en-
trar en l’estat actual.
o Un esdeveniment d’arribada a una certa hora o data es pot especificar amb
“at” “(” data_i_hora“)” .
• Esdeveniments de canvi:
o Un esdeveniment de canvi s’especifica per “when” seguit d’una expressió booleana que descriu
aquella condició que quan esdevé certa es produeix una ocurrència de l’esdeveniment.
La notació del disparador és la del seu esdeveniment.
Una màquina d’estats pot ser redefinida mitjançant especialització per a donar lloc a una altra (que es
diu que és una màquina d’estats estesa) la qual pot tenir estats i transicions simples heretats de la pri-
mera i d’altres de propis.
IV. 2. 3. Estat
Un estat és un vèrtex que representa una situació durant la qual es compleix un cert invariant (que pot
estar implícit) anomenat invariant de l’estat.
Un estat compost (composite state) és aquell que conté una regió, o més, cadascuna de les quals
conté una màquina d’estats; els estats d’aquesta màquina es diu que són subestats de l’estat com-
post. Cada subestat només pot estar en una de les regions.
Un esdeveniment que està especificat com a diferit en un estat compost és com si també ho estigués en
tots els seus subestats de qualsevol nivell.
Un estat simple és un estat no compost, és a dir que no conté regions ni per tant subestats.
Un estat de submàquina és un vèrtex en el qual s’insereix una màquina d’estats descrita en un dia-
grama a part. Equival a un estat compost llevat que permet la utilització de la mateixa màquina d’estats
en diversos estats de submàquina.
En un diagrama d’estats hi pot haver diversos estats de submàquina relatius a la mateixa màquina d’estats, igual que en un
diagrama d’objectes hi pot haver diversos objectes de la mateixa classe; en tots dos casos cal distingir-los pel nom.
Normalment són activitats, per bé que poden ser comportaments de qualsevol mena. N’hi ha els se-
güents tipus:
• Comportaments d’entrada, que s’executen immediatament que l’estat esdevé actiu i abans
que cap altre comportament.
• Comportaments de sortida que s’executen just abans que l’estat deixi d’estar actiu.
Quan els comportaments d’entrada i durant l’estat completen el seu procés de manera normal es gene-
ra una ocurrència d’esdeveniment de finalització (completion event), que té prioritat superior a la de
qualsevol esdeveniment diferit (apartat IV. 2. 3. ) i pot engegar una transició de finalització que faci
sortir de l’estat. Un esdeveniment de finalització no té cap notació explícita (i es reconeix per això).
Els estats de les màquines d’estats de protocol no poden tenir comportaments associats.
ADA – UML bàsic pàg. 28
IV. 2. 3. 2. Notació de l’estat simple
La representació simplificada de l’estat simple és un rectangle amb els vèrtexs arrodonits amb el nom
de l’estat a dins o en un petit rectangle adossat. Els esdeveniments diferits (vegeu l’apartat IV. 2. 3. )
durant l’estat en qüestió s’especifiquen sota el nom de l’estat amb el nom de l’esdeveniment seguit de
“/defer”.
estat_1
estat_1
En la representació completa un estat simple pot tenir diversos compartiments separats per línies horit-
zontals; aquests compartiments són:
• El compartiment del nom, que no hi ha de ser si el nom s’indica dins un petit rectangle a part,
com hem vist. Pot contenir la mateixa informació de la notació de l’estat simple.
• El compartiment dels comportaments interns, que conté les especificacions dels comporta-
ments d’entrada, de sortida i durant l’estat, si existeixen.
• El compartiment de les transicions internes (apartat IV. 2. 5. ), on s’especifiquen aquestes.
Les notacions de l’estat compost i de l’estat de submàquina es descriuen respectivament als apartats
IV. 2. 7. 1. i 0
Pseudoestat inicial
Dins una màquina d’estats hi pot haver un sol vèrtex, anomenat pseudoestat inicial de la màquina
d’estats, al qual no hi ha cap transició que hi porti i només en surti una transició cap a l’estat per defec-
te (default state) de la màquina d’estats, que és el primer estat “efectiu” al qual s’arriba; aquesta tran-
sició pot tenir associat un comportament però no pas disparador ni guarda.
Notació
Estat final
És un estat del qual no surt cap transició; una màquina d’estats pot no tenir cap estat final.
Notació
Un estat final es representa per una circumferència plena encerclada per una circumferència buida:
Pseudoestat terminal
Un pseudoestat terminal (terminate pseudostate) és un vèrtex tal que quan s’hi arriba s’acaba
l’execució de la màquina d’estats a què pertany, sense sortir de cap estat ni executar res més que
l’acció associada, si n’hi ha, a la transició cap a ell. Les activitats durant l’estat s’interrompen i si la mà-
quina d’estats correspon a un objecte, aquest és destruït.
Notació
Pseudoestat d’embrancament
Notació
[a=1]
Est2 Est4
ev1
ev2
Est1 Est5
[else]
Per tant el pseudoestat d’embrancament es representa igual que el pseudoestat inicial, però no hi ha confusió possible perquè
el primer sempre és destinació de transaccions i el segon mai.
ev1[a<>1]
ev2[a=1]
Pseudoestat de tria
Un pseudoestat de tria (choice pseudostate) és com l’anterior, llevat que en les guardes de les transi-
cions que en surten hi intervenen valors que es calculen en temps d’execució. Sempre s’ha de complir
almenys una de les guardes, i quan se’n compleix més d’una es tria arbitràriament una de les transici-
ons corresponents.
Notació
Una transició interna és com una transició simple llevat que no comporta cap canvi d’estat; però,
igual que la resta de transicions simples, és engegada per una ocurrència d’esdeveniment pot tenir
Una transició simple s’indica mitjançant una fletxa de línia contínua i punta oberta d’un estat a l’altre
amb l’etiqueta següent:
disparador “[”guarda“]” “/” comportament
• Les notacions del disparador són les de l’apartat IV. 2. 1. 2. llevat del disparador corresponent a
l’esdeveniment de finalització, que no es representa. Quan hi ha atributs que reben els arguments
d’una operació o senyal poden ser atributs de l’objecte de context del comportament o bé atributs
locals del comportament associat a la transició, als quals s’assignen aquells arguments, que es de-
fineixen aquí mateix amb nom, “:” i tipus.
• La guarda és una condició booleana en termes dels paràmetres de l’esdeveniment i els atributs i
enllaços de l’objecte a què correspon la màquina d’estats, i també d’estats concurrents amb l’estat
en qüestió o d’estats d’altres objectes (condicions de la forma “objecte1 in estat1” o bé “objecte1
not in estat1”); els subestats poden estar qualificats per estats, amb “::” entremig.
• Pel que fa al comportament, hi pot constar
o o bé el nom d’un comportament amb els seus eventuals paràmetres i referències al seu objecte
de context,
o o bé una seqüència d’accions, que en particular poden comportar la tramesa de senyals i crides a
operacions.
La notació de la transició interna es redueix a l’etiqueta; les transicions internes formen una llista a
dins del compartiment corresponent del símbol d’estat (vegeu l’apartat IV. 2. 3. 2. ). L’etiqueta
dels comportaments interns és com la de les transicions simples; quant a l’esdeveniment,
o els comportaments d’entrada i sortida de l’estat s’assignen a sengles esdeveniments amb nom
reservat “entry” i “exit” respectivament, i no poden tenir arguments ni condició de guarda;
o els comportaments durant l’estat s’assignen a l’esdeveniment “do”.
Autotransició
EnPrestec
Quan un usuari de la biblioteca té un llibre en préstec pot fer peticions de renovació del préstec (que són ocurrències d’un ti-
pus d’esdeveniment de senyal) i cada petició indica la data i el codi del llibre (que són els arguments del senyal). Una petició
es concedida si es compleix la guarda que el llibre no està reservat per a un altre lector. Els efectes de l’esdeveniment peti-
cio_renovacio són l’autotransició i l’execució del comportament renovació préstec; a més cada vegada que s’entra a l’estat En-
Prestec s’executa el comportament posar data retorn.
Acadèmia
Sol·licitant
/entrada de sol·licitud [sol·licitud rebutjada]/ comunicació
entry/ registrar sol·licitud
do/ examinar sol·licitud
exit/ arxivar decisió
[sol·licitud acceptada]
Acceptat
entry/ comunicar acceptació
do/ comprovar vacants
canvi tarifa (nova_tarifa: double)/ comunicar canvi
[alumne renuncia]
[alumne accepta]
El diagrama descriu el procés d’una sol·licitud de plaça en una acadèmia en termes dels canvis d’estat de l’aspirant a alumne.
Quant entra una sol·licitud l’aspirant a alumne corresponent passa a l’estat de sol·licitant (que és l’estat per defecte), i a con-
seqüència de l’entrada en aquest estat s’executa una activitat d’entrada que registra la sol·licitud i un cop registrada hom
examina la sol·licitud amb un comportament (activitat) dins l’estat. Quan s’ha acabat d’examinar–la es produeix un esdeveni-
ment de finalització que engega una transició de finalització que fa que l’alumne surti de l’estat Sol·licitant i en conseqüència
s’executa l’activitat de sortida arxivar decisió; aleshores si es compleix la guarda que la sol·licitud ha estat rebutjada es fa una
comunicació a l’aspirant i s’acaba tot el procés pel que fa a aqueix aspirant a alumne, mentre que si la guarda que es compleix
és que la sol·licitud ha estat acceptada l’aspirant a alumne passa a l’estat Acceptat. En entrar en aquest estat es comunica
l’acceptació a l’alumne i es va comprovant amb un comportament dins l’estat si hi ha vacants; si mentrestant es produeix un
canvi de tarifa es comunica a l’aspirant, però aquesta comunicació no comporta la sortida de l’estat i per aquesta raó se l’ha
associada a una transició interna. La comprovació de les vacants continua fins que o bé es produeix l’esdeveniment de temps
que han passat 30 dies – i aleshores llavors l’aspirant a alumne surt de l’estat Acceptat i se li fa una comunicació i s’acaba
l’execució de la màquina d’estats – o bé es produeix l’esdeveniment de canvi que s’ha trobat una vacant, i llavors l’aspirant a
alumne surt igualment de l’estat Acceptat i se li comunica l’horari del curs; llavors si accepta la inscripció entra en l’estat Ins-
crit, mentre que si renuncia s’acaba la màquina d’estats. Un cop un alumne està en l’estat Inscrit quan arriba la data de la fi
del curs – un esdeveniment de temps– es posa la nota i s’acaba la màquina d’estats.
Un estat compost es representa amb un compartiment més que els estats simples, el qual conté la re-
gió o regions de l’estat, una sota l’altra i separades per línies discontínues, cadascuna de les quals conté
una màquina d’estats; una regió pot tenir opcionalment un nom dins un rectangle adossat. El compar-
timent es pot afegir tant a la representació simplificada de l’estat simple com a la completa. Vegeu
exemples d’aquesta notació a l’apartat IV. 2. 7. 4.
Si es vol assenyalar que un estat és compost sense descriure la màquina d’estats que conté es pot fer
servir qualsevol de les representacions de l’estat simple i afegir-hi un petit diagrama d’estats a la part
Estat_compost_1
Però aquesta notació no és obligatòria – sempre es pot representar un estat compost com si fos simple.
Es poden especificar esdeveniments diferits igual que en el cas d’un estat simple.
A més dels vèrtexs que poden figurar en el cas d’estats simples hi pot haver els següents:
Igual que les màquines d’estats en general, la màquina d’estats de cada regió d’un estat compost té un
pseudoestat inicial i un estat final; quan s’entra en un estat compost en conjunt (també es pot entrar
directament en un subestat seu) s’entra alhora en el pseudoestat inicial de cadascuna de les seves regi-
ons, i quan s’arriba als estats finals de totes les regions se surt de l’estat compost en conjunt, i alesho-
res quan a més hagin acabat els eventuals comportaments interns de l’estat compost es produeix un
esdeveniment de finalització que engega l’eventual transició de finalització. Ni poden entrar transicions
en un pseudoestat inicial, ni poden sortir-ne d’un estat final. Normalment tota regió té un pseudoestat
inicial, altrament s’entendria que es pot entrar a l’estat compost sense entrar en aquella regió, per bé
que es podria entrar directament als seus subestats amb transicions originades fora de la regió.
Un pseudoestat d’unió (join pseudostate) serveix per a indicar que s’han d’haver produït totes les
transicions que hi entren (que tenen el subestat d’origen respectiu en regions diferents) perquè es pro-
dueixi la que en surt. Les transicions que entren en un pseudoestat d’unió no poden tenir guarda ni dis-
parador.
Notació
Un pseudoestat de bifurcació (fork pseudostate) assigna el mateix subestat d’origen a diverses tran-
sicions que tenen el subestat de destinació respectiu en regions diferents; les transicions que surten
d’un pseudoestat de bifurcació no poden tenir guarda ni disparador.
Notació
Un pseudoestat de punt d’entrada a una màquina d’estats (que només s’executi dins d’un estat de
submàquina) o a un estat compost és origen de transicions que tenen com a destinació respectivament
un estat de la màquina d’estats o un subestat de cada regió de l’estat compost.
Notació
Un pseudoestat de punt d’entrada es representa per una rodona buida. Una referència a un punt de
connexió quan aquest és un punt d’entrada es representa pel mateix símbol damunt la perifèria de
l’estat de submàquina:
Notació
Un pseudoestat de punt de sortida es representa per una rodona amb dos diàmetres en X. Una referèn-
cia a un punt de connexió quan aquest és un punt de sortida es representa pel mateix símbol damunt la
perifèria de l’estat de submàquina:
Una transició composta es representa mitjançant un graf format per transicions simples i pseudoestats
d’unió, bifurcació, embrancament i tria.
EnVerificacio
EnVerificacio
OK1
/ introduir PendentVer1 Revisada1
at(dia 30) / pagament
Inici Pagada
Reg1
OK2
PendentVer2 Revisada2
El diagrama representa un procés de revisió i pagament d’una factura dins el qual es fan 2 revisions en
paral·lel. A una de les regions se li ha donat un nom, Reg1.
La notació d’un estat de submàquina és la d’un estat simple llevat que el nom està format pel nom de
l’estat seguit del nom de la màquina d’estats associada a ell, separats per “:”.
Quan hi ha una transició que entra a l’estat de submàquina pel pseudoestat inicial o en surt pel seu es-
tat final la fletxa de la transacció acaba o comença al contorn del símbol de l’estat, però si l’entrada o
sortida es fa per un altre estat de la màquina (el punt d’entrada ent1 i el punt de sortida sort1, respec-
tivament) llavors per a representar la referència al punt de connexió (vegeu l’apartat IV. 2. 7. 2. ) cal
fer servir el símbol de pseudoestat de punt d’entrada o de sortida, respectivament, es representa així:
nom_estat:
nom_submàquina
ent1
sort1
• si s’ha arribat a l’estat final de la màquina d’estats continguda dins d’aquest estat es va a parar a l’estat final del pre-
sent diagrama, prèvia execució de l’activitat emissió carnet;
• si se’n surt pel punt de sortida pràctic pendent es torna entrar a l’estat de submàquina un cop es produeix
l’esdeveniment de temps que han passat 4 setmanes d’ençà que se’n va sortir, pel punt d’entrada només pràctic si es
compleix la guarda <3 vegades, i pel seu pseudoestat inicial si es compleix la guarda ha tornat a pagar;
• si se’n surt pel punt de sortida teòric pendent es torna entrar a l’estat de submàquina pel seu pseudoestat inicial un
cop es produeix l’esdeveniment de temps que han passat 2 setmanes d’ençà que se’n va sortir, si es compleix la
guarda <3 vegades o ha tornat a pagar.
L’esdeveniment de temps relatiu after (2 setmanes) s’especifica com a diferit per tal que si quan es produeix aquest esdeve-
niment no es pot produir la transició perquè no es compleix la guarda (és a dir que fa més de 2 vegades i no ha pagat encara)
la transició es produeixi quan es compleixi aquesta guarda (és a dir tan bon punt pagui). Una cosa semblant passa amb
l’esdeveniment after(4 setmanes) quan té pendent l’examen pràctic.
Exàmens de conducció és la màquina d’estats a què fa referència l’estat de submàquina exàmens del diagrama anterior; a ella
a més de poder-s’hi entrar pel pseudoestat inicial i sortir-ne per l’estat final s’hi pot entrar pel pseudoestat de punt d’entrada
només pràctic i sortir pels pseudoestats de punt de sortida sancionat, teòric pendent i pràctic pendent. Quan s’hi entra pel
pseudoestat inicial s’executa l’activitat inscripció i s’arriba a l’estat per defecte d’aquesta màquina d’estats, inscrit, i quan arri-
El diagrama d’activitats descriu un comportament en forma d’un graf orientat que estableix relacions
entre les activitats que hi figuren; aquestes relacions són relacions de prerequisit, eventualment condi-
cionals, i poden reflectir el pas d’instàncies de classificadors d’una activitat a una altra. Als nodes del
graf se’ls anomena nodes d’activitat i als arcs, arcs d’activitat (activity edges).
Un signe d’objecte és una còpia d’una instància de classificador i representa dades que un node exe-
cutable envia a un altre o a diversos. Un signe d’objecte sense contingut (sense dades) s’anomena sig-
ne nul. Dos signes d’objecte sempre són diferents, fins i tot si són dues còpies de la mateixa instància.
Un signe de control que arriba a una activitat representa el fet que ha acabat una altra activitat que
n’és prerequisit.
Notació de l’acció
Acció1
Aquesta notació serveix també per a les activitats en general, encara que per a elles hi ha notacions
més específiques (vegeu l’apartat IV. 3. 7. ).
Es representa per un rectangle, per bé que si el tipus és un senyal es fa servir un altre símbol (vegeu
els exemples a continuació); a dins hi ha el nom del tipus de l’objecte precedit de “:” i opcionalment del
nom del node. Per a la notació del node d’expansió vegeu la notació de la regió d’expansió a l’apartat
IV. 3. 7. 3.
Si els objectes del node només poden estar en alguns dels estats possibles dels objectes del tipus en
qüestió, aleshores a dintre del símbol hi ha una llista dels estats acceptats, separats per comes, entre
“[” i “]”.
nom1:Tipus1
[estat1, estat2]
Un paràmetre d’activitat és un node d’objectes pel qual un arc d’objectes entra en l’activitat de la
qual el node és paràmetre, o en surt.
L’efecte de l’activitat damunt cadascun dels seus paràmetres pot ser crear-ne signes, modificar-ne, lle-
gir-ne o esborrar-ne.
Es diu que un paràmetre d’entrada o de sortida és stream si l’activitat pot respectivament rebre o envi-
ar signes per mitjà d’ell durant tota la seva execució, (és a dir, pot començar sense haver rebut tots els
signes si és d’entrada o pot anar-hi enviant signes abans d’acabar si és de sortida).
Que un paràmetre de sortida sigui d’excepció vol dir que li arriba un signe quan es produeix una ex-
cepció. Un paràmetre d’excepció no pot ser stream perquè quan li arribi un signe s’acabarà l’execució
de l’activitat (vegeu l’explicació del significat de l’execució d’una activitat a l’apartat IV. 3. 8. ).
Notació
Es representa com a node d’objectes damunt el perímetre de l’activitat a la qual pertany. Si un paràme-
tre accepta stream s’indica amb “stream”, i si és d’excepció es marca amb un petit triangle al damunt.
Un grup de paràmetres s’indica representant els paràmetres com a pins i envoltant els paràmetres del
conjunt amb un rectangle.
IV. 3. 4. 2. Pin
En particular hi pot haver pins de sortida d’excepció, anàlegs als paràmetres d’excepció de les activitats
que acabem de veure.
Un pin es representa per un petit rectangle annex a l’acció; si el pin es representa sense l’arc d’objectes
corresponent s’hi posa una petita fletxa a dins que indica si és d’entrada o de sortida:
A l’apartat IV. 3. 5. 1. , als exemples d’arcs d’objectes, hi ha més exemples d’accions amb pins.
Un node d’emmagatzemament de dades (data store node) és un node central de memòria intermè-
dia que emmagatzema signes d’objectes fins que acaba l’activitat que el conté.
La resta de nodes d’objectes poden emmagatzemar signes d’objecte només temporalment, a l’espera que comenci o acabi
l’execució d’una activitat o acció, com s’ha vist.
Quan d’un node d’emmagatzemament de dades ha de sortir un signe, el node el conserva i se n’envia
una còpia, i quan arriba al node un signe que és còpia d’una instància que ja hi era, el nou signe substi-
tueix el que hi havia.
Un objecte emmagatzemat en un node d’emmagatzemament de dades pot ser seleccionat i també mo-
dificat per mitjà d’un arc de sortida.
També són nodes d’objectes els nodes d’expansió (vegeu l’apartat IV. 3. 7. 3. ).
Notació
Un arc d’activitat (activity edge) és una connexió unidireccional entre un node d’activitat d’origen i un
node d’activitat de destinació, al llarg de la qual transiten signes.
Perquè circuli un signe per un arc d’activitat cal que es compleixin les condicions que tinguin eventual-
ment el node d’origen, el node de destinació i l’arc mateix.
Es representa per una fletxa de línia contínua i punta oberta. El pes s’indica per “{weight=” expr “}”, on
expr és una expressió que dóna un nombre natural, o bé “*”.
arc1 {weight=3}
Com hem vist, els arcs d’activitat s’especialitzen en arcs d’objectes i arcs de control, que tenen aques-
tes diferències:
• Un arc d’objectes és un arc d’activitat pel qual poden passar signes d’objecte de l’activitat
d’origen cap a l’activitat de destinació.
Un arc d’objectes pot seleccionar i transformar signes d’objecte mitjançant comportaments, però
sense efectes col·laterals, és a dir sense modificar la instància de la qual el signe d’objecte és una
còpia; les propietats create, read, update i delete indiquen l’efecte que fa l’activitat d’origen o de
destinació de l’arc d’objectes – no pas l’arc en si- en relació a aquestes instàncies.
• Un arc de control és un arc d’activitat que indica que un cop acabada l’activitat d’origen pot exe-
cutar-se l’activitat de destinació. Hi poden circular signes de control, sense fer-hi cap mena de se-
lecció o transformació.
A més cal indicar d’alguna manera els nodes d’objectes corresponents als signes que circulen per l’arc
d’objectes, cosa que es pot fer
• representant explícitament el símbol de node d’objectes, amb un arc d’objectes des de l’acció
d’origen cap al node d’objectes i un altre des d’aquest node cap a l’acció de destinació;
• amb la representació dels pins corresponents (que poden portar el nom i estat de l’objecte corres-
ponent i també si escau “{stream}” o el triangle que denota un pin d’excepció, igual que en el cas
dels paràmetres d’activitat);
• o indicant amb un petit quadrat al costat del flux que els pins no es representen.
Cada especialització té la seva notació (que sovint coincideix amb la d’algun pseudoestat del diagrama
d’estats que hi fa una funció anàloga):
• Un node inicial es representa per una rodona plena.
• Un node final d’activitat es representa per un “ull de bou”.
• Un node final de flux es representa per una circumferència amb una X inscrita.
• Un node de decisió i/o de fusió es representa per un rombe. Un comportament de decisió d’entrada
al node es pot representar per un rombe unit a una nota amb l’estereotip “decisionInput” que des-
criu la condició. Un node de fusió seguit d’un de decisió es poden representar per un sol rombe.
• node de bifurcació i/o d’unió es representa per una línia curta i gruixuda perpendicular als fluxos;
quan és de fusió pot portar una expressió lògica entre “{joinSpec=“ i “}”, que per defecte és un
“and” de tots els arcs d’activitat que hi arriben.
Node inicial Node final d’activitat Node final de flux Node de decisió i fusió Node d’unió i bifurcació
El símbol gràfic de l’activitat és el mateix de l’acció llevat que damunt el seu contorn se’n poden repre-
sentar els seus paràmetres i a l’interior pot tenir una especificació dels paràmetres i un diagrama de les
activitats que la componen.
És un node executable que comprèn un grup d’activitats que compleix aquestes condicions
• s’executa com una unitat, cosa que vol dir que
o no se’n pot executar cap activitat mentre no hagin arribat tots els signes de control i d’objectes
corresponents als seus fluxos d’entrada, i que
o no s’envia cap signe de sortida del node estructurat mentre no hagin acabat totes les seves acti-
vitats, i a més
• els seus nodes i arcs d’activitat no poden ser compartits amb cap altre node estructurat.
Node de seqüència
Node condicional
Un node condicional és un node d’activitat estructurada que representa una elecció entre alternatives
que s’exclouen mútuament.
Aquestes alternatives estan descrites per clàusules (clauses), cadascuna de les quals consta de
• una secció de prova (test section), que conté una condició, i
• una secció de cos (body section), que especifica allò que s’ha d’executar quan es compleixi aquesta
condició.
En cada execució del node condicional només es pot executar la secció de cos d’una sola clàusula; si es
poden complir les condicions de més d’una secció de prova alhora, cal especificar-ne l’ordre d’execució.
Es pot garantir que doni “true" una secció de prova com a mínim o com a màxim.
Node de bucle
Un node de bucle (loop node) és un node d’activitat estructurada que s’executa repetidament mentre es
compleix una condició.
Té tres seccions:
• secció de preparació (setup), que s’executa un sol cop abans d’entrar en el bucle,
• secció de prova (test), que comprova repetidament si es compleix la condició,
• secció de cos (body), que s’executa fins que la condició deixa de complir-se.
La secció de preparació s’executa sempre primer; la de prova es pot executar (totes les vegades que
s’executi el bucle) abans o després de la de cos.
L’execució del node de bucle comença un cop hi han arribat tots els signes d’objectes i de control cor-
responents als fluxos d’entrada. Aleshores tots aquells nodes de la secció de preparació que no tenen
cap predecessor reben els signes corresponents a tots els arcs d’entrada respectius i comença l’execució
de la secció de preparació; aquesta execució acaba quan ha acabat l’execució d’aquells nodes de la sec-
ció que no tenen cap successor dins ella; es pot considerar que aleshores el node de bucle envia un
signe de control a la secció següent (la de prova o la de cos, segons s’ha dit).
L’execució de la secció de prova i de la secció de cos procedeix de la mateixa manera, llevat que la sec-
ció de prova normalment només tindrà un node que no tingui cap successor i aquest node tindrà un
valor booleà en un dels seus pins de sortida (normalment l’únic); si aquest valor és ”true” s’executarà
un cop més la secció de cos.
Es representa per un rectangle de línia discontínua, amb els angles arrodonits i l’estereotip “structured”,
que envolta les seves accions i els arcs d’activitat entre elles:
«structured»
Aquesta notació val per al node condicional, per al de bucle i per al de seqüència.
Una regió d’expansió és una activitat estructurada que conté una grup d’activitats i té com a punts
d’entrada i de sortida uns nodes d’objectes especials, anomenats nodes d’expansió, que tenen aques-
tes característiques:
• Són col·leccions de signes d’objecte que són còpies d’instàncies del mateix classificador, que és el
tipus del node d’expansió; els diferents nodes d’expansió d’una regió d’expansió no són pas neces-
sàriament del mateix tipus.
• Cada node d’expansió de sortida correspon a un node d’expansió d’entrada, en el sentit que és una
col·lecció del mateix tipus, però hi pot haver nodes d’expansió d’entrada als quals no correspongui
Una regió d’expansió es representa per un rectangle com el del node d’activitat estructurada que té
• damunt el perímetre, els nodes d’expansió representats en forma de rectangles dividits vertical-
ment;
• i a dins, cap a l’angle superior esquerre, un estereotip que indica el tipus d’expansió: parallel, itera-
tive o stream.
Per exemple,
«iterative»
a1:acció1
a2:acció2
En el cas que la regió d’expansió consti d’una sola acció, com a notació simplificada es pot fer servir el
símbol de l’acció en comptes del d’activitat estructurada, amb els pins representats com abans:
«iterative»
:acció1
Tota acció s’executa dins del marc d’una activitat, que serveix perquè aquestes accions es passin dades.
Els pins de sortida poden emmagatzemar signes d’objecte temporalment fins que són acceptats per les
accions successores, però no pas els arcs d’activitat ni els nodes de control. A més es considera que una
acció només pot acceptar signes en un pin d’entrada si en pot acceptar a tots els altres, per tal d’evitar
situacions de deadlock. Si d’un pin de sortida surten diversos arcs d’objectes, cada signe d’objecte no-
més va per un d’ells (en canvi d’un node d’emmagatzemament en poden sortir múltiples còpies d’un
signe, com hem vist).
Quan s’engega una activitat es posa un signe de control a cada node inicial i en general a cada acció o
activitat estructurada de l’activitat que no tingui cap flux d’entrada ni sigui gestor d’excepcions.
El grup d’activitats d’una partició pot estar subdividit en grups que pertanyen també a d’altres partici-
ons, que poden estar contingudes dins la primera o no. Una partició no continguda en cap altra és una
dimensió.
Una partició d’activitats es representa per una franja horitzontal o vertical (carril, swimlane) del dia-
grama d’activitats delimitada per dues rectes paral·leles; el nom de la partició figura centrat dins un
compartiment en un extrem de la franja. Les diferents particions segons un mateix criteri (per exemple,
corresponents a diferents instàncies d’un classificador) es representen per un conjunt de franges verti-
cals o horitzontals consecutives. Una subpartició d’una partició representada per franges verticals, per
exemple, es representa per subfranges també verticals d’ella; en canvi dues particions independents
s’han de representar una per una franja vertical i l’altra per una d’horitzontal. Un node d’activitat pot
estar alhora en una franja vertical i una d’horitzontal però no pot estar damunt una línia de separació
entre franges, però els nodes d’objecte no pertanyen a cap franja i els arcs d’activitat poden creuar líni-
es de separació entre franges.
Dins una partició hi pot haver subparticions amb les línies i noms corresponents. Aquest és un exemple
de partició amb dues particions de segon nivell:
Partició12
Partició1
Partició11
Acció1
Una partició que correspon a un atribut (vegeu l’apartat III. 1. 1. 1. ) - que normalment serà una di-
mensió- té com a nom l’estereotip “attribute” seguit del nom i tipus de l’atribut. L’estereotip “external”
com a nom de partició denota que els nodes que conté són externs a l’objecte de context del diagrama.
«attribute» atr1: ValAtr1
valor1 valor2
ParticióB1 ParticióB2
ParticióA2
Acció2
DimensióA
Partició1
{create} c1:Compra
FerPeticio
[petició]
«datastore»
c1:Compra
[petició]
RevisarPressupost
DadesOrdinadors
«iterative»
Recepcio
Verificar
GenerarOrdreInstallacio OrdresInstallacio
Installar
Es tracta de la gestió de la compra d’ordinadors en una empresa, dins la qual intervenen les 4 unitats organitzatives (Depar-
tament peticionari, etc.) representades per sengles particions de la dimensió Unitat Organitzativa. UnitatOrganitzativa és un
classificador i cada partició de la dimensió correspon a una instància seva. El comportament representat al diagrama s’engega
quan el departament peticionari fa l’acció FerPeticio, que crea un objecte c1 de la classe Compra (que especifica una compra
de diversos ordinadors) en l’estat peticio, del qual mitjançant el node de bifurcació se’n fan dues còpies, una que s’arxiva en
un node d’emmagatzemament de dades del qual només surt per a ser esborrada, i una altra que entra a l’acció RevisarPres-
supost. Com a resultat d’aquesta acció, si no hi ha saldo pressupostari per a la compra (guarda “no hi ha saldo”) l’objecte de
Els diagrames d’interacció descriuen un comportament emergent en termes dels senyals i crides
d’operacions que circulen entre diferents instàncies de classificador.
Aquesta representació es pot fer amb quatre tipus de diagrames que fan servir essencialment els ma-
teixos conceptes:
▪ diagrama de seqüències, que serà l’únic que veurem
▪ diagrama de comunicacions,
▪ diagrama de visió general de la interacció,
▪ diagrama temporal.
IV. 4. 1. Interacció
Una interacció és un comportament emergent descrit en termes de missatges (vegeu l’apartat IV. 4.
2. 3. ) entre instàncies.
Entre interaccions hi pot haver herència i redefinició, en particular en el cas que hi hagi herència entre
els classificadors dels objectes de context respectius.
Un ús d’interacció és una referència a una interacció dins una altra, assignant arguments als seus
paràmetres i connectant-ne els portals (vegeu l’apartat IV. 4. 2. 3. ).
Una línia de vida (lifeline) representa una instància o més d’un classificador, o bé un classificador (per
exemple quan es crida una operació de classe). De les instàncies en representa tota l’existència, des de
la seva creació fins a la seva destrucció, tot i que en general només una part d’aquest temps estan par-
ticipant en la interacció que conté la línia de vida.
Notació
Una línia de vida es representa per una línia vertical discontínua que comença just a sota del símbol
(per exemple, el rectangle propi dels classificadors en general) que descriu el classificador o la instància
de classificador corresponent. Dins aquest símbol hi ha
• o bé el nom de la línia de vida seguit del nom del classificador precedit de “:”, així1:
nom_lína_vida “:” nom_classificador
(cadascuna d’aquestes clàusules és opcional);
1
Tot aquest text no va mai subratllat, ni tan sols en el cas que correspongui a una sola instància.
Quan la instància corresponent a la línia de vida és creada dins la interacció la fletxa del missatge que
produeix aquesta creació acaba en el símbol del començament de la línia de vida; quan la instància és
destruïda durant la interacció aquesta destrucció es marca amb dues línies curtes que es creuen en X
damunt la línia de vida.
Un fragment d’interacció es una interacció que és part d’una altra (com a mínim de la que representa
el diagrama en conjunt).
Un fragment (d’interacció) combinat es un fragment d’interacció que es defineix mitjançant una ex-
pressió que combina d’altres fragments d’interacció; està constituït per un operador d’interacció i diver-
sos operands d’interacció, que representen els fragments d’interacció que es combinen.
Un operand d’interacció és un fragment d’interacció que pot tenir associada una restricció anomena-
da restricció d’interacció.
Un fragment d’interacció es representa per un marc com el dels diagrames d’UML (apartat II. 8. ) que
té a la capçalera el nom del fragment precedit d’un mot clau que indica el tipus de fragment; aquest
mot clau pot ser un dels següents:
• “sd”, per a una interacció sencera; els atributs locals es poden definir, amb la mateixa sintaxi
que els de les classes, o bé a la part de dalt de l’interior del rectangle.
alt
[restricció1]
[else]
• En el cas d’un ús d’interacció (operador ref) dins el rectangle hi ha el nom de la interacció a què
es fa referència, i si aquesta té paràmetres i valor de retorn aquest nom pot tenir el mateix for-
mat que el nom d’un missatge de resposta (vegeu l’apartat següent).
ref
nom_interacció
IV. 4. 2. 3. Missatge
Un missatge és una comunicació entre instàncies de classificador2 per la qual una (l’emissor) envia un
senyal a l’altra (el destinatari) o li demana l’execució d’una operació o en retorna el valor de retorn i els
valors dels paràmetres out i inout d’una operació demanada en un missatge previ.
Un missatge que crida una operació és síncron si, quan s’emet, l’execució de l’operació que l’ha emès
roman aturada fins que rep un missatge de resposta del receptor; en canvi quan s’emet un missatge
asíncron l’operació que l’ha emès continua executant-se. Un missatge asíncron consisteix en la trame-
sa d’un senyal o la crida d’una operació, un de síncron només pot consistir en una crida d’una operació.
Dins una interacció l’emissor i el destinatari d’un missatge estan representats per sengles línies de vida.
Un missatge es representa per una fletxa de l’emissor al receptor; diferents tipus de missatge es repre-
senten per diferents tipus de fletxa:
• Un missatge asíncron s’indica per una fletxa de línia contínua i punta oberta.
• Un missatge síncron es representa per una fletxa de línia contínua i punta plena.
• Un missatge de resposta d’un missatge síncron s’indica per una fletxa de línia discontínua i punta
oberta.
• Un missatge que provoca la creació d’un objecte s’indica per una fletxa de línia discontínua i punta
oberta; a més l’extrem del missatge coincideix amb el començament de la línia de vida del recep-
tor.
L’origen i l’extrem d’un missatge poden ser punts d’alguna línia de vida o bé un portal (gate), que re-
presenta que el missatge o bé surt de la interacció o fragment d’interacció i provoca un esdeveniment a
fora o bé procedeix de fora; en el cas d’un portal la fletxa del missatge comença o acaba en un punt –
que pot tenir nom- del contorn del rectangle que representa el fragment d’interacció (vegeu l’apartat
IV. 4. 2. 2. ).
2
De fet l’origen i/o la destinació d’un missatge també pot ser un classificador, per exemple quan demana una operació de classe
o en retorna un resultat.
Els missatges tenen un nom, l’estructura del qual també depèn del tipus de missatge; així,
• El nom d’un missatge que crida una operació o envia un senyal té aquesta estructura:
nom_operació_o_senyal “(”argument1“,” ... “)”
en què cada argument correspon, per ordre, a un paràmetre de l’operació o senyal i consta d’un
valor precedit opcionalment del nom del paràmetre corresponent de l’operació i “=”; un argument
de valor indefinit s’indica per “-“.
• El nom d’un missatge de resposta a un missatge síncron té una d’aquestes estructures:
atribut “=” nom_operació “(” argument1”,” ... “)” “:” valor_de_retorn
nom_operació “(” atribut “=” valor“,”...“)”
Els atributs esmentats són o bé atributs de l’objecte corresponent a la línia de vida de l’origen del
missatge síncron, o bé paràmetres de la interacció, o bé atributs del classificador o objecte de con-
text de la interacció. En la primera estructura s’ha especificat l’obtenció del valor de retorn i en la
segona el d’un paràmetre out o inout de l’operació corresponent. argument1 és el valor donat a un
paràmetre in o inout en fer la crida, precedit opcionalment del nom del paràmetre i “=”.
Com a conseqüència del significat temporal de la dimensió vertical, si la fletxa d’un missatge és horit-
zontal s’entén que la transmissió del missatge o bé és pràcticament instantània o bé la seva durada no
importa; una fletxa descendent indica en canvi que la durada de la transmissió del missatge té un valor
no negligible. La durada de la transmissió d’un missatge i el temps que es triga a emetre o rebre un
missatge de resposta poden estar subjectes a restriccions temporals.
L’objecte de context (self, de la classe Context, que podem suposar que té l’atribut x de tipus int) engega la interacció In-
teraccio1 quan rep el missatge miss1 de l’exterior i a continuació s’engeguen 2 processos en paral·lel, procés 1 i procés 2.
Dins procés 1 self crea l’objecte o1 de la classe Cl1 per mitjà de l’emissió d’un missatge de creació; aquesta creació engega un
fragment combinat amb l’operador alt, en el qual
- si x és positiu o1 envia un missatge de creació que crea l’objecte o2 de la classe Cl2 i després o2 demana per mitjà
de missatges síncrons entre 1 i 3 vegades l’operació op4() successivament a entre 1 i 3 objectes ja existents de la lí-
nia de vida o4s; aquest missatge de crida duu l’argument x assignat al paràmetre par41, que suposem que és inout.
Dins procés 2 l’objecte de self envia un missatge asíncron pel qual es demana a l’objecte o5 ja existent de la classe Cl5
l’execució de l’operació op51(). Hi ha una restricció de temps per la qual entre l’emissió i l’arribada d’aquest missatge no han
de transcórrer més de dues unitats de temps.