programacion
Aplicación de patrones a la construcción de Frameworks
Raúl Izquierdo Castanedo
JHotDraw
Introducción
Raúl Izquierdo Castanedo
JHotDraw
•
Orígenes
– JHotDraw se ha inspirado en:
• HotDraw. Framework en Smalltalk. Desarrollado por Kent Beck
y Ward Cunningham
• ET++. Framework y librería de clases portable para C++.
Desarrolado por Andre Weinand y Erich Gamma– JHotDraw ha sido desarrollado por Thomas Eggenschwiler y
Erich Gamma y fue presentado en el OOPSLA97
– Fue creado para un seminario como ejemplo de la aplicación
de patrones en la creación de Frameworks, pero sus ideas
son directamente aplicables a las aplicaciones profesionales
– Han colaborado también personas como Uwe Steinmueller,
Doug Lea, Kent Beck, y Ward Cunningham.
RaúlIzquierdo Castanedo
3
Máster de Ingeniería del Software
URL en Java
JHotDraw
•
Objetivo
– Framework para editores de manipulación directa
•
Característica
– Distintos tipos de figuras
– Manipulación directa de las figuras
– Conexión de figuras
– Herramientas
– Actualización en pantalla eficiente
– Applets y aplicaciones
Raúl Izquierdo Castanedo
4
Máster deIngeniería del Software
URL en Java
JHotDraw
•
Framework
– Colaboración de clases adaptables que definen una solución
para un problema dado
•
•
•
•
Definen las abstracciones fundamentales y sus interfaces
Establecen las interacciones entre los objetos
Adaptación: redefinición
Soluciones por defecto
– Reutilización
• Arquitectura y diseño
• Código
Raúl Izquierdo Castanedo
5Máster de Ingeniería del Software
URL en Java
JHotDraw
Raúl Izquierdo Castanedo
6
Máster de Ingeniería del Software
URL en Java
JHotDraw
•
Proceso
– Desarrollo de un modelo del dominio (OOD)
• Identificar abstracciones fundamentales y sus
responsabilidades (CRC, Use Cases)
– Diseño flexible y extensible con patrones
• Flexibilidad: Strategy, State, Decorator...
•Independencia: Abstract Factory, Bridge...
– Integrar en una infraestructura existente
• Adapter, Bridge
– Implementación
• Coding Patterns
• Idiomas específicos del lenguaje
Raúl Izquierdo Castanedo
7
Máster de Ingeniería del Software
URL en Java
JHotDraw
•
Problemas de Diseño
– Abstracciones fundamentales
– Herramientas
– Actualización de pantalla
– Manipulación deFiguras
– Conexiones
– Entorno de Ejecución
Raúl Izquierdo Castanedo
8
Máster de Ingeniería del Software
URL en Java
JHotDraw
Abstracciones fundamentales
Raúl Izquierdo Castanedo
Abstracciones fundamentales
•
Problemas de Diseño
– Abstracciones fundamentales
– Herramientas
– Actualización de pantalla
– Manipulación de Figuras
– Conexiones
– Entorno de ejecuciónRaúl Izquierdo Castanedo
10
Máster de Ingeniería del Software
URL en Java
Abstracciones fundamentales
•
Figuras
– Simples y complejas
– Pueden tener un número indeterminado de atributos
•
Responsabilidades
– dibujarse
– saber su posición y tamaño
– moverse
•
La abstracción de las figuras debe ser independiente de
cualquier detalle de implementación
RaúlIzquierdo Castanedo
11
Máster de Ingeniería del Software
URL en Java
Abstracciones Fundamentales
interface Figure
{
displayBox
containsPoint
draw
moveBy
...
}
Raúl Izquierdo Castanedo
12
Máster de Ingeniería del Software
URL en Java
Abstracciones Fundamentales
•
Desarrollo de Frameworks
– Separación de diseño y código:
• “We believe that interface design andfunctional factoring
constitute de key intellectual content of software and that are
far more difficult to create or re-create than code”. Peter
Deutsch
– Por tanto separar diseño e implementación con interfaces
Raúl Izquierdo Castanedo
13
Máster de Ingeniería del Software
URL en Java
Abstracciones Fundamentales
•
•
Figura define un interface
La clase abstracta AbstractFigure...
Regístrate para leer el documento completo.