Download Aplicaciones Java - Departamento de Ingeniería de Sistemas

Document related concepts
no text concepts found
Transcript
Programación Orientada a Objetos
Aplicaciones Java
Ing
Ing.. Julio Ernesto Carreño Vargas
MsC..
MsC
Aplicaciones Java
Ingeniería de Sofwatre
Patrones: MVC
Programación Orientada a Objetos
2
1
Ingeniería de Software
Es la aplicación de una aproximación sistemática
y disciplinada para el desarrollo, pruebas y
mantenimiento de un programa
Programación Orientada a Objetos
3
Ciclo de vida de software
Es la secuencia de estados de un programa desde
su concepción hasta su operación
Cubre cinco estados:
Análisis : ADOO
Diseño: ADOO
Codificación: POO
Pruebas: POO
Operación y mantenimiento
Programación Orientada a Objetos
4
2
Análisis y Diseño
Programación Orientada a Objetos
5
Testing
Evaluación que es ejecutada por máquinas ó
humanos para asegurar la calidad de los
programas
El objetivo del testing es encontrar errores en el
programa
Realizar el testing de los programas no garantiza
la ausencia de error en ellos.
Programación Orientada a Objetos
6
3
Testing con JUnit
Programación Orientada a Objetos
7
Testing con JUnit
Programación Orientada a Objetos
8
4
Testing con JUnit
Programación Orientada a Objetos
9
Debugging
Es el proceso de localizar y corregir errores
lógicos y errores en tiempo de ejecución en los
programas
La manera más simple es usar el método println
Java tiene un depurador basado en texto llamado
el jdb.
jdb.
Programación Orientada a Objetos
10
5
Debugging
Programación Orientada a Objetos
11
Refactoring
Un proceso de
refactorización o
Refactoring consiste en
modificar el código
fuente de un sistema
que ha sido diseñado y
codificado de manera
inexperta para lograr un
sistema más
estructurado y fiable
Programación Orientada a Objetos
12
6
Refactoring
Programación Orientada a Objetos
13
Refactoring
Programación Orientada a Objetos
14
7
Refactoring
Programación Orientada a Objetos
15
Refactoring
Programación Orientada a Objetos
16
8
Control de Versiones
Es importante guardar pista de las diferentes
versiones de desarrollo de un programa de
modo que pueda ser posible volver a una
versión anterior del programa
Entre los programas más usados se encuentran:
CVS (Concurrent Version System)
SubVersion
Programación Orientada a Objetos
17
Control de Versiones en
SubVersion
Programación Orientada a Objetos
18
9
Patrones
Un patrón es una solución a un problema
recurrente.
Los patrones de software describen un problema que
ocurre repetidas veces en algún contexto
determinado de desarrollo de software y entregan
una buena solución ya probada.
Los patrones capturan las mejores prácticas
establecidas para diseño.
Programación Orientada a Objetos
19
Beneficios Patrones
Facilita la documentación y comunicación con
otros miembros del equipo de desarrollo.
Reutilización
Mantenibilidad (disminuye errores)
Extensibilidad (adicionar nuevas características)
Reestructuración (reorganización de
componentes)
Portabilidad.
Programación Orientada a Objetos
20
10
GRASP
GRASP: General Responsabilities Assignment Software
Patterns (Patrones de Asignación de
Responsabilidades).
La asignación de responsabilidades es la habilidad en el
análisis y diseño orientado por objetos.
GRASP es la descripción de los principios fundamentales de
la asignación de responsabilidades expresados como patrones.
Los principios fundamentales GRASP son uno de los
factores críticos para obtener diseños reutilizables,
mantenibles, entendibles y extensibles.
Programación Orientada a Objetos
21
GRASP –Patrón Experto (Expert)
Cada objeto es responsable por mantener su propia
información, principio de encapsulamiento
Conoce y puede informar el valor de sus atributos
Puede modificar el valor de sus atributos
Cuando el objeto tiene relaciones de agregación
con otros objetos, también será responsable de
conocer la información de ellos, de crearlos
(patrón creador) y de delegarles las operaciones.
Programación Orientada a Objetos
22
11
GRASP –Patrón Creador (Creator)
Problema: Quién es el responsable de crear una nueva
instancia de una clase?
Solución: El objeto B tiene la responsabilidad de crear
objetos de la Clase A si:
B agrega objetos A
B contiene objetos A
B registra objetos A
B usa exhaustivamente objetos A
B posee la información necesaria para inicializar a A
Programación Orientada a Objetos
23
GRASP –Patrón Bajo Acoplamiento
(Low Coupling)
Acoplamiento es la medida de cuanto una clase está
conectada (tiene conocimiento) a otras clases.
Un bajo acoplamiento permite que el diseño de clases
sea más independiente.
Demasiado acoplamiento significa que los cambios a una
clase podrían tener también cambios inesperados en otras
Reduce el impacto de los cambios y aumenta la reutilización.
Puede no ser importante si la reutilización no es un
objetivo.
Programación Orientada a Objetos
24
12
GRASP –Patrón Bajo Acoplamiento
(Low Coupling)Object1
Object2
Object3
Object4
Object5
Message1()
Message2()
Message3()
Message4()
Message5()
Message6()
Message7()
Message8()
Low coupling (decentralized)
Each object sees two other objects at most
Programación Orientada a Objetos
25
GRASP –Patrón Bajo Acoplamiento
(Low Coupling)Object1
Object2
Object3
Object4
Object5
Message1()
Message8()
Message3()
Message6()
Message4()
Message5()
Message7()
Message2()
High coupling (centralized)
Object1 must see all other objects
Programación Orientada a Objetos
26
13
GRASP –Patrón Alta Cohesión (High
Cohesion)
Cohesión funcional dentro de una clase es una
medida que indica cuan relacionadas están las
responsabilidades de una clase.
En otras palabras, no haga que un objeto haga
demasiado trabajo.
Entre más alta cohesión más fácil de entender,
de cambiar, de reutilizar la clase.
Un objeto con una única simple función
compleja (hace todo) puede resultar en baja
cohesión.
Programación Orientada a Objetos
27
GRASP –Patrón Controlador
(Controller)
Un evento de entrada al sistema es algún evento
desde algún actor externo (humano ó no)
El objeto controlador es responsable de decidir
que hacer con el evento.
El controlador se aplica para el manejo de
interfaces externas y al manejo de entradas desde
interfaces de usuario.
Programación Orientada a Objetos
28
14
GRASP –Controlador de FachadaSystem
Object8
facade
externalSystem
Object7
Object6
Object9
Programación Orientada a Objetos
29
GRASP –Controlador de Fachada
El controlador actua como una fachada entre la
interface y la aplicación.
El controlador de fachada oculta todo un sistema
debajo de una clase.
Pueden existir varias fachadas, esto para evitar que
una sola clase controladora sea muy grande.
Programación Orientada a Objetos
30
15
GRASP –Controlador de Fachada
Las fachadas permiten mantener la separación
del modelo de negocios y la vista (Graphical
User Interface), la vista no debe interactuar
directamente con el modelo, esto se conoce
como el modelo vista controlador (MVC).
Permita mantener bajo acoplamiento.
Programación Orientada a Objetos
31
Model View Controller
Un patrón usado para ayudar a separar la capa de
interface de las otras partes del sistema.
Controller
Obtener en trada
Programación Orientada a Objetos
Model
View
Almace nar datos
Mostrar datos
32
16
Model View Controller
Modelo. El modelo administra el comportamiento y
los datos del dominio de aplicación, responde a
requerimientos de información sobre su estado
(usualmente formulados desde la vista) y responde a
instrucciones de cambiar el estado (habitualmente
desde el controlador).
Vista. Maneja la visualización de la información.
Controlador. Interpreta las acciones del ratón y el
teclado, informando al modelo y/o a la vista para
que cambien según resulte apropiado.
Programación Orientada a Objetos
33
MVC
Tanto la vista como el controlador dependen del
modelo, el cual no depende de las otras clases. Esta
separación permite construir y probar el modelo
independientemente de la representación visual.
Usos:
Sistemas interactivos,
sistemas con múltiples GUI.
view
controller
Programación Orientada a Objetos
34
17
Ventajas MVC
Reutilización
Soporte de vistas múltiples y Adaptación al cambio
Programación Orientada a Objetos
35
Desventajas de MVC
Complejidad.
Costo de actualizaciones frecuentes.
Desacoplar el modelo de la vista no significa que los
desarrolladores del modelo puedan ignorar la naturaleza de
las vistas.
Programación Orientada a Objetos
36
18
Implementar MVC en Java
Se crea un package por
cada una de los
componentes MVC
Cada paquete contiene
las clases necesarias para
cumplir con la
responsabilidad de dicha
capa.
Programación Orientada a Objetos
37
Patrón Fachada en las Capas
Use el patrón fachada en cada una de las capas
las otras capas solicitarán servicios a la fachada, y
esta delegará el trabajo a las clases internas.
Las fachadas podrían ser marcadas como clases
<<interface>>.
Programación Orientada a Objetos
38
19
Intercambio de datos entre capas(1)
La información que fluye entre las capas debería estar
basada en objetos
Si son varios objetos debe usarse una colección de objetos
El usuario introduce la información desde el GUI
Arraylist, hashtable
dicha información es mantenida en los objetos de negocio.
Los objetos java son manipulados en la capa de negocio
y/ó enviados a la capa de presentación para que sean
desplegados al usuario
Programación Orientada a Objetos
39
Bibliografía
Paul Deitel.
Deitel. Como programar en Java 7/e. Pearson Education
Education..
2007.
C. Thomas Wu.
Wu. An Introduction to Object Oriented
Programming with Java
Programación Orientada a Objetos
40
20