diseno

36
Programación II Ing. Mauricio Paletta, Msc Diseño Orientado a Objetos Presentación UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA INGENIERÍA EN INFORMÁTICA Programación II

Upload: karlalopezbello

Post on 03-Nov-2014

542 views

Category:

Documents


1 download

DESCRIPTION

Tecnología Orientada a Objetos - UNEG - Profesor Mauricio Paletta

TRANSCRIPT

Page 1: Diseno

Programación II

Ing. Mauricio Paletta, Msc

Diseño Orientado a Objetos

Presentación

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA

INGENIERÍA EN INFORMÁTICA

Programación II

Page 2: Diseno

Programación II

• Desarrollo detallado de la solución.

• Resultado: Problema detallado como una

preparación para la implementación /

programación.

• Preocuparse por todos los elementos

obviados en el Análisis y la visión global del

problema.

Diseño Orientado a Objetos

Page 3: Diseno

Programación II

• Preocuparse más por el modelo dinámico

(comportamiento) que por el modelo

estático (estructura).

• Productos: Diagrama detallado de clases,

diagramas de cambio de estado y

diagramas de colaboración / secuencia.

• 6 pasos a realizar.

Diseño Orientado a Objetos

Page 4: Diseno

Programación II

Paso 1: Definir la Arquitectura de la

aplicación

• Incluye:

o Diálogos / formas para la entrada / salida de datos

interacción con el usuario.

o Controlador de caso de uso: controla el proceso de un

caso de uso (prueba su satisfacción).

o Controlador de proceso (workflow): inicia, monitorea y

controla el procesamiento asociado a las secuencias

de eventos del problema.

Diseño Orientado a Objetos

Page 5: Diseno

Programación II

o Componentes del dominio: visión técnica de la

aplicación (clases).

o Interfaz con otros elementos: base de datos, otras

aplicaciones, servidores, etc.

Diseño Orientado a Objetos

Page 6: Diseno

Programación II

Paso 2: Detallar las clases

• Cada clase identificada en el análisis debe ser detallada

incorporando las responsabilidades (breve descripción

del objetivo de la clase), restricciones (limitaciones o

comentarios sobre alguno de sus elementos), atributos

y métodos.

• Por cada elemento se puede indicar también el criterio

de interfaz asociado (privado, protegido o público).

• Para cada método se puede indicar también la

descripción de los parámetros (cantidad y tipo de datos)

y el tipo de dato de retorno de la operación, si es el

caso.

Diseño Orientado a Objetos

Page 7: Diseno

Programación II

• NOTA: Mientras más detallada la clase, menos impacto

a la hora de implementar. Hay que recordar que algunas

herramientas CASE permiten la generación automática

de código.

• Sugerencias:

Diseño Orientado a Objetos

o Todos los conceptos identificados en el análisis que

no fueron considerados como clases, son posibles

atributos de alguna de las clases resultantes.

o Todos los verbos /acciones identificados en el

contexto del problema, son posibles métodos.

Page 8: Diseno

Programación II

Diseño Orientado a Objetos

o Recordar que las clases están asociadas a conceptos

de la vida real (abstracción), por lo que la

identificación de atributos y métodos debe estar

asociado al concepto de la vida real más que al

aporte que este concepto presenta en el problema a

resolver. Ayuda a la reutilización de componentes.

Page 9: Diseno

Programación II

• Contenido: Ejemplo:

Diseño Orientado a Objetos

Page 10: Diseno

Programación II

Paso 3: Desarrollar los modelos de

Estado

• Permiten describir el comportamiento de los objetos.

Ayuda a clarificar si los métodos identificados en el paso

anterior están completos (faltan algunos) y/o hay de

más (sobran algunos).

• Representan la modificación de los estados (cambios en

los atributos del objeto) como respuesta a los sucesos /

eventos y el tiempo.

Diseño Orientado a Objetos

Page 11: Diseno

Programación II

• Diagramas de cambio de estado de UML.

• En esta etapa es prudente también realizar el algoritmo

detallado de cada método. En UML se puede realizar

haciendo uso de los diagramas de actividad, aunque es

posible usar otra representación (diagrama de flujo,

pseudolenguaje, etc.). Tener presente la posible

generación automática de código.

Diseño Orientado a Objetos

Page 12: Diseno

Programación II

Paso 4: Elaborar los modelos de

Colaboración• Muestran la forma en que los objetos colaboran entre sí

(intercambio de mensajes) para satisfacer los objetivos

del problema.

• Ayudan a clarificar si la interfaz asignada para cada uno

de los métodos fue o no la correcta. No puede haber

intercambio de mensajes entre objetos si los métodos

correspondientes no son públicos.

• También permiten clarificar la completitud o no del

protocolo del objeto.

• Diagramas de colaboración y diagramas de secuencias

de UML.

Diseño Orientado a Objetos

Page 13: Diseno

Programación II

Paso 5: Identificar componentes del

dominio• Componente: Representa el elemento físico asociado a

la abstracción conceptual o clase (tabla, archivo de

datos, ejecutable, dll, documento, etc.).

• Un componente puede ser la implementación de más de

una clase.

Diseño Orientado a Objetos

Page 14: Diseno

Programación II

• Tres tipos:

o De distribución: ejecutables (dll, ActiveX, obj, lib, etc.).

o Para trabajar en el producto: usados de forma estática

para crear los anteriores (archivos de bases de datos,

de código fuente, etc.).

o De ejecución: creados de forma dinámica durante la

ejecución del sistema.

Diseño Orientado a Objetos

Page 15: Diseno

Programación II

• Ejemplo: Mecanismo de ayuda en línea de Windows

o Archivo de ayuda (.Hlp)– componente de distribución.

o Tema de contenido (.Cnt) – componente para trabajar

en el producto.

o Búsqueda de texto (.Fts) – componentes de

ejecución.

Indice general (.Gio)

• Diagrama de Componentes y Diagrama de Distribución

de UML.

Diseño Orientado a Objetos

Page 16: Diseno

Programación II

Paso 6: Prueba de componentes y

clases

• Prueba de cada caso de uso para determinar la

satisfacción de los requerimientos del problema.

• Permite identificar las operaciones y propiedades

faltantes.

• Definir pre-condiciones y pos-condiciones de las

operaciones de cada clase.

• Prueba de todas las operaciones / métodos.

Diseño Orientado a Objetos

Page 17: Diseno

Programación II

• Consta de dos paneles digitales (pantallas), uno para

mostrar la hora y el otro para mostrar los minutos

actuales. El primero muestra valores entre 0 y 23 y el

segundo entre 0 y 59.

• El usuario debe poder inicializar el reloj (colocar un

valor igual a 0 en cada panel); debe poder incrementar

el reloj tanto por minutos como por horas; poder poner

en hora el reloj a un valor

cualquiera; pedir al reloj

que muestre su valor u hora

actual.

Ejercicio: Reloj digital

Page 18: Diseno

Programación II

• Consta de dos paneles digitales (pantallas), uno para

mostrar la hora y el otro para mostrar los minutos

actuales. El primero muestra valores entre 0 y 23 y el

segundo entre 0 y 59.

• El usuario debe poder inicializar el reloj (colocar un

valor igual a 0 en cada panel); debe poder incrementar

el reloj tanto por minutos como por horas; poder poner

en hora el reloj a un valor

cualquiera; pedir al reloj

que muestre su valor u hora

actual.

Ejercicio: Reloj digital

Dígito

Segmento / Led

Page 19: Diseno

Programación II

Reloj Digital

Incrementar Hora

Incrementar Minuto

Asignar Valor

Usuario

Modificar LedModificar Dígito

Inicializar

<<include>>

<<include>>

Mostrar Hora ActualUsuario

Leer Panel

Leer Led<<include>>

<<include>>

<<include>>

Ejercicio: Reloj digital

Page 20: Diseno

Programación II

Reloj

Panel

2

Dígito2 Led7

Ejercicio: Reloj digital

Page 21: Diseno

Programación II

Ejercicio: Reloj digital

Page 22: Diseno

Programación II

PanelHora = 0

PanelMinuto = 0

PanelHora =

PanelHora + 1

PanelMinuto =

PanelMinuto + 1

PanelHora = H

PanelMinuto = M

IncrementarHoras( )

IncrementarMinutos( )

Asignar( H, M )

IncrementarHora( )

Asignar( H, M )

IncrementarMinutos( )

Inicializar( )

Inicializar( )

Asignar( H, M )

IncrementarHoras( )

Inicializar( )

IncrementarMinutos( )

Asignar( H, M )

Inicializar( )

IncrementarMinutos( )

IncrementarHoras( )

Ejercicio: Reloj digital

Page 23: Diseno

Programación II

Valor = 0 Valor = V

Clase Panel

AsignarValor( V )

AsignarValor( V )

{LímiteInferior <= V <= LímiteSuperior }

Valor = 0 Valor = VAsignarValor( V )

AsignarValor( V )Clase Dígito

Ejercicio: Reloj digital

Page 24: Diseno

Programación II

EncendidoApagado

Encender( )

Apagar( )

Apagar( ) Encender( )Clase Led

Ejercicio: Reloj digital

Page 25: Diseno

Programación II

: Usuario

: Reloj : Panel

: Dígito : Led

1: Inicializar( )

2: PanelHora.AsignarValor(0)

3: PanelMinuto.AsignarValor(0)

4: Dígitos.AsignarValor(0)

5: Leds.Encender( ) / Leds.Apagar( )

Ejercicio: Reloj digital

Page 26: Diseno

Programación II

: Usuario

: Reloj : Panel

: Dígito : Led

1: MostrarHoraActual( )

8: Hora Actual

2: ObtenerValor( )

7: Valor

3: ObtenerValor( )6: Valor

4: ObtenerEstado( )

5: Estado

Ejercicio: Reloj digital

Page 27: Diseno

Programación II

• La biblioteca maneja y puede prestar libros y revistas

que están registrados en el sistema.

• La biblioteca maneja la adquisición de nuevos títulos.

Se compran varias copias de los títulos más populares.

Libros y revistas viejos son removidos.

• Un empleado de la biblioteca interactúa con los clientes.

• Un cliente puede reservar un libro o revista que no está

disponible actualmente. La reservación se cancela

cuando el cliente retira el ítem una vez que es notificado

de su llegada o por un proceso explícito de cancelación.

• El sistema debe poder crear, modificar y eliminar

información sobre títulos, clientes, préstamos y

reservaciones.

Ejercicio: Gestión de una biblioteca

Page 28: Diseno

Programación II

Sistema Biblioteca

Cliente

Hacer Reservación

Empleado

Regresar Item

Prestar Item

Remover Reservación

<<include>>

Agregar TítuloRemover o Modificar Título

Agregar Item

Remover Item

Agregar Cliente

Remover o Modificar Cliente

EmpleadoMantenimiento

<<include>>

<<include>>

<<include>>

<<include>>

<<include>><<include>>

Ejercicio: Gestión de una biblioteca

Page 29: Diseno

Programación II

Libro Revista

Item

Préstamo

0..10..1

Referido a

Información Cliente

0..*0..*

Tiene

Reservación

0..*0..*

Tiene

Título0..*0..* Copia de

0..*

Referido a

0..*

Ejercicio: Gestión de una biblioteca

Page 30: Diseno

Programación II

Ejercicio: Gestión de una biblioteca

Page 31: Diseno

Programación II

No

reservado

Reservado

Remover ReservaciónReservar

Remover Reservación

Reservar

Clase Título

Ejercicio: Gestión de una biblioteca

Page 32: Diseno

Programación II

Caso de Uso

Agregar Título

: Empleado

: Forma

Título

: Título

: Item

1: IniciarForma( )

2: BotónAgregar( )

3: BuscarPorNombre( )

4: BuscarPorISBN( )

5: IniciarITítulo( )

6: IniciarItem( )

7: Almacenar( )

8: AgregarItem( )

9: Almacenar( )

Ejercicio: Gestión de una biblioteca

Page 33: Diseno

Programación IITECNOLOGÍA ORIENTADA A OBJETOS

: Empleado

: Forma

Préstamo

: Título : Información

Cliente

: Préstamo : Item

1: BuscarTítulo( )2:Buscar( )

3: BuscarItem( )

4: BuscarPorTítulo( )

5: IdentificarCliente( )6: Buscar( )

7: Crear( )

Caso de Uso

Prestar Item

Ejercicio: Gestión de una biblioteca

Page 34: Diseno

Programación II

: Forma Título : Título : ItemEmpleado :

Empleado

1: IniciarForma( )

2: BotónAgregar( )

3: BuscarPorNombre( )

4: BuscarPorISBN( )

5: IniciarTítulo( )

6: IniciarItem( )

7: Almacenar( )

8: AgregarItem( )

9: Almacenar( )

Caso de Uso

Agregar Título

TECNOLOGÍA ORIENTADA A OBJETOS

Ejercicio: Gestión de una biblioteca

Page 35: Diseno

Programación II

Biblioteca

Item.java Préstamo.java Información

Cliente.java

Reservación.ja

va

Título.java

Ejercicio: Gestión de una biblioteca

Page 36: Diseno

Programación II

PC con soporte de Java

Impresora

Ejercicio: Gestión de una biblioteca