You are on page 1of 22
lnvosusin lengua de Modelo Untcado (UML) 17 INTRODUCCION al Lenguaje de Modelado Unificado INTRODUCCION AL LENGUAJE DE MODELADO UNIFICADO .. 1. {QuérseL UML? 2. Clases y OmsETos: Clases, atributos y operaciones. Implementacion de tina clase UML sin relaciones en Saver Atributos y operaciones de las clases ELACIONES ENTRE CLASES. ‘Asociaciones y dependencias, ‘Asociaciones binatias Implementacidn de asociaciones en Java ‘Asociaciones binatias reflexivas El concepto de Clase de la Asociacién Aso Relaciones de Agregacién y Composicién Relaciones de Dependencia o Uso 32. Relaciones de generalizacion. 4. OTROS ELEMENTOS DE MODELADO 41. Interfaces: 42. Excepeiones 3 ee pepe rg ene 5. ESTRUCTURACION DE LAS CLASES: PAQUETES Y MULTIPLES DIAGRAMAS. 20 5.1. Dependencias entre paquetes 21 5.2. Paquetes UME.y paguetes Java. 2 6. REcuRSOS. 2 T.BINLIOGRAFIA 2 OO ligencia de Reco Introduccion al Lenguaje de Modelado Unificado (UML) de FUOC esta sujeta a una imiento-Compartrigual 3.0 Espata de Creative Commons lnvosusin lengua de Modelo Untcado (UML) 20022 1. gQué es el UML? EI “Lenguaje de Modelado Unificado” — del inglés Unified Modeling Language (UML) — un lenguaje basado en diagramas para la especificacion, visualizacién, construceién y documentacién de cualquier sistema complejo, aunque nosotros nos centraremos en el easo espevifico de sistemas sofhware Nota: cr de os aitos nls que UML s ua haitalmete es el modelad de los procsos de negocio de una ‘rgarizacion. Por ejemplo, se puede hacer in modelo de cémo funcona (cimo desarala su leber cian) l Departamento de Compras de una eterminaca empresa Por tanto, UML es un lenguaje para describir modelos. Bésicamente, un modelo es una simplificaién de la realidad que constuimos para compreader mejor el sistema que queremos desarollar. Un modelo proporciona los “planos” de un sistema, incluyendo tanto los que offeen una visién global de sistema ‘como los mis dtalados de alguna de sus parts, Para comprender el objetivo del modclado con UML, es uy itil compararlo con otas reas de ingenietia, como es la eonstruccion de eifiios © atomsvle, con sus diferentes planos y vistas: o incluso con la industria cinematogrifica, donde la tGeniea del siorsboarding (representacion de las secuensias de un pelicula con vitetas diujadas @ mano) constituye tun modelado del producto! Si bien UML es independiente de las metodologias de anilisis y diseto y de los lenguajes de programacién que se utilcen en la construccién de los sistemas soffware, es importante destacar que se ‘basa en el paradigma de la orientacion a objetos. Por tanto, es especialmente adecuado cuando se ataca Ja construecién de sistemas sofiware desde la perspectiva dela orientacion a objetos. La especificacién, visualizacin, construecién y documentacién de cualquier sistema software requiere ue el sistema pueda ser estudiado desde diferentes puntos de vista, ya que un usuario final necesita una visién diferente del sistema de la que necesita un analista o un programador. UML incorpora toda una serie de diagramas y notaciones grificas y textuales destinadas @ mostrar el sistema desde las diferentes perspeetivas, que pueden utlizarse en las diferentes fases del ciclo de desarrollo del software En este documento presentamos uno de estos puntos de vista, coneretamente el conocido como “modslado estitieo”, que se concreta en los diagramas de clases. Los diagramas de clases muestran para nosotros, pues, la estructura estitica de un sistema software (en las diferentes fases de su construccién, por ejemplo, se suele hablar de diagramas de clases “de anilisis", que posteriormente se convierten en iagramas de clases “de diseo”), Mis coneretamente, describen Tos elementos que en él existen (por ejemplo, clases), a estructura interna de estos elementos y eémo estos se interelacionan entre si. Es ‘importante destacar que no examinaremos de manera exhaustiva todos los elementos que se pueden incorporar en un diagrama de clases, sino que tinicamente estudiaremos aquellos que son de especial interés en esta asignatura, Debemos tener claro también que un diagrams de clases UML (esto es aplicable a cualquier tipo de iagrama UML) es tan s6lo una vista del modelo estitico del sistema en cuestién, esto quiere decir que ‘uns misma clase puede aparecer en varios diagramas y que podemos erear mas de un diagrama, bien si es cl nlimero de elases es elevado o bien si queremos mostrar dos o mis partes del sistema que tienen poco ‘que ver en diagramas separados, Hay que tener en cuenta que los diagramas son herramientas de ‘comunicecién con otras personas que quiz mafiana Vean nuesira trabajo, y lo importante es que la informacion sea legible a la vez.que completa, I término “estructura cstitica” esti relacionado con el hecho de que los diagramas de clases muestran todas las relaciones y datos que el sistema necesita durante su operacién. Fsta vista se eomplementaria con la “estructura dinmica", que muestra las relaciones entre los elementos teniendo en cuenta la > 9 > aunque e¢redundane con la especfenion de rome, que ya nckye la dase ala que pertenecen, ‘Compleio [pateReal: doube [pavtelmaginavia double [+Comploj(n pariReal: double. im pareimaginara double] instance» |rectPatoRealp double |ssetarteimaginai(): double [esumarin ¢: Complejo): Complejo ' [parteReal- double = 3.0 H lpartlmaginaria - double = 0.0 ‘omit - Gamal jpteroal: double = 20 arelmaginana - double Estas epresentaciones no suelen ser my uizades po si sola. Suelen enconrarse en os dagraas UML como ls dagramas de seovenia o de clases. Se conidre que un diagrama do obj 6 plement un dagtama de claces en el que elo aparecon objets. ‘undeo 2: Notas en UNL El lenguje UML permite incirnolas con informacin etal asociada a cuaqu elemento de cusluir agra (dlases, opereiones, aii, ec) para cusiuet us: desde esi elpseudocxigo de une ‘operecion 0 una estizcén del element hasta una reorenda ibiograca, pasando por nol sobre o ‘estado de aces, por ejemplo, indcsndo que es provisional y hay querevisavi, La noacén es la que se ues en siguiente ura 2 defnida an a segunda endlente de revision, 2.2. Implementacién de una clase UML sin relaciones en Java La implementacién de una clase sin relaciones en Java es un proceso bastante directo; de hecho, pricticamente todas las herramientas de modelado UML proporcionan la opeién de generar ef cédigo ‘aurométicamente a partir del diagrama de clases, dejando al programador la tarea de eseribir el cuerpo (eédigo) de los métodos Java que resultan de las operaciones. Por ejemplo, la clase Complejo anteriormente definida se traduciria a la siguiente definicin: public lass Complejo T 1 Rexibute private double parteReal private double parteInaginaria; 17 operaciones Ne double parteReal 0 , public double partetnaginaria() ( Introduccion al Lenguaje de Modelado Unificado (UML) de FUOC esta sujeta a una imiento-Compartrigual 3.0 Espata de Creative Commons lnvosusin lengua de Modelo Untcado (UML) 60022 public Complejo wumar (Complejo ©) , b ‘Merece Ia pena resaltar los siguientes aspectos del esqueleto de eédigo anterior: ‘* El modificador pub! ic aplicado a la clase indica que la clase esti disponible a las demés clases sin estricciones (si no ponemos publ ic, se restringira la disponibilidad de las clases a otras del ‘mismo paguete). ‘+ Las doclaraciones de atributos y métodos pueden aparecer en cualquier orden, aunque es recomendable que siempre se siga una misma convencidn, ‘+ En ocasiones los diagramas de clases no contienen todos los detalles, por ejemplo, se puede ‘omitir eVlos constructores,¢ incluso el tipo de los aributos. En general, hay “decisiones” que se ppueden posponer a la fase de codificacién. Dependiendo del nivel de detalle elepido, el programador que eseribe la clase Java tendri mis © menos trabajo a la hora de realizar la especificaci6n de la clase. "+ Elcddigo anterior debe ser completado con: © La implementacién de los métodos. (© Los comentarios javadoc nevesarios para la posterior generacién automética de ta documentacién (aunque en algunos de los ejemplos de este documento no los incluyamos para abreviar, es muy importante incluirlos). Hay herramientas UML que Permiten incluir estos comentarios en el propio diagrama, de modo que se pasan directamente al eddigo generado de manera automética La clase quedaria finalmente como muestra el siguiente fragmento de cédigo, tras aftadir algunos comentarios javadoc e incluir algin método adicional itil (el método costing, sobrescrito del que tiene la clase ob ject de Java, que convierte el complejo a cadena). 7 mplojo permite crear y manipular instancias que repr complojor * dauthor Miguel Angel Sicilia ntan public clase Complejo | (+ parte coal del niémoro complejo */ private double partexeal; /** parte imaginaria dol nimoro complejo */ private double parteImaginarias ie * constructor public Complejo (double parteReal, double partetnaginarLa) ( this-parteRoal = parteReal; this-partetmaginaria = partelmaginarias reales nn ndmexo complejo @ partir de d , fe * Getter para la parte real del complejo. “ public double parteReal 0 { return partokeal; , fe + Getter para la parte imaginaria del complejo. “ public double partelmaginaria() { @OO Introduccin al Lenguaje de Modelado Unificado (UML) de FUOC est sueta a una licencia de Reconocimiento-Compartirlgual 3.0 Espafa de Creative Commons lnvosusin lengua de Modelo Untcado (UML) T0022 return partoinaginariay ' i + Devuelve un nuevo objeto de 1a clase 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 una lnvosusin 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 Commons lnvosusin 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 Commons lnvosusin 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 Commons lnvosusin 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 Commons lnvosusin 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 Commons lnvosusin 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 Commons lnvosusin 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 Commons lnvosusin 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 Commons lnvosusin 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 Commons lnvosusin 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 Commons lnvosusin 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 <>, ue se muestra encima del nombre de la intrfaz Esto quer decir que son un tipo especial de oto elomento de modeado de UML (on ete caso ls intartaces se cansideren in tipo de clase, per eto qua fers del sloance de este documento) Las interfaces s6lo poseen operaciones abstractas (en cursiva). Las interfaces pueden derivar de otras, en ceuyo caso “heredan” la espeeificacién de todas sus interfaces antecesora, Las clases que implementan ta interfiz (es decir, que proveen la implementacién para todas las ‘operaciones especificadas en ella) se indican en el diagrama mediante un simbolo de generalizacién pero «on linea discontinua, Ejemplo, Cuenias Bancarias:Ullzacion de Interfaces Siguiendo nesto ejemplo anterior, consderemos shor que se requiee ne clase pam a! calclo de impuestos. Est clase neces tener en cuenta todos los productos bencas sujtos a puesto que bene el contnbuyente. En este caso, nuestra case Cacuioineenies prover un méted para que la aplcacn le indgue ls peducos del cent. Nolese que el servicio que requ esta clase es slemente pregunta la base mponble en Euros del producto, Para elo, diseSares wna inte ProtuciBancaro con un métede ata elct. As, clases de rrcuas isuras, como cuentas bancaiasycateras de fndos, Por apo, pueden imglementar esa ntraz y aparcer a la clase Ccublmpenles como PreductosBancaros, gracias al oimorismo, Esto perme queen el fturoaiadamos nuevs preduces sn més que implementa la intra, OO ligencia de Reco Introduccion al Lenguaje de Modelado Unificado (UML) de FUOC esta sujeta a una imiento-Compartrigual 3.0 Espata de Creative Commons lnvosusin lengua de Modelo Untcado (UML) sade22 “aria Caleuloimpenibies produetoBancar frgetValor) = Rost [Faraarimpontitn Prosuctobancar) a [GuentaBancaria] GarteraFondos [aetvater foal [restvacr oa En Java, ls interfaces son un consuctén sintcicaparcida las clases, pero que no permit implementa operaciones indir tibuos de instania, Aunque en casines so uizan para sina’ la herencia maple que no posee el lnguse st noes eu comeio principal. Por ejonpn la intaz PoducioBancao so cdr de a sign forma: public interface Productosancario { public float getvalor ‘las cases que implementa intra la inca en su clausula implements, come par ejemplo: public class CuentaPlazoFijo extends cuentaBancaria implements ProductoBancarto\ Tmstodes y operaciones, incluyendo 1a Implenentacion de getValor () jones son clases “estereotipadas” mediante <<: ption>. Como ya se exp, esto quire decir que son un tpo especial de oo elemento de modelado de UML (en este caso, las excepciones se corsderan un ipo de sf que a su vez es un tip de cas, peo esto queda fuera del lcance de estecocument) \Visualmente, se pueden representar igual que una clase, pero mostrando el estereotipo <> encima del nombre de la excepcién. Por ejemplo, la siguiente figura muestra una excepeién que podria parecer en nuestra aplicacién bancaria exceptions Créato Superado [antidadE e650 i Una excepein puede tener atrbutos (queen este easo se suelen llamar pardmerrs de la excepei6a) que portan mis informicién sobre por qué se ha lanzado wna determinada instancia de una exeepeién. En el ejemplo anterior, si se intenta hacer una operacién que supera el erédito asignado a una euenta, la ceantidad en la cual se supera se puede incluir como informacién adicional. Las excepeiones también pueden tener operaciones, aunque n0 es el caso de nuestro ejemplo, jemplo, Cuentas Bancaras:Excepciones Lis excepriones que puede lanzar una determina opeacén foman pate de a cabecera dea operacion ‘en muchos lengua, yen ocasones, puede resulta carfcador indica expictamente en el modo Por ‘ejemplo, siguiente cgrama ica que la operacion retrar de la clase CuentaBancaria puede lanzar instancs de a excepion Cro Superado mediante una asriacion cn el esterecipo <> ene a ‘peracin yla clase que representa excepcén gp [oeria Banca capone coor] Credo Superado —— [eanbcade e080 Fl concepto de excepcién UML es muy similar al de excepeién en Java, por ejemplo, la siguiente figura ‘muestra una parte de la jerarquia de exeepciones en Java, incluyendo una definida por nosotros mediante hrerencia OO ligencia de Reco Introduccion al Lenguaje de Modelado Unificado (UML) de FUOC esta sujeta a una imiento-Compartrigual 3.0 Espata de Creative Commons lnvosusin lengua de Modelo Untcado (UML) rade22 Tancoplons| ‘Torowable acetone Error exceptions ‘exceptions \vetuatechinetr create Superado [canicadtxces0 ri Como muestra la figura anterior, en Java las exeepeiones de nuestras aplicaciones deben derivar directa © indireetamente de Except ion, mientras que las exeepeiones de la miquina virtual ~ como por ejemplo, ‘cuando la miquina virtual se queda sin memoria — predefinidas en el lengua, derivan de Error. Por tanto, nuestra excepein se implementaria derivando de Except Lon © de alguna de sus subelases, como se esquematiza en el siguiente fragmento de eéali public clase CroditoSuperade extends Exception | int cantidadixc ‘edi toSuporado (int cantidad) ( = cantidad; ] | | | | | , | | | | | | j al menos gate string () age() y 1 5, Estructuracién de las Clases: Diagramas Los paquetes en UML son agrupaciones de elementos del modelo de nuestro sistema, iiles cuando estamos modelando problemas grandes, que pueden legar a contener cientos de clases y de otros elementos de UML. ‘Un paguete contiene un conjunto de elementos cualesquiera de! modelo (clases, relaciones, etc.) y puede contener otros paquetes, de modo que el modelo del sistema se puede estructurar en una jerarquia de paquetes anidados unos dentro de otros, formando un irbol Paquetes y Multiples La norma para agrupar en paguetes es poner juntos en el mismo paguete los elementos que estén semanticamente relacionados, Por otro lado, las propiedades generales que debe cumplir la estructuracién fen paquetes Son alcanzar el minimo acoplamiento entre paguetes (minimo niimero de dependencias entre las clases 0 elementos de diferentes paquetes) y maxima cohesién entre los elementos de un mismo paquete. Grificamente, un paquete se representa con forma de carpeta. Existen elementos notacionales adicionales para representar visibilidad dentro de los paquetes y otros elementos, pero quedan fuera del aleance de este document, jemplo, Cuentas Bancaras: Paquetes UNL En nuestro ejemplo podamcs sprupar ls cases vistas anteormente sobre cusias bancaas en un paquetedenominado ‘Cueras Baearas™ OO ligencia de Reco Introduccion al Lenguaje de Modelado Unificado (UML) de FUOC esta sujeta a una imiento-Compartrigual 3.0 Espata de Creative Commons lnvosusin lengua de Modelo Untcado (UML) rde22 a Pueden Dependencias entre paquetes defi estin contenidas en los paquetes Cuentas Bancarias: e dependencias entre paquetes que son el reflejo de las dependencias entre las clases que jemplo, Cuenta Banearas: Dependencias entre paquetes Por ejemplo, i afasimes la geton de las dectareciones de a Rena or el banco, tendremes una case DeclracionRenta que incluemes en un nuevo paquele“Gestén Hacend'= que tend una dependencia (y quiz una asocacion, per es0 no ns neesa aqui con a case CvenaBancari,indicand ia cuenta ‘en que se debe hace lertegro o pogo (dependienda de ses postvao nega) del resutado de ‘selracon ‘si a dependence ene las Gases se radu en una dependencia ent os pacustes (CueniaBancara [Decaracén Rent] 1 om (cuentas Bancarae Geeten Hacienda 5.2. Paquetes UML y paquetes Java Aunque tienen e! mismo nombre, son conceptos diferentes, ya que un paquete en UML es un agrupador de elementos del modelo, mientras que un paquete Java agrupa clases Java, que no necesatiamente tienen «que guardar una correspondencia uno a uno con los elementos del modelo. Podemos representar la estructura de las clases Java resullantes del modelo mediante un diagrama de paquetes aparte Asi, nuestro anterior diagrama podria traducirse a Ia siguiente estructuracién de paguetes en Java (siguiendo tas convenciones de nombrado de paquetes Java tipica de acuerdo al dominio de la organizacién donde se desarrola el software, en nuestro caso, las Ingenierias Téenieas en Inform ITIsy: ‘También hemos incluido el paquete de la librerias estindar java.io mostrando que ls 5,uo i bancaio. cuentas ‘2. uooitbancaro hacienda 1 eaio implementacién cen Java de las clases se haria guardando en disco la informacién mediante las bibliotecas de flujos de Java, OO ligencia de Reco jo. Cuentas Bancaras: Paquetes Introduccion al Lenguaje de Modelado Unificado (UML) de FUOC esta sujeta a una imiento-Compartrigual 3.0 Espata de Creative Commons lnvosusin lengua de Modelo Untcado (UML) nen Come ejemplo stato, la clase Declarecnfeniapodia tener la sigusne cabecea que rf de mane expiita sus dependencias(nctese que la clase CueniBencaria debe haberse decrado como [public clase par poder se vss desde ots paquetes Jaa) package es.uoc. it -bancarto-hacienda; Jinport @s.uoc, iti .bancario.cuentas.CuentaBancaria; public clase DectaracionRentat 7/ operaciones que usan CuentaBancaria y clases de Java.to 11 yPotras operaciones. 1 6. Recursos ‘Object Managment Group (OMG). Unified Modeling Language (UML), version 1.3, Document formal/00-03-01, disponible en hitp:!/www.omg ong technology/documents/formal/uml.htm 7. Bibliografia (Booch 1999) Booeh, G., Rumbaugh, J., Jacobson, I. Fl Lenguaje Unificado de Modelado, Addison Wesley, 1999, (Gamma 1995) Gamma, E., Helm, R., Johnson, R. Vlissides, J. Addison-Wesley, 1995 @©.O9 Introduccion al Lenguaje de Modelado Unfieado (UML) de FUOC esti sujeta a una licencia de Reconocimiento-Compartirlgual 3.0 Espafa de Creative Commons

You might also like