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 83<br />

}<br />

public static void main(String[] args) {<br />

Material m = new Material();<br />

Publicacion p = new Publicacion();<br />

Libro l = new Libro();<br />

System.out.println(m);<br />

System.out.println(p);<br />

System.out.println(l);<br />

}<br />

Algunas de las cosas que se observan son:<br />

- se accede directamente a variables, no usa se usa métodos (ejemplo: en el constructor de<br />

Publicación).<br />

- Aparece palabra extends. Indica que una clase extiende a otra, es subclase.<br />

Si se intenta compilar este código, no anda. El problema es por intentar acceder a un atributo<br />

privado desde otra clase. Profundizaremos en la visibilidad.<br />

8.3.2 Visibilidad en profundidad<br />

Hay distintos modificadores de visibilidad. Los modificadores de visibilidad tienen dos<br />

aspectos:<br />

- herencia: determina si un método o variable puede ser referido en una subclase;<br />

- acceso: determina el grado de encapsulación, o sea el alcance en el cual el método o<br />

variable puede ser directamente referido. Todos los métodos y variables son accesibles desde la<br />

propia clase en que son declarados.<br />

modificador clases métodos y variables<br />

no poner ninguno desde el package heredado por subclases del mismo package<br />

accesible desde mismo package<br />

public visible de todos lados heredado por toda subclase<br />

accesible de cualquier lado<br />

private no aplicable no heredado por subclase<br />

no accesible desde ninguna otra clase<br />

protected no aplicable heredado por todas las subclases (en<br />

cualquier lado)<br />

accesible desde clases del package<br />

Probar pasar a protected y observar que anda. ¿Cómo se que querré usar directamente una<br />

variable en una subclase? La mejor opción es siempre usar métodos para acceder a las variables.<br />

En general se recomienda poner las variables privadas y agregar métodos públicos para su<br />

acceso.<br />

8.3.3 Constructores en detalle<br />

Observar los constructores. ¿Queda práctico tener que inicializar todo cada vez? Hagamos la<br />

siguiente prueba: agregar writes de control (sentencias de impresión que indican por dónde se<br />

está ejecutando) en los constructores. Por ejemplo, en el constructor de material agregar:<br />

System.out.println("Estoy en el constructor de Material");. En forma similar, agregar en<br />

Publicación y en Libro. Observar que automáticamente los llama cuando creo un libro.<br />

Modificar los constructores:

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

Saved successfully!

Ooh no, something went wrong!