Professional Documents
Culture Documents
Disseny Software en UML
Disseny Software en UML
Disseny Software en UML
2
Obtenir el diagrama de seqüència de disseny
Crides i Resultats
Codi
D. Classes
class Persona {
public:
string GetNom(){
return nom;
}
private:
string nom;
}
D. Seqüència
4
Crides entre Instàncies
Codi
D. Classes
class Persona {
public:
string GetNomAnimal(){
return animal‐>GetNom();
}
private:
string nom;
Animal* animal;
};
class Animal {
D. Seqüència
public:
string GetNom(){
return nom;
}
private:
string nom;
}
Navegabilitat bidireccional
D. Classes (Disseny) Codi
class Persona {
string nom;
set<Animal*> animal;
};
class Animal {
string nom;
Persona* amo;
}
8
Navegabilitat unidireccional
D. Classes (Disseny) Codi
class Persona {
string nom;
set<Animal*> animal;
};
class Animal {
string nom;
Persona* amo;
}
Navegabilitat nul·la
10
Opcions / Condicionals
Codi
D. Classes
class Persona {
public:
string GetNomAnimal()
{
string nomAnimal = “”;
if (animal != nullptr)
{
nomAnimal=animal‐>GetNom();
}
retorn nonAnimal;
D. Seqüència
}
private:
string nom;
Animal* animal;
};
Agregats
Codi
D. Classes
class Persona {
public:
set<string> LlistaNomAnimals()
{
set<string> nomAnimals;
for(Animal* a : mascotes)
{
nomAnimals.insert(a.GetNom());
}
return nomAnimals;
D. Seqüència
}
private:
string nom;
set<Animal*> mascotes;
};
D. Classes D. Seqüència
Agregats (recopilació)
Un agregat és una col·lecció d’objectes
Set(T)
nb(): Enter
afegir(x: T) no fa res si x existeix
esborrar(x: T) no fa res si x no existeix
conté(x: T): Boolean
unió(s: Set(T))
intersecció(s: Set(T))
14
Polimorfisme
15
Polimorfisme
Codi
D. Classes
class Persona {
public:
virtual int GetSou() = 0;
private:
string nom;
};
class Estudiant: public Persona {
public:
int GetSou() override {
return 0;
D. Seqüència
}
}
class Professor: public Persona {
int souProfessor;
public:
int GetSou() override {
return souProfessor;
}
}
• Quan una operació dins d’una classe no te cap mena de codi, aquesta
s’ha de definir com a abstracta.
17
18
Polimorfisme
Operació polimòrfica:
– operació que s’aplica a diverses classes d’una jerarquia tal que la seva
semàntica depèn de la subclasse concreta on s’aplica
Professor Administratiu
plusLloc: Diner horesExtres: Natural
pagarSou(): Diner preuHoraExtra: Diner
es poden redefinir
pagarSou(): Diner
operacions concretes
contracte {disjoint, incomplete}
l’operació es defineix de forma
Prof. Titular Prof. Associat diferent => mètode diferent
antiguitat: Natural períodeCont: Natural
pagarSou(): Diner renovar(n:Integer)
19
pagarSou() pagarSou()
obtéSouBase() obtéSouBase()
sou sou 20
Creadores
• Una creadora rep com a paràmetres alguns (o tots, o cap) dels atributs
de la classe que ha de crear i en retorna una instància.
21
Professor Administratiu
plusLloc: Diner horesExtres: Natural
pagarSou(): Diner preuHoraExtra: Diner
pagarSou(): Diner
: Administratiu : EmpleatUniversitari
:T
crea(n, sb)
…
crea(n, sb,
h, p) super.crea(n, sb)
(n, sb, h, p) nom = n
… : Administratiu horesExtres = h
souBase = sb
preuHoraExtra = p
22
Diagrames de seqüència: sintaxi completa
Notació: :Client p: Producte
Creació d’objecte
oper(a) Existència d’objecte
:Transacció
op1(a,b) op2(a,c)
op3(c,d)
temps
op4(b)
Focus de control Autoinvocació d’operació
resultat
resultat
Destrucció d’objecte
op3(c,d)
:Client instància (objecte) invocació de l’operació op3
amb retorn de control
op1(a, b)
c: Client instància amb nom invocació de l’operació op1
sense retorn de control
Client classe d’objectes retorn de control
23
alumne = a
assignatura = ass
obtéNbCrèdits()
nbc
totalCr += nbc incrementarMatrícules()
nbMatriculats++ 25
Bibliografia
• http://www.uml.org/#UML2.3
26