Está en la página 1de 54

Representación UML

JUAN CARLOS CONDE RAMÍREZ


OBJECT-ORIENTED PROGRAMMING I
Clases: diseño e implementación
•Una clase contiene la especificación de los datos que describen a un objeto junto con la
descripción de las acciones que un objeto conoce cómo se ejecutarán.

•Estas acciones se denominan servicios, métodos o funciones miembro.

•El termino función miembro se utiliza más en C++.

FCC-BUAP 2
Clases: diseño e implementación
•Una clase es un tipo definido por el usuario.

•Las clases son los bloques de construcción fundamentales de los programas orientados a
objetos.

•Booch denomina a una clase como:

“un conjunto de objetos que comparten una estructura y un comportamiento comunes”.

FCC-BUAP 3
Clases: diseño e implementación
•L os datos necesarios para describir los objetos creados a partir de la clase se conocen como
atributos o variables miembro.

•El termino atributo se utiliza en análisis y diseño orientado a objetos, pero el termino variable
se suele utilizar en programas orientados a objetos.

•Una clase describe el dominio de definición de un conjunto de objetos, cada objeto pertenece a
una clase.

FCC-BUAP 4
Clases: diseño e implementación
•Las características generales están contenidas dentro de la clase y las características
especializadas están contenidas en los objetos.

•Los objetos software se construyen a partir de las clases vía un proceso conocido como
instanciación.

•Por lo tanto, un objeto es una instancia (ejemplar o caso) de una clase.

FCC-BUAP 5
Clases: diseño e implementación
•Entonces, la clase define la estructura y el comportamiento (datos y código) que serán
compartidos por un conjunto de objetos.

•Una clase es una construcción lógica; un objeto tiene realidad conceptual.

•Cuando se crea una clase, es especificará el código y los datos que constituyen esa clase. De
modo general, estos elementos se llaman miembros de la clase:

◦ Variables miembro
◦ Funciones miembro

FCC-BUAP 6
Clases: diseño e implementación
•En la mayoría de las clases, las variables de instancia son manipuladas o accedidas por los
métodos definidos por esa clase.

•Por lo tanto, son los métodos los que determinan cómo se pueden utilizar los datos de la clase.

•Cada instancia de la clase (es decir cada objeto de la clase) contiene su propia copia de estos
atributos.

FCC-BUAP 7
Clases: diseño e implementación
•Por consiguiente, los datos de un objeto son únicos e independientes de los datos de otro
objeto.

•Reglas:

◦ Los métodos y variables definidos en una clase se denominan miembros de la clase.


◦ En Java las operaciones se denominan métodos.
◦ En C/C++ las operaciones se denominan funciones.
◦ En C# las operaciones se denominan métodos aunque también se admite el término función.

FCC-BUAP 8
Clases: diseño e implementación
•Dado que el propósito de una clase es encapsular complejidad, existen mecanismos para
ocultar la complejidad de la implementación dentro de la clase.

•Cada método o variable de una clase se puede señalar como público o privado.

•La interfaz pública de una clase representa todo lo que los usuarios externos de la clase
necesitan conocer o pueden conocer.

FCC-BUAP 9
Clases: diseño e implementación
•Los métodos privados y los datos privados sólo pueden accederse por el código que es miembro
de la clase.

•Por lo tanto, cualquier otro código que NO sea miembro de la clase NO puede acceder a un
método privado o variable privada.

•Dado que los miembros privados de una clase sólo pueden accederse por otras partes de su
programa a través de los métodos públicos de la clase, se puede asegurar que no sucederá
ninguna acción NO DESEADA.

FCC-BUAP 10
Clases: ejemplos
•Esto significa que la interfaz pública debe ser diseñada de manera cuidadosa para no exponer
en forma innecesaria a la clase.

•Una clase representa un conjunto de cosas o elementos que tienen un estado y un


comportamiento común.

•Ejemplo: Volkswagen, Toyota, Honda, Mercedes, BMW son todos coches que representan una
clase Coche.

FCC-BUAP 11
Clases: ejemplos
•Cada tipo especifico de coche es una instancia de una clase, o en otras palabras, un objeto.

•Los objetos son miembros de clases y una clase es, por lo tanto, una descripción de un conjunto
de objetos similares.

•Ejemplo: U2, Rolling Stones, Deep Purple, The Beatles son miembros de la clase BandasMusical,
o de la clase Musico.

FCC-BUAP 12
Clase: definición y codificación
•Antes de que un programa pueda crear objetos de cualquier clase, se debe definir la clase.

•La definición de una clase significa que a ésta se le debe dar un nombre, darle nombre a los
elementos que almacenan sus datos y describir las funciones que realizarán las acciones
consideradas en los objetos.

•Las definiciones o especificaciones no son código de programa ejecutable.

FCC-BUAP 13
Clase: definición y codificación
•Se utilizan para asignar almacenamiento a los valores de los atributos usados por el programa y
reconocer las funciones que utilizará el programa.

•Estos se sitúan en archivos diferentes de los archivos de código ejecutables, utilizando un


archivo para cada clase.

•Se conocen como archivos de cabecera que se almacenan con un nombre de archivo con
extensión .h en el caso de C++.

FCC-BUAP 14
Clase: definición y codificación
•El formato es el siguiente:

clase NombreClase

lista_de_miembros

fin_clase

◦ NombreClase : Es el nombre definido por el usuario que identifica a la clase (pueden incluir letras,
números y subrayados como cualquier identificador válido).
◦ lista_de_miembros: Funciones y datos miembros de la clase obligatorios al final de la definición.

FCC-BUAP 15
Pseudocódigo de una clase
Definición de una clase llamada Punto que contiene las coordenadas x y y de un punto en un plano.
clase Punto
// por omisión los atributos son también privados
var
privado entero: x, y // coordenadas

// por omisión los métodos también son públicos

publico entero funcion devolverX()


// devuelve el valor de x
inicio
devolver(x)
fin funcion

publico procedimiento fijarX(E entero: cx)


// establece el valor de x
inicio
x ← cx
fin procedimiento

publico entero funcion devolverY()


// devuelve el valor de y
inicio
devolver(y)
fin funcion

publico procedimiento fijarY(E entero: cy)


// establece el valor de y
inicio
y ← cy
fin procedimiento
fin_clase

FCC-BUAP 16
Clase: definición y codificación
•La definición de una clase NO reserva espacio en memoria.

•El almacenamiento se asigna cuando se crea un objeto de la clase (instancia de una clase).

•Las palabras reservadas public y private se llaman especificadores de acceso.

FCC-BUAP 17
UML: diagrama de clases
•Los diagramas de clases son los diagramas más fundamentales en UML.

•El diagrama de clases es el punto central en un desarrollo orientado a objetos.

FCC-BUAP 18
UML: diagrama de clases
•En análisis, tiene como finalidad describir la estructura de las entidades manipuladas por los
usuarios.

•En diseño, el diagrama de clases representa la estructura de un código orientado a objetos.

•Las clases y los objetos como instancias o ejemplares de ellas, son los elementos clave sobre los
que se articula la orientación a objetos.

FCC-BUAP 19
UML: diagrama de clases
•Una clase puede representar un concepto tangible y concreto, tal como un avión; puede ser
abstracto, tal como un documento, o puede ser un concepto intangible como inversión de alto
riesgo.

•UML representa una clase con una caja rectangular dividida en compartimentos, secciones o
bandas.

•Reglas para el nombre de una clase:


◦ Debe comenzar con una letra mayúscula.
◦ Estar centrado en el compartimento (banda) superior.
◦ Sea escrito en un tipo de letra (fuente) negrita.
◦ Sea escrito en cursivas cuando la clase sea abstracta.

FCC-BUAP 20
UML: ejemplos de clases
•Ejemplos de clases en UML:

◦ Cada clase se representa como un rectángulo subdividido en tres compartimentos o bandas.

◦ El primer compartimento contiene el nombre de la clase, el segundo contiene los atributos y el último
las operaciones.

FCC-BUAP 21
UML: ejemplos de clases
•Otros ejemplos de diagramas de clases en UML:

FCC-BUAP 22
Declaración de una clase
•La declaración de una clase se divide en dos partes:

◦ La especificación de una clase describe el dominio de la definición y las propiedades de las instancias de
esa clase; a la noción de un tipo le corresponde la definición en los lenguajes de programación
convencional.

◦ La implementación de una clase describe cómo se implementa la especificación y contiene los cuerpos
de las operaciones y los datos necesarios para que las funciones actúen adecuadamente.

FCC-BUAP 23
Declaración de una clase
•En los lenguajes de programación, los conceptos de tipo, descripción y módulo se integran en el
concepto de clase con mayor o menor extensión.

•En C++, la clase se implementa directamente por una construcción sintáctica que incorpora los
conceptos de tipo, descripción y módulo. La clase se puede utilizar para obtener un módulo
único añadiendo la palabra reservada static delante de todas las operaciones.

•En Java, la clase también es la integración de los conceptos de tipo, descripción y módulo.
También existe un concepto más general de módulos (el paquete) que puede contener varias
clases.

FCC-BUAP 24
Declaración de una clase
•La división entre especificación e implementación juega un papel importante en el nivel de
abstracción y en consecuencia en el encapsulamiento.

•Las características más notables se describen en la especificación, mientras que los detalles se
circunscriben a la implementación.
#include <stdafx.h>
#include <iostream.h>
class O1
{
private:

int unAtributo;
int otroAtributo;

public:
O1() { unAtributo = otroAtributo = 0; }
void yoTrabajoParaO1();
void static unMetodoEstatico();
int otroMetodo(int a);
}

FCC-BUAP 25
Relación entre Clase y Objeto
•Un objeto es la instancia de una clase, que define una representación abstracta de las entidades
del mundo real con el fin de controlarlo o simularlo.

•Un objeto es simplemente una colección de información (estado) relacionada con cierta
funcionalidad (comportamiento).

•Al igual que los objetos del mundo real que nacen, viven y mueren, los objetos de mundo del
software tienen una representación similar (ciclo de vida).

FCC-BUAP 26
Relación entre Clase y Objeto
•Proporciona una relación de encapsulamiento que asegura una fuerte cohesión interna y un
débil acoplamiento con el exterior.

•Un objeto revela su rol verdadero y su responsabilidad cuando al enviar mensajes se convierte
en parte de un escenario de comunicaciones.

•Al menos que se guarden los datos de un objeto en un disco, el objeto se pierde cuando el
programa termina; el objeto se llama transitorio, y el que se mantiene después de la conclusión
del programa se llama permanente.

FCC-BUAP 27
UML: Diagrama de Objetos
•Normalmente, se muestra el nombre del objeto seguido por el símbolo dos puntos (:) y el
nombre de la clase o su tipo. Tanto el nombre del objeto como el nombre de la clase se
subrayan.

FCC-BUAP 28
UML: Diagrama de Objetos
•La siguiente figura representa diferentes clientes de un banco y las cuentas asociadas con cada
uno de sus clientes.

•Las líneas que conectan estos objetos representan los enlaces que existen entre un cliente
determinado y sus cuentas.

FCC-BUAP 29
UML: Diagrama de Objetos
•El siguiente diagrama muestra estudiantes y profesores. La ausencia de cualquier texto
precedente delante de los dos puntos significa que estamos hablando de tipos de objetos
genéricos o anónimos de tipos Estudiante y Profesor.

•El nombre genérico se usa con mayor frecuencia, dado que no siempre es fácil encontrar un
nombre para cada objeto, y se prefiere en ocasiones en lugar del nombre individual.

•Esta característica permite nombrar los objetos con términos genéricos y evitar abreviaturas de
nombres o letras, como por ejemplo a, b, c.

FCC-BUAP 30
UML: Diagrama de Objetos
•Todos los objetos tienen tres características o propiedades fundamentales, que sirven para
definirlos de forma correcta: un estado, un comportamiento y una identidad.
OBJETO = Estado + Comportamiento + Identidad

•Estos atributos pueden ser tipos primitivos simples (enteros, reales,…), compuestos (cadenas,
complejos, …) o relaciones con otros objetos complejos.

FCC-BUAP 31
Estado: Atributos
•Un atributo se puede mostrar utilizando dos notaciones diferentes: en línea o en relaciones
entre clases.

•UML proporciona la opción para indicar información adicional para los atributos.

•Un objeto encapsula una información y un comportamiento.

FCC-BUAP 32
Estado: Atributos
•En UML, se pueden representar los tipos y valores de los atributos.

•Para indicar un tipo se utilizan dos puntos (:) que separan el nombre del atributo de su tipo.

•Para indicar el valor se utiliza el símbolo igual (=) que separan el tipo de su valor.

FCC-BUAP 33
Comportamiento: Operaciones
•Cada componente del comportamiento individual de un objeto se denomina operación.

•Una operación es algo que la clase puede realizar o que se puede hacer a una clase.

•Las operaciones de un objeto se activan como resultado de un estimulo externo representado


en la forma de un mensaje enviado a otro objeto.

FCC-BUAP 34
Comportamiento: Operaciones
•Las operaciones son las características de las clases que especifican el modo de invocar un
comportamiento específico.

•Una operación de una clase describe qué hace una clase pero no necesariamente cómo lo hace.

•UML hace una diferenciación clara entre la especificación de la manera de invocación de un


comportamiento (una operación) y la implementación real de ese comportamiento (método o
función).

FCC-BUAP 35
Comportamiento: Operaciones
•En UML, las operaciones se especifican en un diagrama de clases con una estructura compuesta
por nombre, un par de paréntesis (vacíos o con lista de parámetros que necesita la operación) y
un tipo de retorno.

•Sintaxis operaciones
1. nombre(parámetro):tipo_retorno
2. nombre( )

•Se ejemplifica esto con la clase CuentaCorriente.

FCC-BUAP 36
Comportamiento: Operaciones
•El nombre de una operación se pone en minúsculas si es una palabra; en el caso de que el
nombre conste de más de una palabra, se unen ambas y comienzan todas con las palabras
reservadas después de la primera con una letra mayúscula.

•Ejemplo, para la clase Lavadora, podemos tener las siguientes operaciones:

• aceptarRopa (r: String), aceptarDetergente (d: String),


• presionarBotonEncender(): Boolean, …

FCC-BUAP 37
Múltiples objetos
•En un diagrama de clases, se pueden representar múltiples instancias de un objeto mediante
íconos múltiples.

•Por ejemplo, si se necesita representar un lista de vuelos de AeroMéxico para su representación


en un diagrama de clases u objetos, en lugar de mostrar cada vuelo como independiente, se
puede utilizar un ícono con múltiples instancias para mostrar la lista de vuelos.

•La notación UML para representar múltiples instancias se representa en la siguiente figura.

FCC-BUAP 38
Múltiples objetos
•El estado de un objeto, evoluciona con el tiempo.

•El siguiente ejemplo, muestra la evolución de la clase Auto con un comentario explicativo de la
disminución de la gasolina del depósito debido a los kilómetros recorridos.

FCC-BUAP 39
Comportamiento: mensajes
•Las interacciones se representan utilizando diagramas en los que los objetos que interactúan se
unen a los restantes a través de líneas continuas llamadas enlaces.

•El enlace indica que un objeto conoce o ve otro objeto. Los mensajes navegan normalmente en
ambas direcciones.

FCC-BUAP 40
Comportamiento: mensajes
•En la siguiente figura se disparan una serie de interacciones, dependiendo del contenido del
mensaje.

FCC-BUAP 41
Comportamiento: mensajes
•Ejemplo: el objeto A envía el mensaje Almorzar al objeto B y el objeto B envía un mensaje Tomar
una siesta al objeto C.

•El estado y el comportamiento están enlazados, es decir, el comportamiento en momento dado


depende del estado actual y el estado puede ser modificado por el comportamiento.

FCC-BUAP 42
Comportamiento: mensajes
•El comportamiento de un objeto es el conjunto de sus operaciones.

•Reglas:
◦ De igual modo que el nombre de un atributo, el nombre de una operación se escribe en minúscula si
consta de una sola palabra.

◦ En caso de que conste de más de una palabra, se unen y se inician todas con mayúsculas, excepto la
primera.

◦ La lista de operaciones se inicia en la tercera banda del ícono de la clase y justo debajo de la línea que
separa las operaciones de los atributos.

FCC-BUAP 43
Identidad: definición
•La identidad es la propiedad que diferencia un objeto de otro objeto similar.

•Es decir, la identidad de un objeto caracteriza su propia existencia.

•Esta hace posible distinguir cualquier objeto sin ambigüedad, e independientemente de su


estado. Esto permite, la diferenciación de dos objetos con atributos idénticos.

FCC-BUAP 44
Identidad: definición
•La identidad no se presenta de manera específica en la fase de modelado de un problema.

•Cada objeto tiene en forma implícita una identidad.

•Durante la fase de implementación, la identidad se crea utilizando un identificador que viene


naturalmente del dominio del problema.

FCC-BUAP 45
Identidad: definición
•Ejemplos:

• Los autos tienen número de placa, los celulares tienen un número a donde nos pueden llamar, nosotros
tenemos un número de pasaporte o el IFE.

•El tipo identificador, llamado “clave natural”, se puede añadir a los estados del objeto con el fin
de diferenciarlos.

FCC-BUAP 46
Mensajes: definición
•El mensaje es el fundamento de una relación de comunicación que enlaza dinámicamente los
objetos que fueron separados en el proceso de descomposición de un módulo.

•En la práctica, un mensaje es una comunicación entre objetos en la que un objeto (el cliente)
solicita al otro objeto (el proveedor o servidor) hacer o ejecutar alguna acción.

FCC-BUAP 47
Mensajes: definición
•El mensaje puede ser reflexivo: un objeto se envía a sí mismo.

•La noción de una mensaje es un concepto abstracto, que se puede implementar de varias
formas (llamadas a una función, un evento o suceso directo, una interrupción, una búsqueda
dinámica, etc.).

FCC-BUAP 48
Mensajes: definición
•El mensaje combina flujos de control y flujos de datos en una única entidad.

◦ Las flechas simples indican el flujo de control y las flechas con un pequeño círculo en el origen son
flujos de datos.

FCC-BUAP 49
Mensajes: tipos
•Existen diferentes categorías de mensajes:

◦ Constructores (crean objetos).

◦ Destructores (destruyen objetos).

◦ Selectores (devuelven todo o parte del estado de un objeto).

◦ Modificadores (cambian todo o parte del estado de un objeto).

◦ Iteradores (visitan el estado de un objeto o el contenido de una estructura de datos que incluye varios
objetos).

FCC-BUAP 50
Responsabilidad y restricciones
•El ícono de la clase permite especificar otro tipo de información sobre la misma: la
responsabilidad.

•La responsabilidad es un contrato o una obligación de una clases, es una descripción de lo que
debe hacer la clase.

•Al crear una clase se está expresando que todos los objetos de esa clase tienen el mismo tipo de
estado y el mismo tipo de comportamiento.

FCC-BUAP 51
Responsabilidad y restricciones
•De forma más abstracta, estos atributos y operaciones son simplemente las características por
medio de las cuales se llevan a cabo las responsabilidades de la clase.

•Ejemplos:

◦ La clase Lavadora tiene la responsabilidad de “recibir ropa sucia como entrada y producir ropa limpia
como salida”

◦ La clase Pared de una casa es responsable de conocer la altura, anchura, grosor y color de la pared.

FCC-BUAP 52
Responsabilidad y restricciones
•Las responsabilidades se escriben en la zona inferior, debajo del área que contiene la lista de
operaciones.

•En la clase, se debe incluir información suficiente para describir un clase de forma no ambigua
(la descripción de responsabilidades de la clase es un modo informal de eliminar su
ambigüedad).

•Una restricción es un modo más formal de eliminar la ambigüedad.

FCC-BUAP 53
Responsabilidad y restricciones
•La regla que describe las restricción es encerrar entre llaves el texto con la restricción
especificada y situarla cerca del ícono de la clase.

•Ejemplo:
◦ {temperatura = 35 o 39 o 42}
◦ {capacidad = 20 o 30 o 40 kg}

•UML permite definir restricciones para hacer las definiciones más explicitas, es decir utilizando
el lenguaje OCL (Object Constraint Language, lenguaje de restricción de objetos).

FCC-BUAP 54

También podría gustarte