10.05.2014 Views

programación i - Universidad ORT Uruguay

programación i - Universidad ORT Uruguay

programación i - Universidad ORT Uruguay

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Programación I 89<br />

Semana 9<br />

9.1 Repaso de Upcast, Polimorfismo, Abstract<br />

Se disponen de las siguientes definiciones vistas la semana anterior:<br />

Persona<br />

int edad<br />

Empleado (subclase de Persona)<br />

int sueldo<br />

métodos<br />

setEdad (int unaEdad)<br />

int getEdad()<br />

boolean esMenorQue(Persona)<br />

String mensaje() (retorna “En Persona”)<br />

métodos<br />

setSueldo(int unSueldo)<br />

int getSueldo()<br />

String mensaje() (retorna “En Empleado”)<br />

Indicar en cada uno de los ejemplos que pasaría:<br />

En el main:<br />

¿Resultado? ¿Funciona?<br />

1 Empleado e1;<br />

e1 = new Empleado();<br />

e1.setEdad(39);<br />

Funciona por herencia<br />

2 Empleado e2 = new Empleado();<br />

e2.setEdad(25);}<br />

if (e1.es MenorQue (e2)) {<br />

…<br />

}<br />

3 Persona p1 = new Empleado()<br />

System.out.println(p1.mensaje())<br />

Funciona por upcast: todo empleado es<br />

Persona (Observar que el método esMenorQue<br />

está definido para recibir un objeto Persona).<br />

Compila (pues en Persona esta el método<br />

mensaje).<br />

En ejecución sale “En Empleado”, porque es<br />

polimórfico<br />

4 p1.setSueldo(100) No funciona, en tiempo de compilación asume<br />

que p1 es Persona, no sabe que luego será<br />

empleado<br />

5 (Empleado)p1.setSueldo(100) Anda, pues se hizo explícitamente el cast<br />

6 Agrego en Persona:<br />

public abstract class Persona<br />

Persona p2 = new Persona()<br />

7 Agrego en Persona:<br />

public abstract int totalImpuestos()<br />

Empleado e3 = new Empleado()<br />

No anda, si la clase es abstract no se puede<br />

crear instancias.<br />

No funciona, debo incluir en Empleado el<br />

método totalImpuestos(), sino la clase queda<br />

abstract. Debería incluir el método en<br />

Empleado.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!