prácticas poo curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesp2.pdf · •cosas de java...
TRANSCRIPT
![Page 1: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/1.jpg)
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
![Page 2: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/2.jpg)
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
![Page 3: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/3.jpg)
IDE
• Deberíais saber
– Crear proyectos (desde cero y con código)
– Ejecutar
– Depurar (breakpoint, watch, variables locales)
– Generar Javadoc
![Page 4: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/4.jpg)
Más Java• Útil para esta práctica:
– Constructores
– Interfaces / Herencia
– Control de acceso
– ArrayList
– HashMap
– Enhanced for
– Hilos
– Excepciones
– Entrada / salida
![Page 5: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/5.jpg)
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
![Page 6: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/6.jpg)
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
![Page 7: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/7.jpg)
Control de acceso
• Ocultación de
– Variables
– Métodos
– Constructores
• Todas variables public ==> mal implementado
(normalmente)
![Page 8: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/8.jpg)
• 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;
![Page 9: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/9.jpg)
• 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);
![Page 10: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/10.jpg)
• 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());
}
![Page 11: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/11.jpg)
Hilos
• El intérprete de Java hace un uso intensivo de hilos.
• Esto provoca situaciones raras:
• Veremos más cosas en la P3 (GUI)
![Page 12: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/12.jpg)
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
![Page 13: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/13.jpg)
Entrada / salida
• En esta práctica:
![Page 14: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/14.jpg)
Proyecto
• Aplicación que:
– Crea eventos y recursos
– Permite comprar/reservar n recursos
– Tanto local como remotamente
![Page 15: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/15.jpg)
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
![Page 16: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/16.jpg)
Práctica 2
• .
![Page 17: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/17.jpg)
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
![Page 18: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/18.jpg)
Semana 2
• Terminar de implementar
• Comprobar si el resultado permite aislar el cliente del servidor fácilmente (constructores en servidor)
• Hacer pruebas, depurar
![Page 19: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/19.jpg)
Semana 3
• Una vez está implementada la práctica, hacer interfaz de cliente (por consola)
• Extensión del sistema: RMI
![Page 20: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/20.jpg)
Semana 4
• Pruebas en local de RMI, ¿en distintos ordenadores?
• Opcionales
• Mirar la última transparencia (Aún más Java)
![Page 21: Prácticas POO Curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesP2.pdf · •Cosas de Java (útiles para esta práctica) •Organización P2: •Semana 1 •Semana 2 •Semana 3](https://reader030.vdocuments.pub/reader030/viewer/2022040911/5e84ac331ba98a3b846b5fab/html5/thumbnails/21.jpg)
(Aún) Más Java
• Patrones de diseño:
– Singleton
– Factory
– ...
• Entrada / Salida alternativa: java.io.Console
• Funciones matemáticas: java.lang.Math