Sunteți pe pagina 1din 12

GUIA 5 DE UML Diagrama de Clases

Este diagrama sirve para visualizar las relaciones entre las clases que involucran el sistema, las cuales pueden ser asociativas, de herencia, de uso y de contenido. Se utiliza cuando necesitamos realizar un Anlisis de Dominio: El analista se entrevista con el cliente con el objetivo de conocer las entidades principales en el dominio del cliente. Durante la conversacin entre el cliente y el analista se deben tomar apuntes. Desde estos apuntes, se buscarn las clases para los objetos del modelo buscando los sustantivos (ej: proveedor, pedido, factura, etc.) y convirtindolos en clases. Despus se ver que algunos de estos sustantivos pueden ser atributos de otros en vez de entidades por si mismas. Tambin se buscarn los mtodos para estas clases buscando los verbos (ej: Calcular, imprimir, Agregar,..)

Elementos
Un diagrama de clases esta compuesto por los siguientes elementos: Clase: atributos, mtodos y visibilidad. Relaciones: Herencia, Asociacin, Ensamblado y Uso.

Clase
Es la unidad bsica que encapsula toda la informacin de un Objeto (un objeto es una instancia de una clase). A travs de ella podemos modelar el entorno en estudio (una Casa, un Auto, una Cuenta Corriente, etc.).

En UML, una clase es representada por un rectngulo que posee tres divisiones: En donde: Superior: Contiene el nombre de la Clase Intermedio: Contiene los atributos (o variables de instancia) que caracterizan a la Clase (pueden ser private, protected o public).

Inferior: Contiene los mtodos u operaciones, los cuales son la forma como interacta el objeto con su entorno (dependiendo de la visibilidad: private, protected o public).

Ejemplo: Una Cuenta Corriente que posee como caracterstica: Balance Puede realizar las operaciones de: Depositar Girar y Balance

El diseo asociado es:

Atributos
Un atributo representa alguna propiedad de la clase que se encuentra en todas las instancias de la clase. Los atributos pueden representarse solo mostrando su nombre, mostrando su nombre y su tipo, e incluso su valor por defecto. Los atributos o caractersticas de una Clase pueden ser de tres tipos, los que definen el grado de comunicacin y visibilidad de ellos con el entorno, estos son:

public : Indica que el atributo ser visible tanto dentro como fuera de la clase, es decir, es accesible desde todos lados.

private : Indica que el atributo slo ser accesible desde dentro de la clase (slo sus mtodos lo pueden accesar).

protected : Indica que el atributo no ser accesible desde fuera de la clase, pero si podr ser accesado por mtodos de la clase adems de las subclases que se deriven (ver herencia).

Los atributos definen la estructura de una clase y de sus correspondientes objetos. El atributo define el valor de un dato para todos los objetos pertenecientes a una clase. Ejemplo: Nombre, edad, peso, son atributos de la clase persona. Color, precio, modelo, son atributos de la clase automvil. Los atributos corresponden a sustantivos y sus valores pueden ser sustantivos o adjetivos. Ejemplo: Nombre, edad, color, son sustantivos. Juan, 24, son sustantivos, y verde es un adjetivo. Se debe definir un valor para cada atributo de una clase. Los valores pueden ser iguales o distintos en los diferentes objetos. No se puede dar un valor en un objeto si no existe un atributo correspondiente en la clase. Ejemplo: el valor del atributo edad puede ser "24" para los objetos Juan Prez y Mara Lpez, y "15" para Ramn Martnez. Dentro de una clase, los nombre de los atributos deben ser nicos (aunque puede aparecer el mismo nombre de atributo en diferentes clases). Ejemplo: Las clases persona y compaa pueden tener ambas un atributo direccin, en cambio no pueden existir dos atributos llamados direccin dentro de la clase persona. Los atributos no tienen ninguna identidad, al contrario de los objetos. Ejemplo: Los atributos nombre y edad de la clase persona tienen valores simples. El valor para nombre puede ser "Juan" o "Mara", mientras que el valor para edad puede ser "17" o "25". (Ntese que pudieran existir dos objetos distintos con exactamente el mismo nombre y edad, donde estos identificaran dos personas distintas.) Un atributo como se ha definido en esta seccin se conoce tambin como atributo bsico.

Notacin extendida

Diagrama de clases, para la clase Persona, conteniendo diferente nivel de detalle.

Mtodos
Un mtodo u operacin es la implementacin de un servicio de la clase, que muestra un comportamiento comn a todos los objetos. En resumen es una funcin que le indica a las instancias de la clase que hagan algo. Las operaciones son funciones o transformaciones que se aplican a todos los objetos de una clase particular. La operacin puede ser una accin ejecutada por el objeto o sobre el objeto. Ejemplo: Arrojar, atrapar, inflar, y patear, son operaciones para la clase pelota. Abrir, cerrar, ocultar, y dibujar, son operaciones para la clase ventana. Las operaciones deben ser nicas dentro de una misma clases, aunque no necesariamente para diferentes clases. Ejemplo: Las clases pelota y libro pueden las dos tener operaciones de comprar, pero no pueden tener cada una dos operaciones comprar. No se debe utilizar el mismo nombre para operaciones que tengan un significado totalmente diferente. Ejemplo: No se debe utilizar el mismo nombre invertir para la operacin de invertir una figura y para la operacin de invertir una matriz, ya que son operaciones totalmente diferentes. Invertir una figura es rotarla por 180 grados, mientras que invertir una matriz M es encontrar su inverso N, para que MxN = 1. Se deben usar nombres diferentes, como invertir-figura e invertir-matriz. Las operaciones pueden tener argumentos, o sea, una lista de parmetros, cada uno con un tipo, y pueden tambin devolver resultados, cada uno con un tipo.

Ejemplo: En la siguiente figura se muestra dos clases, Figura y Archivo, conteniendo atributos y operaciones. Mover y Rotar son operaciones de Figura conteniendo los argumentos V de tipo vector y Angulo, respectivamente. Ambas operaciones devuelven un resultado de tipo Booleano el cual devuelve un valor de Cierto o Falso (True o False). Imprimir es una operacin de Archivo conteniendo un argumento D de tipo dispositivo que puede ser el nombre de una impresora, y el nmero N de copias a imprimir. El resultado puede ser un valor booleano.

Los mtodos u operaciones de una clase son la forma en como sta interacta con su entorno, stos pueden tener las caractersticas:

public : Indica que el mtodo ser visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados.

private : Indica que el mtodo slo ser accesible desde dentro de la clase (slo otros mtodos de la clase lo pueden accesar).

protected : Indica que el mtodo no ser accesible desde fuera de la clase, pero si podr ser accesado por mtodos de la clase adems de mtodos de las subclases que se deriven (ver herencia).

Relaciones entre Clases


Existen tres relaciones diferentes entre clases, Dependencias, Generalizacin y Asociacin. En las relaciones se habla de una clase destino y de una clase origen. La origen es desde la que se realiza la accin de relacionar. Es decir desde la que parte la flecha, la destino es la que recibe la flecha. Ahora ya definido el concepto de Clase, es necesario explicar como se pueden interrelacionar dos o ms clases (cada uno con caractersticas y objetivos diferentes). Antes es necesario explicar el concepto de cardinalidad de relaciones: En UML, la cardinalidad de las relaciones indica el grado y nivel de dependencia, es decir especifica cuantas instancias de una clase se pueden relacionar a una sola instancia de otra clase.

Se anotan en cada extremo de la relacin y stas pueden ser: uno-uno uno-muchos(1...*) muchos-muchos(* *) opcional (0..1 ) nmero fijo: m (m denota el nmero).

Diagrama de clases describiendo una multiplicidad de "uno-uno".

Diagrama de clases describiendo una multiplicidad de "uno-muchos".

Diagrama de clases describiendo una multiplicidad de "muchos-muchos".

La notacin para representar una relacin opcional, donde la multiplicidad es "uno" o "cero", escribiendo una relacin opcional, 0 o 1. Esto significa que dos objetos pueden o no estar conectados, y si lo estn corresponden a una multiplicidad de 1.

Diagrama de clases describiendo una multiplicidad "opcional".

Herencia (Especializacin/Generalizacin)
Las clases con atributos y operaciones comunes se pueden organizar de forma jerrquica, mediante la herencia. La herencia es una abstraccin importante para compartir similitudes entre clases, donde todos los atributos y operaciones comunes a varias clases se pueden compartir por medio de la superclase, una clase ms general. Las clases ms refinadas se conocen como las subclases.

Ejemplo: Las Impresoras Lser, de Burbuja, y de Matriz, son todas subclases de la superclase Impresora. Los atributos generales de una Impresora son el Modelo, Velocidad, y Resolucin, mientras que sus operaciones son Imprimir y Alimentar. La Herencia es til para el modelo conceptual al igual que para la implementacin. Como modelo conceptual da buena estructuracin a las clases. Como modelo de implementacin es un buen vehculo para no replicar innecesariamente el cdigo. Generalizacin define una relacin entre una clase ms generalizada, y una o ms versiones refinadas de ella. Ejemplo: La clase Impresora es una generalizacin de las clases Impresoras Lser, de Burbuja, y de Matriz. Especializacin define una relacin entre una clase ms general, y una o ms versiones especializadas de ella. Ejemplo: Impresoras Lser, de Burbuja, y de Matriz, son todas especializaciones de Impresoras.

En la figura se especifica que Auto y Camioneta heredan de Vehculo, es decir, Auto posee las Caractersticas de Vehculo (Precio, VelMax, etc) adems posee algo particular que es Descapotable, en cambio Camioneta tambin hereda las caractersticas de Vehculo (Precio, VelMax, etc) pero posee como particularidad propia Tara y Carga. Cabe destacar que fuera de este entorno, lo nico "visible" es el mtodo Caractersticas aplicable a instancias de Vehculo, Auto y Camioneta, pues tiene definicin publica, en cambio atributos como Descapotable no son visibles por ser privados.

(Los nombres de atributos y operaciones deben ser nicos en la jerarqua de herencia.) Ejemplo: Una Impresora de Burbuja Porttil incorpora todas las caractersticas, primero de una Impresora, y luego de una Impresora de Burbuja, conteniendo valores para todos los atributos ancestrales y pudindose aplicar todas las operaciones ancestrales. La generalizacin se puede extender a mltiples niveles de jerarquas, donde una clase hereda de su superclase, que a su vez hereda de otra superclase, hacia arriba en la jerarqua. En otras palabras, las relaciones entre subclases y superclases son relativas. La herencia define una jerarqua de clases donde existen ancestros y descendientes, que pueden ser directos o no. Ejemplo: Un Barco tiene un Nombre, Fabricante, y Costo. Tipos especiales de Barco, como Velero, tienen adems de estas caractersticas bsicas, un Nmero de Velas, mientras que otro tipo especial de Barco, como Barco a Motor, tiene un Motor. Barco es la clase bsica (la superclase) mientras que Velero y Barco a Motor son las clases refinadas (las subclases). Se debe definir las caractersticas bsicas de los barcos una sola vez, y luego aadir detalles para veleros, barcos a motor, etc.

Diagrama de clases describiendo diferentes tipos de Mueble, Asiento y Mesa, con sus respectivas subclases.

Ejemplo: Una jerarqua conteniendo una superclase Mueble, y varias subclases Mesa y Asiento, puede ser extendida con nuevas subclases, como Mesa Circular, Mesa Rectangular, mientras que un Asiento puede extenderse con las subclases Silla, Silln, y Taburete. Cada clase tiene sus propios atributos los cuales se van especializando a medida que las clases son cada vez ms especializadas. Ntese que no necesariamente todas las clases tienen que incluir atributos.

Asociacin
La relacin entre clases conocida como Asociacin, permite asociar objetos que colaboran entre si. Una asociacin describe la relacin entre clases de objetos, y describe posibles ligas, donde una liga es una instancia de una asociacin, al igual que un objeto es una instancia de una clase.

Diagrama de clases conteniendo la asociacin estudia-en entre Estudiante y Universidad.

Ejemplo:

Un cliente puede tener asociadas muchas Ordenes de Compra, en cambio una orden de compra solo puede tener asociado un cliente.

Grado de la Asociacin
El grado de una asociacin se determina por el nmero de clases conectadas por la misma asociacin. Las asociaciones pueden ser binarias, ternarias, o de mayor grado. Las asociaciones se consideran binarias si relacionan solo dos clases. Las asociaciones pueden ser de mayor grado si relacionan a la misma vez ms de dos clases. Aparte de relaciones binarias, lo ms comn son relaciones ternarias (entre tres clases), relaciones de ms alto nivel son mucho menos comunes. Mientras el grado de una relacin aumenta, su comprensin se dificulta, y se debe considerar partir las relaciones en varias relaciones binarias. Ejemplo: Puede existir una relacin ternaria entre Estudiante, Profesor, y Universidad donde "un estudiante estudia con un profesor en una universidad". El grado de las ligas corresponden al de las asociaciones.

Diagrama de clases describiendo una asociacin ternaria entre Estudiante, Profesor y Universidad.

Dependencia o Instanciacin (uso):


Representa un tipo de relacin muy particular, en la que una clase es instanciada (su instanciacin es dependiente de otro objeto/clase). Es una relacin de uso, es decir una clase usa a otra, que la necesita para su cometido. Se representa con una flecha discontinua va desde la clase utilizadora a la clase utilizada. Con la dependencia mostramos que un cambio en la clase utilizada puede afectar al funcionamiento de la clase utilizadora, pero no al contrario. El uso ms particular de este tipo de relacin es para denotar la dependencia que tiene una clase de otra, como por ejemplo una aplicacin grfica que instancia una ventana (la creacin del Objeto Ventana esta condicionado a la instanciacin proveniente desde el objeto Aplicacin):

Cabe destacar que el objeto creado (en este caso la Ventana grfica) no se almacena dentro del objeto que lo crea (en este caso la Aplicacin).

Ejemplo utilizando relaciones, cardinalidad, etc.

Ejemplo: La clase Persona tiene un Nombre, Direccin, y Nmero del Seguro Social. Una persona puede trabajar en algn proyecto y ganar un salario. Una Compaa tiene un Nombre, Direccin, Nmero de Telfono, y Producto Primario. Una Compaa contrata y despide Personas. Persona y Compaa tienen una relacin "muchos-muchos". El ttulo del trabajo depende de la persona y de la compaa. Hay dos tipos de Personas: Trabajadores y Administradores. Cada Trabajador est involucrado en varios Proyectos; cada Administrador es responsable de varios proyectos. En un proyecto pueden trabajar varios trabajadores y un solo administrador. Cada proyecto tiene un Nombre, Presupuesto, y una Prioridad Interna para asegurar recursos. Adems una Compaa est compuesta de mltiples Departamentos; cada departamento dentro de una compaa se identifica de forma nica por su Nombre. Un departamento usualmente tiene un administrador. La mayora de los administradores manejan un departamento; y algunos administradores no estn asignados a ningn departamento. Cada departamento manufactura varios productos; mientras que cada producto est hecho por un solo departamento. Un producto tiene Nombre, Costo, y Peso.

El diagrama es el siguiente:

Ejercicio
Representa mediante un diagrama de clases la siguiente especificacin: Una aplicacin necesita almacenar informacin sobre empresas, sus empleados y sus clientes. Ambos se caracterizan por su nombre y edad. Los empleados tienen un sueldo bruto, los empleados que son directivos tienen una categora, as como un conjunto de empleados subordinados. De los clientes adems se necesita conocer su telfono de contacto. La aplicacin necesita mostrar los datos de empleados y clientes.

S-ar putea să vă placă și