Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores...
Transcript of Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores...
![Page 1: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/1.jpg)
Prácticas POO Curso 10/11
Alejandro Bellogín
Escuela Politécnica SuperiorUniversidad Autónoma de Madrid
Marzo 2011
http://www.eps.uam.es/~abellogin
![Page 2: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/2.jpg)
Esquema
• IDE
• Práctica 2
– Java
– Enunciado
– Tareas
– Librerías externas
• Más cosas de Java
![Page 3: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/3.jpg)
Esquema
• IDE
• Práctica 2
– Java
– Enunciado
– Tareas
– Librerías externas
• Más cosas de Java
![Page 4: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/4.jpg)
IDE
• Deberíais saber
– Crear proyectos (desde cero y con código)
– Ejecutar
– Depurar (breakpoint, watch, variables locales)
– Generar Javadoc
![Page 5: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/5.jpg)
Esquema
• IDE
• Práctica 2
– Java
– Enunciado
– Tareas
– Librerías externas
• Más cosas de Java
![Page 6: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/6.jpg)
Práctica 2: Java• Útil para esta práctica:
– Constructores
– Interfaces / Herencia
– Control de acceso
– ArrayList
– HashMap
– Enhanced for
– Hilos
– Excepciones
– Entrada / salida
![Page 7: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/7.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 8: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/8.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 9: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/9.jpg)
Interfaces vs Herencia
• No siempre es fácil elegir
• En la práctica:
– Sólo se puede heredar de una clase
– Se pueden implementar muchas interfaces
![Page 10: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/10.jpg)
Control de acceso
• Ocultación de
– Variables
– Métodos
– Constructores
• Todas variables public ==> mal implementado
(normalmente)
![Page 11: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/11.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 12: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/12.jpg)
• Manera sencilla de tener una tabla (hash)
• Función hash: hashcode
• 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 13: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/13.jpg)
• Tipos de iteración:
– Con iterador (clase Iterator)
– Sin iterador (usando una variable como índice)
– Enhanced for
Enhanced for
for (Articulo a : cliente.getHistorialFechas(desde, hasta)){
System.out.println(a.getNombre());
}
![Page 14: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/14.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 15: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/15.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 16: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/16.jpg)
Entrada / salida
• En esta práctica:
![Page 17: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/17.jpg)
Esquema
• IDE
• Práctica 2
– Java
– Enunciado
– Tareas
– Librerías externas
• Más cosas de Java
![Page 18: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/18.jpg)
Práctica 2
• Implementar un sistema de gestión de una tienda virtual
– Partir de la P1
– Y de las interfaces/clases abstractas entregadas
• Comprobar mínima funcionalidad con mains de prueba
– Aconsejable hacer (y entregar) pruebas extra
![Page 19: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/19.jpg)
Práctica 2 - Artículos
• Libros
• Discos
• Películas
• ...
![Page 20: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/20.jpg)
Práctica 2 - Cliente
• Registrarse
• Aumentar saldo
• Buscar artículos
• Gestionar carrito
• Comprar carrito
• Visualizar histórico
• ...
![Page 21: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/21.jpg)
Práctica 2 - Administrador
• Mostrar inventario ordenado
• Buscar artículos
• Aumentar stock
• Mostrar clientes
![Page 22: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/22.jpg)
Esquema
• IDE
• Práctica 2
– Java
– Enunciado
– Tareas
– Librerías externas
• Más cosas de Java
![Page 23: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/23.jpg)
Librerías externas
• Conjunto de clases reutilizables (jars)
• En esta práctica: JDOM
– Documentación y ejemplos en la web
• NetBeans:
propiedades del proyecto -> librerías -> añadir JAR
![Page 24: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/24.jpg)
Librerías: pasos generales a seguir
1. Elegir librería a usar
2. Conseguir jars
– Tener documentación a mano
3. Incluir en el proyecto
4. Identificar clases útiles de la librería
5. Probar ejemplos simples de uso
6. Integrar en la aplicación
![Page 25: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/25.jpg)
Librería JDOM
• Manipular ficheros en formato XML
![Page 26: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/26.jpg)
Librerías + NetBeans (I)
![Page 27: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/27.jpg)
Librerías + NetBeans (II)
• Si NetBeans no encuentra las librerías:
• Solución:
– ¿están incluidas las librerías?
– ¿la ruta es la correcta?
![Page 28: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/28.jpg)
Esquema
• IDE
• Práctica 2
– Java
– Enunciado
– Tareas
– Librerías externas
• Más cosas de Java
![Page 29: Prácticas POO Curso 08/09arantxa.ii.uam.es/~abellogin/2010/poo_e/slidesP2.pdf · Constructores •Métodos especiales que crean un objeto –Se invoca de manera automática –La](https://reader034.fdocuments.es/reader034/viewer/2022042202/5ea28daae941b954863d15a6/html5/thumbnails/29.jpg)
Más cosas de Java
• Interfaces: Cloneable, Iterable, Comparable
• Ordenación, búsqueda, etc.: java.utils.Collections
• Funciones matemáticas: java.lang.Math
• Entrada / Salida alternativa: java.io.Console
• Patrones de diseño:
– Singleton
– Factory
– ...