materias:75:07:final_1_20070220_1
Tabla de Contenidos

Examen Final - 75.07. Algoritmos y Programación III

Cátedra: Fontela
Fecha: Cuarta Oportunidad - Segundo Cuatrimestre 2006
Día: 20/02/2007

Esta página está incompleta; podés ayudar completando el material.

Enunciado

Punto I

  1. Implemente una clase Pila, basándose en la clase LinkedList. Puede usar composición o herencia respecto de LinkedList.
  2. Justifique por qué utilizó composición o herencia.
  3. Haga el diagrama de clases correspondiente.
  4. Escriba un método estático en una clase auxiliar, que imprima todos los elementos de una pila, utilizando el método toString de cada elemento.
  5. Haga un diagrama de secuencia en UML para el método anterior.

Punto II

Explique qué es un patrón de diseño. Describa uno y explique sus ventajas.

Punto III

Explique las ventajas de desarrollar una aplicación en capas.

Resolución

Punto I

public class Pila<T> {
	private List<T> stack;
 
	public Pila(){
		stack = new LinkedList<T>();
	}
 
	public boolean push(T t){
		return stack.add(t);
	}
 
	public T pop(){
		T t = stack.alementAtIndex(stack.size() - 1);
		stack.remove(t);
		return t;
	}
 
	public T top(){
		return stack.alementAtIndex(stack.size() - 1);
	}
 
	public int size(){
		return stack.size();
	}
 
	public boolean isEmpty(){
		return (size() == 0);
	}
}

Se utiliza composición, ya que la estructura de datos Pila no comparte muchas de las características que heredaría de LinkedList (como acceso directo a elementos en cierto índice). Al utilizar composición se puede utilizar la estructura de LinkedList como contenedor de datos, pero no exponer su interfaz (en caso de haber heredado, deberían reeimplementarse los métodos no permitidos, lanzando excepciones con su uso)

Faltan partes

Punto II

Un patrón de diseño es una solución aceptable, probada y que se sabe de antemano que resuelve un problema recurrente en el diseño de aplicaciones. Un patrón de diseño es Strategy. Este patrón permite que los objetos de una clase realicen ciertas acciones de manera diferente, dependiendo de la estrategia utilizada. Las ventajas de este patrón son varias:

Punto III

El diseño de aplicaciones en capas tiene varias ventajas, entre ellas:

Discusión

Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.