Análisis y Diseño Orientado A Objetos Con UML
Análisis y Diseño Orientado A Objetos Con UML
Análisis y Diseño Orientado A Objetos Con UML
Auditorio y Objetivos
n
Dirigido a
n
Personas con la necesidad de aprender las caractersticas y mtodos de la tecnologa de objetos, principalmente aquellas que desarrollan sistemas complejos.
Objetivos
n
Contenido
n
Introduccin
UML
Objetos y Clases
Contenido
n
Representacin grfica del escenario La aplicacin del anlisis de Casos de Uso para definir clases
en el sistema Definicin de paquetes Creacin de diagramas de clase
Relaciones
objetos
Operaciones y Atributos
Contenido
n
Herencia
Comportamiento de Objetos
Homogeneizacin Arquitectura
Mezclar clases descubiertas en diferentes Casos de Uso Discusin de la Arquitectura 4+1 Vistas
Contenido
n
Mecanismos Clave
Discusin de estrategias de mecanismos clave Designacin de clases Diseo de la interfaz de usuario Incorporacin de patrones
Diseo de relaciones
Soporte C++ para relaciones Soporte C++ para atributos y operaciones Soporte C++ para herencia
6
Contenido
n
Resumen
Lectura recomendadas Planteamiento del Problema de Nmina Solucin del Problema Nmina
nmina
Requerimientos para un sistema de nmina Elaboracin del anlisis y diseo para el problema de
Introduccin
Objetivos: Introduccin
n
Explicar la crisis del software Discutir el poder de la tecnologa de objetos Discutir dnde puede emplearse la tecnologa OO Definir anlisis y diseo Explicar el origen del UML
El Departamento de Vehculos a Motor de California invirti ms de $43 mdd en un sistema que fusionaba los Sistemas de Licencias a Conductores del estado y el Registro de Vehculos El sistema fue abandonado sin haberlo usado American Airlines realiz sin xito un esfuerzo de $165 mdd para ligar su software de reservacin de vuelos con los sistemas de reservacin de Marriott, Hilton y Budget El sistema de control de equipaje del Aeropuerto de Denver cost millones de dlares, sobretodo debido al retraso en la abertura del aeropuerto
Fallas de software reportadas por W. Wayt Gibbs en el numero de Septiembre de 1994 de la revista Scientific American
Algunos ejemplos extremos, PERO hay varios desastres similares en escala menor
10
11
12
El ciclo de vida en cascada puede retrasar la identificacin del problema No hay prueba de que el sistema funcionar, sino hasta el final del ciclo de vida El resultado, el mximo riesgo
13
Est creciendo la demanda de software de negocios Nadie entiende el sistema en su totalidad Deben mantenerse los sistemas anteriores, pero los desarrolladores de los mismos ya se han ido
14
Un paradigma nico
n n
Facilita la re-utilizacin de arquitectura y cdigo Los modelos reflejan de manera ms cercana al mundo real
Describe con mayor precisin los procesos y datos Descomposicin basada en particin natural Ms fcil de entender y mantener
Estabilidad
Ejemplo: Ventas
Orden
Objeto
Medio de entrega
16
Vendedor
Cliente
Producto
Vehiculo
Corporativo
Individual
Trailer
Tren
17
Vendedor
Cliente
Producto
Vehiculo
Corporativo
Individual
Trailer
Tren
18
19
Sistemas Inmersos
20
Cmputo Cliente/Servidor
21
En la Re-ingeniera
Software Existente
22
OOA
Desarrollo del modelo de requerimientos
OOD
Agregar decisiones de diseo y de detalle
23
Qu es UML?
n
El Lenguaje de Modelado Unificado (Unified Modeling Language, UML) es descrito en The Unified Modeling Language for Object-Oriented Development escrito por Grady Booch, Jim Rumbaugh, e Ivar Jacobson
Disponible en http:\\www.rational.com
n n n
Basado en las experiencias personales de los autores Incorpora contribuciones de otras metodologas Sometido aprobacin a la OMG por Rational Software, Microsoft, Hewlett-Packard, Oracle, Texas Instruments, MCI Systemhouse y otros
24
Entradas al UML
Booch Rumbaugh Meyer
Antes y despus de las condicioones
Jacobson Fusion
Descripcin de operaciones, Numeracin de mensajes
Harel
Mapas de estado
UML
Shlaer - Mellor Odell
Ciclos de vida de objetos Clasificacin
Embley
Clases nicas, Vista de alto-nivel
Gamma, et.al
Estructura del trabajo, patrones, notas
Wirfs-Brock
Responsabilidades
25
UML 1.1
Industrializacin
UML 1.0
Estandardizacin
Retroalimentacin
Unificacin
Fragmentacin
26
Beneficios de UML
n
Ofrece un proceso de modelado sin fallas durante el anlisis, para disear la implementacin Define una notacin expresiva y consistente
Facilita la comunicacin con otros Ayuda a sealar omisiones e inconsistencias Soporta tanto anlisis como diseo de pequeos y grandes
sistemas
27
28
29
Usted podr:
Definir un proceso de desarrollo iterativo e incremental Listar las fases, los productos y las actividades principales
para cada fase de un proceso de desarrollo iterativo e incremental
30
Desarrollo iterativo e incremental es el proceso de construir sistemas de software en pasos pequeos Beneficios
31
El ciclo de vida del software se divide en una serie de ciclos de desarrollo, donde la salida de un ciclo de desarrollo es la generacin de un producto de software Cada ciclo es una sucesin de fases
Inicio
32
Fase de Inicio
n
Propsito:
Productos requeridos:
Requerimientos esenciales para el proyecto Valoracin del riesgo inicial Un prototipo conceptual Un modelo inicial del dominio (avance de un 10% - 20%)
Productos opcionales:
33
Fase de Elaboracin
n
Propsito
Analizar el dominio del problema Establecer una base arquitectnica slida Manejar los elementos de mayor riesgo del proyecto Desarrollar un plan comprensivo que muestre como se
completar el proyecto
34
Productos
35
Fase de Construccin
n
Propsito
Productos
Una serie de ejecutables liberados Prototipos de comportamiento Resultados que aseguren calidad Documentacin del sistema y del usuario Plan de desarrollo Criterio de evaluacin para al menos la siguiente iteracin
36
Fase de Transicin
n
Propsito
Productos
Una serie de ejecutables liberados Resultados que aseguren calidad Documentacin del sistema y del usuario actualizados Anlisis postmortem del desempeo del proyecto
37
Qu es una Iteracin?
n
Una iteracin es un loop o ciclo de desarrollo que desemboca en la liberacin de un subconjunto del producto final Cada iteracin pasa a travs de todos los aspectos del desarrollo del software
Cada liberacin iterativa es una pieza totalmente documentada del sistema final
Iteracin Preliminar Iteracin de Arquitectura Iteracin de Arquitectura Iteracin de Desarrollo Iteracin de Desarrollo Iteracin de Desarrollo Iteracin de Transicin Iteracin de Transicin
38
Iteracin N
Evaluar la iteracin Revisar plan del proyecto Riesgos eliminados Revisar riesgos minimizados o nuevos
39
Planeacin de Iteraciones
n n
Identificar y asignar prioridades a los riesgos del proyecto Seleccionar un pequeo nmero de escenarios que ejemplifiquen los riesgos de mayor prioridad Los escenarios seleccionados son utilizados por: Los desarrolladores, para identificar lo que se va a
implementar en la iteracin Los evaluadores, para desarrollar planes y procedimientos de prueba para la iteracin
Al final de la iteracin Determinar los riesgos que han sido reducidos o eliminados Determinar la posibilidad de nuevos riesgos descubiertos Actualizacin del plan de iteraciones siguientes
40
I m p le m e n t a ti o n Te s t
S u p p o r ti n g A c t iv it i e s
P ro je ct M a n a g e m e n t P ro ce s s C o n fig u r a tio n
p re l im i n a r y it e ra ti o n (s ) i te ra tio n it e ra ti o n #1 # 2 . .. i te ra ti o n #n i te ra t io n ite ra t io n #n+1 # n + 2 ... i te ra t io n #m i te ra ti o n # m + 1 . ..
It e r a t io n s
41
42
43
Definir el comportamiento de un sistema Definir los casos de uso y actores Entender como documentar los casos de uso Usar un diagrama de casos de uso para mostrar los
actores, casos de uso y sus interacciones
44
45
Actor
Caso de Uso
Un caso de uso es una secuencia de acciones que un sistema desempea y que produce un resultado observable por un actor
46
Un modelo de casos de uso es una representacin de las funciones intencionales del sistema (casos de uso) y sus alrededores (actores)
El modelo de casos de uso n Se utiliza para comunicarse con los usuarios finales y expertos del dominio
Proporciona una etapa previa al desarrollo de sistemas Asegura el entendimiento mutuo de los requerimientos
n
Actores
n
Los actores no son parte del sistema, representan roles que un usuario del sistema puede ejecutar Un actor puede intercambiar informacin activamente con el sistema Un actor puede ser un recipiente pasivo de informacin Un actor puede representar a una persona, a una mquina o a otro sistema
Actor
49
Quin est interesado en cierto requerimiento? En qu parte de la organizacin se usar el sistema? Quin proveer al sistema con informacin, la usar y/o borrar? Quin usar esta funcin? Quin le dar soporte y mantenimiento al sistema? El sistema usa una fuente externa? Qu actores necesitan los casos de uso? Puede un actor desempear roles diferentes? Varios actores desempean el mismo rol?
50
n n n n n n
Instancias de Actores
Insert card
1 4 7 *
2 5 8 0
3 6 9 #
Actor
caso de uso
51
Operador
52
Sistema ATM
Cajero
53
Casos de Uso
n
Un caso de uso modela un dilogo entre actores y el sistema Un actor inicia un caso de uso para invocar cierta funcionalidad del sistema Un caso de uso es un flujo de eventos completo y significativo El conjunto de todos los casos de uso, representa todas las formas posibles de uso del sistema
Caso de Uso
54
Cules son las tareas que realiza este actor? El actor crear, almacenar, cambiar, borrar o leer informacin en el sistema? Qu caso de uso crear, almacenar, cambiar, borrar o leer esta informacin? Necesitar el actor informar al sistema sobre cambios externos repentinos? Necesitar el actor recibir informacin en relacin a ciertas ocurrencias en el sistema? El sistema proporciona al negocio el comportamiento correcto? Qu casos de uso van a darle soporte y mantenimiento al sistema? Pueden todos los requerimientos funcionales ser ejecutados por los casos de uso?
55
Declaracin de especificaciones del sistema Definicin del problema a resolver Literatura relevante al dominio Entrevistas con expertos del dominio Conocimiento personal del dominio o experiencia Sistemas Anteriores o Legados
56
Se dibuja un diagrama de casos de uso para ilustrar los casos de uso y los actores que interactan envindose estmulos el uno al otro
Ambas partes de la documentacin deben estar escritos en trminos que el cliente entienda
58
Tiene una secuencia de transacciones normal o bsica Debe tener varias secuencias alternativas de transacciones Generalmente tiene secuencias de excepcin a
transacciones que manejan situaciones errneas
59
Describe slo los eventos que pertenecen al caso de uso, y no lo que ocurren en otros casos de uso Evitar el uso de terminologa vaga como: por ejemplo, etc. e informacin El flujo de eventos deber describir:
Cmo y cundo inicia y termina el caso de uso? Cundo interacta el caso de uso con los actores? Qu informacin se intercambia entre un actor y el caso
de uso? No describe los detalles de la interfaz de usuario Describe el flujo bsico de eventos Cualquier flujo de eventos alterno
60
Clientes: aprueban lo que el sistema debe hacer Usuarios: ganan entendimiento del sistema Desarrolladores: documento de comportamiento del sistema Examinadores: examinan el flujo de eventos Analistas o Diseadores: proporciona las bases para el anlisis y diseo Evaluador: se usa como base para la prueba de requerimientos Lder de Proyecto: proporciona elementos para la planeacin de proyectos Escritor Tcnico: base para la escritura de la gua de usuario
61
n n
n n
Al inicio de cada semestre, los alumnos solicitan un catlogo que contiene la lista de los cursos que se impartirn en el semestre, en el cual se incluyen tambin datos relacionados como: profesor, departamento y pre-requisitos. El sistema nuevo deber permitir que los alumnos seleccionen cuatro cursos para el semestre que inicia. Adems, cada alumno indicar dos cursos alternativos en caso de que no pueda ser asignada la primera seleccin. Los nuevos cursos tendrn un mximo de diez alumnos y un mnimo de tres. Un curso con menos de tres alumnos ser cancelado. Una vez que el proceso de inscripcin se ha completado para un alumno, el sistema de registro enva la informacin al sistema de cobros, para que el alumno pueda pagar por el semestre.
62
Los profesores deben ser capaces de ingresar al sistema para indicar que cursos van a impartir. Tambin podrn ver qu alumnos estn inscritos en sus cursos. Para cada semestre, hay un periodo en el que los alumnos pueden cambiar su horario. Los alumnos deben ser capaces de ingresar al sistema durante este tiempo para agregar o cancelar cursos.
63
Profesor
Alumno
64
Este caso de uso es iniciado por un alumno. Proporciona la capacidad para que un alumno cree, borre, modifique y/o revise un horario de curso para un semestre dado.
65
El sistema recupera (E-8) y despliega la informacin para todos los cursos a los cuales el alumno se registro: nombre del curso, nmero del curso, nmero de lugares del curso, das de la semana, hora, lugar y nmero de horas necesarias. Cuando el alumno indica que el o ella ha terminado su revisin, el Caso de Uso inicia de nuevo.
67
68
El sistema recupera (E-8) y despliega la informacin actual del horario. El sistema pide al usuario que confirme la eliminacin del horario. Si se confirma, se borra el horario del sistema. Si la eliminacin no se confirma, la operacin se cancela y el Caso de Uso inicia de nuevo. A-6 Borrar Curso: Subflujo Borrar un Curso: El alumno introduce el nmero del curso para borrarlo. El sistema pide al usuario que confirme la eliminacin del curso. Si se confirma, se borra el curso del horario del alumno. Si la eliminacin no se confirma, la operacin se cancela y el caso de uso inicia de nuevo.
69
Flujos de Excepcin
E-1: Se introdujo un nmero id de alumno invlido. El usuario puede re-introducir el nmero id o finalizar el caso de uso. E-2: Se introdujo un semestre invlido. El usuario puede reintroducir el semestre o finalizar el casos de uso. E-3: El nmero de curso no es vlido. El usuario puede reintroducir el nmero vlido o finalizar el caso de uso. E-4: Los pre-requisitos no fueron satisfechos por el usuario. Se le informa al alumno que un curso no puede ponerse en el horario y el motivo. De ser posible, se sustituye con un curso alterno. El caso de uso continua.
70
71
Escenarios secundarios
Excepciones del escenario primarios
72
John introduce el nmero id de alumno 369 52 3449 y el sistema lo valida. El sistema pregunta que a semestre desea inscribirse. John le indica al sistema el semestre actual y elige crear un horario nuevo. De una lista de cursos disponibles, John selecciona los siguientes 4 cursos primarios: English 101, Geology 110, World History 200, y College Algebra 110. Despus selecciona 2 cursos alternos: Music Theory 110 y Introduction to Java Programming 180. El sistema determina que John tiene todos los pre-requisitos necesarios y lo agrega a las listas de los cursos correspondientes. El sistema indica que la actividad esta completa. El sistema imprime el horario del alumno y enva la informacin de cobro de cuatro cursos primarios al sistema de cobros para que sea procesado.
73
Escenarios Secundarios
n
74
El alumno no seleccion los 4 cursos primarios Algn curso primario no esta disponible Los cursos primarios y secundarios no estn
disponibles
No se puede agregar el alumno a la lista de un curso No se puede crear el horario del alumno
75
Respuesta sencilla: tantos como se necesiten para entender el desarrollo del sistema Sugerencia:
n
Escenarios Primarios
Dedicar aproximadamente el 80% del tiempo a estos escenarios
Escenarios Secundarios
Elaborar algunos de los escenarios secundarios interesantes y de alto riesgo
76
Dibujar un diagrama de casos de uso Escribir una definicin para cada actor Para un caso de uso
Escribir una breve descripcin (dos sentencias mximo) Escribir el flujo de eventos Listar algunos escenarios posibles
77
78
Objetos y Clases
79
Usted podr: Definir y dar ejemplos de objetos Definir y dar ejemplos de clases Describir las relaciones entre clases y objetos Definir estereotipos
80
Qu es un objeto?
n
Entidad fsica
Trailer
Entidad conceptual
Proceso Qumico
Entidad de software
Lista Ligada
81
Un objeto es un concepto, abstraccin, o cosa con lmites bien definidos y significado para una aplicacin
82
El estado de un objeto es una de las condiciones posibles en las que un objeto puede existir El estado de un objeto normalmente cambia con el paso del tiempo El estado de un objeto generalmente se implementa por una serie de propiedades (llamadas atributos), con los valores de las propiedades, ms las relaciones que el objeto pueda tener con otros objetos
a + b = 10 Nombre: Empleado ID: Fecha de contrato: Estado: Joyce Clark 567138 March 21, 1987 Tenured
Profesora Clark
83
El comportamiento determina como acta y responde un objeto El comportamiento define como responde un objeto a peticiones de otros objetos El comportamiento visible de un objeto se modela por un conjunto de mensajes a los que puede responder (las operaciones que el objeto puede desempear)
a + b = 10
84
85
Hay varios objetos identificados en cualquier dominio Una clase es una descripcin de un grupo de objetos con propiedades comunes (atributos), comportamiento comn (operaciones), relaciones comunes con otros objetos (asociaciones y agregaciones) y semnticas comunes.
n
Ejemplo de Clase
Clase Curso
Estructura Nombre Ubicacin Das ofrecidos Horas de crditos Hora inicio Hora trmino Comportamiento Agregar un alumno Borrar un alumno Obtener catlogo de cursos Determinar si est lleno
a + b = 10
87
Clases de Objetos
n
88
Profesor
Profesor Mellon
Profesor Smith
Clase
Profesor Jones
89
Una clase debe capturar una y solo una llave de abstraccin Mala abstraccin: la clase Alumno sabe la informacin del alumno y su horario para el semestre actual Buena abstraccin: Separar las clases en una para alumno y otra para Horario del alumno
90
El nombre de una clase debe ser un nombre en singular que caracterice de la mejor forma a la abstraccin
La dificultad al nombrar a una clase puede indicar que una abstraccin est pobremente definida
91
Una gua de estilo debe dictar convenciones de nombres para clases Ejemplo de Gua de Estilo
n n n
Las clases se nombran usando sustantivos en singular Los nombres de clases empiezan con una letra mayscula No se usan palabras subrayadas
Los nombres compuestos de palabras mltiples se ponen juntas y la primera letra de cada palabra adicional se escribe en mayscula
Despus de nombrar una clase, se debe hacer una breve y concisa descripcin de la clase
93
Nombre: StudentInformation
Nombre: Course
Al ir estudiando ms el problema, se descubren clases y se Al ir estudiando ms el problema, se descubren clases y se mejoran las definiciones de las anteriores, agregndolas al mejoran las definiciones de las anteriores, agregndolas al diccionario del modelo diccionario del modelo
94
Representacin de Clases
n
a + b = 10
Professor
Profesor Clark
95
Divisiones de Clase
n
La primera seccin contiene el nombre de la clase La segunda seccin muestra la estructura (atributos) La tercera seccin muestra el comportamiento (operaciones)
La segunda y tercera seccin pueden suprimirse si no es necesario que sean visibles en el diagrama
Professor name empID create( ) save( ) delete( ) change( ) Professor name empID Professor create( ) save( ) delete( ) change( ) Professor
Professor
96
Estereotipos
n
Un estereotipo es un nuevo tipo de elemento de modelado que extiende la semntica del metamodelo Deben estar basados en tipos o clases existentes en el
metamodelo
n n
Cada clase puede tener como mximo un estereotipo Estereotipos comunes Clase Boundary Clase Entity Clase Control Clase Exception Metaclase Clase Utility Los Estereotipos se muestran en la parte donde se escribe el nombre de la clase entre << >>
97
Clases Boundary
n
Una clase boundary modela la comunicacin entre los alrededores del sistema y sus funciones internas Clases boundary tpicas Windows (interfaz de usuario) Protocolo de Comunicacin (interfaz del sistema) Interfaz de impresora Sensores En el escenario de Inscripcin a Cursos, se crea una pantalla de horario (ScheduleForm) para aceptar informacin del usuario <<boundary>> ScheduleForm
98
Una clase boundary se usa tambin para modelar una interfaz con otro sistema Las caractersticas importantes de este tipo de clases son: La informacin que va a pasarse al otro sistema El protocolo de comunicacin que se use para hablar con
el otro sistema
En el escenario Inscripcin a Cursos, la informacin debe enviarse al sistema de cobros (BillingSystem) Se crea una clase llamada BillingSystem para mantener la
interfaz del sistema externo
<<boundary>> BillingSystem
99
Clases Entity
n
Una clase entity modela informacin y comportamiento asociado que es generalmente de larga vida (persistente) Puede reflejar un fenmeno de la vida real Tambin puede necesitarse para las tareas internas del
sistema Los valores de sus atributos son proporcionados generalmente por un actor Su comportamiento es independiente de los alrededores
Clases entity en el caso de uso Inscripcin a Cursos Course <<entity>> <<entity>> Schedule CourseRoster Course Catalogue CourseRoster
<<entity>> Schedule <<entity>> Catalogue
100
Clases Control
n n
Una clase control modela el comportamiento de control especfico a uno o ms casos de uso Una clase control Crea, inicia y borra objetos controlados Controla la secuencia o coordinacin de ejecucin de
objetos controlados Controla elementos actuales para clases controladas Es, la mayor parte de las veces, la implementacin de un objeto intangible
<<control>> RegistrationManager
101
102
Interaccin de Objeto
103
104
Qu es un Diagrama de Interaccin?
n
Un diagrama de interaccin es una representacin grfica de las interacciones entre objetos Hay dos tipos de diagramas de interaccin
Diagramas de Secuencias
Un diagrama de secuencias estn ordenado de acuerdo
al tiempo
Diagramas de Colaboracin
Un diagrama de colaboracin incluyen el flujo de datos
105
Qu es un Diagrama de Secuencias?
n
Objetos con sus lneas de vida Mensajes intercambiados entre objetos en orden
secuencial
Un Diagrama de Secuencias
John : Alumno 1: introducir id 2: validar id 3: introducir semestre actual 4: crear horario nuevo 5: desplegar 6: obtener cursos forma de Inscripcin forma de horario cursos disponibles
107
Los objetos se dibujan como rectngulos con los nombres subrayados Las lneas de vida se representan con lneas de guiones descendentes
cursos disponibles Cursos : Catlogo disponibles : Catlogo
Objetos
Objetos y Clases
Clases
108
La interaccin de objetos se indica con flechas horizontales que se dirigen desde la lnea vertical que representa al objeto cliente hasta la lnea que representa al objeto proveedor
n n
Las flechas horizontales se etiquetan con un mensaje El orden en que ocurren los mensajes es indicado por la posicin vertical, con el ms cercano en la parte superior La numeracin es opcional, ya que la orden se basa en la posicin vertical
forma de horarios cursos disponibles
Obtener cursos
109
Qu es el Enfoque de Control?
n
El Enfoque de Control representa el tiempo relativo en el que el flujo de control se enfoca sobre un objeto
110
Enfoque de Control
John : Student forma de inscripcin forma de horario cursos disponibles
1: introducir id
2: validar id
5: desplegar
6: obtener cursos
111
Notas
n
forma de horario
cursos disponibles
obtener cursos
112
Para escenarios complejos, los diagramas de secuencias pueden ser mejorados mediante el uso de scripts Un script se escribe a la izquierda de un diagrama de secuencia con la secuencia de pasos alineados a las interacciones del objeto Los scripts se pueden escribir en lenguaje natural o en pseudo cdigo
113
Ejemplo de Script
forma de horario un curso
Procesa los cursos primarios y solo recurre a los cursos alternos si es necesario
obtener prerequisito
114
Diagramas de Colaboracin
n
Un diagrama de colaboracin es una forma alternativa de representar el intercambio de mensajes de un conjunto de objetos El diagrama muestra las interacciones organizadas entorno a los objetos y a sus relaciones Un diagrama de colaboracin contiene:
Objetos Ligas entre objetos (relaciones) Mensajes intercambiados entre objetos Flujo de datos entre objetos, si hay alguno
115
1: introducir id 3: introducir semestre actual registration form 4: crear nuevo horario John : Alumno 5: desplegar
forma horario
116
Ingles 101
:Curso
Objetos
Objetos y Clases
Clases
117
Una liga de interaccin en un diagrama de colaboracin se representa como una lnea que conecta iconos de objetos Una liga indica que hay una ruta de comunicacin entre objetos conectados
formaHorario : Forma
un curso : Curso
118
Anotaciones de Liga
n
Una liga de interaccin en un diagrama de colaboracin se puede anotar con: Una flecha apuntando del objeto cliente al objeto
proveedor
Notacin de Liga
Mensaje
points from client to Mensaje supplier Message
2: obtener cursos
Objeto Client object 1: obtener prerequisitos formaHorario : Forma lista curso un curso : Curso
Data return
Liga
121
Identificacin de Clases
122
Usted podr: Discutir el anlisis de casos de usos Identificar objetos y clases llevando a cabo el anlisis
casos de usos
Usar tarjetas CRC para descubrir clases Diagramar un escenario usando diagramas de
interaccin
El anlisis casos de uso es el proceso de estudiar los casos de usos para descubrir objetos y clases para el desarrollo del sistema
124
Objetos Descripcin del estado de un objeto Entidades externas y/o Actores Otros
125
Filtrado de Sustantivos
n
Varios trminos se pueden referir al mismo objeto Un trmino se puede referir a ms de un objeto El lenguaje natural es muy ambiguo
n
126
Lnea principal: Cada sustantivo debe considerarse en el contexto Lnea principal: Cada sustantivo debe considerarse en el contexto del dominio del problema -- no puede considerarse por s mismo del dominio del problema -- no puede considerarse por s mismo
127
John introduce el nmero id de alumno 369 52 3449 y el sistema valida el nmero. El sistema pregunta qu semestre. John indica el semestre actual y elige crear un horario. De una lista de cursos disponibles, John selecciona los cuatro cursos primarios English 101, Geology 110, World History 200, y College Algebra 110. Despus selecciona los cursos alternos Music Theory 110 y Introduction to Java Programming 180. El sistema determina que John tiene todos los pre-requisitos necesarios al examinar el registro del alumno y lo agrega a la lista de los cursos. El sistema indica que la actividad se ha completado. El sistema imprime el horario del alumno y enva informacin de cobro para cuatro cursos al sistema de cobro para procesarlo.
128
John Sistema Semestre Horario Geology 110 College Algebra 110 Cursos alternos Music Theory 110 Prerequisitos necesarios Horario de estudiante Informacin de cobro Cuatro cursos Sistema de cobro
n n n n n n n n n n n
Nmero de ID 369523449 Nmero Semestre actual Lista de cursos disponibles Cursos primarios English 101 Introduction to Java Programming 180 World History 200 Registro de estudiante Lista del curso Actividad
Decisiones de Filtrado
n n n n n n n n n n n n n
John -- filtrado (actor) Nmero de ID 369523449 -- filtrado (propiedad del alumno) Sistema -- filtrado (lo que se est construyendo) Nmero -- filtrado (lo mismo que el numero id del alumno) Semestre -- filtrado (estado -- cuando la seleccin aplica) Semestre actual -- filtrado (igual que el semestre) Horario -- candidato a objeto Lista de cursos disponibles -- candidato a objeto Cursos primarios -- filtrado (estado de un curso seleccionado) English 101 -- candidato a objeto Geology 110 -- candidato a objeto World History 200 -- candidato a objeto College Algebra 110 -- candidato a objeto
130
Decisiones de Filtrado
n n n n
Cursos alternos -- filtrado (estado de un curso seleccionado) Music Theory 110 -- candidato a objeto Introduction to Java Programming 180 -- candidato a objeto Prerequisitos necesarios -- filtrado (curso como otros cursos identificados) Registro de estudiante -- candidato a objeto Lista del curso -- candidato a objeto Actividad -- filtrado (Expresin en ingls) Horario de estudiante -- filtrado (igual que el nuevo horario) Informacin de cobro -- candidato a objeto Cuatro cursos -- filtrado (informacin necesitada por la informacin de cobro) Sistema de cobro -- filtrado (actor)
131
n n n n n n
Horario -- lista de cursos por semestre para un alumno Lista de cursos disponibles -- lista de todos los cursos que se imparten en un semestre English 101 -- una oferta para un semestre Geology 110 -- una oferta para un semestre World History 200 -- una oferta para un semestre College Algebra 110 -- una oferta para un semestre Music Theory 110 -- una oferta para un semestre Introduction to Java Programming 180 -- una oferta para un semestre
132
n n n n n n
Registro de estudiante -- una lista de cursos que el alumno tomo en semestres previos Lista del curso -- lista de alumnos para una oferta de curso especfica Informacin de cobro -- informacin que necesita el actor sistema de cobro
133
Creacin de Clases
n
134
Horario (Schedule) -- lista de cursos para un semestre para un alumno Catlogo (Catalogue) -- lista de todos los cursos que se imparten en un semestre Curso (Course) -- una oferta para un semestre RegistroEstudiante (StudentRecord) -- lista de cursos previamente tomados ListaCurso (CourseRoster) -- lista de alumnos para una oferta especfica de curso InformacionCobro (BillingInformation) -- informacin necesitada por el actor sistema de cobro
<<Entity>> Course <<Entity>> CourseRoster
<<Entity>> Schedule
<<Entity>> Catalogue
<<Entity>> StudentRecord
<<Entity>> BillingInformation
135
Examinar cada par: actor/escenario y crear clases boundary obvias Durante el diseo, la clase se refinar en base a los
mecanismos de la interfaz de usuario elegida
<<Boundary>> ScheduleForm
137
Prototipo de Ventana
n
Los prototipos de ventanas pueden crearse para comunicar la apariencia y percepcin de la clase boundary al usuario
138
139
140
En este nivel de anlisis, una clase control se agrega tpicamente para cada caso de uso
Sabe que hacer si no se tiene un prerequisito Pregunta si el curso est abierto Pide a Course que agregue al alumno (si el curso est
abierto)
Sabe que hacer si no estn disponibles 4 cursos Crea los objetos StudentSchedule y BillingInformation Pide al BillingSystem que enve la BillingInformation
142
<<Control>> RegistrationManager
143
Las clases tambin pueden descubrirse usando tarjetas responsabilidad-colaboracin de clases (Class-ResponsibilityCollaboration Cards, CRC)
n
El nombre y descripcin de la clase Las responsabilidades de la clase Conocimiento interno de la clase Servicios proporcionados por la clase
Los colaboradores para las responsabilidades Un colaborador es una clase cuyos servicios necesitan una responsabilidad
144
145
Un grupo de personas ejecutan un escenario Se crea una tarjeta para cada objeto en el escenario Se le asigna un grupo de tarjetas a cada participante
Los participantes actan a los escenarios definidos Se anotan responsabilidades y colaboraciones en las tarjetas
Al completar ms y ms escenarios, emergen los patrones de colaboracin Las tarjetas pueden arreglarse fsicamente para representar estas colaboraciones cerradas Esto puede ayudar a identificar jerarquas de generalizacin/especializacin o jerarquas de agregacin entre las clases Las tarjetas CRC son ms efectivas para grupos que desconocen las tcnicas OO, ya que ellos:
Evitan enfocarse a elementos OOP Evitan generalizacin prematura Fortalecen object think
147
del dominio Cada clase tiene un pequeo grupo de colaboradores No hay clases indispensables (una clase que colabora con todos necesita ser redefinida) La informacin para cada clase se ajusta bien en una tarjeta de 3X5 Las clases pueden manejar un cambio en requerimientos
Varias clases no tienen responsabilidades Una sola responsabilidad se le asigna a varias clases Todas las clases colaboran con todas las clases
148
Diagramacin de Escenarios
n
Los nombres de objetos son generales e.g., un alumno en lugar de John Los nombres de objetos pueden omitirse si no se necesitan
para la comunicacin
150
LOOP en todas 11: obtener los pre-requisitos (curso) las ofertas de 12: pre-requisitos tomados (curso) curso 13: disponible ? 14: agregar alumno 15: crear 16: imprimir (horario) 17: crear 18: enviar (informacin de cobre)
151
5: desplegar
: Schedule
17: crear 14: agregar alumno (alumno) 13: disponible ? 11: obtener pre-requisitos de cursos
: BillingSystem
: CourseOffering
: BillingInformation
: Printer
152
Qu es un Paquete?
n
Un paquete es un mecanismo de propsito general para organizar elementos en grupos El nmero de clases crecen al analizar los casos de uso y los escenarios
153
UniversityArtifacts
BusinessRules
RegistrationManager
n
Interfaces
Qu es un Diagrama de Clases?
n n
La vista lgica se hace de varios paquetes y clases Un diagrama de clases es la vista lgica de algunos (o todos) los paquetes y clases Generalmente hay varios diagramas de clase de los paquetes a alto nivel
Cada paquete posee su propio diagrama de clases principal Los diagramas de clases adicionales se agregan como sea necesario Vista de las clases participando en un escenario Vista de las clases privadas en el paquete Vista de una clase, sus atributos y operaciones Vista de una jerarqua de herencia
155
University Artifacts
156
CourseRoster
Schedule
StudentRecord
157
RegistrationForm
ScheduleForm
158
RegistrationManager
159
Cree paquetes para el modelo Coloque las clases descubiertas en paquetes Cree diagramas de clase iniciales
160
161
Relaciones
162
Objetivos: Relaciones
n
Usted podr:
Definir asociacin y representarla en diagramas de clases Usar nombres de asociacin y nombres de rol para clarificar
las asociaciones
Definir y especificar la multiplicidad de una asociacin Definir agregacin y representarla en diagramas de clases Definir y representar una asociacin reflexiva o agregada Usar clases de asociacin Definir calificadores y representarlos en diagramas de clases Descubrir relaciones a partir de los diagramas de escenario
163
La Necesidad de Relaciones
n
Todos los sistemas abarcan varias clases y objetos Los objetos contribuyen al comportamiento del sistema colaborando unos con otros
Asociacin Agregacin
164
Asociaciones
n
Esto implica que hay una liga entre objetos entre las clases
Las asociaciones se representan en diagramas de clase por una lnea que conecta las clases asociadas La informacin puede fluir en cualquier direccin o en ambas direcciones a travs de la liga
<<control>> RegistrationManager <<entity>> Course
165
Navegacin
n
<<control>> RegistrationManager
<<entity>> Course
166
Nombrando Asociaciones
n
Una asociacin se debe nombrar para esclarecer su significado El nombre se representa con una etiqueta que se pone a lo largo de la lnea de asociacin, entre los iconos de clases Un nombre de asociacin es generalmente un verbo o una frase con verbo
<<control>> RegistrationManager maneja <<entity>> Course
167
Definicin de Roles
n
Un rol denota el propsito o capacidad en la que una clase se asocia con otra Los nombres de roles son tpicamente sustantivos o frases con sustantivo Un nombre de rol se pone a lo largo de la lnea de asociacin cerca de la clase que modifica
tener roles Person
Course
168
Asociaciones Mltiples
n n
Puede existir ms de una asociacin entre dos clases Si hay ms de una asociacin entre dos clases se les DEBE de nombrar
Person ensea esta inscrita en Course
169
CourseSelection
Course
170
Multiplicidad es el nmero de instancias de una clase relacionada a UNA instancia de otra clase Para cada asociacin, hay dos decisiones de multiplicidad que tomar: una por cada extremo de la asociacin Por ejemplo, en la conexin entre Person jugando el rol maestro y Course
n
Para cada instancia de Person, varios (i.e., cero o ms) Courses deben impartirse Para cada instancia de Course, exactamente una instancia de Person es maestro
171
Indicadores de Multiplicidad
n
Indica el numero de objetos que participan en la relacin Muchos Exactamente uno Cero o ms Uno o ms Cero o uno Rango especfico
* 1 0..* 1..* 0..1 2..4
172
Ejemplo: Multiplicidad
n
La multiplicidad expone varias hiptesis ocultas sobre el problema que se est modelando
n n
Person
Teacher Course
1 1..*
173
Qu significa Multiplicidad?
n
La asociacin es obligatoria u opcional? Cul es el nmero mnimo y mximo de instancias que pueden ligarse a una instancia? Teacher
0..* 1
Course
174
Agregacin
n
La agregacin es una forma especializada de asociacin en la que un todo se relaciona con sus partes
Una agregacin se representa como una asociacin con un diamante en el extremo de la liga, del lado de la clase que denota el agregado (todo) La multiplicidad se representa de la misma manera que otras asociaciones
<<boundary>> RegistrationForm 1 1 <<boundary>> ScheduleForm
175
Pruebas de Agregacin
n
Se usa la frase parte de para describir relaciones? Una Puerta es parte de un Carro Se aplican algunas operaciones en el todo y automticamente a sus partes? Al mover el Carro, se mueve la Puerta Se propagan algunos valores de atributos del todo a todas o algunas de sus partes? El Carro es azul, la Puerta es azul Hay una asimetra intrnseca a la relacin donde una clase se subordina a la otra? Una Puerta es parte de un Carro, un Carro NO es parte de
una Puerta
176
Asociacin o Agregacin?
n
La relacin es un agregacin
n
Course
0..* 3..10
Student
Curriculum y Course estn muy ligados -- Curriculum est compuesto de 1 a muchos Courses
Asociaciones Reflexivas
n
0..*
Un curso puede tener muchos pre-requisitos Un curso puede ser pre-requisito de otros cursos
178
Agregaciones Reflexivas
n
Las agregaciones pueden tambin ser reflexivas Esto indica una relacin recursiva
ProductPart
0..* 1
179
Clase de Asociacin
n
Si quisiramos rastrear los grados para todos los cursos que un alumno ha tomado, entonces La relacin entre Student y Course es una relacin de muchos-a-muchos Dnde ponemos el atributo de grado?
Student 3-10
0..*
Course
180
El atributo grado no puede ponerse en la clase Course porque existen (potencialmente) varias ligas a objetos Student El atributo grado no puede ponerse en la clase Student porque existen (potencialmente) varias ligas a objetos Course Por lo tanto, el atributo en realidad pertenece a la liga Student-Course Una clase de asociacin se usa para mantener dicha informacin
181
Se crea una clase de asociacin usando el icono clase Se conecta el icono de la clase a la lnea de asociacin con una lnea punteada La clase de asociacin puede incluir mltiples propiedades de la asociacin Slo se permite una clase de asociacin por asociacin
Student 3-10 1..* Course
grade
182
Las clases de asociacin se emplean en asociaciones de muchos-a-muchos Si la multiplicidad en cualquiera de los extremos de una asociacin es a-una
n n
El atributo puede ponerse en la clase donde la relacin es a muchos, o Puede an usarse una clase asociacin
1 3-10 Student 3-10 grade 183 1 Course Course
Student grade
Calificadores
n
Un calificador es un atributo o grupo de atributos cuyos valores dividen el conjunto de objetos relacionado a un objeto a travs de una asociacin
Dado un objeto Department y un valor para un Employee ID hay exactamente un objeto Professor
Department
EmployeeID
Professor
1 1
Department
Title
Professor
1 1..*
Dado un objeto Department y un valor para Title hay un conjunto de objetos Professor
184
Restricciones
n
is a member of 1
Department
is head of
185
Deben examinarse los escenarios para determinar si una relacin debe existir entre dos clases
n
aform:Registration Form
despliega crea
186
Asociacin o Agregacin?
RegistrationForm y ScheduleForm estn muy ligadas -- una ScheduleForm es parte de la RegistrationForm
<<boundary>> RegistrationForm 1 1 1 <<boundary>> ScheduleForm
1 RegistrationManager
187
Relaciones de Paquetes
n
Los paquetes se relacionan unos con otros a travs de una relacin de dependencia Si una clase en un paquete habla con una clase en otro paquete entonces se agrega una relacin de dependencia al nivel del paquete Los diagramas de escenario y de clases se evalan para determinar las relaciones entre paquete
188
Interfaces Business Rules
University Artifacts
clases y no debido a una implementacin especfica Hacer una estimacin inicial de multiplicidad para exponer hiptesis ocultas
Los diagramas de clases se actualizan para mostrar las relaciones agregadas Durante el diseo:
Se Se Se Se
refinan y actualizan las estimaciones de multiplicidad avalan y refinan las asociaciones y agregaciones evalan y refinan las relaciones de paquetes maduran los diagramas de clases
189
Interfaces
Business Rules
University Artifacts
190
<<boundary>> ScheduleForm 1
1 <<entity>> Catalogue
(de UniversityArtifacts)
1 <<boundary>> BillingSystem
191
1 <<entity>> Catalogue
accesa 1
<<entity>> CourseRoster
<<entity>> StudentRecord
1 <<entity>> Schedule
192
<<entity>> CourseRoster
(de UniversityArtifacts)
1 1 <<boundary>> 1 BillingSystem
(de Interfaces)
(de UniversityArtifacts)
1 <<entity>> StudentRecord
(de UniversityArtifacts)
1 <<entity>> Schedule
(de UniversityArtifacts)
193
Ejercicio: Relaciones
n
194
195
Operaciones y Atributos
196
Usted podr:
Definir operaciones para clases Definir atributos para clases Definir encapsulacin y establecer sus beneficios Representar atributos y operaciones en diagramas de clase
197
Qu es una operacin?
n
Una clase engloba un conjunto de responsabilidades que definen el comportamiento de los objetos de esa clase Las responsabilidades de una clase se llevan a cabo por sus operaciones
n
Esto no es necesariamente un mapeo de uno-a-uno Responsabilidad de la clase Producto -- precio de venta Operaciones para esta responsabilidad
Buscar informacin de una base de datos Calcular el precio
Una operacin es un servicio que puede ser solicitado desde un objeto al comportamiento de efecto
Una operacin debe desempear una funcin simple y cohesiva Una operacin debe desempear una funcin simple y cohesiva
198
199
Nombrando Operaciones
n
Las operaciones deben nombrarse para indicar su resultado, no los pasos detrs de la operacin. Ejemplos:
n
Las operaciones deben nombrarse desde la perspectiva del proveedor no del cliente En una gasolinera, la gasolina se recibe de la bomba
n
La bomba tiene su responsabilidad a travs de una operacin -- cmo se le debe llamar? Nombres adecuados -- dispense(), giveGas() Nombre malo -- receiveGas()
La bomba da la gasolina -- no recibe la gasolina
201
Una operacin primitiva es una operacin que no puede ser implementada usando solamente las operaciones internas de la clase
Ejemplo:
Agregar un objeto a un conjunto -- operacin primitiva Agregar cuatro objetos a un conjunto -- no primitiva
Se puede implementar con llamadas mltiples a la operacin de agregar un objeto a un conjunto
202
203
Despliegue de Operaciones
n
Course
getPrerequisite () : CourseList
204
Los mensajes desplegados en los diagramas de secuencias y/o colaboracin son generalmente operaciones de la clase receptora
n
registration manager
a course
registration manager
a course
obtener prerequisito
getPrerequisite():CourseList
205
Ejemplo:
Los argumentos de una operacin y/o la clase de retorno denotan una relacin entre la clase que posee la operacin y la clase del argumento y/o la clase de retorno Ejemplo:
Qu es un atributo?
n
Un atributo es una definicin de dato contenido en instancias de la clase Los atributos no tienen comportamiento -- no son objetos Los nombres de atributo son sustantivos simples Los nombres deben ser nicos en la clase Cada atributo debe tener una definicin clara y concisa Atributos buenos para la clase Alumno Name -- nombre y apellido Major -- campo superior de estudios Atributo malo para la clase Alumno -- selectedCourses Esta es una relacin no un atributo
208
n n
n n
Valores de Atributo
n
El valor de atributo est dado por el estado de un objeto particular Cada objeto tiene un valor para cada atributo definido por su clase Por ejemplo, para un objeto de la clase Profesor: Sue Smith 567892 Matemticas George Jones 578391 Biologa
209
Despliegue de Atributos
n
211
Atributos Derivados
n
Un atributo derivado es un atributo cuyo valor puede calcularse en base al valor de otro(s) atributo(s)
212
213
Otros se descubren cuando la definicin de la clase se crea Con la ayuda de expertos en el dominio, el cual nos puede proporcionar buenos atributos
Slo modele los atributos que sean relevantes al dominio del problema Slo modele los atributos que sean relevantes al dominio del problema
214
Course
description
215
Una gua de estilo debe dictar convenciones de nombres para atributos y operaciones
Proporciona consistencia a travs del proyecto Conduce a ms modelos y cdigo que se puede mantener
n
Ejemplo
Los atributos y operaciones inician con una letra minscula No se usan subrayados Los nombres compuestos de mltiples palabras se
juntan y la primer letra de cada palabra adicional se escribe con maysculas
216
Los atributos y/u operaciones deben mostrarse en una clase Pueden crearse diagramas de clases adicionales para desplegar atributos y operaciones
217
Encapsulado
n
Un modo de ver una clase es la que consiste de dos partes: la interfaz y la implementacin
La interfaz puede verse y usarse por otros objetos La implementacin es oculta para los clientes
n
Ocultar detalles de implementacin de un objeto se llama encapsulado u ocultamiento de informacin El encapsulado ofrece dos tipos de proteccin:
Ejemplo: Encapsulado
changeOwnerName
Slo las operaciones proporcionadas por el objeto pueden cambiar los valores de un atributo
withdraw
deposit
Las operaciones estn provistas para desplegar valores de atributos que los clientes necesitan Los clientes no pueden modificar el estado del objeto directamente
219
El cdigo de la operacin de un cliente puede utilizar la intefaz de otra clase El cdigo del cliente no puede tomar ventaja de la implementacin de una operacin de otra clase La implementacin puede cambiar por los siguientes motivos: Corregir un defecto Mejorar el desempeo Reflejar un cambio de poltica El cdigo del cliente no ser afectado por los cambios en la implementacin, de este modo se reduce el efecto de rizo (ripple) en el cual la correccin de una operacin fuerza la correccin correspondiente en una operacin del cliente El mantenimiento es ms fcil y menos costoso
220
Actualizar los diagramas de secuencias en lecciones previas y transformar los mensajes en nombres de operaciones concisas, tanto como sea necesario
221
222
Herencia
223
Objetivos: Herencia
n
224
Herencia
n
La herencia define una relacin entre clases donde una clase comparte la estructura y/o comportamiento de una o ms clases La herencia define una jerarqua de abstracciones en las que una subclase hereda de una o ms superclases
Relacin de Herencia
StudentInfo Subclase
226
Consideraciones de Herencia
n
En la prctica, los niveles estn limitados Las jerarquas tpicas de C++ son de 3 o 5 niveles Las jerarquas de Smalltalk pueden ser un poco ms
profundas
227
228
Atributos de Herencia
n
Los atributos de definen en el ms alto nivel de la jerarqua de herencia Las subclases de una superclase heredan todos sus atributos Cada subclase puede agregar atributos adicionales
GroundVehicle weight licenseNumber
n n
Truck tiene tres atributos: Truck tiene tres atributos: licenseNumber licenseNumber weight weight tonnage tonnage
Truck tonnage
229
Car
Operaciones de Herencia
n
Las operaciones se definen en el ms alto nivel de la jerarqua de herencia Las subclases de una superclase heredan todas las operaciones Cada subclase puede aumentar o redefinir operaciones heredadas
GroundVehicle weight licenseNumber register( )
n n
Car
Truck tiene tres atributos: Truck tiene tres atributos: licenseNumber licenseNumber weight weight tonnage tonnage y dos operaciones: y dos operaciones: register() register() getTax() getTax()
230
Relaciones de Herencia
n
Las relaciones tambin se heredan y deben definirse en el ms alto nivel en la jerarqua de herencia Las subclases de una superclase heredan todas sus relaciones Cada subclase puede participar en relaciones adicionales
GroundVehicle weight licenseNumber register( ) dueo 1 Person
n n
0..*
Car
Trailer
Car est relacionado con Car est relacionado con un dueo un dueo Truck est relacionado Truck est relacionado con un dueo con un dueo Truck tambin tiene un Truck tambin tiene un Trailer Trailer
231
Generalizacin de Clases
n
La generalizacin proporciona la capacidad de crear superclases que encapsulan la estructura y/o el comportamiento comunes a varias subclases Procedimiento de generalizacin
Ejemplo de Generalizacin
Asset
BankAccount
Security
RealEstate
Savings
Checking
Stock
Bond
Incremento de abstraccin
233
Especializacin de Clases
n
La especializacin proporciona la capacidad de crear subclases que representen refinamientos en los que la estructura y/o comportamiento de la superclase se agregan o modifican Procedimiento de Especializacin
Ejemplo de Especializacin
Asset
BankAccount
Security
RealEstate
Savings
Checking
Stock
Bond
Decremento de abstraccin
235
Jerarquas de Herencia
n
Ambas tcnicas, generalizacin y especializacin, se usan en el desarrollo de jerarquas de herencia Durante el anlisis, se establecen jerarquas de herencia entre abstracciones, de ser necesario Durante el diseo, las jerarquas de herencia se definen para:
n n n
236
Niveles de Abstraccin
Vehicle
GroundVehicle
AirVehicle
Clases al mismo al Clases al mismo al mismo nivel de mismo nivel de herencia deben estar herencia deben estar al mismo nivel de al mismo nivel de abstraccin abstraccin
Ford
Truck
FixedWing
Helicopter
237
Herencia Mltiple
FlyingThing
Herencia mltiple
Animal
Airplane
Helicopter
Bird
Wolf
Horse
Bird hereda de ambos FlyingThing yyAnimal Bird hereda de ambos FlyingThing Animal
238
Conceptualmente directo y necesario para modelar el mundo real correctamente En la prctica, puede conducir a dificultades en la implementacin
Use herencia mltiple slo cuando sea necesario, Use herencia mltiple slo cuando sea necesario, y y siempre con precaucin !! siempre con precaucin
239
Herencia repetida
AnimateObject color
FlyingThing
Bird
Animal
Cada lenguaje/ambiente de programacin Cada lenguaje/ambiente de programacin elige modos para resolver este tipo de elige modos para resolver este tipo de dificultades dificultades
Bird
240
Identificacin de Herencia
n
Es importante evaluar todas las clases para encontrar posibles relaciones de herencia
Tcnica de Adicin
Tcnica de Modificacin
La herencia representa una relacin es un o tipo de La agregacin representa una relacin tiene un
Las palabras claves es un y tiene un ayudarn a Las palabras claves es un y tiene un ayudarn a determinar la relacin correcta determinar la relacin correcta
242
Window y Scrollbar
Window Scrollbar
WindowWithScrollbar
Un WindowWithScrollbar es un Window Un WindowWithScrollbar es un Window Un WindowWithScrollbar tiene un Scrollbar Un WindowWithScrollbar tiene un Scrollbar Qu relaciones deben usarse? Qu relaciones deben usarse?
243
Window
WindowWithScrollbar
WindowWithScrollbar
1 1
Scrollbar
Un WindowWithScrollbar es un Window Un WindowWithScrollbar es un Window Un WindowWithScrollbar tiene un Scrollbar Un WindowWithScrollbar tiene un Scrollbar
244
Agregacin
Palabras clave tiene un
Un objeto
245
Qu es Metamorfosis?
n
Metamorfosis
1. Un cambio en forma, estructura o funcin; especialmente el cambio fsico que sufren algunos animales, como el renacuajo a rana 2. Cualquier cambio notorio, como en el carcter, apariencia o condicin
Ejemplo de Metamorfosis
n
Part-timeStudent
name address numberCourses
Full-timeStudent
name address studentID gradDate
247
Una Aproximacin
n
Qu sucede si un alumno Qu sucede si un alumno de medio tiempo desea de medio tiempo desea convertirse en un alumno convertirse en un alumno de tiempo completo? de tiempo completo?
ParttimeStudent numberCourses
248
Metamorfosis
n
ParttimeClassification 0..1 Student name address 1 FulltimeClassification 0..1 studentID gradDate 1 numberCourses
249
Metamorfosis (cont.)
Mary Smith Joe Jones Estudiante de tiempo completo Estudiante de medio tiempo
MarySmith : Student
1
JoeJones : Student
1
: Full-timeClassification
: Part-timeClassification
250
Metamorfosis (cont.)
n
La metamorfosis se lleva a cabo por el objeto que habla con las partes cambiantes
: Student Manager : Student : Parttime Classification : Fulltime Classification
251
Metamorfosis y Herencia
n
La herencia puede usarse para modelar estructura, comportamiento y/o relaciones comunes a las partes cambiantes
Student name address 1 1 Classification
Parttime numberCourses
252
Metamorfosis y Flexibilidad
n
Esta tcnica tambin agrega flexibilidad al modelo Ejemplo: un alumno puede tambin vivir en el campus. En este caso, hay un identificador de dormitorio, un nmero de habitacin y un nmero de llave de la habitacin
Student name address 1 1 Classification
0..1
Parttime numberCourses
253
Ejercicio: Herencia
n
Examinar las clases definidas en el problema hasta el momento y agregar herencia donde sea necesario
254
255
Comportamiento de Objetos
256
Usted podr:
n
Explicar la necesidad de los Diagramas de Transicin de Estado Entender cmo encontrar estados Desarrollar un DTE simple que muestre
Estados y Transiciones Eventos Condiciones de proteccin Acciones y Actividades
n n
n n
Entender el concepto de estados anidados Explicar las relaciones entre diagramas de transicin de estados, diagramas de objeto/interaccin y diagramas de clase
257
Un diagrama de transicin de estado se usa para mostrar la historia de la vida de una clase dada, los eventos que causan una transicin de un estado a otro, y las acciones que resultan de un cambio de estado El espacio de estados de una clase dada es la numeracin de todos los estados posibles de un objeto El estado de un objeto es una de las condiciones posibles en las que puede existir un objeto
Contiene todas las propiedades del objeto Generalmente esttico Ms los valores actuales de cada una de estas propiedades Generalmente dinmico
258
Dibujo de Estados
n
Un estado se representa como un rectngulo con esquinas redondeadas en un diagrama de transicin de estado
State Name
259
Estado y Atributos
n
numStudents >= 10
Closed
260
Estados y Ligas
n
Los estados tambin pueden distinguirse por la existencia de ciertas ligas Las instancias de la clase Profesor puede tener dos estados:
Impartir cuando existe una liga a un curso En sabtico cuando no existe liga
Professor
0..*
Course
261
Estados Especiales
n
Un estado inicial es obligatorio Slo un estado inicial es permitido El estado inicial se representa como un crculo slido
n
Un estado final es opcional Puede existir ms de un estado final Un estado final se representa con un ojo de buey
Estado inicial Estado final
262
Eventos
n
Ejemplo:
263
Transiciones
n
Una transicin es un cambio de un estado original a un estado sucesor como resultado de algunos estmulos
n
Una transicin puede tomar lugar en respuesta a un evento Las transiciones pueden clasificarse con los eventos
Open Cancel course Canceled
Add student
264
Condiciones de Seguridad
n
Una condicin de seguridad es una expresin booleana de valores de atributos que permiten una transicin slo si la condicin es verdadera
Open
Registration Complete
265
Acciones
n
Los nombres de accin se muestran en la flecha de transicin precedida por una diagonal
Registration open / Initialize numStudents to 0
Creation
Open
Add student
266
Envo de Eventos
n
Se muestra como:
^Class.event
Add student
Creation
267
Actividades
n
Una actividad es una operacin que toma tiempo para completarse Las actividades se asocian con un estado Una actividad
Inicia cuando se introduce el estado Puede ejecutarse hasta el fin o puede ser interrumpida por
una transicin que sale
Closed
do: Report course is full
268
269
Transiciones Automticas
n
A veces, el nico propsito de un estado es ejecutar una actividad Una transicin automtica ocurre cuando se completa la actividad Si hay mltiples transiciones automticas
Se necesita una condicin de seguridad en cada transicin Las condiciones deben ser mutuamente excluyentes
Closed
do: finalize course 270
Offered
Cuando una accin debe ocurrir sin importar como entra o sale del estado, se debe asociar la accin con el estado
La accin se muestra dentro del icono del estado precedida de la palabra entry o exit
Add student
271
Estado Anidado
n
Los diagramas de transicin de estado pueden volverse complejos e inmanejables Los estado anidados pueden usarse para simplificar diagramas complejos Un superestado es un estado que incluye estados anidados llamados subestados Las transiciones comunes de los subestados se representan en el nivel del superestado Es permitido cualquier nmero de niveles de anidacin Los estados anidados pueden conducir a una reduccin sustancial de complejidad grfica, permitindonos modelar problemas ms grandes y complejos
272
n n
cancelCourse registration closed[ Canceled do: Send cancellation notices numStudents < 3 ] registration closed[ numStudents > = 3 ]
[ numStudents = 10 ] cancelCourse Closed do: Report course is full RegistrationComplete do: Generate class roster
273
addStudent
[ numStudents = 10 ]
Canceled cancelCourse
274
El uso de la caracterstica de memoria indica que tras el regreso a un superestado, se introducir el subestado ms recientemente visitado Use la letra H en un crculo para denotar que la caracterstica de memoria (history) se aplica al superestado Si no se usa la caracterstica de memoria, siempre se tomar el subestado inicial cuando se introduzca el superestado
275
En el sistema de Inscripcin a Cursos, la clase CourseSelection hace lo siguiente Acepta cursos primarios Acepta cursos alternos El usuario puede salir en cualquier momento El usuario puede suspender una sesin por un mximo de 30 minutos mientras selecciona sus cursos La forma se guarda despus de que se han seleccionado todos los cursos La forma se enva para procesarla despus de que ha sido guardada
276
n n
Suspend Resume
Suspend
do: Wait for 30 minutes
[ Course count = 2 ]
Save
do: Save form
Quit
H
Submit
do: Submit form for processing
277
Donde iniciar...
n
Durante el anlisis, primero hay que centrarse en las clases con comportamiento dinmico significativo Para una clase dada, busque estados posibles al:
Evaluar valores de atributos Evaluar operaciones Definir las reglas para cada estado, e Identificar las transacciones validas entre estados
Rastrear los mensajes en los diagramas de interacciones correspondientes a un objeto que tengan que ver con el modelado de la clase
Crear un diagrama de transicin de estados para modelar el comportamiento dinmico de la clase Empleado con los siguientes estados Apply, Employed, Leave of Absence, Terminated, Retired Informacin del estado Apply Se conduce una entrevista durante este estado Se sale de este estado con el evento empleo Informacin del estado Employed El estado Employed tiene tres subestados basados en su
clasificacin de pago Hourly, Salaried, and Commissioned La clasificacin de pago puede cambiar en cualquier momento Las clasificaciones de pago se crean/borran despus de entrar/salir del subestado
279
Informacin del estado Leave of Absence Un empleado pude tomar un permiso de ausencia de hasta 1 ao
mientras est en cualquier subestado de empleado Al regresar de su permiso ingresa al mismo subestado de pago del estado Employed
Informacin del estado Terminated Un empleado pude ser despedido mientras este en cualquier
subestado de empleado Un empleado puede renunciar mientras este en cualquier subestado de empleado El registro de empleado se marca como terminado en este estado
Informacin del estado Retired Un empleado se retira cuando tiene 65 aos La informacin de pensin se calcula en este estado
280
281
Homogeneizacin
282
Objetivos: Homogeneizacin
n
Usted podr:
Discutir el por qu de la homogeneizacin Determinar cuando deben combinarse dos clases, cuando
debe dividirse una clase, cuando debe eliminarse una clase
283
Qu es Homogenizacin?
n
Homogeneizar
mezclar en un conjunto de elementos de manera uniforma, para homogeneizar Websters New Collegiate Dictionary
Esto es especialmente cierto si existen mltiples equipos que estn trabajando en diferentes casos de uso
284
Qu buscar?
n
Se pueden combinar dos o ms clases Se debe dividir una clase Se debe eliminar una clase completamente
n
285
Combinacin de Clases
n
Cuando se realiza el anlisis de casos de uso con varios equipos, cada uno puede asignar un nombre diferente a una misma clase
Evaluar definiciones de clase Evaluar la estructura y comportamiento de las clases Buscar sinnimos Tomar el nombre ms cercano al dominio
286
Se eligi a Teacher, ya que no todos los instructores de la Universidad han alcanzado el estatus de Professor
Department
1
Department 1
1
0..*
0..*
287
Al colocar una clase de control por cada caso de uso, es necesario re-evaluar dichas clases
Ejemplo: El Administator interacta con los casos de uso Maintain Student Information y Maintain Professor Information
Se crearon dos clases de control La secuencia de acciones en cada una de estas dos clases de
control es muy similar (revisar, crear, borrar informacin del actor)
Divisin de Clases
n
Las clases con estructura y/o comportamiento que no sean cohesivos deben dividirse en clases diferentes Ejemplo:
Student name address phoneNumber changeMajor( ) 0..*
289
Eliminacin de Clases
n
Que no tenga ninguna estructura o comportamiento Que no participe en ningn caso de uso
Ejemplo:
n
Un caso de uso para el actor Professor es Seleccionar cursos para impartir Esto quiere decir que Professor introduce el nombre y nmero del curso y se crea una liga a la clase ProfessorInformation Ya que no hay mucho comportamiento relacionado a la secuencia, se elimina esta clase de control 290
3: set course
: Professor CourseForm
5: addProfessor ( ) 6: addProfessor ( )
: Course
4: process
: Professor
1: open
7: quit
291
Revisin de Consistencia
n
Se necesita al menos una operacin para cada clase? Existe una clase para cada objeto en el Diagrama de interaccin? Si un diagrama de objeto o diagrama de interaccin muestra un mensaje que va de un objeto de la clase A a un objeto de la clase B, verifique:
Exista una operacin en la clase B espera un evento y lo manipula Exista una asociacin correspondiente entre la clase A y la clase B en el diagrama de clases El diagrama de transicin de estado para la clase B (si se ha desarrollado uno) incluye ese evento
292
Reestructuracin de Paquetes
n
Al desarrollar ms casos de uso puede ser necesario reestructurar los paquetes del modelo
n
El fuerte acoplamiento entre paquetes puede significar que los paquetes deben combinarse La dependencia reciproca entre paquetes puede significar que el paquete debe dividirse Evalue consideraciones de reuso
Un paquete reusable debe tener algunas dependencias
Ejercicio: Homogeneizacin
n
Discutir las decisiones de homogeneizacin que se necesitan en este punto del anlisis
294
295
Diseo Arquitectnico
296
Usted podr: Listar los atributos de una buena arquitectura Explicar la arquitectura de 4+1 vistas Explicar el propsito de los diagramas de componentes Explicar el propsito de los diagramas de distribucin
297
Visin Arquitectnica
n
298
Cada capa representa una abstraccin coherente Cada capa tiene una interfaz bien definida y controlada Cada capa se construye sobre facilidades bien definidas y controladas en niveles de abstraccin bajos
Los cambios en la implementacin de una capa no viola la hiptesis hecha por sus clientes
300
El diseo de la arquitectura tiene que ver con el manejo de riesgo Las buenas arquitecturas se determinan mejor a travs de desarrollo iterativo e incremental A un experimentado equipo pequeo, guiado por un Arquitecto en Jefe, se le debe asignar la responsabilidad para:
n n n n
Definir y mantener la integridad arquitectnica del sistema Aprobar todos los cambios a las interfaz de paquetes Valorar riesgos del proyecto Proponer el orden y contenido de cada iteracin
301
Usuario final, cliente, administrador de proyecto Ingeniero de sistema, desarrollador, arquitecto, evaluador
302
Una Vista Lgica que proporciona una imagen esttica de las principales clases y sus relaciones Una Vista de Componentes que muestra como est el cdigo organizado en paquetes y libreras, as como el software comercial (COTS, commercial off-the-shelf) Una Vista de Procesos que muestra procesos y tareas Una Vista de Distribucin que muestra los procesadores, dispositivos y ligas en el ambiente operacional
n n
Finalmente, una Vista de Casos de Uso que explica como trabajan juntas las otras cuatro vistas
303
Vista de Componentes
Administracin, reuso y portabilidad del Software
Usuarios finales
Ingenieros de software
Vista de Procesos
Desempeo, Disponibilidad, Tolerancia de fallas
Vista de Distribucin
Desempeo, Disponibilidad Tolerancia a fallas, Escalabilidad Entrega e Instalacin
Integradores de Sistema
Ingenieros de Sistema
304
Vista Lgica
n
La vista lgica de una arquitectura controla los requerimientos funcionales del sistema
Proporciona una imagen esttica de las principales clases y sus relaciones La vista lgica se encuentra reflejada en diagramas de clases; paquetes que contienen clases y relaciones, lo cual representa la abstraccin del sistema en desarrollo
305
Foundation Classes
Foundation Classes
global
306
Implicaciones de Dependencia
n
ClientPackage
SupplierPackage
307
Es deseable que la jerarqua del paquete sea a-cclica Esto quiere decir que la situacin siguiente debe evitarse (de ser posible) El paquete A usa el paquete B el cual usa el paquete A Una dependencia circular como esta, significa que los paquetes A y B tendrn que ser tratados como un solo paquete Tambin deben evitarse los crculos con ms de dos paquetes El paquete A usa el paquete B que usa al paquete C que usa al
paquete A
Las dependencias circulares pueden romperse, dividiendo uno de los paquetes en dos paquetes ms pequeos
308
Cambiado a
Incoming Interfaces
Business Rules
Outgoing Interfaced
309
Una interfaz de paquete debe encapsular su implementacin detrs de una interfaz publica justo como lo hace una clase Cada clase en un paquete tiene un parmetro de control de exportacin que puede establecerse a publico o implementacin (privado)
Vista de Componentes
n
La vista de componentes tiene que ver con la organizacin del software en mdulos para su desarrollo Los diagramas de componentes se crean para mostrar los paquetes y los componentes que conforman el sistema en desarrollo
Los paquetes se organizan en capas, donde cada capa tiene una interfaz bien definida
311
Qu es un componente?
n
Un componente es una unidad de cdigo fuente que sirve como bloque constructor para la estructura fsica de un sistema Los estereotipos (con iconos alternos) pueden usarse para definir tipos de componentes especficos. Ejemplos: exe, dll, main programs, headers, modules, forms Agrupar clases en un componente, ya sea que tenga una funcin cooperativa o que necesite estar en proximidad para la eficiencia en la implementacin Notacin de componente:
Component name
312
Diagramas de Componentes
n
Un diagrama de componentes muestra la distribucin de clases y objetos en componentes durante la implementacin, as como sus dependencias de compilacin
Name 1 Name 2
Name 1 Name 2
Name 3
313
Se requiere un nombre para cada componente, este nombre denota tpicamente el nombre simple del archivo fsico correspondiente en el espacio de trabajo actual
La nica relacin es la dependencia de compilacin, representada por una lnea punteada dirigida que apunta hacia donde existe la dependencia
Course
Course
315
Un paquete en la vista de componentes es una coleccin de componentes, algunos de los cuales son visibles a otros paquetes y otros estn ocultos Un paquete agrupa componentes que estn lgicamente relacionados Un paquete en la vista de componentes agrupa componentes de manera similar a la que un paquete en en la vista lgica agrupa clases Cada componente en el sistema debe existir en un solo paquete en el nivel ms alto del sistema Notacin:
PackageName
316
Un diagrama de componentes principales es una familia de paquetes conectados por ligas dirigidas que representan dependencias Ejemplo.
MFC
RegistrationUser Interface
Registration System
317
En general, un paquete en la vista lgica puede corresponder directamente a un paquete de componentes en la vista de componentes
Registration System
Registration System
319
Vista de Procesos
n
El diagrama de componentes se actualiza para mostrar la distribucin de componentes a procesos La vista de procesos est dirigida a: la disponibilidad, la confiabilidad, el desempeo, la administracin y la sincronizacin del sistema
320
Componentes de Proceso
n
321
MyProcess.exe
Name1
Name2
Name1
Name2
322
323
Vista de Distribucin
n
La vista de distribucin de la arquitectura mapea componentes a nodos de procesamiento Los requerimientos de desempeo y tolerancia a fallas se toman en cuenta Los diagramas de distribucin se crean para mostrar los diferentes nodos (procesos y dispositivos) en el sistema
324
Diagrama de Distribucin
n
Un diagrama de distribucin muestra la ubicacin de los componentes en nodos, de tal forma que se obtenga una vista de distribucin del sistema
Los nodos se conectan en el diagrama a travs de una lnea, que refleje la ruta de comunicacin entre ellos Los elementos esenciales de un diagrama de distribucin son los nodos y las conexiones
325
Una conexin indica comunicacin, generalmente a travs de medios de acoplamiento directo al hardware
nombre
etiqueta
nodo
conexin
326
Este diagrama muestra dos nodos y los dispositivos con los que se comunica el Sistema de Inscripcin
Sistema de Inscripcin
Base de Datos
Biblioteca <<device>>
327
Procesos
n
Un proceso es un hilo de control de la ejecucin de un programa o sistema (OO) Un sistema grande puede dividirse en procesos mltiples o hilos
de control
Los objetos se asignan a procesos (sus asignaciones pueden ser dinmicas) Los procesos se asignan a procesadores (un conjunto de procesos puede ser dinmico) Notacin:
Nombre de Procesador
328
El mapeo de paquetes de desarrollo a procesos ejecutables envuelve el entendimiento de la topologa del sistema y las prioridades del sistema, que incluyen:
Arquitectura de procesador, velocidad y capacidad Mantener las asociaciones de clases juntas para minimizar
la comunicacin de interprocesos (IPC interprocess communication)
Debe resolver elementos que envuelvan mltiples procesadores de hardware o sistemas distribuidos durante el diseo del sistema
329
Tiempo de respuesta y resultados del sistema Comunicacin: ancho de banda/capacidad Localizacin fsica del hardware requerido Necesidades de procesamiento distribuido Balanceo de carga de procesos en sistemas distribuidos Tolerancia de fallas ...
330
Los casos de usos son los conductores del diseo de una arquitectura
Abstracciones de requerimientos largos y complejos Identificacin de interfaz crtica Forzar a los diseadores a concretar elementos
Demuestran y validan las vistas; lgica, de componentes, de procesos y de distribucin de la arquitectura
331
Vista de Componente
Diagramas de Componentes
Vista de proceso
Diagramas de Procesos
Vista de Despliegue
Diagramas de Distribucin
332
El documento incluye:
Ver las ventajas y desventajas para considerar alternativas Una vista de alto nivel de la vista lgica (paquetes y clases
principales)
Escenarios especficos de la arquitectura Vistas de alto nivel de las vistas de procesos y de distribucin Los mecanismos clave
333
La mayora de los proyectos de complejidad razonable requieren de un equipo de arquitectura, NO un slo arquitecto
Encabezado por el arquitecto en jefe, quin dedica 100% de su tiempo Incluye los lderes diseadores para funciones ms importnates o
crticas del sistema
334
Fase de Elaboracin
Equipo de arquitectura Arquitecto Lderes Diseadores Desarrolladores de infraestructura
En la fase de elaboracin, los miembros se dedican 100% al equipo de arquitectura. Durante la fase de construccin, los miembros se convierten en diseadores lderes para equipos de aplicacin y soporte de medio tiempo al equipo de arquitectura
. . .
335
Documentos a entregar
Documento de arquitectura Partes del documento de diseo de bajo nivel Guas de diseo y programacin Elementos de los planes de liberacin Auditorias de diseo al sistema a liberar
337
338
Mecanismos Clave
339
Usted podr: Describir algunos mecanismos claves especficos a OO Explicar los elementos asociados con la interfaz a bases
de datos
340
Un mecanismo clave es una decisin estratgica de acuerdo a estndares, polticas y prcticas comunes, por ejemplo
n n
La mayora del software tradicional se disea con principios que an se aplican en el diseo OO
n
Los problemas para resolver son similares, e.g., manejo de recursos, control de riesgos, etc.
Administracin de recursos Manejo especial requerido para el inicio y salida del sistema Integracin con sistemas de almacenamiento de datos persistentes
n n n n n
Deteccin/manejo/reporte de errores Comunicacin interproceso Envi de mensajes Apariencia y vista (look & feel) de la interfaz de usuario Reutilizacin de software
342
Administracin de Recursos
n
Una clase administradora de recursos puede emplearse para controlar el acceso a los recursos La clase administradora de recursos utiliza mtodos de software tradicional, tales como semforos para controlar el acceso a dichos recursos Esta clase proporciona operaciones que permiten a los clientes del recurso, obtenerlo, descargarlo, obtener su estado, etc. Una superclase que contenga la interfaz a los recursos administrados puede ser provista con los recursos del administrador para posibilitar su reuso
343
File
SharedMemory
344
Si an no se ha cubierto durante el anlisis, deben definirse los casos de uso para el inicio y salida del sistema
Los escenarios deben desarrollarse para cada caso de uso -tantos como sean necesarios para controlar a la mayora de las situaciones normales y anormales
Durante este proceso deben descubrirse nuevos estados y comportamientos para clases existentes y la necesidad debe surgir para las clases enteramente nuevas y as controlar el inicio y/o salida del sistema
345
Objetos Persistentes
n
Un objeto persistente es aquel que lgicamente existe bajo el mbito del programa que lo cre Los lenguajes de programacin OO manejan objetos residentes en memoria, los cuales son esencialmente transitorios Un objeto persistente tiene la habilidad de guardar el valor de sus atributos en algn tipo de almacenamiento persistente Un objeto persistente puede tambin crearse en memoria e inicia con sus valores de atributo desde el almacenamiento persistente La estrategia total para proveer persistencia a los objetos en el sistema, es un mecanismo de control
346
Almacenamiento Persistente
n
El almacenamiento persistente puede hacerse empleando un sistema de archivos simple o algn tipo de sistema de administracin de base de datos Hay varios modelos para DBMSs:
Tiempos de acceso Capacidad de almacenamiento Confiabilidad del sistema de almacenamiento Acceso a datos existentes
El modelo elegido influir al sistema y al diseo de objetos, de tal forma que los diseadores debern considerar:
persistentes Adicin de atributos para manejar detalles de almacenamiento del sistema Clases adicionales para hacer interfaz con el DBMS
348
Las siguientes laminas contienen cierto criterio encontrado en Considerations For Evaluating Object Database Management Systems escrito por Robert Gancarz y Grant Colley, Object Magazine, Marzo/Abril 1992
349
procedimientos de soporte al cliente, soporte de entrenamiento y consultora, alianzas con otras compaas
Desempeo de la Base de Datos Ninguna marca puede probar que un DBMS es ms rpido para todas
las aplicaciones El desempeo depende de la aplicacin Los prototipos especficos de aplicacin son muy importantes
Herramientas de Desarrollo Ver las herramientas para el diseo de la base de datos, modificacin
del esquema de las base de datos y navegacin, as como tambin las herramientas de depuracin y afinacin de la base de datos
Soporte al lenguaje de eleccin Asegurarse de que hay soporte para el lenguaje de su eleccin para
el desarrollo del sistema
Soporte Multi-usuario
Hay dos factores principales que deben tomarse en cuenta cuando se disea un sistema OO usando bases de datos relacionales Primero, existe una diferencia semntica natural entre el modelo basado en clases un diseo orientado a objetos y el modelo basado en tablas de una base de datos relacional
Segundo, se debe definir el comportamiento que hace interfaz con el RDBMS y que implementa esta traduccin
353
Tpicamente, cada clase mapea a una tabla y cada instancia mapea a un rengln
Customer
Tabla Customer
customerID name address discount
354
Las relaciones de uno-a-muchos se implementan usando una llave fornea en la tabla que representa a la clase que tiene la multiplicidad mayor a uno en la relacin
Customer name address discount
Tabla Customer
customerID name address discount
Tabla Order
0..* Order deliveryTime urgency
orderID
delivery
urgency
customerID
355
Product 0..*
Tabla Product Ingredient
productID ingredientID
1..* Ingredient
356
Tabla Order
orderID deliveryTime urgency
StandingOrder frequency
Tabla SpecialOrder
orderID endDate startDate
357
Se buscan la mejor relacin con respecto al desempeo y espacio de almacenamiento para decidir que mapeo usar en cada situacin de herencia
358
El elemento principal asociado con la creacin de una interfaz con un RDBMS, es si se separa o no el comportamiento especfico de la aplicacin del comportamiento especfico de la base de datos Suponga que nuestro sistema tiene una clase Cliente que se ha decidido que ser persistente
n
Deber la clase Cliente contener los detalles del mapeo OO-aRDBMS? Deber la clase Cliente contener el comportamiento para hacer interfaz con el agente RDBMS (es decir, cdigo que genera SQL para leer/escribir de/a la base de datos)? Deber la clase Cliente incluso saber que es persistente?
De cualquier forma se puede trabajar - cada uno tiene sus ventajas y desventajas
359
El comportamiento especfico de la base de datos no est separado del comportamiento especfico de la aplicacin:
Ventajas
No es tcnicamente retador para implementar
Desventajas
Los modelos OO y RDBMS no son separables La funcionalidad CRUD no siempre es limpiamente heredable
360
: CurriculumManager 1: save ( )
: Course
Course description Course debe tener conocimiento Course debe tener conocimiento de la base de datos de la base de datos save ()
361
Ventajas
El modelo OO es separable del modelo RDBMS Existen herramientas disponibles para generar las clases de interfaz bsicas a la base de datos
Desventajas
Ms tcnicamente retador de implementar
362
TransactionManager
TransactionManager TransactionManager separa lo lgico (Course) separa lo lgico (Course) de lo fsico (DBCourse) de lo fsico (DBCourse)
Course DBCourse
363
Los ODBMS permiten el almacenamiento y recuperacin de los objetos (con datos complejos encapsulados en cada objeto) Un ODBMS retiene tpicamente Objetos (valores de atributos) Informacin de la clase sobre cada objeto No hay diferencia semntica entre el modelo OO y el modelo ODBMS - son idnticos No debe disearse comportamiento especial para hacer interfaz con el ODBMS
364
Ventajas: Interfaz sin parches entre la aplicacin y la base de datos Se necesita relativamente poco cdigo para hacer a los objetos
persistentes
Se debe evaluar la inversin de tecnologa relacional existente cuando se evale la tecnologa de bases de datos OO
365
Deteccin de Errores
n
Debe establecerse un mecanismo consistente para la deteccin de errores Los objetos deben detectar errores que podran violar su integridad - esto incluye errores Que surgen con la operacin Que resultan de parmetros recibidos de objetos clientes Que resulten de valores de retorno proporcionados por objetos
proveedores
Se puede establecer un plan para monitorear la salud del sistema Se define operacin de prueba para cada clase que verifique la
integridad o estructura interna, y Monitoreo de objetos definidos para revisar peridicamente cada funcin de prueba de objeto
366
Manejo de Errores
n
An en los sistemas OO, el manejo de errores debe disearse cuidadosamente -- en ms del 30% del cdigo final existen condiciones de manejo de error Los lenguajes OO (como 3.0 C++) proporcionan elementos de manejo de excepcin para auxiliar en este diseo El manejo de excepciones permite que un error se maneje por un objeto distinto que el objeto que detect el error Esto es con frecuencia apropiado, ya que el objeto detector no siempre conoce el impacto a un sistema por un error
367
Cuando hay un problema que no puede ser manejado en el contexto actual, se puede crear y lanzar una excepcin
Qu hace throw?
369
En el proceso de bsqueda de llamada a la pila, se llaman a los destructores de objetos locales Variables automticas Parmetros de valor Temporales No se llama a los destructores para Variables dinmicas Variables estticas Nunca se ejecuta el cdigo despus del punto de lanzamiento Las excepciones se apoderan de la administracin de recursos (ej. Cerrar archivos abiertos)
370
371
Las Excepciones no deben usarse si el error puede manejarse (arreglarse) y el proceso continua
372
Arreglar el problema y continuar el proceso sin procesar de nuevo la funcin que lanz la excepcin
n n n n n n
Calcular un resultado alterno Lanzar el error a un contexto ms alto Terminar el programa Ocultar funciones que usan esquemas de error ordinario Simplificar el cdigo Hacer al cdigo ms fcil de mantener
373
Reporte de Error
n
El almacenamiento del registro de errores de forma correcta y el reporte en lnea son las claves de la mayora de los sistemas El comportamiento del control de errores consistente puede implementarse en base a la clase Error usada en el manejo de excepcin Este comportamiento puede incluir
n
Agregar el error a un registro de errores que abarque al sistema (system-wide error log) Distribuir los errores del proceso los cuales facilitan el monitoreo en lnea de errores
Este tipo de acercamiento asegura la consistencia al separar la responsabilidad detallada de las clases de aplicacin
374
Comunicacin Interprocesos
n n
ClassA llama a la operacin functionB() de la ClassB Qu sucede cuando las clases ClassA y ClassB estn en proceso diferentes?
n n
Esto se convierte en un resultado crtico en sistemas distribuidos Se necesita un mecanismo estndar para la comunicacin interprocesos
: ClassA
ClassA ClassB
: ClassB
1: functionB ( )
functionB( )
375
Clases Proxy se insertan en cada proceso el cual proporciona las interfaz de las clases originales y encapsula la comunicacin de nivel menor
376
Estndares Distribuidos de OO
n
La eleccin de un estndar de distribucin es un elemento de diseo (si su sistema usa objetos distribuidos) Hay dos estndares para la distribucin OO
n n
Common Object Request Broker Architecture (CORBA) Component Object Model (COM+/DCOM/COM/OLE)
Object Request Brokers (ORB) proporciona acceso transparente a objetos en un ambiente distribuido
n
ORB permite la conectividad de ubicacin independiente cliente/servidor Las decisiones de distribucin pueden tomarse al tiempo de corrida
377
Clases Proxy
ClassA
ProxyClientB
ProxyServerB
ClassB
378
Los componentes reusables deben considerarse previamente en el proceso de diseo para incorporarlo al sistema La evaluacin de libreras de software comerciales e internas para aplicarlos al sistema por mdulos Las libreras de clases son grupos de clases que colaboran para proporcionar algn servicio, interfaz o funcin Libreras de clases estn comnmente disponibles como:
n n n
Actualizacin de Diagramas
n
Los diagramas de clases se actualizan para mostrar los mecanismos claves elegidos
Los diagramas de secuencias se actualizan para mostrar las interacciones entre clases descubiertas y clases que representan estrategias de mecanismos clave
380
Business Rules
University Artifacts
Foundations
global
Error Handling
global
Database
381
theManager : CurriculumMgr
theCourse : Course
anOffering : (Course
dbMgr : TransactionMgr
dbCourse : DBCourse
dbOffering : DBOffering
2: enter id 3: verify id 4: enter 5: create a 6: set number, name, description, 7: set number offerings, professor, 8: process 9: create course(number, name, description, credit hours, offerings, 10: create(number, name, description, 11: create offering(number, pofessor, 12: create(professor, time, 13: save 14: save(course) 15: get info 16: commit 17: save(offering) 18: get info 19: commit
382
383
384
Diseo de Clases
385
Usted podr: Discutir decisiones de diseo de interfaz de usuario Agregar clases de nivel de diseo para solucionar
problemas de diseo
386
Las clases boundary manejan las comunicaciones de lainterfaz entre el usuario y el sistema
Durante el anlisis, se definen clases boundary de alto nivel Durante el diseo, se completa el diseo de la interfaz de usuario
Windows layouts Nmero de ventanas Manejo de eventos iniciados por los usuarios
387
Cualquier prototipo de la interfaz de usuario hecho con anterioridad es un buen punto de partida para esta fase de diseo Los diagramas de secuencia y/o colaboracin tambin proporcionan una buena fuente para los requerimientos de la interfaz
389
Requerimientos de otros escenarios El actor tiene la habilidad de crear, consultar, modificar y borrar
Course, as como tambin ofertas de Course
Decisiones de diseo Una ventana que contenga todas las opciones disponibles para el
actor Registrar
Una ventana que contenga la informacin de Course Una ventana que contenga informacin de ofertas de Course Botones disponibles en las ventanas de Course y de ofertas de
Course que permitan guardar, cancelar o borrar la informacin
390
391
Ventana de Course
392
393
Inscripcin a Course
registration form 1: enter id 2: validate id 3: enter current semester 4: create new schedule 5: display 6: get courses 7: select schedule form available courses
John : Student
394
Actor Student
Decisiones de diseo
395
396
Algunos crean objetos que contienen informacin de la ventana Otros crean estructuras de datos con informacin
n
Clases Utility
n
El estereotipo <<utility>> se usa para una clase que contiene una coleccin de subprogramas libres
Course
Para evitar utileras mltiples (funciones libres de C++) que conviertan las unidades de distancia, se puede crear una clase utility para empaquetar todas las funciones bajo una interfaz
400
Clases Help
n
Durante el diseo, una clase puede agregarse como help, ya que desempea alguna funcionalidad necesaria Ejemplo:
El CurriculumForm debe verificar que el id introducido sea vlido Si la verificacin se identifica con el formato del id, entonces
la ventana puede desempear esta funcionalidad
Aparicin de Patrones
n
Describe un problema comn de diseo Describe la solucin al problema Discute los resultados y trade-offs de la aplicacin del patrn
n
402
Adaptacin de Patrones
n
Los sistemas de inscripcin a curso tienen tres tipos de usuarios: alumnos, profesores y el administrador Se cre una jerarqua de RegistrationUser para los diferentes tipos de usuarios El tipo de usuario que se va a acrear depende de los datos introducidos Problema: quien crea el tipo especfico de usuario
n
El patron Factory Method puede usarse para crear el tipo correcto de usuario al momento de ejecucin
Se le da el dato al factory y se le pide que cree el tipo correcto de objeto
403
El Patrn Factory
UserFactory create (what) 1 creates 1
RegistrationUser
Student
Professor
Registrar
La creacin (what) de la operacin UserFactory La creacin (what) de la operacin UserFactory crea el tipo correcto de RegistrationUser crea el tipo correcto de RegistrationUser
404
Otros Patrones
n
Prototype: crea un objeto copiando un objeto prototipo Singleton: asegura que una clase tiene slo una instancia y proporciona un punto global de acceso a la misma Adapter: convierte la interfaz de una clase a otra interfaz Iterator: proporciona una manera de accesar los elementos de un objeto agregacin Memento: captura y externaliza el estado interno de un objeto de modo que el objeto pueda restablecer este estado despus (esto se hace sin romper la encapsulacin)
405
406
Discuta que clases adicionales pueden agregarse al modelo para facilitar las decisiones de diseo
407
408
Diseo de Relaciones
409
Usted podr:
n n n n n
Determinar la navegacin de las relaciones Mejorar las relaciones de asociacin y agregacin Discutir opciones de visibilidad de objetos Discutir mltiples decisiones de diseo Disear clases de asociacin
410
Navegacin
n
En el anlisis, las asociasiones son bi-direccionales En el diseo, una asociacin puede ser uni-direccional
n
Una flecha se agrega a la asociacin para mostrar que la navegacin solo va en una direccin Customer puede Customer puede hablar con Order hablar con Order Order no puede Order no puede hablar con Customer hablar con Customer
Customer 0..*
Order
411
Decisiones de Navegacin
n
412
Preguntas de Navegacin
n
Product
413
Las asociaciones two-way son ms difciles y costosas de implementar que las asociaciones one-way
Aunque se requiera la navegacin two-way, una asociacin one-way puede ser suficiente bajo ciertas circunstancias. Por ejemplo:
414
Situacin1: Frecuentemente necesito preguntar que proveedor(es) proporcionan cierto producto, pero slo necesito pedir una lista de todos los productos proporcionados por un proveedor trimestralmente para el proceso de facturacin Implementar la direccin de Producto-a-Proveedor y buscar todas las
instancias de Producto cuando se compile una lista de Producto para cada Proveedor
Situacin 2: Slo existen dos proveedores Implementar slo la direccin Producto-a-Proveedor y buscar todos los
registros de Producto cuando necesite recorrer la asociacin en la direccin opuesta
Supplier 1..*
Product
415
Una agregacin tambin puede ser uni-direccional Se agrega una flecha a la lnea de agregacin
Order 1..*
OrderItem
416
Refinando Agregaciones
n
Una relacin de agregacin quiere decir que el objeto origen debe contener conocimiento semntico del objeto destino Las relaciones pueden ser de dos tipos:
417
Por valor implica que los objetos se crean y destruyen como consecuencia de la creacin y destruccin de otro objeto
n
En otras palabras, los tiempos de vida de los objetos relacionados son iguales
Por referencia implica que los tiempos de vida de los objetos relacionados pueden ser independientes Por lo tanto, la seleccin de por valor o por referencia determina como se disea para que el lenguaje de programacin elegido (como C++) cree y borre un objeto
418
Relaciones Por-Referencia
n
Catalogue 1..*
Course
419
Relaciones Por-Valor
n
Al crear el objeto se crea tambin el objeto relacionado Al borrar el objeto se borra tambin el objeto relacionado
n
420
Relaciones de Dependencia
n
Una relacin de dependencia quiere decir que una clase depende de algunos servicios de otra clase Una relacin de dependencia es como una flecha punteada
Client Supplier
Un objeto Client depende de un objeto Supplier Un objeto Client depende de un objeto Supplier
421
Las operaciones de la clase cliente tienen firmas en donde aparecen clase de retorno o argumentos, por lo que son instancias o referencias a la clase proveedor
422
BillingSystem
423
Course
424
Visibilidad de Objeto
n
Las relaciones proporcionan una ruta de comunicacin entre objetos Para que los objetos hablen deben ser visibles
425
Global
El objeto proveedor es un objeto global
Parmetro
El objeto proveedor es un parmetro de una operacin del objeto cliente
Local
El objeto proveedor es declarado localmente
Campo
El objeto proveedor es un campo en el objeto cliente
426
Modelo de Anlisis
n
La operacin createCourse() de CurriculumController le pide al TransactionManager que guarde el nuevo objeto Course
Diagrama de Colaboracin
: CurriculumController
1: saveCourse (Course)
1
TransactionManager
: TransactionManager
saveCourse (Course) 427
: TransactionManager
TransactionManager
saveCourse (Course&)
428
Visibilidad Global
static TransactionManager theManager; class CurriculumController { public: void createCourse(); }; class Course; void CurriculumController::createCourse() { Course *aNewCourse; theManager.saveCourse(aNewCourse); };
429
El objeto TransactionManager es un parmetro de la operacin createCourse() del CurriculumController El objeto TransactionManager slo es visible a la operacin
createCourse
: TransactionManager
CurriculumController
createCourse (TransactionManager&)
430
Visibilidad de Parmetro
class TransactionManager; class Course; class CurriculumController { public: void createCourse(TransactionManager&); }; void CurriculumController:: createCourse(TransactionManager& theManager) { Course *aNewCourse; theManager.saveCourse(aNewCourse); }
431
El objeto TransactionManager se declara dentro de la operacin createCourse() del CurriculumController El objeto TransactionManager slo es visible a la operacin
createCourse()
: TransactionManager
TransactionManager
saveCourse (Course&)
432
Visibilidad Local
#include TransactionManager.h; class Course; class CurriculumController { public: void createCourse(); }; void CurriculumController::createCourse() { Course *aNewCourse; TransactionManager theManager; theManager.saveCourse(aNewCourse); }
433
: TransactionManager
TransactionManager
saveCourse (Course)
434
Visibilidad de Campo
#include TransactionManager.h; class Course; class CurriculumController { public: void createCourse(); private: TransactionManager theManager; }; void CurriculumController::createCourse() { Course *aNewCourse; theManager.saveCourse(aNewCourse); }
435
El CurriculumController es responsable por la administracin de toda la informacin de Course. Course se crea y se guarda en la base de datos Curriculum. Un TransactionManager es responsable por las interfaz a la base de datos. Hay una clase DBCourse que sabe como guardar la informacin de Course pertinente. Cada Course puede tener entre 3 y 10 alumnos inscritos y tiene slo un Professor. Un alumno puede inscribirse a un mximo de 4 cursos. Cada profesor imparte tres cursos. Se ejecuta un reporte listando cursos, el profesor y los alumnos inscritos para las tres primeras semanas del semestre.
436
Course
1..* 0..4 1 3 3..10
Student
TransactionManager
1 saveCourse (Course) 1
DBCourse
save (Course)
Professor
437
Decisiones de Diseo
n
438
Esta es la nica operacin que necesita al objeto Course Se elige la visibilidad local
439
Course
3..10
Student
TransactionManager
saveCourse (Course)
DBCourse
save (Course)
Professor
1
441
Las estimaciones iniciales de multiplicidad hechas durante el anlisis deben actualizarse y refinarse durante el diseo
442
Si cada curso tiene como mximo un Professor, entonces cada objeto Course puede incluir un apuntador simple al objeto Professor correspondiente
class Professor; class Course { public: // public info private: Professor *teacher; };
Course
0..*
Professor
Teacher
443
Opcionalidad
n
Si una liga es opcional, se debe incluir una operacin para probar la existencia de la liga Por ejemplo, si un Professor puede estar en sabtico, debe incluirse una operacin apropiada en la clase Professor para probar la liga
Professor teaching( ) 1 0..* Course
444
Conjuntos, listas, diccionarios, pilas, colas, ... Las clases contenedoras son con frecuencia clases con
parmetros que se muestran como:
Item
List
445
Course 1
StudentList
Student
446
Para reducir el desorden en los diagramas de clases, las clases contenedoras no se muestran tpicamente en los diagramas de clases Si se necesita el tipo de contenedor para comunicacin, se debe usar una nota List Course
3..10
Student
447
Clase Asociacin
n
Una clase de asociacin contiene informacin que pertenece a una liga entre objetos no a cada objeto implicado en la relacin
Course 4 3..10
Student
grade
448
Se transforma a la clase de asociacin en una clase interpuesta entre las otras dos clases Se establecen asociaciones con la multiplicidad apropiada entre la clase de asociacin y las otras dos clases
La multiplicidad siempre es UNA de la clase de asociacin a las clases ligadas
449
Course
1 3..10
Report grade
Student
4 1
450
Ejercicio
n
Actualice los diagramas de clases para mostrar las consideraciones del diseo de relacin
451
452
453
Usted podr:
Discutir el control de acceso y encapsulacin Usar la notacin para control de acceso en diagramas de clases Disear representaciones de atributos Representacin de tipos de atributos y valores por omisin Listar los cuatro tipos de operaciones comnmente proporcionadas por una clase Representar las firmas de las operaciones Describir los niveles de control de acceso que soporta C++ Discutir la relacin de amistad y la encapsulacin Discutir las opciones de diseo disponibles en C++ para atributos
454
Operaciones pblicas
Atributos
455
Los smbolos de acceso pueden ser usados en un icono de clase para indicar la accesibilidad de atributos y operaciones
El control de acceso se especifica para atributos y operaciones precediendo el nombre del miembro con los smbolos siguientes:
Course
457
Representaciones de Atributo
n
Las representaciones de atributos deben completarse en el diseo Se debe asignar un valor por omisin para cada atributo
El diseador debe seleccionar una representacin de dato apropiada para cada atributo de entre los siguientes:
Tipo de dato preconstruido (Built-in data type) Tipo de dato definido por el usuario (User-defined data type) Clases definidas por el usuario (User-defined class)
n
Los detalles ms finos del diseo de atributos dependen del lenguaje de implementacin
Anlisis
Course - name - description - maxStudents
Diseo
Course - name : String - description : DayType - maxStudents : short = 0
459
Diseo de Operaciones
n
Durante el anlisis
Durante el diseo
460
Tipos de Operaciones
n
461
Operaciones de Administracin
n
Se debe proporcionar un subconjunto de operaciones de cualquier clase para proporcionar las funciones de administracin de la clase
Operaciones de Implementacin
n
El subconjunto de operaciones de una clase que proporcionan las capacidades bsicas de la clase se llaman operaciones de implementacin
Si se requiere o necesita cualquier rastreo, estas son las operaciones que se rastrean en el diseo
463
Operaciones de Acceso
n
Las operaciones que soportan el acceso a los atributos se les hace referencia como operaciones de acceso
n
Operaciones de Ayuda
n
El ultimo conjunto de operaciones son aquellas llamadas operaciones de ayuda, que se encargan de las funciones auxiliares de la clase que generalmente no es para el usuario
465
Anlisis Course
+addStudent (newStudent)
Diseo Course
+addStudent (newStudent : Student*):void
466
467
El control de acceso de UML mapea directamente a C++. El control de acceso se indica por las siguientes palabras clave:
n n n
Public: Accesible a todos los clientes Protected: Accesible solo a todas las subclases Private: Accesible solo a la clase misma
En C++, los atributos se llaman variables miembro mientras las operaciones se llaman funciones miembro. El acceso para todos los atributos son usualmente privados o protegidos El acceso para todas las operaciones que son parte de la interfaz externa es publica
468
Operacin pblica
Operacin protegida
Atributos privados
Friendship (Amistad)
n
Un amigo es una clase u operacin cuya implementacin puede hacer referencia a partes privadas o protegidas de otra clase En C++ el mecanismo de amistad permite a una clase distinguir ciertas clases privilegiadas que tienen los derechos para ver las partes protegidas y privadas de la clase Precaucin: Friendships (Amistades) rompen la Precaucin: Friendships (Amistades) rompen la encapsulacin de la clase, y por lo tanto debe encapsulacin de la clase, y por lo tanto debe escogerse cuidadosamente y usarse slo escogerse cuidadosamente y usarse slo cuando sea absolutamente necesario cuando sea absolutamente necesario
470
Atributos de C++
n n
Los atributos se llaman variables miembros en C++ C++ proporciona un rango de tipos de datos para cada variable miembro.
n
Derived types incluyen arrays, strings, structures, unions y pointers User-defined types como enum y typedef User-defined classes
471
public: private: char *description; char *name; short creditHours; short maxStudents; };
472
private: char *description; char *name; short creditHours; short maxStudents; dayType daysOffered; };
473
#include UniversityPlace.h; enum dayType { MW, MWF, TT }; class Course { public: private: char *description; char *name; short creditHours; short maxStudents; dayType daysOffered; UniversityPlace location; };
474
Las operaciones se llaman funciones miembro en C++ C++ normalmente distingue las operaciones de administracin de otras operaciones C++ soporta los conceptos de parmetros y valores de retorno en operaciones
475
Cada clase en C++ define operaciones de administracin llamadas constructores y destructores Si los constructores y los destructores no estn definidos, se proporcionan versiones por omisin Un constructor define como se construyen los objetos de una clase Un constructor de copia se usa para hacer una copia de un objeto existente Un destructor define lo que sucede cuando se destruye un objeto
476
Constructores
n
Los constructores son funciones miembro que tienen el mismo nombre de la clase misma Los constructores se usan tambin para iniciar las variables miembro de una clase class Course { public: Course(); // Constructor ... private: short maxStudents; }; Course::Course() : maxStudents(0) // Constructor { // Constructor code };
477
Constructores de Copia
n
Los constructores de copia se usan para iniciar un objeto usando los valores de otro objeto El compilador crear una copia por omisin si no se provee una
n
Todos los datos miembros en la copia se inician copiando el valor del objeto original
Los constructores de copia son llamados cuando los objetos se pasan por valor
478
479
Qu sucede aqu?
class Employee { public: Employee(const char *n= ); ~Employee () {delete []name;}; private: char *name; }; Employee::Employee(const char *n): name(new char[strlen(n)+1]) { strcpy(name,n); }
480
481
Constructor de Copia
n
La clase contiene apuntadores o referencias a otros objetos Se hace extra procesamiento cuando se crea y borra un objeto
Ejemplo: incrementar el nmero de objetos en el constructor y decrementar el nmero de objetos en el destructor
482
Inicializacin de Miembros
n
483
Inicializacin de Miembros
n
Se inicia el nombre de atributo usando el constructor string (cadena) por omisin El valor del nombre se cambia en el cuerpo del constructor
484
class Employee { public: Employee(const String&); private: String name; }; Employee::Employee(const String& n): name(n) {}
485
Inicializacin de Miembros
n
Buen estndar Buen estndar Siempre usar inicio de miembro Siempre usar inicio de miembro Cdigo ms fcil de leer Cdigo ms fcil de leer Cdigo ms fcil de mantener Cdigo ms fcil de mantener
486
Orden de Inicializacin
n
Qu sucede aqu?
extern String LookupEmployee(long); class Employee { public: Employee(long); private: String name; long id; }; Employee::Employee(long i): id(i), name(LookupEmployee(id)) {};
487
Orden de Inicializacin
n
La inicializacin ocurre en el orden especificado en la declaracin de la clase NO en la orden en el constructor En el ejemplo, LookupEmployee se llama usando una variable inicializada Arreglar
n
Cambiar el orden en la declaracin de la clase Buen estndar Buen estndar La orden de declaracin de la clase y el orden de La orden de declaracin de la clase y el orden de inicializacin deben ser las mismas inicializacin deben ser las mismas
488
Operaciones de C++
n
C++ soporta pasar parmetros a operaciones y regresar un solo elemento como tipo de regreso Por ejemplo: bool addStudent (const Student & student); C++ soporta diferentes modos de pasar parmetros
n n
489
Mecanismo por omisin en C++ Se hace una copia del parmetro actual Cambia al parmetro formal, no cambia el parmetro actual
void Course::addStudent(Student aStudent){ aStudent.setName(noName); // name of aStudent set to noName }; main() { Student theStudent; theStudent.setName(Terry); aCourse.addStudent(theStudent); // name is still set to Terry }
490
Soportado por argumentos de referencia y apuntadores No se hace copiado de objetos Los cambios del parmetro formal cambian al parmetro actual
void Course::addStudent(Student& aStudent){ aStudent->setName(noName); // name of aStudent set to noname }; main() { Course aCourse; Student *theStudent; theStudent = new Student; theStudent->setName(Terry); aCourse.addStudent(theStudent); // name is noName } 491
Apuntadores y Referencias
n
Es una direccin Puede cambiar para apuntar a otro objeto Puede no estar iniciado Puede ser nulo
Una referencia
Es un alias para un objeto Debe estar iniciado Una vez iniciado, la referencia no puede cambiar para
referenciar a otro objeto
492
493
Modificador Const
n
Un objeto const no puede ser modificado Al pasar una referencia a un objeto const se preserva lo que se pas por medio de semnticas de valor sin tener que copiar
void foo(const T& object) { // cannot modify object } // copy constructor not called
494
Tipos de Retorno
n
C++ soporta regresar un objeto por valor o por referencia El regreso por valor resulta en la copia del objeto que regresa que se esta haciendo
495
Ejercicio
n
496
497
Diseo de Herencia
498
Discutir como soporta C++ la herencia Definir polimorfismo y describir como se soporta en C++ Diferenciar entre ligado esttico y dinmico Usar funciones virtuales para solicitar ligado dinmico Determinar el nivel apropiado de acceso para datos y
funciones miembros con herencia
499
Jerarquas de Herencia
n
Durante el anlisis, se establecen jerarquas de herencia Durante el diseo, las jerarquas de herencia se refinen a: Incrementar reuso Incorporar clases de implementacin Incorporar clases de librera disponibles
Superclass
Subclass
500
Se definen superclases nuevas que contengan elementos comunes Esto reduce la cantidad de cdigo que se va a escribir y refuerza la uniformidad, no se puede manejar un mismo elemento en dos clases diferentes si las dos clases lo heredan de una superclase comn
501
Customer
1..*
1..*
502
La asociacin con Customer se cambi a superclase interestRate se hereda a ambas subclases y debe manejarse de forma idntica
Mortgage getPayment()
SavingsAccount getBalance()
Ambos getPayment() y getBalance() requieren clculo del inters que es llevado a cabo por el mtodo heredado getRate()
503
C++ proporciona soporte a nivel lenguaje, directo para herencia de atributos y operaciones La terminologa de herencia es
Base Class
Derived Class
504
505
class base { private: int x; }; class derived : public base { private: int z; };
Objetos
aBase aDerived
x z
506
Polimorfismo
n
El polimorfismo permite que los clientes manipulen objetos en trminos de su superclase comn
507
Ejemplo de Polimorfismo
Animal talk ()
Lion talk ()
Tiger talk ()
Sin Polimorfismo
Con Polimorfismo
if animal = Lion then do the Lion talk else if animal = Tiger then do the Tiger talk end
508
Polimorfismo y C++
n
El polimorfismo es una ventaja de herencia realizada durante la implementacin C++ porporciona soporte para el polimorfismo a travs de
El diseador debe permitir explcitamente el polimorfismo a travs del uso apropiado de funciones miembro virtuales de C++
Normalmente el mtodo particular que se va a ejecutar como resultado de una llamada de funcin se conoce al momento de compilacin. Esto se llama ligado esttico (o temprano) El compilador reemplaza la llamada de funcin con cdigo diciendo el
programa que direcciona para saltar y poder encontrar esa funcin
Con el polimorfismo, el tipo particular de objeto para el que un mtodo se va a invocar no se conoce hasta el tiempo de ejecucin El compilador no puede proporcionar la direccin al tiempo de
compilacin
Herencia y Destructores
n
Si un destructor no es virtual entonces el borrado a travs del apuntador de la clase base llamar al destructor incorrecto, si el objeto al que apunta es de la clase derivada
Ball Ball () ~Ball ()
512
Los logros en el desempeo se realizan al no tener que ejecutar declaraciones switch/case Cada vez que se llama a una funcin virtual, la funcin correcta que se va a invocar se determina al examinar la tabla virtual
n
El tiempo para la llamada de funcin es un porcentaje significativo del tiempo de ejecucin de funcin Sugerencia: Si el uso de funciones virtuales yyclases virtuales Sugerencia: Si el uso de funciones virtuales clases virtuales hace ms claro el diseo, yyel cdigo ms fcil de entender hace ms claro el diseo, el cdigo ms fcil de entender entonces probablemente valga la pena entonces probablemente valga la pena
513
514
Clases Abstractas
n
Una clase abstracta es aquella a la que no se le pueden crear instancias Las clases abstractas deben tener al menos una subclase para ser tiles
Animal Abstract talk ()
Lion talk ()
Tiger talk ()
Todos los objetos Todos los objetos son ya sea leones o son ya sea leones o tigres; no hay tigres; no hay instancias directas instancias directas de Animal de Animal
515
Con las clases abstractas el diseador asume que las subclases agregaran su estructura y comportamiento
n
La clase abstracta no necesita proporcionar mtodos para cada operacin que define La clase abstracta debe proporcionar el protocolo para todas las operaciones polimorfas
516
El Animal no necesita El Animal no necesita especificar el mtodo talk() especificar el mtodo talk() Los mtodos deben ser Los mtodos deben ser provistos por Lion yyTiger para provistos por Lion Tiger para talk() yyestos mtodos deben talk() estos mtodos deben conformar al protocolo definido conformar al protocolo definido en Animal en Animal
Lion talk ()
Tiger talk ()
517
C++ permite que un desarrollador afirme que un mtodo de una clase abstracta no pueda ser invocado directamente, al iniciar su declaracin a cero Tal mtodo es llamado una funcin virtual pura C++ prohibe la creacin de instancias de clases que contengan funciones virtuales puras class Animal { ... virtual void talk() = 0; };
Hay 3 consideraciones de diseo importantes de funciones involucradas aqu: n Proporcionar una interfaz de funcin solo a clases derivadas:
Usar una funcin virtual pura
n
Las subclases se implementan en C++ usando derivacin pblica Con derivacin pblica, la interfaz pblica de la clase base permanece pblica en la clase derivada
n
Los objetos de la clase derivada pueden accesar todos los elementos pblicos de la clase base Las funciones miembro de la clase derivada tienen acceso a todos los atributos y operaciones pblicas y con herencia protegida
520
C++ tambin permite derivacin privada en la que la interfaz pblica de la clase base se convierte en privada en la clase derivada
n
Los objetos de la clase derivada no pueden accesar elementos pblicos de la clase base Las funciones miembro de la clase derivada an tiene acceso a todos los atributos y operaciones protegidos y pblicos
La derivacin privada es de ayuda en implementaciones de reuso - no es herencia verdadera y no se usa para implementar subclases
n
Si para cada objeto O1 de tipo S hay un objeto O2 de tipo T tal que para todos los programas P definidos en trminos de T, el comportamiento de P no se cambia cuando O1 se substituye por O2 entonces S es un subtipo de T
Menos formal:
n
Puede siempre pasar un apuntador o referencia a una clase derivada a una funcin que espera un apuntador o referencia a una clase base
Estas reglas representan el estilo ISA de programacin Estas reglas representan el estilo ISA de programacin
522
Siguen estas clases el estilo Siguen estas clases el estilo de programacin ISA? de programacin ISA?
Stack
523
Si un mtodo espera una List, entonces la operacin insert (position) debe ser exitosa
n
Una subclase (Clase derivada) de estilo ISA NO Una subclase (Clase derivada) de estilo ISA NO debe tener ms restricciones que su superclase debe tener ms restricciones que su superclase
524
Factoring
n
525
Delegacin
n
List Stack push (Item) pop () insertBottom (Item) removeBottom () 1 insert (Item, position) remove (position)
526
Herencia Privada
n
Private inheritance
push() y pop() pueden accesar push() y pop() pueden accesar mtodos de List pero las instancias de mtodos de List pero las instancias de Stack no pueden Stack no pueden
527
Herencia Mltiple
n
InsurableItem
InterestBearing
BankAccount
528
Mucha ms complejidad asociada con el diseo de herencia mltiple Con frecuencia sobre-utilizado Deben resolverse dos problemas:
529
Colisiones de Nombres
n
Las colisiones de nombres resultan cuando dos o mas superclases definen el mismo atributo u operacin Ambos InsurableItem y InterestBearingItem tienen atributos que se llaman presentValue
Asset
InsurableItem presentValue
InterestBearing presentValue
Un objeto BankAccount quiere Un objeto BankAccount quiere imprimir el presentValue imprimir el presentValue Cul se imprime? Cul se imprime?
BankAccount
530
Esta ambigedad puede resolverse al calificar totalmente el nombre para indicar la fuente de la declaracin
n
InsurableItem::presentValue
O
n
InterestBearingItem::presentValue
531
Savings
Checking
532
533
Herencia Repetida
n
Otro problema asociado con la herencia mltiple es la herencia repetida. Considere el siguiente ejemplo:
Window
WindowWithDialogBox
WindowWithScrollbar
ScrollingWindowWithDialogBox
534
Note la figura de diamante distintiva de la jerarqua de herencia Esto indica que la misma clase base esta siendo heredada por una clase derivada ms de una vez. Por ejemplo, ScrollingWindowWithDialogBox esta heredando Window ms de una vez
n
535
En este caso, ScrollingWindowWithDialogBox solo necesita una copia de las variables de la instancia Window Para asegurar que una copia es heredada, se declara la clase base comn como virtual cuando est siendo derivada a clases base intermedias Todas las clases intermedias derivan de la clase base comn de forma virtual La nica copia que es heredada se considera que se comparte por las mltiples rutas de derivacin Uso del operador de resolucin de mbito para referir a elementos compartidos heredados de la clase base comn no se requiere con la derivacin virtual
536
Window es la clase base Cada ventana tiene una x y una y que indican el punto de origen La funcin miembro Window::paint pinta la ventana bsica
class Window { public: ... virtual void paint( ) { // paint window stuff only } protected: Point x, y; // origin ... } ;
537
Las clases derivadas intermedias derivan de Windows de manera virtual Cada clase derivada hereda una x y una y de la clase base y la funcin miembro Window::paint
class WindowWithDialogBox : public virtual Window { public: void dialogBoxPaint( ); // paint only dialog box virtual void paint( ); // invoke Window::paint // and // paint dialog box };
class WindowWithScrollBar : public virtual Window { public: ... void scrollBarPaint( ); // paint only scrollbar virtual void paint( ); // invoke Window::paint and // paint scrollbar ... } ; 538
La clase derivada ScrollableWindowWithDialogBox hereda una x y una y, porque ambas clases padre fueron virtualmente derivadas de Window Note que esta clase no incluye la palabra reservada virtual de sus clases padres
class ScrollableWindowWithDialogBox : public WindowWithDialogBox , public WindowWithScrollBar { public: ... virtual void paint( ); ... } ;
539
Un error comn al disear una clase derivada del ms bajo-nivel es invocar la funcin comn de la clase base ms de una vez Por ejemplo, suponga que hace un cdigo de la funcin pintar del ms bajo-nivel como sigue:
virtual void ScrollableWindowWithDialogBox::paint() { WindowWithDialogBox::paint( ); WindowWithScrollBar::paint( ); }
Entonces la funcion Window::paint sera invocada dos veces, una de WindowWithDialogBox::paint y otra de WindowWithScrollBar::paint Esto podra ser solo una perdida de tiempo o podra (en algunos sistemas) corromper la imagen en pantalla
540
541
Herencia Mltiple
n
La herencia mltiple es conceptualmente directa y se necesita para modelar exactamente varios problemas del mundo-real Los diseadores novatos tienden al sobreuso de la herencia mltiple, por ejemplo, el usar herencia mltiple cuando se podra usar la agregacin En la prctica, la herencia mltiple es un problema de diseo complejo y puede guiar a dificultades de implementacin, incluyendo colisiones de nombres y herencia repetida
Use herencia mltiple solo cuando sea necesario, Use herencia mltiple solo cuando sea necesario, y y siempre con precaucin! siempre con precaucin!
542
Ejercicio
n
Discuta las decisiones de diseo de herencia para el problema que se esta desarrollando
543
544
Resumen General
545
Objetivos: Resumen
n
546
El proceso de desarrollo es una vista de alto nivel del proceso completo al desarrollar un producto de software
Las fases del ciclo de desarrollo se descomponen en una serie de iteraciones a travs de las cuales el software evoluciona incrementalmente
Las actividades del anlisis y diseo ocurren durante las fases de inicio, elaboracin y construccin
547
El propsito de esta fase es establecer el caso de uso para un nuevo sistema o para la actualizacin de un sistema existente Las salidas incluyen un conjunto de requerimientos esenciales para el proyecto, una valoracin inicial del riesgo y, opcionalmente un prototipo conceptual y un modelo inicial del dominio Un prototipo conceptual puede construirse para validar hiptesisy percepciones de riesgo (tales como funcionalidad, desempeo, tamao, complejidad, base tecnolgica)
Esta fase envuelve el anlisis del dominio del problema y el establecimiento de una base arquitectnica para el sistema Las salidas de esta fase consisten en un modelo del comportamiento del sistema que incluye el modelo de casos de uso, escenarios, un modelo del dominio, una arquitectura de ejecutables y una estrategia de diseo que controle los mecanismos clave necesarios para el desarrollo del sistema El modelo de casos de uso contiene actores y casos de uso Un actor es alguien o algo que intercambia informacin activamente
con el sistema, proporciona entradas al sistema o recibe pasivamente informacin del sistema Un caso de uso demuestra funcionalidad desempeada por el sistema en respuesta a estmulos de un actor
549
Un escenario es una secuencia de declaraciones expresadas en lenguaje natural Es una instancia de un caso de uso Los objetos se identifican al examinar los escenarios y los objetos relacionados se agrupan en clases El modelo de dominio inicial se actualiza para contener las clases nuevas Las arquitecturas buenas se construyen en capas bien definidas de abstraccin donde cada capa Representa una abstraccin coherente Tiene una interfaz bien definida y controlada Se construye sobre facilidades bien definidas y controladas en niveles
menores de abstraccin
550
Aplique alguno o todos los comportamientos de los escenarios claves Su cdigo de produccin sea de calidad Considere la mayora, sino todas, las interfaces arquitectnicas claves
Un mecanismo clave es una decisin basada en estndares, polticas y prcticas comunes de la organizacin
551
En esta fase, las iteraciones envuelven el ciclo de vida del desarrollo de la aplicacin El desarrollo se realiza a travs de una secuencia de iteraciones Cada iteracin se compone de Una valoracin del anlisis, diseo e implementacin actual para
identificar riesgos crticos sin resolver
Los escenarios ilustran los riesgos del modelo actual del anlisis y
diseo, por lo que se extiende a manejar estos riesgos
La implementacin se extiende para retirar los riesgos identificados Despus de que se revis y prob la implementacin, se actualiza el
modelo del anlisis y diseo para reflejar los cambios hechos durante la implemetacin
n
Las actividades de esta fase incluyen: La adicin de clases al modelo reflejando el CMO debe desarrollarse el sistema Clases de Interface Clases de Controller Clases de Helping
Especificacin de tipos de datos de los atributos Especificacin de las firmas de las operaciones Adicin de operaciones de administracin, acceso y ayuda Refinamiento de jerarquas de herencia para incrementar la
reutilizacin
Adicin de funciones virtuales para soportar el polimorfismo Resolucin de problemas de herencia mltiple
554
555
Bibliografa
556
Anlisis y Diseo
n
G. Booch, Object-Oriented Analysis and Design with Applications, Benjamin/Cummings, Redwood City, CA, 1994 J. Rumbaugh, et al., Object-Oriented Modeling and Design, PrenticeHall, Englewood Cliffs NJ, 1991 I. Jacobson, et al., Object-Oriented Software Engineering, AddisonWesley, Reading, MA, 1992 R. Wirfs-Brock et al., Designing Object-Oriented Software, PrenticeHall, Englewood Cliffs NJ, 1990 N. Wilkinson, Using CRC Cards, SIGS Books, New York, NY, 1995 M. Lorenz, Object-Oriented Software Development, Prentice-Hall, Englewood Cliffs NJ, 1993
557
Anlisis y Diseo
n
G. Booch (edited by ed Eykholt), Best of Booch: Designing Strategies, SIGS Books & Multimedia, New York, NY, 1996 J. Rumbaugh, OMT Insights: Perspectives on Modeling from the Journal of Object-Oriented Programming, SIGS Books & Multimedia, New York, NY, 1996
558
D. Collins, Designing Object-Oriented User Interfaces, Benjamin/Cummings, Redwood City, CA, 1995 G. Lee, Object-Oriented GUI Application Development, Prentice Hall, Englewood Cliffs, NJ, 1993
559
Arquitectura
n
E. Rechtin, Systems Architecting: Creating and Building Complex Systems, Prentice-Hall, Englewood Cliffs NJ, 1991 E. Gamma, et al., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995 D. E. Perry, and A. L. Wolf, Foundations for the Study of Software Architecture, ACM Soft. Eng. Notes, 17 (4), Oct. 1992, pp. 40-52 P. Kruchten, The 4+1 View Model of Architecture, IEEE Software, November 1995
560
Software General
n
S. McConnell, Code Complete - A Practical Handbook of Software Construction, Microsoft Press, Redmond, WA, 1993 J. McCarthy, Dynamics of Software Development, Microsoft Press, Redmond, WA, 1995 F. P. Brooks, Jr., The Mythical Man-Month, Addison-Wesley, Reading, MA, 1995 D. Firesmith and E. Eykholt, Dictionary of Object Technology, SIGS Books, New York, NY, 1995
561
Metrics
n
M. Lorenz and J. Kidd, Object-Oriented Software Metrics, Prentice Hall, Englewood Cliffs, NJ, 1994
562
Administracin de Proyectos
n
563
Mecanismos Clave
n
R. Orfali, D. Harkey, and J. Edwards, The Essential Distributed Objects Survival Guide, John Wiley & Sons, New York, NY, 1996 D. Barry, The Object Database Handbook, John Wiley & Sons, New York, NY, 1996
564
S. Lippman, C++ Primer, Addison-Wesley, Reading, MA , 1991 Stroustrup, C++ Programming Language, Addison-Wesley, Reading, MA, 1991 P. Winston, On to C++, Addison-Wesley, Reading, MA, 1994 S. Davis, C++ for Dummies, IDG Books, Foster City, CA, 1994 B. Eckel, Thinking C++, Prentice-Hall, Englewood Cliffs, NJ, 1995
565
S. Meyers, Effective C++, Addison-Wesley, Reading MA, 1992 R. Murray, C++ Strategy and Tactics, Addison-Wesley, Reading MA, 1993 T. Cargill, C++ Programming Style, Addison-Wesley, Reading MA, 1992 R. Martin, Designing Object-Oriented C++ Applications Using the Booch Method, Prentice Hall, Englewood Cliffs, NJ, 1995 J. Soukup, Taming C++, Addison-Wesley, Reading MA, 1994 A. Riel, Object-Oriented Design Heuristics, Addison-Wesley, Reading MA, 1996 S. Meyers, More Effective C++, Addison-Wesley, Reading MA, 1996
566
Flaymig, Practical Data Structures in C++ Vilot/Booch, C++ Programmer's Power Pack Stroustrup, The Nature and Design of C++, Addison-Wesley, Reading, MA, 1994 J. Coplien, Advanced C++, Addison-Wesley, Reading, MA, 1992
567
Problema de Nmina
Este ejemplo esta basado en la aplicacin de nmina encontrado en el libro Designing Object Oriented C++ Applications Using the Booch Method, Robert C Martin, PrenticeHall, 1995.
568
El sistema consiste de una base de datos de empleados de una compaa y sus datos asociados, as como tarjetas de chequeo. Todos los empleados se identifican por un nmero ID nico de empleado. El sistema debe pagar a cada empleado la cantidad correcta, a tiempo, por el mtodo que ellos especifican. Algunos empleados trabajan pagndoseles una cuota por hora. Entregan tarjetas de chequeo diariamente que registran la fecha y nmero de horas trabajadas. Si alguno trabaja ms de 8 horas, se les paga el 50% adicional de su cuota correspondientes por cada hora extra. Los empleados por hora reciben su pago cada semana. Otros empleados reciben un salario y an as entregan sus tarjetas de chequeo diariamente, ya que contienen las horas trabajadas. De esta manera, el sistema pueda guardar un registro de las horas trabajadas. Estos empleados reciben su pago el ltimo da laborable del mes.
569
Algunos de los empleados asalariados reciben tambin una comisin basada en sus ventas. De este modo, entregan sus ordenes de compra, en donde se reflejan la fecha y monto de la venta. La cuota de comisin se determina para cada empleado, siendo esta del 10%, 15%, 25% o 35%. Los vendedores reciben su pago cada quince das.
Inicialmente, el cheque de pago del empleado debe recogerse con el Pagador. Los empleados pueden cambiar su mtodo de pago. Pueden obtener sus cheques de pago por correo a la direccin postal que deseen o pueden solicitar depsito directo en una cuenta de banco de su eleccin.
570
El Administrador de Nmina mantiene actualizada la informacin del empleado. El Administrador de Nmina es responsable de agregar, borrar y cambiar la informacin de los empleados; tal como su nombre, direccin, mtodo de pago y clasificacin de pago (por hora, asalariado, comisionado) La aplicacin de nmina se ejecutar cada viernes y el ltimo da laborable del mes. Le pagar a los empleados correspondientes en ese da. El sistema sabr en que fecha se les debe pagar a los empleados, entonces generar registros de pagos de la ltima vez que el empleado recibi su pago en la fecha especificada.
571
572
Este ejemplo esta basado en la aplicacin de nmina encontrado en Designing Object Oriented C++ Applications Using the Booch Method, Robert C Martin, Prentice-Hall, 1995.
573
Dibuje un diagrama de casos de uso Escriba una definicin para cada actor Para un casos de uso Escriba una breve descripcin (dos sentencias mximo) Escriba el flujo de eventos Liste algunos escenarios posibles
574
Salaried Employee
Payroll Administrator
Run Payroll
Bank
575
Persona que recibe un pago por hora. Pago de tiempo extra (1 1/2 ms
de la cuota por hora) se recibe por todas las horas trabajadas en exceso de 40 horas por semana
n
Empleado asalariado
Empleado comisionado
Empleado asalariado que tambien recibe una comision por sus ventas
n
Administrador de nomina
Banco
Breves Descripciones
n
Ejecucion de Nmina
577
Breves Descripciones
n
Administracin de Tiempo
578
2.1 Pre-condiciones Ninguna 2.2 Flujo Principal Este caso de uso inicia cuando el Administrador de Nmina introduce su nmero id de empleado. El sistema verifica que el nmero id de empleado introducido sea vlido. El sistema despliega las actividades disponibles y le pide al usuario que seleccione una: ADD, DELETE, MODIFY, REVIEW, o QUIT. Si la actividad seleccionada es ADD, el A-1: Se desempea un subflujo de New Employee. Si la actividad seleccionada es DELETE, el A-2: Se desempea un subflujo de Delete an Employee. Si la actividad seleccionada es MODIFY, el A-3: Se desempea un subflujo de Modify an Employee.
579
2.4 Flujos de excepcin E-1: Informacin de empleado invalida. El usuario sabe que se ha introducido informacin invalida. El usuario puede re-introducir la informacin para terminar el caso de uso. E-2: El sistema no puede guardar la informacin del empleado. El usuario sabe porque no se puede guardar la informacin. El caso de uso inicia de nuevo. E-3: La informacin del empleado no puede ser desplegada. El usuario sabe porque la informacin no puede ser desplegada. El caso de uso inicia de nuevo.
583
2.2 Flujo Principal El caso de uso empieza cuando el Administrador de Nmina introduce su nmero id de empleado. El sistema verifica que el nmero id de empleado introducido sea valido y capaz de generar la nmina (E-1). El usuario introduce la fecha de nmina y le pide al sistema que genere la nmina. El sistema obiente los datos de todos los empleados que deben recibir pago la fecha deseada (E-2). El sistema calcula el pago y las deducciones legales. Si el mtodo de pago es recogerlo con el Pagador o Correo, el sistema imprime un cheque de pago. Si elmtodo de pago es depsito bancario, el sistema crear una transaccin bancaria. El caso de uso termina cuando todos los empleados que deban recibir pago en la fecha deseada hayan sido procesados.
584
2.3 Flujos Alternos Ninguno 2.4 Flujos de Excepcin E-1: Id invalido introducido. El usuario puede re-introducir un nmero id o terminar el caso de uso. E-2: La informacion del empleado no puede ser obtenida. El usuario sabe porque no se puede obtener la informacin. El caso de uso i nicia de nuevo desde el principio.
585
2.1 Pre-condiciones Ninguna 2.2 Flujo Principal El caso de uso inicia cuando el Empleado introduce su nmero id de empleado. El sistema verifica que el nmero id de empleado introducido sea valido (E-1). El sistema despliega las avtividades disponibles y le pide al usuario que seleccione una: ADD, DELETE, MODIFY, REVIEW, o QUIT. Si la actividad seleccionada es ADD, el A-1: Se desempea un subflujo de Add a New Timecard. Si la actividad seleccionada es DELETE, el A-2: Se desempea un subflujo Delete a Timecard.
586
587
2.3 Flujos alternos A-1: Agregar una Tarjeta de tiempo nueva El sistema desplegara la pantalla de la tarjeta de tiempo. El usuario debera llenar la siguiente informacion: numero id de empleado, fecha y horas trabajadas. Cuando ya se introdujo toda la informacion, el usuario le pide al sistema que procese la tarjeta de tiempo. El sistema asocia la tarjeta de tiempo con el empleado correcto, guarda la informacion para uso futuro (E-2) y el casos de uso inicia de nuevo. A-2: Borrar una Tarjeta de tiempo El usuario introduce el numero id de empleado y la fecha. El sistema retrieves (E-3) y despliega la informacion de la tarjeta de tiempo. Se le pregunta al usuario si confirma el borrado. Si lo confirma, se borra la tarjeta de tiempo del sistema. Si no se confirma el borrado, se cancela la peticion. El casos de uso inicia de nuevo.
588
2.4 Flujos de Excepcin E-1: Id introducido no vlido. El usuario puede re-introducir un nmero de id o finaliza el caso de uso. E-2: El sistema es incapaz de guardar la informacin de timecard. El usuario sabe porque no se puede guardar la informacin. El caso de uso inicia de nuevo. E-3: No se puede obtener la informacin de timecard. El usuario sabe porque no se pudo obtener la informacin. El caso de uso inicia de nuevo.
590
2.2 Flujo Principal Este caso de uso inicia cuando el empleado introduce su nmero de id. El sistema verifica que el nmero de id sea vlido (E-1). El sistema despliega las actividades disponibles y pide que seleccione una: ADD, DELETE, MODIFY, REVIEW, o QUIT. Si la actividad seleccionada es ADD, el A-1: Se desempea un subflujo de agregacion de New Purchase Order. Si la actividad seleccionada es DELETE, el A-2: Se desempea un un subflujo de borrado de Delete a Purchase Order.
591
El usuario puede cancelar el caso de uso en cualquier punto del flujo de eventos, el caso de uso inicia de nuevo.
592
A-1: Agregar New Purchase Order El sistema despliega la pantalla de orden de compra. El usuario debe llenar la siguiente informacin: nmero de orden de compra, fecha, producto comprado, cantidad de la venta, nombre del cliente y direccin del cobro del cliente.
Cuando se introdujo toda la informacin, el usuario le pide al sistema que procese la orde. El sistema guarda la informacin para uso futuro (E-2) y el caso de uso inicia de nuevo.
593
Flujos de Excepcin E-1: Id introducido no valido. El usuario puede re-introducir el nmero de id o finaliza el caso de uso. E-2: El sistema es incapaz de guardar la informacin de la orden de compra. El usuario sabe porque no se pudo guardar la informacin. El caso de uso inicia de nuevo desde el principio. E-3: La informacin de la orden de compra no puede ser obtenida. El usuario sabe porque no se pudo obtener la informacin. El caso de uso inicia desde el principio.
595
Crear un empleado por hora Crear un empleado comisionado Crear un empleado asalariado Cambiar una categoria de pago de empleado Cambiar un mtodo de entrega de pago de empleado Cambiar otra informacion de empleado Revisar informacion de empleado Borrar un empleado
596