Professional Documents
Culture Documents
Informàtic Realitzar Les Tasques Per Les Quals Ha Estat Dissenyat
Informàtic Realitzar Les Tasques Per Les Quals Ha Estat Dissenyat
EL SOFTWARE
L’Enginyeria del Software és una disciplina que integra processos, mètodes i eines amb
l’objectiu de desenvolupar i mantenir sistemes de software que siguin econòmics,
fiables i eficients.
· Els processos defineixen un marc de treball que permeten un desenvolupament racional de
la enginyeria del software. Formen la base del control de gestió dels projectes de software i
estableixen el context en el qual s’apliquen els mètodes i es produeixen els resultats del treball:
models, documents, dades, informes, formularis,etc.
· Els mètodes indiquem com construir el software. Ofereixen tècniques de modelatge
per a les diferents etapes del procés: definició de requeriments, anàlisi, disseny,
implementació, proves, explotació i manteniment.
· Les eines proporcionen suport automàtic o semiautomàtic per al procés i els
mètodes. Les eines CASE (Computer assisted system enginery) ajuden a
l’automatització de tot el procés de construcció del software, ajudant a l’obtenció de
resultats d’alta qualitat.
L’enginyeria del software és una activitat de modelat per a la solució dels problemes
plantejats pel client del sistema.
Versió 3.0 1
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
S'han plantejat diversos models pel desenvolupament (cicle de vida) del software, que
comentarem breument tot seguit.
Model seqüencial
També conegut com a cicle de vida clàssic o model del salt d'aigua, és el primer model
que es va establir. Tot i que és molt simple (i no reflexa adientment la realitat), estableix
clarament quines són les fases que apareixen en la producció del software.
Esquemàticament, el model seqüencial consta de les següents fases:
Els problemes d'aquest enfocament del cicle de vida clàssic són els següents:
1. És massa seqüencial i no respon a la vida real: la construcció del software acostuma
a ser un procés iteratiu, amb refinaments progressius.
2. Acostuma a ser molt difícil poder establir tots els requeriments en la fase d'anàlisi
inicial.
3. Es triga molt a tenir una versió operativa que pugui ser validada pel client.
Versió 3.0 2
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
L’ORIENTACIÓ A OBJECTES
· Identitat:
- Les dades estan associades amb entitats diferenciables
- Poden existir dos objectes amb dades idèntiques
- S'accedeix als objectes per mitjà del seu identificador
· Classificació:
- Agrupació d'objectes similars: classe
* mateixos atributs
* mateixes operacions
· Herència:
- Atributs i operacions comunes a diferents classes
- Les subclasses hereten tots els atributs i mètodes de les superclasses
- Les subclasses defineixen els seus propis atributs i mètodes
· Avantatges de l'herència:
- Evita redundàncies: el codi idèntic només s'ha d'escriure una vegada
- Reducció de la grandària del codi
- Reutilització del codi
· Polimorfisme:
- Sobrecàrrega d'operacions = mateix nom de funció, diferents implementacions
Versió 3.0 3
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
UML permet descriure un model d’anàlisi i disseny d’un sistema mitjançant diagramesconstruïts
utilitzant símbols que tenen regles semàntiques, sintàctiques i pràctiques.
· Les regles semàntiques ens diuen que significa cada símbol i com interpretar-lo,
tant quan es troba aïllat com quan es combina amb altres símbols en undiagrama.
· La sintaxis ens diu com mostrar i combinar els símbols per a obtenir elsdiagrames del model.
· Les regles pràctiques defineixen com utilitzar els símbols per a obtenir elsdiagrames del
model de manera que siguin comprensible per altres persones.
VISTES
· Vista de l’usuari:
representació del sistema des del punt de vista dels actors. Es modela fent servir els diagrames
de casos d’us.
· Vista estructural:
les dades i funcionalitats es mostren des de dins del sistema. Modela l’estructura estàtica:
diagrames de classes, objectes i associacions.
· Vista del comportament:
representa els aspectes dinàmics del sistema. Mostra les interaccions entre els diferents
elements estructurals del sistema: diagrames d’activitat, seqüència, col·laboració i estats.
· Vista d’implementació:
representa els elements estructurals i els aspectes de comportament tal com seran
implementats: diagrames de components.
· Vista de l’entorn:
elements estructurals i aspectes de comportament relatius al’entorn de l'organització en el qual
residirà el sistema a construir: diagrames dedesplegament.
DEFINICIÓ DE REQUERIMENTS
Abans que el software es pugui construir s’han d’entendre els elements de l’entorn
organitzacional en el qual residirà el sistema informàtic: les persones, els procediments
operacionals, el hardware i el propi software (domini del problema).
Els Requeriments del software recullen, a grans trets, els objectius d’un sistema
informàtic i les seves funcionalitats desitjades. El document de Requeriments serveix de
base per a la posterior construcció del software.
Un document de requeriments del software, redactat utilitzant el paradigma d’orientació
Versió 3.0 4
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
ANÀLISI
L’objectiu de l’anàlisi és obtenir una comprensió precisa de les necessitats del sistema.
L’anàlisi s’ocupa de traduir els requeriments a un llenguatge més formal. El procés
d’anàlisi no comença preocupant-se pels objectes, sinó intentant comprendre com es
farà servir el sistema per persones, per màquines o per altres sistemes. Després es
procura definir, identificar i descriure els objectes dins del domini del problema.
El propòsit de l’anàlisi orientat a objectes (AOO) és definir totes les classes que són
rellevants pel problema a resoldre, els atributs i operacions associats a les classes, les
associacions i comportaments lligats a les classes. Les característiques estàtiques i
dinàmiques de les classes es modelen amb UML. S’obté un model que refina el casos
d’us (elimina redundàncies i afegeix casos d’us no demanats pels usuaris però
necessaris) i defineix els atributs de cada classe, les associacions i comportaments i les
comunicacions entre classes, així com el comportament de les classes en el temps. Es
generen diagrames de classe (d’anàlisi), i diagrames de seqüència i de col·laboració
d’alt nivell. L’AOO es centra en les vistes d’usuari i estructural.
Els models creats durant les fases de definició de requeriments i anàlisi formen part del
domini del problema.
DISSENY
El disseny orientat a objectes (DOO) transforma el model d’anàlisis obtingut fent servir
AOO en un model de disseny que serveix d’avantprojecte per a la construcció del
software. Durant el disseny es procuren definir els objectes lògics del software que
finalment seran implementats en un llenguatge de programació orientat a objectes.
Es dissenyen els objectes a partir de diagrames de seqüència i de col·laboració de baix
nivell (assignant responsabilitats a les classes i fent servir patrons de disseny), centrant-se en
els detalls interns de cada classe (de disseny), la definició d’atributs (estructures
de dades), de les operacions (algorismes) i en detalls relatius als missatges. Es fa el
disseny arquitectònic, identificant les classes que són encapsulades pels diferents
components i subsistemes, per mitjà dels diagrames de components i de desplegament.
S'especifiquen les interfícies d’usuari (amb l’ajuda de diagrames d’estat), la gestió de
dades i els mecanismes d’administració de tasques. El DOO es centra en les vistes del
comportament i de l’entorn.
Els models creats durant la fase de disseny formen part del domini de la solució.
Versió 3.0 5
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Les interfícies d’usuari (IU) més habituals són entrades mitjançant teclat, pantalla i
sortides per pantalla i impressora, entrades i sortides sonores i entrades per escàner. Els
usuaris interactuen amb el software a través de les interfícies d’usuari. Les interfícies d’usuari
tenen una influència molt gran en la comoditat i productivitat dels usuaris.
Moltes vegades els usuaris jutgen la qualitat del software per les interfícies amb les que
interactuen amb més freqüència.
El disseny d’interfícies gràfiques d’usuari (IGU), implementades per mitjà de pantalles
gràfiques i generalment fent servir el ratolí, considera tres aspectes: contingut, el format
i la interacció. És pràctic dissenyar les IGU a partir de diagrames d’estat.
DISSENY DE LA PERSISTÈNCIA
Entre les bases de dades utilitzades per a emmagatzemar dades persistents, actualment (i
previsiblement en el futur immediat) les bases de dades relacionals són les més
àmpliament utilitzades. La orientació a objectes es centra en la construcció d'aplicacions
basant-se en objectes, que tenen atributs (dades) i mètodes (comportament), mentre que
el model relacional es centra tan sols en el fet d'emmagatzemar dades. En el paradigma
orientat a objectes s'accedeix als objectes via relacions entre objectes, mentre que en el
model relacional es dupliquen dades que possibiliten lligar files de diferents taules.
Aquestes dues fonamentacions teòriques tan diferents fan difícil la combinació dels dos
paradigmes. No obstant, a l'igual que hi ha regles de transformació dels diagrames del
model entitat-relació al model relacional, també hi ha regles per a transformar de forma
raonable els diagrames de classes al model relacional.
PATRONS DE DISSENY
Versió 3.0 6
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Introducció a UML
Versió 3.0 7
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Casos d’ús
Versió 3.0 8
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Versió 3.0 9
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Convé fer notar que una comunicació només indica que hi ha una interrelació entre un
actor i un cas d’ús. Evidentment, aquesta interrelació pot comportar diversos intercanvis
d’informació en les dues direccions. Per tant no implica cap flux d’informació només
en un determinat sentit.
Encara que una persona del mon real pot interactuar amb un actor (Usuari amb
Bibliotecari), aquesta interacció no la reflectirem en els diagrames de cas d’ús (convé
observar però que alguns autors la permeten).
Hi ha certs esdeveniments que passen regularment (el salari es paga mensualment).
S’acostuma a fer servir un actor Temps que s’ocupa d’inicialitzar aquests tipus
d’esdeveniments.
Un diagrama de casos d'ús es pot ampliar amb característiques addicionals per tal de
recollir millor tota la informació relacionada amb el sistema: fronteres, especialització i
generalització d’actors, generalització de casos d’ús, includes i extensions.
Per a simbolitzar la frontera entre el sistema i els actors es fa servir un rectangle. Així
queden delimitades clarament les accions dels actors de les funcionalitats del sistema.
Entre actors es poden establir relacions d’especialització/generalització amb herència, és a
dir:
Els actors descendents hereten els rols i les comunicacions amb els casos d’ús pròpies
de l’actor pare.
L’exemple següent mostra que l’actor CapBiblioteca pot fer totes les funcions que fan
els actors Bibliotecari més altres de pròpies:
Versió 3.0 10
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Generalització.
Una generalització d'un cas d'ús mostra que un cas d'ús E és un tipusespecial d'un
altre cas d'ús G. El cas d'ús E fa tots els processos del cas d'ús G més
algun procés específic. Una generalització es simbolitza per mitjà d'una fletxa
queapunta cap el cas d'ús G etiquetada amb <<generalize>>.
Inclusió.
Extensió.
Un cas d'ús E es pot definir com una extensió opcional d'un cas d'ús base B:
dins de B s'executa E quan es compleix una condició determinada. Aquesta
relaciós’anomena d'extensió. I pot haver vàries extensions d'un mateix cas d'ús.
En el diagramaes representa per una fletxa puntejada en direcció cap el cas d'ús B,
amb una etiqueta<<extend>>. Dins del cas B s'hi poden posar punts d’extensió que
serveixen per adeterminar quan la utilització del cas E és apropiada. El cas d’ús E no
acostuma a ser uncas d’ús complet activable per un determinat actor.
Escenaris
Versió 3.0 11
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Glossari
Usuari: pot ser un professor o un estudiant.
Bibliotecari: s’encarrega de mantenir el catàleg de llibres, de fer préstecs i
reserves.
Cap biblioteca: fa totes les tasques d’un bibliotecari, excepte catalogar llibres. És
l’únic amb la capacitat de modificar sancions.
Llibre: s’identifica amb la signatura.
Exemplar llibre: s’identifica amb signatura i número de còpia.
Catàleg: conjunt de tots els llibres de la biblioteca.
Préstec: es deixa un exemplar d’un llibre a un usuari per a un període de temps
determinat.
Versió 3.0 12
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Observis que l’Usuari interactua amb el sistema per mitjà de l’actor Bibliotecari (actor
facilitador). Per tant no és pròpiament un actor, i no hi ha acord sobre si és millor posar-lo no a
un diagrama. El criteri que farem servir a partir d’ara, en general, serà de no
posar-lo, tal com fem a l’exemple modificat que presentem a continuació:
refinem el diagrama...
Versió 3.0 13
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Versió 3.0 14
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Exercicis:
Fer les fitxes de Gestionar préstec exemplar des de la visió del usuari i del dissenyador
Versió 3.0 15
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Diagrames d'Activitat
Definició:
Disseny:
i. En un diagrama d’activitat, el procés comença a partir del cercle negra d'inici situat a la
part superior o esquerra del diagrama i acaba al cercle blanc/negre de final situat a la
part inferior o dreta del diagrama.
ii. Les activitats s'indiquen amb rectangles arrodonits.
iii. Els diagrames d'activitat es poden subdividir en carrers (swimlanes) per a mostrar el
responsable (actor, objecte, unitat organitzacional, cas d´ús, ...) encarregat de l’activitat.
iv. De cada activitat se'n deriva una transició que connecta amb la següent activitat.
v. L'inici i final de branca s'indiquen amb un rombe.
vi. Una transició pot derivar cap a vàries noves transicions (branques) mútuament
excloents. Les expressions que controlen quina ha de ser la nova transició es posen
dins de [ ]. L'inici i final de branca s'indiquen amb un rombe.
vii. Una transició pot derivar cap a vàries activitats que es desenvolupen en paral·lel.
viii. L'inici d’activitats en paral·lel i la unió de retrobament final d’aquestes activitats
(sincronització) es simbolitzen amb barres sòlides.
Versió 3.0 16
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Exemples:
Versió 3.0 17
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Versió 3.0 18
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Versió 3.0 19
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Versió 3.0 20
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Diagrames d'Estats
Els objectes i els sistemes a cada instant estan en un estat concret. L’estat actual d’un objecte
o sistema en determina el seu comportament futur.
La transició entre estats és deguda a un esdeveniment.
A un diagrama d’estat, els estats es representen per rectangles arrodonits que poden tenir tres
compartiments:
✓ pel nom de l’estat
✓ per a valors característics del sistema o objecte quan es troba en aquest estat
✓ per a les accions que s’executen a l’entrar, mentre s’està o al sortir de l’estat.
L'estat inicial es simbolitza amb un cercle negre i l'estat final amb un cercle negre/blanc.
Les transicions es representen per fletxes, que van d'un estat a l'altre.
El nom dels esdeveniments que disparen les transicions s'escriuen al costat de les fletxes.
Pot ser que una transició comporti una acció, indica per /acció.
Una acció pot anar precedida d'una condició que es representa per [condició].
Així doncs, el text que acompanya a una transició té la forma: esdeveniment [condició] /acció
L'estat d’un objecte està determinat pels valors dels seus atributs. Podem fer servir un
diagrama d’estat per a mostrar tots els estats pels quals pot passar un objecte al llarg de la
seva “vida”.
El següent exemple mostra un diagrama d’estat amb els possibles estats d’un exemplar
d’un llibre d’una biblioteca.
Versió 3.0 21
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Classes
Amb UML una classe es representa per mitjà d'un rectangle dividit en tres parts que contenen:
· la part superior: el nom de la classe;
· la part central: els atributs de la classe;
· la part inferior: les operacions de la classe (mètodes a la fase de disseny).
Els atributs
Les operacions
Quan un objecte rep un missatge, en compara la signatura amb la signatura de les seves
operacions, i si troba una coincidència llavors invoca la corresponent operació.
La representació d’una classe acostumen a ometre les operacions de creació/destrucció i
set/get.
Versió 3.0 22
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
La visibilitat d'un atribut o d'una operació indica com aquests poden ser accedits des d'objectes
d’altres classes. La visibilitat s'indica situant davant de l'atribut o de l'operació un dels símbols
de la taula següent:
Amb UML, si la visibilitat no s’indica explícitament, se sobreentén que els atributs són privats i
els mètodes públics.
Àmbit
S'indica que una operació és operació de classe subratllant-la. Si una operació no està
subratllada se sobreentén que és operació d'objecte.
Classes abstractes
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ó).
Una classes abstracta s'acostuma a posar en itàliques.
Convé observar que depenent de la fase de desenvolupament del programari en la qual es fan
servir, la representació de les classes és més o menys completa.
Versió 3.0 23
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Diagrames de Classes
Una relació entre classes es representa en el diagrama per un segment que les connecta.
Exemple (inicial) per a la gestió d’una biblioteca:
Versió 3.0 24
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
A l’igual que passa amb les classes, la representació dels diagrames de classe és més o
menys completa depenent de la fase de desenvolupament del programari en la qual es fan
servir.
Generalització/Especialització
· Associació: interrelació entre instàncies de dues classes. Una instància d'una classe ha
de disposar d'informació d'una instància de l'altra classe per a poder fer el seu treball.
A un diagrama, una associació es representa per mitja d'un segment que connecta les dues
classes.
· Agregació: una associació en la qual es distingeixen un tot i una part: una instància d'una
classe (tot) es relaciona amb una col·lecció d'instàncies de l'altra classe (part).
Una agregació es representa per un segment amb un extrem en forma de diamant apuntant
cap a la classe singular.
· Composició: una associació en la qual una instància d'una classe (feble) no pot existir sense
estar relacionat amb una instància d'una altra classe. Una composició es representa per un
segment amb un extrem en forma de diamant ple apuntant cap a la classe no feble.
Versió 3.0 25
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Associació
A un dels dos extrems d'una associació s'hi pot posar el nom d'un rol per a clarificar la
natura de l'associació.
A una associació se li pot afegir una fletxa per a mostrar el sentit (de navegació) en el
qual es poden fer consultes. Una fletxa serveix per a mostrar qui és el "propietari" de
l'associació. Només es poden enviar missatges en la direcció de la fletxa. Les associacions
sense sentit de navegació són bidireccionals.
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.
A continuació donem una taula que mostra les multiplicitats més comunes:
A un diagrama de classes hi han de figurar obligatòriament: les classes, les associacions i les
multiplicitats. El sentit de navegació i els rols es poden posar de forma opcional per a fer més
entenedor el diagrama.
Versió 3.0 26
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Agregació i composició
Convé observar que a l’hora de generar codi hi ha molt poca diferència entre una associació,
una agregació i una composició. En cas de dubte, sobre tot a la fase d’anàlisi, no és cap
problema deixar les relacions en forma d’associació.
Associacions qualificades
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ó.
Un qualificador 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.
Els qualificadors, bàsicament, es fan servir com a identificadors: un objecte de la classe font
conjuntament amb un valor del qualificador selecciona unívocament un objecte o conjunt
d’objectes de la classe objectiu.
La multiplicitat assignada a la classe objectiu acostuma a ser: 0..1, 1 i * .
Convé comparar aquesta situació amb la que tindríem si no utilitzéssim una associació
qualificada:
Versió 3.0 27
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
En aquest cas, per a saber si una entrada ha estat venuda, hauríem de buscar entre les
entrades d’una obra fins a arribar a la que busquem, i llavors fer-ne la comprovació.
Classes associació
Una classe associació és una associació que té el mateix comportament que una classe.
Una classe associació 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ó.
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.
Només es pot fer servir una classe associació quan hi ha una única relació entre dos objectes
en un moment donat en el temps.
Algunes eines CASE (i tampoc Java) no permet treballar amb classes associació. En aquest
cas cal transformar el model. A continuació donem un exemple de transformació per la classe
associació propietari que acabem de veure.
Versió 3.0 28
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Dependències
Una dependència entre dues classes A i B és una relació, que no sigui una associació
(visibilitat d’atribut), en la qual un canvi a la classe B (proveïdora) pot forçar canvis a la classe A
(client). A un diagrama de classes, la dependència d’A respecte de B s’indica amb una fletxa
puntejada que va des d’A fins a B.
Una classe depèn d’una altra classe si:
· U objecte de la classe B és fa servir de paràmetre a una operació de la classe A (visibilitat de
paràmetre).
· Una operació de la classe A retorna un objecte de la classe B (visibilitat de paràmetre).
· Una operació de la classe A crea un objecte de la classe B i el fa servir dins d’un mètode,
però sense mantenir-ne cap referència (visibilitat local).
· Una operació de la classe A fa servir un mètode estàtic de la classe B (visibilitat global).
Restriccions
Una restricció és una condició que tota implementació del disseny ha de satisfer. En un
diagrama de classes les restriccions s'escriuen entre { }. En el diagrama de l'exemple una
Section pot ser part d'una CourseSchedule només si no ha estat cancel·lat.
Versió 3.0 29
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Estereotips
Un estereotip permet afegir informacions extres als elements del model (classes,
dependències, color/tipus de rol, …). El nom d'un estereotip s'escriu entre << >> sobre del nom
de l'element.
El següent diagrama de classes és un model d'un congrés:
Les classes del model són SessionTalk, que és refereix a una presentació, i Session,
que són el conjunt SessionTalks d'un dia. ShuttleSchedule, la llista de ShuttleStops, és
important pels congressistes allotjats a hotels allunyats de la seu del congrés.
El diagrama té una restricció, les ShuttleStops estan ordenades. La classe ShuttleStop té
l'estereotip <<place>>.
Interfícies
Una interfície és una classe que dóna nom a una llista d’operacions abstractes, sense
indicar-ne la implementació. Una interfície 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. D’aquesta forma l’especificació d’una funcionalitat queda separada de la seva
implementació.
Una interfície pot ser una especialització d’una interfície de més alt nivell. Una interfície
no pot ser instanciada.
La implementació d’una interfície per una classe concreta s’anomena realització. La
classe interfície porta l’estereotip «interface» sobre el nom de la interfície. Una realització es
simbolitza per una línia a trossos amb una fletxa que apunta des de la classe implementadora a
la classe interfície. No hi pot haver cap realització que tingui per origen la interfície. Una classe
pot implementar diverses interfícies, i una interfície pot ser implementada per més d’una classe.
Versió 3.0 30
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
Exemples:
I al diagrama del model d’un congrés hi ha tres interfícies: IDated, ILocatable, and ITimed. El
nom de les interfícies acostuma a començar amb la lletra I.
Els noms de les interfícies i de les seves operacions s'escriuen en itàliques. Una classe com
ShuttleStop, amb una operació que coincideix amb la de la interfície, com ILocatable, és una
implementació de la interfície.
Interfícies i associacions
Es pot establir una associació entre una classe C i una interfície I, sempre que la navegabilitat
sigui des de C cap a I. Tot i que la interfície I no pot ser instanciada, cal interpretar aquesta
associació en el sentit que un objecte de la classe C té referències a objectes de classes que
implementen la interfície I, i que per tant poden rebre missatges de C.
Exemple
Versió 3.0 31
1 desembre
INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE - UML
de 2020
A més a més de la notació per a representar interfícies que acabem de descriure i utilitzar a
l'exemple anterior, a UML hi ha una segona notació que fa servir cercles per a representar
interfícies. Amb la notació cercles, l'exemple anterior es representaria com:
Amb la nova notació, les interfícies són cercles connectats per fletxes puntejades amb origen a
les classes que les implementen. Al ser més compacta, però amb menys detall, la notació
cercles simplifica els diagrames originals.
Versió 3.0 32