Diagrama de clases

  • 4,834 views
Uploaded on

Diagrama de clases UML

Diagrama de clases UML

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
4,834
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
134
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. UML – Diagrama de clasesDaniel Santiago Diagrama de clases Representación de clases 2 Encapsulación 2 Tipos de datos 3 Firma de los métodos 3 Valores predeterminados 4 Atributos y métodos de clase 4 Atributos calculados 4 Asociaciones entre objetos 5 Cardinalidad de las asociaciones 6 Navegación 7 Clases-asociaciones 7 Restricciones sobre asociaciones 7 Información derivada 8 Objetos compuestos 8 Generalización/Especialización 9 Herencia 9 Interfaz 11 Restricciones 12 1
  • 2. UML – Diagrama de clasesDaniel SantiagoEl diagrama de clases representa los objetos de nuestro sistema informático con sus atributos,métodos y asociaciones que existen entre ellos.Representación de clasesLos objetos del sistema se representan mediante clases. Una clase está formada por sunombre, sus atributos y sus métodos, tal y como muestra la figura: El nombre de la clase se escribe en singular y con la inicial en mayúscula. Este nombre debe ser representativo de los objetos que se van a representar. Los atributos describen la estructura del objeto, y contienen información sobre éste. Cada objeto tendrá diferente información, por tanto diferentes valores en sus atributos, pero todos los objetos de una clase tendrán la misma estructura, es decir, los mismos atributos. Los métodos describen el comportamiento de los objetos. Cada método es un conjunto de instrucciones que pueden modificar los valores de los atributos, o generar algún resultado.EncapsulaciónLa encapsulación consiste en ocultar los atributos y métodos de un objeto de manera que elresto de objetos no los puedan ver. Hay veces en las que algunos atributos y métodos seutilizan de forma interna en el objeto y no deben estar expuestos a los objetos exteriores.UML ofrece las siguientes posibilidades de encapsulación, según la visibilidad del elemento, yuna representación gráfica para cada una de ellas:Privado - el elemento es visible sólo en la claseProtegido # el elemento es visible en las subclases de la claseEmpaquetado ~ el elemento es visible en las clases del mismo empaquetadoPúblico + el elemento es visible para todosLa encapsulación se representa con los símbolos del cuadro anterior precediendo el nombrede los atributos o métodos: 2
  • 3. UML – Diagrama de clasesDaniel SantiagoTipos de datosEn el diagrama de clases debemos especificar el conjunto de posibles valores que puede tomarcada atributo. Estos valores pueden ser valores numéricos, cadenas de caracteres, booleanos,o incluso otras clases de nuestro diagrama (aunque esto no es muy común ni recomendable).Representaremos los tipos de datos de los atributos de la siguiente manera:UML nos proporciona los siguientes tipos de datos primitivos: Integer: números enteros. String: texto o cadena de caracteres. Boolean: tipo de dato lógico, acepta los valores true/false. UnlimitedNatural: número positivos, de 0 a infinito.Firma de los métodosLos métodos pueden recibir parámetros y devolver un resultado. También tendremos queespecificar el tipo de datos de los parámetros y los resultados.Al conjunto formado por el nombre del método, sus parámetros con su nombre y su tipo, y eltipo de resultado se le conoce como firma del método. 3
  • 4. UML – Diagrama de clasesDaniel SantiagoEn el ejemplo anterior tenemos la firma de dos métodos: el primero recibe dos parámetros,param1 de tipo Integer y param2 de tipo String, y devuelve un resultado de tipo Integer. Elsegundo método no recibe parámetros ni genera ningún resultado.Valores predeterminadosEs posible dar valores predeterminados a los atributos y a los parámetros de los métodos.Estos valores son los que tomarán al crear el objeto. La representación es la siguiente:Atributos y métodos de claseCada objeto contiene un valor específico para cada uno de sus atributos. Por tanto, este valorno se comparte con el resto de objetos. Si queremos usar valores que sean compartidos portodos los objetos de una misma clase utilizaremos los atributos de clase.Los atributos de clase se representan igual que los atributos de los objetos, pero subrayados.No es obligatorio, pero sí muy recomendable asignar un valor predeterminado a los atributosde clase.También podemos crear métodos de clase. Estos métodos sólo manipulan los atributos declase.(*) Los atributos y métodos de clase no se heredan.Atributos calculadosEn UML podemos tener atributos cuyo valor viene determinado por el valor de otros atributos.Estos atributos se representan mediante su nombre precedidos por el signo / y van seguidosde una función que expresa cómo se calcula su valor. 4
  • 5. UML – Diagrama de clasesDaniel SantiagoAsociaciones entre objetosLas asociaciones sirven para representar los vínculos que existen entre objetos. La asociacióntiene un nombre, y se representa mediante una línea que une las dos clases vinculadas.Para señalar el sentido de lectura del nombre de la asociación con respecto al nombre de lasclases, éste puede precederse del signo < o seguirse del signo >.Los extremos de una asociación también pueden recibir un nombre, que representará lafunción que desempeñan en la asociación los objetos. En las funciones podemos especificar sutipo de encapsulamiento (pública, privada, protegida o empaquetada). Esto es así ya que lafunción la podemos entender como un atributo cuyo tipo sería la clase situada en el otroextremo de la asociación.Las siguientes asociaciones serían equivalentes:UML nos permite crear asociaciones ternarias y superiores, de la siguiente forma: 5
  • 6. UML – Diagrama de clasesDaniel SantiagoTambién podemos hacer asociaciones unarias, es decir, en las que sólo interviene una clase,que se relaciona con ella misma. Este tipo de asociación se llama reflexiva. En este tipo deasociación es preferible poner los nombres de las funciones que desempeña la clase, en lugardel nombre de la asociación.Cardinalidad de las asociacionesLas cardinalidades se ponen en los extremos de la asociación. La cardinalidad situada a laderecha indica a cuántos objetos de la clase de la derecha está vinculado un objeto de la clasede la izquierda.Las cardinalidades las podemos representar mediante un valor o con un intervalo,especificando la cardinalidad mínima y la máxima. Tenemos las siguientes opciones, con suespecificación: 0..1 Cero o una instancia 1 Una instancia * De cero a varias instancias 1..* De una a varias instancias M..N Entre M y N instancias N N instanciasSi no especificamoscardinalidad, por defecto será 1.En el ejemplo anterior, un trabajador tiene un jefe y un jefe tiene uno o varios trabajadores. 6
  • 7. UML – Diagrama de clasesDaniel SantiagoNavegaciónLas asociaciones anteriores tienen una navegabilidad bidireccional, es decir, es posibledeterminar los vínculos de la asociación desde un objeto de cada clase de origen. Pero lasasociaciones bidireccionales son más complejas de realizar para los desarrolladores, por tantoconviene evitarlas si podemos.Para representar la navegabilidad de una asociación en una dirección, ésta se representa enforma de flecha:Clases-asociacionesA veces una asociación lleva una información propia, que depende de cada relación entreobjetos concretos de las clases asociadas. En estos casos, la asociación que describe losvínculos recibe el estatus de clase y sus instancias son elementos de la asociación.Al igual que el resto de clases, estas asociaciones pueden tener atributos y métodos, inclusoasociaciones con otras clases.Restricciones sobre asociacionesA parte de la multiplicidad, es posible expresas otras restricciones sobre las asociaciones: Xor: une varias asociaciones ligadas a una misma clase básica. Una instancia de la clase básica puede participar como máximo en una de las asociaciones unidas por “xor”. 7
  • 8. UML – Diagrama de clasesDaniel Santiago Subset: indica que una asociación es un subconjunto de otra asociación.Información derivadaUn elemento (atributo o asociación) es derivado si se puede calcular a partir de otroselementos. Estos elementos derivados se incluyen cuando mejoran la claridad del modeloconceptual.La representación gráfica de un atributo derivado se hace de la siguiente forma:El texto que acompaña al gráfico se conoce como regla de derivación.A continuación vemos una asociación derivada:Objetos compuestosLa composición es un tipo especial de asociación, en la que se vincula un objeto complejo conlos objetos que lo constituyen (sus componentes).Existen dos formas de composición: Fuerte (o composición): los componentes que constituyen el objeto compuesto no pueden ser compartidos por varios objetos compuestos. La cardinalidad máxima, del lado del objeto compuesto, es uno. Si eliminamos el objeto compuesto, se eliminan automáticamente sus componentes. 8
  • 9. UML – Diagrama de clasesDaniel Santiago Débil (o agregación): los componentes pueden ser compartidos por varios compuestos. Si eliminamos el objeto compuesto, no se eliminan necesariamente sus componentes.Generalización/EspecializaciónUna clase es más específica que otra si todos los objetos que la componen son a su vez objetosde otra clase. La clase más específica es una subclase de la otra clase. Esta última, más general,recibe el nombre de superclase.En el ejemplo anterior, Persona es la superclase, que generaliza a las subclases Estudiante yProfesor. Por otro lado, estas dos últimas clases especializan a la superclase Persona. Todas lasinstancias de Estudiante y Profesor son a su vez instancias de Persona.HerenciaComo se ha dicho, las instancias de una clase son también instancias de su superclase. Porconsiguiente, heredan los atributos y métodos definidos en la superclase, además de losatributos y métodos introducidos en la clase.Como se apuntó en el apartado “Atributos y métodos de clase”, las subclases no heredan losatributos y métodos de clase que pueda tener la superclase. 9
  • 10. UML – Diagrama de clasesDaniel SantiagoEn el ejemplo, un estudiante tiene un número de expediente y un método estudiar, peroademás tiene un dni y un nombre, y los métodos nacer y comer. El estudiante hereda losatributos y métodos de la persona. Con el profesor pasa lo mismo.Existen cuatro tipos de herencia, las cuales UML nos permite especificar con las palabras entrellaves siguientes: {incomplete}: no todas las instancias de la superclase tienen su equivalencia en una de las subclases. {complete}: todas las instancias de la superclase tienen su equivalente en una de las subclases. {disjoint}: las subclases no tienen ninguna instancia en común. {overlapping}: las subclases pueden tener una o varias instancias en común.En el ejemplo anterior, todas las personas son hombre o mujeres (complete), pero no puedehaber una persona que sea hombre y mujer a la vez (disjoint). 10
  • 11. UML – Diagrama de clasesDaniel SantiagoEn el ejemplo anterior, no todas las personas son trabajadores o estudiantes (incomplete), ypuede haber personas que sean trabajadores y estudiantes a la vez (overlapping).Para terminar con este apartado, cabe destacar que UML admite la herencia múltiple, es decir,que una subclase herede de varias superclases. Conviene evitar estos diseños, ya que sonpocos los lenguajes de programación que soportan la herencia múltiple.InterfazUna interfaz es una clase abstracta, es decir, una clase que no tiene atributos, y sus métodosno contienen ninguna implementación. Las interfaces se utilizan para especificar los métodosde una clase. Sólo contiene las cabeceras de éstos, no su implementación.La representación gráfica de las interfaces se realiza de la siguiente manera:La interfaz programador tiene el método programar, que no está implementado. Éste seimplementará en las clases ProgramadorJava y ProgramadorCobol, cada método con unaimplementanción específica, ya que no se actuará igual un programador en Java que uno enCobol. 11
  • 12. UML – Diagrama de clasesDaniel SantiagoLas interfaces también pueden representarse de otra forma, llamada forma abreviada, aunquela más común en los diagramas de clases es la anterior, o forma expandida. La forma abreviadase suele usar en los diagramas de componentes:Las clases también pueden depender de una interfaz para realizar sus operaciones. La interfazse emplea entonces como tipo dentro de la clase (atributo, parámetro o variable local de unode los métodos).En el ejemplo anterior, para poder realizar un programa necesitamos programadores. Portanto la clase Programa depende de la interfaz Programador.La forma abreviada de representar la misma relación de dependencia de la clase Programa conla interfaz Programador se representa de la siguiente forma. 12
  • 13. UML – Diagrama de clasesDaniel SantiagoRestriccionesLas restricciones que no se pueden especificar gráficamente con la notación UML seespecifican de forma textual.La especificación textual se puede hacer con lenguaje natural, con OCL(ObjectConstraintLanguage), etc.Ejemplo de especificación de restricciones textuales: 13