Conceptos Claves de Análisis y Diseño
Lic. César Alcántara Loayza
CAL/Fundamentos
Abstracción Es una representación de un objeto
del mundo real. No es una descripción completa sino una que es útil para una aplicación o propósito específico.
CAL/Fundamentos
Abstracción Criterios para decidir sobre la
información necesaria: Contexto: ¿quién usará el objeto?
¿cómo lo usará?, ¿por qué necesita el objeto?. Si el objeto es un aula, ¿se necesitan las dimensiones de la misma?.
Detalle: ¿qué tanto detalle necesito?. Tiempo: ¿cuánto necesito para hacer
el seguimiento del objeto?.
CAL/Fundamentos
Abstracción : describir objeto Ejem. - Liste la información necesaria
acerca de un auto para tres dominios de problema diferentes: Información acerca de un auto que la
división de motores de vehículos requiere.
Información acerca de un auto que un estacionamiento requiere.
Información acerca de un auto que un vendedor de autos requiere.
CAL/Fundamentos
Encapsulamiento Conocido como “ocultamiento de la
información” (Information hidding), porque la implementación del objeto está oculta.
Pero hay algo mas importante: “lo que el objeto expone”.
Propósito e interfase. Interfase : la parte visible de una clase. Usada
para describir la signatura pública de las operaciones en una clase.
CAL/Fundamentos
Encapsulamiento Muchos objetos comparten la misma
interfase pero tienen un propósito distinto: Ejem., El control de Televisión y de una
video grabadora. El diseño basado en
encapsulamiento es clave para crear objetos reusables e intercambiables.
CAL/Fundamentos
Encapsulamiento La definición de un objeto en dos
fases: Definir una vista encapsulada del objeto
definiendo solo su propósito e interfase. Definir el interior, la implementación de
los datos y el comportamiento que soporte al propósito y la interfase.
La implementación puede variar en el tiempo la interfase y propósito son mas estables.
CAL/Fundamentos
Encapsulamiento Ejercicio:
Identificar los aspectos de cada uno de los siguientes dispositivos que deban ser expuestos u ocultados:
Televisión Videograbadora.
Modele sus respuestas.
CAL/Fundamentos
Encapsulamiento Ejemplo: Teléfono
Expone: Propósito: Permitir la comunicación a través de una línea
telefónica. Interfases:
Iniciar una llamada Terminar una llamada Hacer una llamada
Oculta: Implementación de la manipulación de botones a señales
electronicas y los datos usados para convertir señales. Implementación del inicio de la llamada y los datos usados
para ejecutar la conexión. Los datos de identificación del llamador
CAL/Fundamentos
Cohesión Es una medida del grado al cual todos las
partes de un objeto soportan un único propósito. Alta cohesión significa que todos los elementos en el objeto soportan el mismo propósito. Baja cohesión significa que diferentes elementos soportan diferentes propósitos.
Puede ser aplicada a cualquier entidad – no solo a objetos – incluyendo operaciones, aplicaciones, componentes, subsistemas y sistemas.
CAL/Fundamentos
Cohesión Cuando los objetos tienen que
manejar múltiples responsabilidades, son menos flexibles, incurren en overhead al jugar con muchas tareas y trabajan menos eficientemente; como cuando se nos asignan diversas y diferentes tareas en nuestro trabajo en vez de enfocarnos en nuestra especialidad.
CAL/Fundamentos
Cohesión Las organizaciones que necesitan de
máxima flexibilidad tienden a tener alta cohesión. Alta cohesión un único propósito para cada objeto, soporta el ensamble rápido de objetos para crear nuevos componentes y aplicaciones.
Los principios de cohesión se aplican igualmente a todos los niveles de abstracción de modelamiento.
CAL/Fundamentos
Cohesión ¿cuánta información debería incluir en un
objeto? Solo la información necesaria para soportar el
único propósito del objeto. ¿cuándo debería partirse un objeto?
Cuando es objeto es responsable de mas un propósito.
¿cuándo debería juntar múltiples objetos? Cuando los objetos sean fragmentados y no
puedan cumplir un propósito sin la ayuda constante de otro objeto.
CAL/Fundamentos
Acoplamiento Es una medida del grado de dependencia
entre objetos. Dependencia significa que un objeto necesita los datos o la funcionalidad poseida por otro objeto.
Bajo acoplamiento significa bajo grado de dependencia y alto acomplamiento significa alto grado de dependencia. Acomplamiento : una medida del grado de
dependencia entre los elementos del modelo.
CAL/Fundamentos
Acoplamiento Si un cambio en un objeto necesita
cambios en otro objeto, el segundo objeto es dependiente del primero. Ej. Si la interfase de un servidor cambia la aplicación cliente probablemente no trabajará adecuadamente. La aplicación cliente depende del servidor para funcionar adecuadamente.
CAL/Fundamentos
Acoplamiento El acoplamiento tiene un efecto directo
sobre el mantenimiento. Acoplamiento apretado resulta en un efecto de onda, esto es cambios en un objeto necesitarán cambios (o al menos, pruebas) de todos los objetos asociados.
Se puede lograr acoplamiento débil asignando a un objeto solo el comportamiento que cumple con el propósito del objeto (alta cohesión).
CAL/Fundamentos
Acoplamiento Evitar incluir comportamiento
simplemente porque ellos sean necesarios para el proceso en el que participa el objeto.
CAL/Fundamentos
Cohesión y Acoplamiento Deberían evaluarse siempre juntos. Acoplamiento débil se puede lograr
facilmente por medio de baja cohesión, esto es, atiborrando todo en un solo objeto de modo que no se necesite ayuda de ningún otro objeto.
Alta cohesión puede resultar en muchos objetos pequeños que no puedan hacer nada sin tomar en cuenta a otros objetos. ....
CAL/Fundamentos
Cohesión y Acoplamiento ... El overhead de comunicación
destruye el rendimiento de la aplicación. La solución óptima es un compromiso entre alta cohesión y bajo acoplamiento.
Estos dos conceptos son factores en la creación de patrones de diseño. En un patrón de diseño cada objeto tiene una responsabilidad específica, esto es, alta cohesión.
CAL/Fundamentos
Cohesión y Acoplamiento La colección de objetos tiene un
patrón predecible de colaboración o comunicación. El patrón de colaboración se basa en la naturaleza específica del acoplamiento entre los objetos, esto es, la ayuda que necesita cada objeto de los otros objetos.
CAL/Fundamentos
Acoplamiento Débil ó Apretado
Un gerente de proyecto asigna tareas a programadores de acuerdo con sus habilidades y experiencia. Los programadores reportan sus progresos al gerente de proyectos de modo que pueda hacer el seguimiento del progreso de acuerdo a un plan y hacer los ajustes necesarios
CAL/Fundamentos
Un gerente de proyectos asigna tareas a programadores de acuerdo a sus habilidades y experiencia. El gerente de proyecto usa los asignamiento para mejorar y adicionar habilidades a cada programador. A medida que cada programador ejecuta cada tarea, el gerente de proyecto evalúa periódicamente el progreso y hace sugerencias y/o correcciones como sean necesarias.
Acoplamiento Débil ó Apretado
CAL/Fundamentos
Un gerente de proyecto asigna tareas a programadores de acuerdo a sus habilidades y experiencia. El gerente de proyecto reporta al departamento de planillas el tiempo que los miembros del equipo gastan en el proyecto. El departamento de planillas produce cheques quincenales. El Gerente de proyecto distribuye los cheques a los miembros del equipo.
Acoplamiento Débil ó Apretado
CAL/Fundamentos
Un gerente de proyecto asigna tareas a programadores de acuerdo con sus habilidades y experiencia. El gerente de proyecto reporta al departamento de planillas el tiempo que los miembros del equipo gastan en el proyecto. El departamento de planillas necesita las cifras de la labor planeada del proyecto asi como las cifras de la labor actual para actualizar el plan financiero de la compañía sobre una base quincenal.
Acoplamiento Débil ó Apretado
CAL/Fundamentos
Cuando el departamento de planillas detecta una desviación de mas del 10%, solicita una justificación formal al gerente de proyecto
Acoplamiento débil bajo grado de dependencia entre objetos.
Acoplamiento apretado alto grado de dependencia entre objetos.
Acoplamiento Débil ó Apretado
CAL/Fundamentos
Agregación Describe un ensamble de objeto
donde el todo (el ensamblado) es mas que la suma de las partes.
La agregación no tiene reflejo en el código. La implementación se ve como cualquier otra asociación.
CAL/Fundamentos
Agregación Cuando se desea que las partes
esten diponibles para uso aún cuando el agregado ó todo no exista agregación debil.
Si las partes existen solo si forman parte del todo Agregación fuerte, o composición.
CAL/Fundamentos
Agregación débil Los jugadores pueden
participar en muchos equipos al mismo tiempo. Por ejemplo ellos pueden jugar por la liga de la ciudad y por el equipo de una compañía. Cuando un equipo desaparece los jugadores aún existen y pueden reasignarse a otros equipos.
CAL/Fundamentos
Agregación fuerte Composición
Los capítulos pertenecen a un libro específico. Sin el libro los capítulo carecen de contexto y pierden su significado. Si el libro es borrado los capítulos son borrados con el.
CAL/Fundamentos
Generalización Un tractor es un tipo de Vehículo, un
aeroplano es una clase de vehículo. Si todas las propiedades del tractor y el aeroplano fueran iguales, entonces ellos podrían ser instancias de la misma clase, pero ellos solo comparten algunas propiedades. En este caso se generaliza las
propiedades compartidas
CAL/Fundamentos
Generalización El término generalización es usado
de otra forma. Una generalización es una estructura, esto es, una jerarquía de clases.
CAL/Fundamentos
Generalización La clase vehículo define las propiedades que
botes, tractores y aeroplanos tienen en común tales como manufacturador, modelo y capacidades de aceleración y desaceleración.
Vehículo
Bote Tractor Aeroplano
CAL/Fundamentos
Generalización El bote, tractor y aeroplano
contienen solo las propiedades adicionales que las distinguen de los otros tipos de vehículos.
CAL/Fundamentos
Generalización Generalizar significa identificar las
propiedades que un grupo de objetos tiene en común. Especializar significa identificar las propiedades que distinguen objetos similares de otros.
La generalización no es un tipo de asociación. Una asociación puede instanciarse como enlace entre dos objetos. Una generalización conecta dos clases de definiciones que deben usarse juntas para crear un único objeto.