Professional Documents
Culture Documents
Intro - UML - Intro - UML - LIC - CC
Intro - UML - Intro - UML - LIC - CC
complejo
* con el valor de sumar el complejo ¢ con el complejo que
+ reelbe este mensaje.
+”
public Complejo eumar (Complejo cd ¢
double nuevaParteReal ~ this-parteReal () + e.partekeal (I7
double nuevaParteInaginaria ~ thie.partetmaginaria()
+ c.partetmaginaria();
return new Complejo (nuevakarteReal, mievaPartelmaginaria) :
'
i
* convierte el complejo @ cadena de car
* habitual (a + BL).
y
public string tostring() ¢
return "(" + partoReal + "*" + parteImaginaria +"):
‘ores con 1a notacion
,
b
jemplo, Cuenta Bancaras:impementacion en Java
Fea
+ a clase CuentaBancaria representa cuentas bancarias en las
+ que ee mantiene un saldo.
+ dauthor Miguel Angel Sicilia
”
public class Cuontasancaria |
/** wimero de cuenta*/
private string aumero;
fet Saide en euros de 1a cucntat/
protected float saldoy
ip
* constructor de una cuenta bancaria.
Tinero niimero.sdentificative de cuenta
public cuentaBancaria(String mumero, float saldoInicial) (
ehig-nunero ~ numeros
saldo ~ galdomnicialy
'
po
* Getter para ol saldo de 12 cuenta.
B
public float getsaldo() {
'
ay
* Getter para e1 numero de 1a cuenta.
*
public string gotNunero()(
'
in
+ nunenta el saldo en 1a cantidad indicada.
‘Siquindo el ejompl ante sse CuentaBoncaria se implementa en iva dea siguiente manera:
livenvia de Reconocimiento-Compartirigual 3.0 Espafa de Creative Commons
al Lenguaje de Modelado Unificado (UML) de FUOC esti sujeta a unalnvosusin lengua de Modelo Untcado (UML)
ace
+ Gparan cantidad Ta cantidad & ingresar
daa (
+ Disminuye e1 gaido en a cantidad indteada
+ dparan cantidad 1a cantidad a retirar
“
public void retirar(float cantidad)
throws SaldofesultanteNorermitidot
cantidads
saldo
Notese que hemos deride atibuto salto protocol amos cuenta que posible futures subcases
sien requeir su menipuladén, TarBién hemos decarado que el metodo eter puede fnzar une
lexepetn defrida por nosotos. Aunque en el cidio de esta clase no lo ace, posblemertelo hare
cigo do suclases que por ejemplo, po pemtan que una cuenta de un ipo dterninade quede en
rime rep
2.3, Atributos y operaciones de las clases
UML proporefona una notacién especial para distinguir los miembros (atributos y operaciones) de las
instancias y de los miembros de las clases. Hasta abora, solo hemos utilizado propiedades de las
instancias, pero vamos @ suponer ahora que quisiéramos afadir un atributo de la clase a CuentaBanearia
«on el nimero de cuentas que se han creado, ¥ un método dela clase para tener acceso a ese aributo
En UML, se subrayan los atributos y operaciones de la clase para diferenciarls de los de las instancias,
‘como se muestra en la siguiente figura:
‘GuentaBancaria
aida Tost
{numero Sting
[uerocuentas int
FegtSaldo(: oat
Iingresartin cand at: vi
Iretranin canta foal) vod
[saetNumeroCuentat) int
jemplo: Cuentas Bancarias:Atibutesy Operaciones de clase
Los atiblos y operacones de la clase pueden considerarse como aibulos y operaciones de una
tance de una cle expecia” que est vinble dede todas lat istancias de la cate (peo no ala
nversa)~ véase el acceso desde cidigo del constuco latibuto de dase nunorocucntas. Esto 6s
lespciments apropiado en Java, donde tenemos un clase Sava.Inng.ciacs yas instancias|
representa a las clases cuyasinstncas se usan ena aplcacion, A esa ‘instarcia especiales ala que se
Jaccede cuando hagamos la invocacin sobre el nombre dela case
[cuentaBancaria.getNimeroCventas()
public class CuentaBancaria |
public CuentaBancarta (string numero, float ealdotnsetal) (
saldo = saldotnicial;
1
satsat
nuneroCuentas
,
al Lenguaje de Modelado Unificado (UML) de FUOC esta sujeta a una
livenvia de Reconocimiento-Compartrigual 3.0 Espafa de Creative Commonslnvosusin lengua de Modelo Untcado (UML)
e022
ancia (vistos anteriormente)
3. Relaciones entre clases
‘Una relacin entre clases se puede definir como una conexién entre dos o mis clases. En orientacén a
fobjetos, las principales relaciones que se pueden establecer entre clases son las de generalizacién (0
hherencia), asociacion, agregacién y dependencia (0 uso).
3.1. Asociaciones y dependencias
Las asociaciones representan relaciones estructurales entre clases. En UML, se define una asociacién
como una relacién que describe un conjunto de enlaces, donde cada enlace define una interconexién
semantica entre instancias de las clases que participan en la asociacin. Se dice que las instancias de una
de las clases “conocen” alas instancias de la otra clase a las que est enlazadas,
A grandes rasgos, podemos distingur dos tipos de asociaciones
‘© Asociaciones binaras: en este caso, el vinculo se establece entre dos clases
‘© Asociaciones n-arias: en este caso, el vinculo se establece entre tres o mis clases.
3.1.1. Asociaciones binarias
En UML, las asociaciones binarias se representan mediante una linea continua que conectan dos clases
(aunque puede darse el easo particular en que las dos elases involueradas en la asoviacn binaria sean la
‘misma, En este caso, hablamos de asoviaciones reflexivas).
x
A la representacin de las asociaciones se le pueden aad ciertos elementos que aportan informacin
Adicional, como la dreccionalidad, ls nombres de rol o la cardinalidad, que veremos a continuacién,
‘Una asociacién binaria representa una interconexi6n entre las instancias (u abjetos) de dos clases A y B,
Esta inferconexién puede ser 0 no bidireceional. En caso que la interconexién sea bidirecefonal, (opeién
por defecto) seri posible navegar desde las instancias de la clase A a Tas instancias de la elase B, y a la
inversa, es decir, desde las instancias de la elase B podremos acveder a las instancias de la clase A. Si
devidimos que la intereonexién debe ser unidireccional, enlonces seri nevesario afiadir una flecha
abjerta encima de la linea de asociacidn; esta flecha indica el sentido de la navegacién
x a
Las asociaciones pueden tener nombre. Dado que por defecto las asociaciones son bidireccionales, se
pueden especificar dos nombres en la asociacién. En UML, estos nombres son los roles que juegan las
clases en la asociacn.
jemplo: Cuentes Gancarias: Roles
\olvamos al ejemplo antair dels cueras barca, Segin el modelo que tensos hasta shor, hemos
Imodeado cunias y usuarios peo no que cuenias prtenecen qué usuario. Esl lima infamacin se
representa medians una asocacén ene ambas dase.
OO
ligencia de Reco
Introduccion al Lenguaje de Modelado Unificado (UML) de FUOC esta sujeta a una
imiento-Compartrigual 3.0 Espata de Creative Commonslnvosusin lengua de Modelo Untcado (UML)
sadez2
coantas ular
[GuentaBancan Cliente
En la figura anterior hemos omitdo los compartments de atu y operaciones y heres incuido una
asociacon con ls roles en ambos extumos, cambando ol nombre dela clase Tir por oto ms
Srifcato, ya que un Clente del banco juego ldo fitlaren su relaién con ls curtas cue poses.
Las roles no son oblgstorios, pro en oration alguna deelosapota lndad ala ascii
Ntese que on la fura anti Ia asociacon os bidrecionaly que no hemos sicho nada sobre qué
nner de instancias ptcipan, por elerpo sl una cuenta puede ene vais tuaes.
Dado que una asociacién binaria representa una intereonexién de instancias de dos elases, es necesario
indicar cuntos objetos de cada clase pueden estar involuerados en dicha interconexién, En otras palabras,
es necesaio indicar la cardinalidad (o multiplicidad) de la asociacién, Podemos indicar el valor miximo
¥y minimo de esta cardinaldad. Dadas dos clases A y B, la cardinalidad indica eon cuantas insta
jas de B
‘se puode relacionar cada instancia de A (valor minimo y méximo). Los casos mis generales de
cardinalidad son los siguientes:
Cardinalidad “uno a uno”: en este easo una instancia de la clase A se relaciona con una dnica
instancia de la clase B, y cada instancia de la clase B se relaciona con una dnica instancia de la
clase A.
Cardinalidad “uno a muchos": en este caso una instancia de Ia clase A se relaciona con varias
instancias de la clase B, y cada instancia de la clase B se relaciona con una tinea instancia de a
clase A.
Cardinalidad “muchos muchos": en este caso una instancia de la clase A se relaciona con
‘arias instancias de la clase B, y eada instancia de la clase B se relaciona con varias instancias de
Incase A.
jemplo, Cusntas Bancafas:Cardvalidad dels asoclaciones|
Pnsemos en la cardinadad de la asian en nusstoojompl. En ol caso de las cuentas banca,
Pemos pensar Is tes susciones sigs, ue se coresponden aos res casos generals aniores
= Una person, de tener alguna, slo puede tener una cuenta, y nose permiten cuentas de tularidad
multiple. Diemes que una cuenta Bene un Unico War ~ nese que no se puede tener cueras sin
‘dar y qua un cle puede ener una cuenta inguna (qua es so lene de serves).
=
cusntas ular
ot 1
Una persona puede toner varias cuenta, por nose pein cuentas de thuariad mit. En ete
‘aso, in clnto puede tener una, vais (icado con el astisco ) o inguna cuenta, poo ls
eras ten un nico tid.
Introduccion al Lenguaje de Modelado Unificado (UML) de FUOC esta sujeta a una
imiento-Compartrigual 3.0 Espata de Creative Commonslnvosusin lengua de Modelo Untcado (UML)
s1e22
cuantas tular
= Una persona puede toner varias cul, y sts pueden ser de tviadad mill. Direos que una
‘cuenta puede ter de uno a muchos clenes como tlre y que un cents puede tener una cunt,
varias oninguna.
cuantas ular
(CuentaBancar ‘Cliente
or a
‘Aunque sto lain stuacén es a que suede en la eld dl enoro banc, conlemlams las dos
antares por motos dictens
‘A vooes os Ul consderr fos enlaces ene las instances de las clases que patcpan en a ascicén
Esto puede visuizarse medante dagemas de obets que muesten una siuecion de ejemplo. Por
‘ejemplo, el suerte cgrams muestra enisoes ent ites cients y res cueissbancrias.
(event: CuontaBancar (centet Chen
az : CuentaBiancaria] feients2 Glont
onl Gens vad Cuenta
En ol dagrama de objeto anefor ca cul dos res cass aneroes de asocaion se corespond? Si
os amos en 6, hy cunias con més de un itr (vents) yeni con mas de vn cues (fete,
polo cual ol co daprama qu se asta sla siacin de muchos a muchos
A continvacién se muestra una tabla resumen de la posible multiplicidad de las cardinalidades y sus
notaciones:
NOTACION. DESCRIPCION EJEMPLO
1 Exactamente uno ‘Una persona tiene un tinico pais de origen
0 Cero 0 uno Un empleado tiene un responsable directo
1
@©0
Introduccin al Lenguaje de Modelado Unificado (UML) de FUOC est sujeta a una
livenvia de Reconocimiento-Compartrigual 3.0 Espafa de Creative Commonslnvosusin lengua de Modelo Untcado (UML)
aden
en una empresa excepto si es un director,
en cuyo caso tiene cero,
Ont Coro 0 mis Una persona puede no tener casa (vivi|
alguilado), tener una o tener mis de una
Uno o mis Un alumno de un centro esti matriculada
de una © mis asignaturas (si no tuviera
ninguna no seria alumno del centro).
nniimero exacto | EI nimero exacto indicado | Un segmento tiene 2 puntos asociados: el
corigen yel destino del segmento,
‘Se pueden establecer combinaciones de Io anterior, Hegindose a dar multipi
‘que significaria “cualquier nimero de objetos exceptuando el 2, e13 y el”
lades como: 0..1,4.6, 8.4%,
3.1.2, _Implementacidn de asociaciones en Java
La técnica esencialmente consiste en indicar la multiplicidad de la eardinalidad para cada sentido de una
asociacién navegable (en el caso anterior, para los sentidos CuentaBancaria > Cliente y Cliente >
(CuentaBancaria) de la siguiente forma:
(© Las cardinalidades de tipo °muchos” se deben implementar mediante una estructura de datos
aque seri un atributo euye tipo es Ia clase Java que esti “al otro extreme”,
(© Las eardinalidades de tipo “uno” se deben implementar mediante una referencia de objeto
euyo tipo es la elase que participa de la asociacién con cardinalidad uno, que seri. un
atributo de Ia clase Java “que esté en el otro extreme”.
Légicamente, también habri que afar los métodos pertinentes para la gestién de la asociacién, es decir,
afadiry eliminar enlaces
jemplo, Cuentas Bancaras:implementacin de asoclaciones
“Tomes a segunda stuaién de nuestro ejemplo ‘uo a muchos’ para ver como se debaiamplementar
I atacacén en Java
public class CuentaBancartat
private Cliente titular
11 resto de atributos...
public CuentaBancaria (Cliente titular) {
if (eitular ~~ null)
throw new Beception ("Mo
11 resto de cédigo del constructor
'
public Cliente obtenerTitular() (
'
public boolean canbiarTitular (Cliente ©) (
77 No debenos permitir que una cuenta se quede sin titular.
4f (clon)
11 resto de operaciones
import Java-utii.sety
import java.util Hashset
Sport Javarutil.Teeratory
public class clientes
Introduccion al Lenguaje de Modelado Unificado (UML) de FUOC esta sujeta a una
livenvia de Reconocimiento-Compartirigual 3.0 Espafa de Creative Commonslnvosusin lengua de Modelo Untcado (UML)
rade
‘private Set cuentas
public Cliente(...){
‘cuentas ~ new HnehSot |
71 testo de cédigo del constructor
public void nuevacuenta(Cuentaancaria ¢){
cuentas addte)
,
public veid eliminarcuenta (cuentaBancaria ¢) |
‘ientas remove (0)
'
public Iterator obtenercventas
Peturn cushtag-iverator(}s
i
11 resto de operaciones y atributes.
1
En la Implementacén anterior se han tomado alguras decisones de implementacién por pane del
progremador
' Una cuenta nunca debe queda sin ttuar, esta regla del nogocio so asagua en los métodos que
mangulan la implementacién de la asccacin, incuyendo el consucor que cig a espciar un
‘ier vio,
1 Hemoselegdo una estucura Sox (conjunc) de ene las que nos cae Java, ya que las cuentas de
tun tla i requieren orden ni pueden estar dupleadas. En genera, siemere que se iglemetan
‘sociacones se deten tomer decisones de ete po
+ Normaiment, os atrbutos gue implementan Ia asociaién tman como nombre el namtre dl que
‘aparecia en el dagrama es que habia algun,
‘= Ex implemeniaciones de asciaciones “a muchos, como la de conte con sus cuentas, hay que
‘estuiar cba dames acceeo a buscar enlaces dent de la asociacén. En el eerpo antror,
‘fecemos a modo obtonorcvont as que dewalv un terador cone cual puede mriplr las
ons mediante bus (véanse las dasescrrespondintes en avn)
3.1.3. Asociaciones binarias reflexivas
Las asociaciones reflexivas son un tipo de asociacién binaria en el cual la clase de origen y destino de la
tipico, trataremos la organizacién de una empresa, definida
tre instancias de la clase Empleado,
‘sociacién es Ia misma. Como ejemph
‘mediante larelacibn “es responsable de’
on
Empleado] rspensabiede
Ae
En el ejemplo anterior hemos dibujado una asociacion bidireecional donde un empleado puede tener cero,
‘uno © muchos empleados bajo su responsabilidad, mientras que todos los empleados tienen un jnico
responsable (excepto el Director General, que no tiene ningin responsable).
Es importante “visualizar” la estructura de instancias que se desprenden de este diagrama. Esta estructura,
en nuestro caso particular, representard un drbol de instancias, por la restriceién de que una persona tiene
tun solo responsable como mucho.
OO
ligencia de Reco
Introduccion al Lenguaje de Modelado Unificado (UML) de FUOC esta sujeta a una
imiento-Compartrigual 3.0 Espata de Creative Commonslnvosusin lengua de Modelo Untcado (UML)
ade
nombre Sting = Elena Roavigus
Eola ~_Emiaade
[Pombre" Sting = Miguel Angot Sica] fombro: Sting = Elna Garda Bariocanal
—Emolaade
[pembre= Sting = Eauarde Gonaal
Notese que sia ascciacin reflexive es de carina ‘ruchos' en amas dreccines, representa potenciments un
‘gfe de nssncs, Dejaos alco que comprusbe este cho taza un dagrama de chjetas de ejempo
Las téenicas de implementacin en Java son las mismas que en las asociaciones no reflexivas.
NNétese que en general las asociaciones, incluyendo las reflexivas, pueden formar grafos dirigidos cor
ciclos de instancias (imaginemos por ejemplo un sistema que quisiese guardar las relaciones “eonoce a"
tele personas), aunque en casos como el ejemplo anterior la implementacién debe impedirlo para
‘zarantizar que la semntica del dominio del problema se cumple
3.14. Elconcepto de Clase de Ia Asociacin
En una asociacién entre dos elases, es posible que la propia asociacion tenga atributos. La informacién
ue tienen los valores de estos aributos no tiene sentido propio excepto en el concepto del enlace. Un
ejemplo tipico es el modelado de un pedido de miltiples productos. La cantidad pedida de cada producto
no pertenece ni al pedido en si (a diferencia, por ejemplo, de la fecha del pedido) nial producto, sno a la
relacin del pedido con cada uno de los productos soictados en él. En UML, este ejemplo se modelaria
‘como una clase de la asoriacién, que se conecta con una linea discontinua a la asociacién de la cual
depende,
[saniaae
Producto
|
Tacha
Los lenguajes de programacién no proporcionan un mecanismo directo para implementar estas
asociaciones, sino que se implementan creando una tercera clase que posee dos asociaciones normals,
‘como se muestra en la siguiente figura.
@©.O9
Introduccion al Lenguaje de Modelado Unfieado (UML) de FUOC esti sujeta a una
licencia de Reconocimiento-Compartirlgual 3.0 Espafa de Creative Commonslnvosusin lengua de Modelo Untcado (UML)
15022
Pedido | -Pedido productos [LineaPedid|
Lec aniod
0+ | -pedidos
+ | producto
Producto
Freee
3.15. Asociaciones n-arias
‘Una asociacién n-aria consttuye una relacién que se establece entre tres o mis elases. Un ejemplo tipico
cde la cuenta de los goles marcados por jugadores de los distntos equipos en el campeonato de Liga.
En este caso, hay que enlazar a un jugador con un equipo en una temporada, ya que en diferentes
temporadas puede estar en diferentes equipos (incluso quiza en la misma). Estas relaciones se representan
en UML mediante un rombo, y pueden tener una clase de la asociacién con la informacién que depende
de la existencia del propio enlace, en nuestro caso, una clase Registro con los datos del jugador en el
‘equipo y temporada indieado en el enlace.
Reale
faes
= [secon]
Temporada
ado un jugador conereto que juega en un equipo conereto tendri varios registros de goles en cada
temporada. Dada una temporada conereta y un equipo concrete, habri un registro de goles para cada
{ugador del equipo. Finalmente, dada una temporada y jugador conereto, puede meter goles en diversos
‘equipos (asumimos que un jugndor dentro de una misma temporada puede cambiar de equipo).
‘Aa hora de implementar en Java, se suele introducir una clase adicional y se expresan los enlaces n-arios
‘mediante enlaces binaries
3.16, Relaciones de Agregacton y Composicion
Las relaciones de agregacién y composicién son tipos especiales de asociacién, En las asociaciones
binarias, se asume que las instancias de ambas clases son independieates, en el sentido de que no
depencden de la existencia de las instancias de la otra clase. Sin embargo, las relaciones de agregacion
‘asumen una subordinacida conceptual dl tipo “todo/parte o bien “tiene un"
A efectos de implementacin en Java, las téenicas son las mismas, con la salvedad de que no se pueden
crean cielos de enlaces, es decir, una “parte” no puede estar agregada en si misma, ni directa ni
indirectamente. Se puede eliminar la instancia que representa al “todo” y seguir existiendo las instancias
{que eran sus “partes”
Las agregaciones se representan mediante un rombo en la parte del objeto agregado, para distinguirlo de
los objetos “mis pequeiios” que contiene. Por ejemplo, puede considerarse que un Grupo de Trabajo es
‘un agregado de sus miembros, lo cual no implica que cuando el grupo se disuelva, las instancias que
@©.O9
Introduccion al Lenguaje de Modelado Unfieado (UML) de FUOC esti sujeta a una
licencia de Reconocimiento-Compartirlgual 3.0 Espafa de Creative Commonslnvosusin lengua de Modelo Untcado (UML)
sadez2
representan a sus miembros deban climinarse también, Nétese que las estructuras de objetos resultantes
som en general un grafo dirigide acielico,
-embros
(GrupobeTrabaioio> [Persona
La composicion es un tipo de agregacién mis especifico en el cual se requiere que una instancia de la
clase que representa a las partes esté asociada como mucho con una de las inslancias que representan el
todo" (n6tese que no puede haber multplicidad “muchos” en el extremo del agregado). De esta manera,
cLobjeto compuesto gestiona sus partes en exclusiva. Por lo general, la estructura de objetos resullantes eS
siempre un érbol. Un ejemplo tipico es un procesador de textos que estructure los documentos en paginas,
yy éstas en parrafos. La notacién en UML es utilizar un rombo relleno enc! lado de la clase que representa
al“todo".
Documento Paina Pirate
Finermr a oe mene
[roar eopiat) reopien)
(tro ejemplo clacadres el do un Directorio y las entradas de drecoio que contine (Fehrs, ctos decors
‘ue se deben elimina cuando so elena el rector. Por oo lao, un fhe esta en un solo decir (aunque los
‘erlaces simbobios pueden hacer parecer que esto rose cumple, intrnaments e as ens sistemas operative)
Inviameos letra realizar e modelo come ecco
En Java, las composiciones se implementan con las mismas técnicas que las asociaciones, con la salvedad
de que en la composicién la gestiin de la memoria de las “partes” debe obligatoriamente ser
responsabilidad de la clase agregada. En Java, esto significa que el documento guardara referencias sus
piiginas en exclusiva, es decir, no las cederi a otros objelos, y deberd prover mecanismos para la
creacidn y el borrado de paginas, Nétese que en Java el borrado solo requiere “perder” Ia referencia, ya
{que si borramos una pigina de este modo, el recoleetor de basura la eliminani y a su ver eliminard las
instaneias de los pérrafos contenidos en la pigina, puesto que ninguna otra instancia podia contener
referencias a esos plirrafos. Por ello, se dice que los ciclos de vida de las “partes” estén supeditados al
ciclo de vida del “todo”,
Las composiciones implican la propagacién a las “partes” de las invocaciones alas operaciones sobre el
“todo”. Siguiendo el ejemplo anterior, si pedimos que se copie o imprima un documento, el documento
hari copia © mandari imprimir a sus paginas y a su vez, las paginas harin lo mismo con los parrafos que
contienen
3.1.7. Relaciones de Dependencia 0 Uso
‘Una dependencia entre clases denota una relacién de uso entre las mismas. Esto quiere decir que si la
clase de la que se depende cambia, es posible que se tengan que introducir cambios en la clase
dependiente. Por ejemplo, cuando un método de Ia clase A tiene como parimetro un objeto de la clase B,
decimos que A depend de B, usa sus servicios,
Por ejemplo, si tenemos una elase Impresara que tiene una operacidn imprimir que toma como parimetro
luna instancia de la clase Documenta, diremos que Impresora depende de Documenta, Nétese que las
‘impresoras no mantienen enlaces con los documentos que imprimen, slo los procesan con la operacién
correspondiente, pero después de cada llamada a imprimir, no “recuerdan” los documentos que
imprimieron. Se dice que este es el tipo de relacién entre clases “ms débil”, y como recomendacién
‘general, silo deberia mostrarse en los diagramas cuando aporten alguna informacion importante,
OO
ligencia de Reco
Introduccion al Lenguaje de Modelado Unificado (UML) de FUOC esta sujeta a una
imiento-Compartrigual 3.0 Espata de Creative Commonslnvosusin lengua de Modelo Untcado (UML)
T8022
Documente
Impresora
|robtenercapacorat|
[Finpriniind Bosman} MobtenerCuerpo0
ae obtenerPe(.
Imaginemos que Ia clase impresora invoea a las tres operaciones de Ia instancia de Documento para
imprimirlo. Pues bien, si por ejemplo, climinamos Ia operacién “oblenerPie” (0 cambiamos los
pparimetros o el tipo de retorno de alguna de las operaciones de Documento), habri que cambiar la
‘mplementacig de imprimie,
Las dependencias no se reflejan en ningin elemento especitico de Fava, solo que la clase dependiente hard
referencia a la clase de la que depende en alain punto (variable local, parimetro), y por tanto suele ser
habitual encontrar declaraciones Inport de las clases de las que se depende.
[Notese que toda relacidn de asociacién implica ldgicamente una relacién de dependencia (una para cada
‘uno de los sentidos de la asociacidn), pero no al contratio. Recondemos que una relacién de asoviaeién
‘implica enlaces entre la clases que partcipan en la asociaeidn: esto no es necesario en una dependencia,
3.2. Relaciones de generalizacion
La generalizacién es una relaciéa taxondmica entre una clase mis general (denominada superclase o clase
padre) y una clase mais espectfica (denominada subelase o clase hija). Lo fundamental de esta relaciones
fe que tienen que rellejar relaciones “es un tipo de", es decir, las instancias de la subelase son un tipo
especifico de instancias de la clase padre, De ello se deriva una propiedad importante: los abjetos de la
clase hija pueden emplearse en cualquier lugar en que se requiera una instancia de la clase padre, pero n0
Ia inversa, La subclase hereda las propiedades, el comportamiento y las relaciones de la superclase, a la
‘vex que puede aftadie sus propias propiedades, relaciones y comportamient.
[Nétese que la relacién de herencia es transitiva “de abajo hacia arriba
ces un tipo de A, entonces C es un tipo de A,
os decir, si C es un tipo de By B
En UML la relacién de generalizacién se representa mediante una linea sélida que une superclase y
subelase. Ademas, esta linea sélida ineompora una Mecha eon punta triangular que queda localizada al lado
de la superclase, "Un conjunto de clases relacionadas entre si mediante relaciones de generalizacion
consttuye una jerarquia de herencia que puede ser un grafo 6 un rbol dependiendo, respectivamente, de
siexiste 0 no hereneia miltiple
Ejemplo, Cuenta Bancarias:Relacion de generalzacion
amos a extender a ase CuentaBancaraantaior para soportar dos nuevos tps de cuentas (una vez més, es un earpo no
realsta, sto con propésts dds)
1 Cuenas a plazo fo, an as cual i a esta una rtd de dnero sa produce una penazain ear impo etad
(par smplcided no consideramos la fecha de vencimiento) En estas cuentas, l sao nunca puede ser negate.
2 Cuenas con crédito tao, on las uses no se perme n rivel de imeres roos'suprir a un espeicado al abril
cuts,
En amos casos rodefniremes la cperacén rtrd la clase CuerlaBancara y aadeemes el ctdgo necesati pare cub los
requis de fe ruevos poe de cuenas.
[e
(CuentaCreditoLimitado ‘GuentaPlazoFiio
TiitaCredia fost [penatzacion foal
Fretran Pretrar
(Con esta nueva extension, podiamos consderar abstract la clase CuentaBancaria (si es que en muestra entidad banca
imaginanianuest ended banca sto constere dos tpos de cuenias) En el agrama anieror hemos mercado la dase
‘CuenaBancata come abstacta, lo que se vsuslza ¢ UML con ol nombre def clase en cursive (eunque no lo mosranecs aq,
Introduccion al Lenguaje de Modelado Unificado (UML) de FUOC esta sujeta a una
livenvia de Reconocimiento-Compartrigual 3.0 Espafa de Creative Commonslnvosusin lengua de Modelo Untcado (UML)
sade
a cursive oe utitza también para dferenciarlos modes strato en UML), Para cambirlamplementcién en Jove ani,
bastaris con poner el eualfondr aio act ants de la palabra case cL
dio correspondents la subclase CuentPlazoFjo es el siete (el de a clase CueriaCreicLniado se dei coo
rec let,
public class cuentaPlazorije extends cuentasanc
at
(n+ porcentaye de penalizacton en retizadae */
private float penalizacions
a
"crea una cuenta a plazo fijo indicand
¢)Bbstam petallzacion porcentaye entre 0 y i de penaltzacton
public CusntaPlazoFijo(String munero, float ealdoratcial,
Float penalizacion)(
super (mumero, ealdotnicial) +
Ehie-penaiizacion = penalizacion:
'
rl
“"Redefinicion de rotirar para inponer una penalizacion
+ gia cantidad retirada.
“
public void retirar(float cantidad) throvs Saldotiesultantenovermitido {
BE (saldo ~ cantidad ~ cantidadpenalizacion >=0 ){
Saldo == cantidad * penalizacion;
ese
Throw new SaldotesultanteNovermitido(}
4. Otros Elementos de Modelado
4.1. Interfaces
‘Una interfaz en UML es la especificacin de un conjunto de operaciones relacionadas que describen un
servicio que puede implementar una clase (0 un componente, aunque no Io vemos aqui). Fl uso de
interfuees permite separar la implementacién de las especficaciones, y por tanto es un concepto de diseno
orientado a objetos muy importante. El esfuerzo de recopilacién de conocimiento en diseBo orientado a
‘objetos -véase el primer eapitulo de (Gamma 1995)- se fundamenta en un uso intensivo de las interfaces.
Las interfaces en UML se representan como clases estereotipadas con el estereatipo <