2. 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
3. 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
4. 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
5. 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
6. 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
7. 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
8. 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
9. 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.
CAL/Fundamentos
Los datos de identificación del llamador
10. 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
11. 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
12. 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
13. 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
14. 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
15. 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
16. 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
17. Acoplamiento
Evitar incluir comportamiento
simplemente porque ellos sean
necesarios para el proceso en el que
participa el objeto.
CAL/Fundamentos
18. 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
19. 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
20. 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
21. 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
22. Acoplamiento Débil ó Apretado
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.
CAL/Fundamentos
23. Acoplamiento Débil ó Apretado
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.
CAL/Fundamentos
24. Acoplamiento Débil ó Apretado
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.
CAL/Fundamentos
25. Acoplamiento Débil ó Apretado
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.
CAL/Fundamentos
26. 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
27. 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
28. 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
29. 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
30. 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
31. 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
32. 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
33. Generalización
El bote, tractor y aeroplano contienen
solo las propiedades adicionales que
las distinguen de los otros tipos de
vehículos.
CAL/Fundamentos
34. 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.
CAL/Fundamentos