representación uml -...

54
Representación UML JUAN CARLOS CONDE RAMÍREZ OBJECT-ORIENTED PROGRAMMING I

Upload: doannga

Post on 20-Sep-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

Representación UMLJUAN CARLOS CONDE RAMÍREZ

OBJECT-ORIENTED PROGRAMMING I

Clases: diseño e implementación

FCC-BUAP 2

•Una clase contiene la especificación de los datos que describen a un objeto junto con ladescripció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++.

Clases: diseño e implementación

FCC-BUAP 3

•Una clase es un tipo definido por el usuario.

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

•Booch denomina a una clase como:

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

Clases: diseño e implementación

FCC-BUAP 4

•L os datos necesarios para describir los objetos creados a partir de la clase se conocen comoatributos o variables miembro.

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

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

Clases: diseño e implementación

FCC-BUAP 5

•Las características generales están contenidas dentro de la clase y las característicasespecializadas están contenidas en los objetos.

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

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

Clases: diseño e implementación

FCC-BUAP 6

•Entonces, la clase define la estructura y el comportamiento (datos y código) que seráncompartidos 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. Demodo general, estos elementos se llaman miembros de la clase:

◦ Variables miembro

◦ Funciones miembro

Clases: diseño e implementación

FCC-BUAP 7

•En la mayoría de las clases, las variables de instancia son manipuladas o accedidas por losmé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 estosatributos.

Clases: diseño e implementación

FCC-BUAP 8

•Por consiguiente, los datos de un objeto son únicos e independientes de los datos de otroobjeto.

•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.

Clases: diseño e implementación

FCC-BUAP 9

•Dado que el propósito de una clase es encapsular complejidad, existen mecanismos paraocultar 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 clasenecesitan conocer o pueden conocer.

Clases: diseño e implementación

FCC-BUAP 10

•Los métodos privados y los datos privados sólo pueden accederse por el código que es miembrode la clase.

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

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

Clases: ejemplos

FCC-BUAP 11

•Esto significa que la interfaz pública debe ser diseñada de manera cuidadosa para no exponeren forma innecesaria a la clase.

•Una clase representa un conjunto de cosas o elementos que tienen un estado y uncomportamiento común.

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

Clases: ejemplos

FCC-BUAP 12

•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 conjuntode objetos similares.

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

Clase: definición y codificación

FCC-BUAP 13

•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 loselementos que almacenan sus datos y describir las funciones que realizarán las accionesconsideradas en los objetos.

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

Clase: definición y codificación

FCC-BUAP 14

•Se utilizan para asignar almacenamiento a los valores de los atributos usados por el programa yreconocer las funciones que utilizará el programa.

•Estos se sitúan en archivos diferentes de los archivos de código ejecutables, utilizando unarchivo para cada clase.

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

Clase: definición y codificación

FCC-BUAP 15

•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.

Pseudocódigo de una clase

FCC-BUAP 16

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

Clase: definición y codificación

FCC-BUAP 17

•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.

UML: diagrama de clases

FCC-BUAP 18

•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.

UML: diagrama de clases

FCC-BUAP 19

•En análisis, tiene como finalidad describir la estructura de las entidades manipuladas por losusuarios.

•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 losque se articula la orientación a objetos.

UML: diagrama de clases

FCC-BUAP 20

•Una clase puede representar un concepto tangible y concreto, tal como un avión; puede serabstracto, tal como un documento, o puede ser un concepto intangible como inversión de altoriesgo.

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

•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.

UML: ejemplos de clases

FCC-BUAP 21

•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 últimolas operaciones.

UML: ejemplos de clases

FCC-BUAP 22

•Otros ejemplos de diagramas de clases en UML:

Declaración de una clase

FCC-BUAP 23

•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 deesa clase; a la noción de un tipo le corresponde la definición en los lenguajes de programaciónconvencional.

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

Declaración de una clase

FCC-BUAP 24

•En los lenguajes de programación, los conceptos de tipo, descripción y módulo se integran en elconcepto de clase con mayor o menor extensión.

•En C++, la clase se implementa directamente por una construcción sintáctica que incorpora losconceptos 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 variasclases.

Declaración de una clase

FCC-BUAP 25

•La división entre especificación e implementación juega un papel importante en el nivel deabstracción y en consecuencia en el encapsulamiento.

•Las características más notables se describen en la especificación, mientras que los detalles secircunscriben 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);

}

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

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

•Al igual que los objetos del mundo real que nacen, viven y mueren, los objetos de mundo delsoftware 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 undébil acoplamiento con el exterior.

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

•Al menos que se guarden los datos de un objeto en un disco, el objeto se pierde cuando elprograma termina; el objeto se llama transitorio, y el que se mantiene después de la conclusióndel 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 elnombre de la clase o su tipo. Tanto el nombre del objeto como el nombre de la clase sesubrayan.

FCC-BUAP 28

UML: Diagrama de Objetos•La siguiente figura representa diferentes clientes de un banco y las cuentas asociadas con cadauno de sus clientes.

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

FCC-BUAP 29

UML: Diagrama de Objetos•El siguiente diagrama muestra estudiantes y profesores. La ausencia de cualquier textoprecedente delante de los dos puntos significa que estamos hablando de tipos de objetosgené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 unnombre 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 denombres 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 paradefinirlos 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 relacionesentre 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 representadoen 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 uncomportamiento 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 uncomportamiento (una operación) y la implementación real de ese comportamiento (método ofunción).

FCC-BUAP 35

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

•Sintaxis operaciones1. 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 elnombre conste de más de una palabra, se unen ambas y comienzan todas con las palabrasreservadas 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ónen un diagrama de clases u objetos, en lugar de mostrar cada vuelo como independiente, sepuede 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 ladisminució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 seunen 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 enambas direcciones.

FCC-BUAP 40

Comportamiento: mensajes

FCC-BUAP 41

•En la siguiente figura se disparan una serie de interacciones, dependiendo del contenido delmensaje.

Comportamiento: mensajes

FCC-BUAP 42

•Ejemplo: el objeto A envía el mensaje Almorzar al objeto B y el objeto B envía un mensaje Tomaruna siesta al objeto C.

•El estado y el comportamiento están enlazados, es decir, el comportamiento en momento dadodepende del estado actual y el estado puede ser modificado por el comportamiento.

Comportamiento: mensajes

FCC-BUAP 43

•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 laprimera.

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

Identidad: definición

FCC-BUAP 44

•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 suestado. Esto permite, la diferenciación de dos objetos con atributos idénticos.

Identidad: definición

FCC-BUAP 45

•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 vienenaturalmente del dominio del problema.

Identidad: definición

FCC-BUAP 46

•Ejemplos:

• Los autos tienen número de placa, los celulares tienen un número a donde nos pueden llamar, nosotrostenemos 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 finde diferenciarlos.

Mensajes: definición

FCC-BUAP 47

•El mensaje es el fundamento de una relación de comunicación que enlaza dinámicamente losobjetos 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.

Mensajes: definición

FCC-BUAP 48

•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 variasformas (llamadas a una función, un evento o suceso directo, una interrupción, una búsquedadinámica, etc.).

Mensajes: definición

FCC-BUAP 49

•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 sonflujos de datos.

Mensajes: tipos

FCC-BUAP 50

•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 variosobjetos).

Responsabilidad y restricciones

FCC-BUAP 51

•El ícono de la clase permite especificar otro tipo de información sobre la misma: laresponsabilidad.

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

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

Responsabilidad y restricciones

FCC-BUAP 52

•De forma más abstracta, estos atributos y operaciones son simplemente las características pormedio 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 limpiacomo salida”

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

Responsabilidad y restricciones

FCC-BUAP 53

•Las responsabilidades se escriben en la zona inferior, debajo del área que contiene la lista deoperaciones.

•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 suambigüedad).

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

Responsabilidad y restricciones

FCC-BUAP 54

•La regla que describe las restricción es encerrar entre llaves el texto con la restricciónespecificada 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 utilizandoel lenguaje OCL (Object Constraint Language, lenguaje de restricción de objetos).