prácticas poo curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesp2.pdf · •cosas de java...
Embed Size (px)
TRANSCRIPT

Prácticas POO Curso 09/10
Alejandro Bellogín
Escuela Politécnica SuperiorUniversidad Autónoma de Madrid
Marzo 2010
http://www.eps.uam.es/~abellogin

Esquema
• IDE
• Cosas de Java (útiles para esta práctica)
• Organización P2:
• Semana 1
• Semana 2
• Semana 3
• Semana 4
• Más cosas de Java

IDE
• Deberíais saber
– Crear proyectos (desde cero y con código)
– Ejecutar
– Depurar (breakpoint, watch, variables locales)
– Generar Javadoc

Más Java• Útil para esta práctica:
– Constructores
– Interfaces / Herencia
– Control de acceso
– ArrayList
– HashMap
– Enhanced for
– Hilos
– Excepciones
– Entrada / salida

Constructores• Métodos especiales que crean un objeto
– Se invoca de manera automática
– La JVM reserva memoria para ese objeto
– Se devuelve una referencia a dicho objeto
– Palabra reservada: new
• Inicializan las variables del objeto
• Puede haber más de un constructor
• Sin argumentos: constructor por defecto
– Definido por defecto (salvo que se definan otros)
• Siempre hay que llamar a algún constructor

Interfaces y Herencia
• Interfaces
– Imponen un protocolo de métodos a implementar
• Herencia
• Clases abstractas
– Tipo especial de herencia, donde se definen métodos (que pueden ser llamados) pero no se implementan

Control de acceso
• Ocultación de
– Variables
– Métodos
– Constructores
• Todas variables public ==> mal implementado
(normalmente)

• Conjunto variable de cualquier tipo de objetos
• Similar a array, pero su capacidad aumenta o disminuye dinámicamente
• Desde 1.5: arrays tipados
(en tiempo de compilación nos aseguramos el tipo del contenido)
ArrayList
protected ArrayList<Evento> eventos;

• Manera sencilla de tener una tabla (hash)
• Desde 1.5: tablas tipadas
clientes ==
HashMap
Login (String) Cliente (Cliente)
“a” Alguien{ Login=“a”; nombre=Yo}
… …
private HashMap<String, Cliente> clientes;// …clientes.put(cliente.getLogin(), cliente);

• Tipos de iteración:
– Con iterador (clase Iterator)
– Sin iterador (usando una variable como índice)
– Enhanced for
Enhanced for
for (Evento evento : servidor.getEventos(desde, hasta)){System.out.println(evento.getNombre());
}

Hilos
• El intérprete de Java hace un uso intensivo de hilos.
• Esto provoca situaciones raras:
• Veremos más cosas en la P3 (GUI)

Excepciones• Cómo (y cuándo) lanzarlas
– Throws: en la definición del método
– Throw: dentro del método
• Cómo (y cuándo) tratarlas
– Try-catch: se capturan las que se quieran, las demás se lanzan

Entrada / salida
• En esta práctica:

Proyecto
• Aplicación que:
– Crea eventos y recursos
– Permite comprar/reservar n recursos
– Tanto local como remotamente

Práctica 2
• Implementar el diseño de la P1 (corregido / modificado)
• Integrar dicho diseño con las clases que se os ha entregado
• Hacer sistema distribuido

Práctica 2
• .

Semana 1
• Entender el diseño
• Ver qué parte del diseño (métodos, atributos) corresponde con cada funcionalidad
• Implementar funcionalidades, sin pensar en cliente/servidor

Semana 2
• Terminar de implementar
• Comprobar si el resultado permite aislar el cliente del servidor fácilmente (constructores en servidor)
• Hacer pruebas, depurar

Semana 3
• Una vez está implementada la práctica, hacer interfaz de cliente (por consola)
• Extensión del sistema: RMI

Semana 4
• Pruebas en local de RMI, ¿en distintos ordenadores?
• Opcionales
• Mirar la última transparencia (Aún más Java)

(Aún) Más Java
• Patrones de diseño:
– Singleton
– Factory
– ...
• Entrada / Salida alternativa: java.io.Console
• Funciones matemáticas: java.lang.Math