prácticas poo curso 09/10ir.ii.uam.es/~alejandro/2009/poo/slidesp2.pdf · •cosas de java...

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

Upload: others

Post on 24-Mar-2020

5 views

Category:

Documents


0 download

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

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

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

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

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

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

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

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

• 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

• 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

• 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

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

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

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

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

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

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

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

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

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

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

(Aún) Más Java

• Patrones de diseño:

– Singleton

– Factory

– ...

• Entrada / Salida alternativa: java.io.Console

• Funciones matemáticas: java.lang.Math