Invetigacion

Solo disponible en BuenasTareas
  • Páginas : 20 (4958 palabras )
  • Descarga(s) : 0
  • Publicado : 9 de junio de 2011
Leer documento completo
Vista previa del texto
Abstract Factory (patrón de diseño)
Abstract Factory (Fábrica Abstracta) es un patrón de diseño para el desarrollo de software.
Contexto y problema
Contexto: Debemos crear diferentes objetos, todos pertenecientes a la misma familia. Por ejemplo: las librerías para crear interfaces gráficas suelen utilizar este patrón y cada familia sería un sistema operativo distinto. Así pues, el usuariodeclara un Botón, pero de forma más interna lo que está creando es un BotónWindows o un BotónLinux, por ejemplo.
El problema que intenta solucionar este patrón es el de crear diferentes familias de objetos.
El patrón Abstract Factory está aconsejado cuando se prevé la inclusión de nuevas familias de productos, pero puede resultar contraproducente cuando se añaden nuevos productos o cambian losexistentes, puesto que afectaría a todas las familias creadas.
Aspecto estático

La estructura típica del patrón Abstract Factory es la siguiente:
• Cliente: La clase que llamará a la factoría adecuada ya que necesita crear uno de los objetos que provee la factoría, es decir, Cliente lo que quiere es obtener una instancia de alguno de los productos (ProductoA, ProductoB).
• AbstractFactory: Es dedefinición de la interfaces de las factorías. Debe de proveer un método para la obtención de cada objeto que pueda crear. ("crearProductoA()" y "crearProductoB()")
• Factorías Concretas: Estas son las diferentes familias de productos. Provee de la instancia concreta de la que se encarga de crear. De esta forma podemos tener una factoría que cree los elementos gráficos para Windows y otra quelos cree para Linux, pudiendo poner fácilmente (creando una nueva) otra que los cree para MacOS, por ejemplo.
• Producto abstracto: Definición de las interfaces para la familia de productos genéricos. En el diagrama son "ProductoA" y "ProductoB". En un ejemplo de interfaces gráficas podrían ser todos los elementos: Botón, Ventana, Cuadro de Texto, Combo... El cliente trabajará directamente sobreesta interfaz, que será implementada por los diferentes productos concretos.
• Producto concreto: Implementación de los diferentes productos. Podría ser por ejemplo "BotónWindows" y "BotónLinux". Como ambos implementan "Botón" el cliente no sabrá si está en Windows o Linux, puesto que trabajará directamente sobre la superclase o interfaz.
3.1 Declaración de métodos
En Java toda la lógica deprogramación (Algoritmos) está agrupada en funciones o métodos.
Un método es:
• Un bloque de código que tiene un nombre,
• recibe unos parámetros o argumentos (opcionalmente),
• contiene sentencias o instrucciones para realizar algo (opcionalmente) y
• devuelve un valor de algún Tipo conocido (opcionalmente).
La sintaxis global es:
Tipo_Valor_devuelto nombre_método ( lista_argumentos ) {bloque_de_codigo;
}
y la lista de argumentos se expresa declarando el tipo y nombre de los mismos (como en las declaraciones de variables). Si hay más de uno se separan por comas.
Por ejemplo:
int sumaEnteros ( int a, int b ) {
int c = a + b;
return c;
}
• El método se llama sumaEnteros.
• Recibe dos parámetros también enteros. Sus nombres son a y b.
•Devuelve un entero.
En el ejemplo la claúsula return se usa para finalizar el método devolviendo el valor de la variable c.
3.2. El termino void
El hecho de que un método devuelva o no un valor es opcional. En caso de que devuelva un valor se declara el tipo que devuelve. Pero si no necesita ningún valor, se declara como tipo del valor devuelto, la palabra reservada void. Por ejemplo:
voidhaceAlgo() {
. . .
}
Cuando no se devuelve ningún valor, la claúsula return no es necesaria. Observese que en el ejemplo el método haceAlgo tampoco recibe ningún parámetro. No obstante los paréntesis, son obligatorios.
3.3. Uso de métodos
Los métodos se invocan con su nombre, y pasando la lista de argumentos entre paréntesis. El conjunto se usa como si fuera una variable del Tipo...
tracking img