Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)



Documentos relacionados
Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2007/08

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 2. El lenguaje de programación Java (Parte 1)

Tema 3: Genericidad en Java. Tema 3: Genericidad en Java. Objetivos y Bibliografía. Modelos de Datos Genéricos

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

Programación Orientada a Objetos en Java

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

Programación Orientada a Objetos en C#.NET CAPÍTULO 5 H E R E N C I A. Ing. Bruno López Takeyas, M.C.

Administración Local Soluciones

Patrones de Diseño. Patrón estructural Decorator. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º

9. Objetos y clases Clases

Primer Parcial Septiembre 5 de 2009

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype

Objetivo de aprendizaje del tema

Programación Orientada a Objetos con Java

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Programación Orientada a Objetos en Java

2. Estructura de un programa en Java

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Metodología y Tecnología de la Programación

Soluciones Ejercicios Tema 3

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Inteligencia Artificial II. Razonamiento con ontologías

Modulo 1 El lenguaje Java

Lenguajes de Programación Curso Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces Clases abstractas 2

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

Definición de clases: Herencia, polimorfismo, ligadura dinámica

Factory method (Gamma et al.)

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

10. Algunas clases estándar de Java (I)

Tipos primitivos y clases de interés

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08

Tema 1. Conceptos de Java para Estructuras de Datos: interfaces y programación genérica

Elementos léxicos del lenguaje de programación Java

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

Práctica sobre compartición de instancias remotas.

15. Parámetros o argumentos

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

CLASE # 5 TÉCNICAS DE CAJA BLANCA

INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B)

ATLAS MANUAL DE USUARIO ARBOL ACCESIBLE

3.9 Patrón Distributed callback

2.2.- Paradigmas de la POO

Clases abstractas e interfaces

Yalù Galicia Hernàndez. Yalú Galicia Hdez. (FCC/BUAP)

Uso de excepciones en Java

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Text Mining: Distancia de Levenshtein

Programación Avanzada SOLUCIÓN EXAMEN FEBRERO 2011

PHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases

8. Sentencia return y métodos

Curso Introducción JAVA Pág.: 1

Tema 2. El lenguaje de programación Java. Arrays y cadenas

19. Packages o paquetes

Curso de Java POO: Programación orientada a objetos

Ejercicio 1 (3 puntos).-

También añado a la clase Libro los siguientes métodos: (que programaré más adelante)

ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

TEMA 7: DIAGRAMAS EN UML

Repaso de las características más importantes de la programación Java y su adaptación a Android

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Herencia. 3.- Herencia. Declaración de una clase derivada en Delphi. Jerarquía de clases

Patrones de Diseño Orientados a Objetos 2 Parte

Clases abstractas e interfaces en Java

Modelos de Software. Ingeniería en Sistemas de Información 2015

CONCEPTOS BASICOS DEL LENGUAJE JAVA

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

Introducción a la Programación Orientada a Objetos

Estructura de las Aplicaciones Orientadas a Objetos Herencia y Polimorfismo

Planificación y administración de redes SNMP

Creación de plugins para Apache Cordova. Parte JavaScript. Javier de Silóniz Sandino

APUNTES JAVA ARRAYS (ARREGLOS) Un arreglo es un grupo de posiciones de memoria contiguas. Todas las cuales tienen el mismo nombre y el mismo tipo.

Universidad de Cantabria

Patrones de software y refactorización de código

Solución Examen Junio 2007 (a) Ejercicio GeoTaxi (1h 20 min.) Diagrama de Casos de Uso y. Casos de uso (2,5 puntos) Modelo de Dominio (1,5 puntos)

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación

Pruebas de unidad con JUnit

Coordinación n de Componentes mediante Conectores Implementados con Servicios Web

Java: Clases Abstractas e Interfaces

Programación orientada a objetos

Programación en Java. Programación en OO

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

ALGORITMICA Y PROGRAMACION POR OBJETOS I

Capítulo 1. Introducción

Administración Local Soluciones

Repetir el proceso para cada abstracción identificada hasta que el diseño este expresado en términos sencillos

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar

Plantillas de clases ( Templates )

11. Algunas clases estándar de Java (II)

Transcripción:

Patrones de diseño Patrón básico Handler Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

Patrones de diseño Introducción Objetivos: Diseño específico para el problema, pero general para poder adecuarse a futuros requisitos Evitar el rediseño en la medida de lo posible Evitar resolver cada problema partiendo de cero Reutilizar soluciones que han sido útiles en el pasado Idea: Patrones recurrentes de clases y comunicación entre objetos en muchas soluciones de diseño Reutilizar diseños abstractos que no incluyan detalles de la implementación

Patrones de diseño Introducción Qué son: Descripción del problema y la esencia de su solución, que se puede reutilizar en casos distintos Solución adecuada a un problema común Documentar la experiencia en el diseño Tipos: De creación: implica el proceso de instanciar objetos Estructurales: composición de objetos De comportamiento: cómo se comunican los objetos, cooperan y distribuyen las responsabilidades para lograr sus objetivos

Patrones de diseño Estructura de un patrón Nombre del patrón Describe el problema de diseño, soluciones y consecuencias Vocabulario de diseño Problema Describe cuándo aplicar el patrón (aplicabilidad) Explica el problema y su contexto (motivación) Solución Elementos que forman el diseño, relaciones, responsabilidades No un diseño concreto, sino una plantilla que puede aplicarse en muchas situaciones distintas Consecuencias Resultados, ventajas e inconvenientes de aplicar el patrón Por ejemplo: relación entre eficiencia en espacio y tiempo, cuestiones de implementación, etc.

Propósito Sirve para manejar identificadores de objetos de manera independiente a su implementación Permite cambiar fácilmente la implementación de un identificador (int, String,...) a cualquier tipo básico o clase primitiva, sea sencilla o compuesta Motivación A veces una clase tiene un identificador de cierto tipo, y puede que el tipo cambie en futuras versiones de la clase Subclases de una clase común usan identificadores de distinto tipo

Motivación Ej: Una aplicación de gestión de alumnos Los alumnos se identifican por un NIA de 10 dígitos -nia: long Alumno + esmenor (Alumno otro): boolean class Alumno { private long nia; public Alumno (long nia) { this.nia = nia; public long getnia () { return this.nia; public boolean esmenor (Alumno otro) { if (this.nia < otro.getnia()) return true; else return false;...

Motivación Ej: Una aplicación de gestión de alumnos Los alumnos se identifican por un NIA de 10 dígitos y una letra -nia: long Alumno -nia: String Alumno + esmenor (Alumno otro): boolean + esmenor (Alumno otro): boolean class Alumno { private long nia; public Alumno (long nia) { this.nia = nia; public long getnia () { return this.nia; public boolean esmenor (Alumno otro) { if (this.nia < otro.getnia()) return true; else return false;... class Alumno { private String nia; public Alumno (String nia) { this.nia = nia; public String getnia () { return this.nia; public boolean esmenor (Alumno otro) { if (this.nia.compareto(otro.getnia())) return true; else return false;...

Motivación Solución: usar atributo del tipo especificado: no es flexible, si el tipo cambia puede requerir muchos cambios en el resto del sistema definir una clase de envoltura para el identificador Alumno - nia: NIA NIALong - id: long + NIALong (long) + NIALong (NIA) NIA + comparar (NIA) : boolean NIAString -id: String + NIAString (String) + NIAString (NIA) NIAArray - id: String [2] + NIAArray (String[2]) + NIAArray (NIA) class Alumno { private NIA nia; public Alumno (NIA nia) { this.nia = nia; public NIA getnia () { return this.nia; public boolean esmenor (Alumno otro) { if (this.nia.comparar(otro.getnia())) return true; else return false;...

Aplicabilidad Usa el patrón Handler cuando: tienes alguna clase que usa algún tipo de identificador Estructura

Participantes Identifiable (Alumno): clase cliente que necesita identificar a sus objetos a través de un atributo identificador Handler (NIA): interfaz para declarar los identificadores de los objetos de la clase Identifiable ConcreteHandler (NIALong, NIAString, NIAArray): implementación concreta de la interfaz Handler

Ejemplo de Implementación interface Handler { String tostring(); int compareto(handler otro); class ConcreteHandler1 implements Handler { private int _id; ConcreteHandler1 (String id) throws NumberFormatException { _id = new Integer(id).intValue(); ConcreteHandler1 (Handler otro) throws NumberFormatException { _id = new Integer(otro.toString()).intValue(); public String tostring() { return new Integer(_id).toString(); public int compareto (Handler otro) { return tostring().compareto(otro.tostring()); class Identifiable { private Handler _id; public Identifiable(String id) { _id = new ConcreteHandler1(id);

En java java.lang.comparable Implementado por clases de envoltura (Integer, Long, etc.), String, File, Date, public int compareto (Object o) throws ClassCastException Invariantes: sgn(x.compareto(y)) = -sgn(y.compareto(x)) (x.compareto(y)>0 and y.compareto(z)>0) x.compareto(z)>0 x.compareto(y)=0 sgn(x.compareto(z))=sgn(y.compareto(z)) para todo z Consistente con equals: (x.compareto(y)=0) = (x.equals(y))