23.02.2017 Views

Java

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Java</strong> 81<br />

Ahora supongamos que tenemos un cambio, y el sueldo, en vez de<br />

ser un valor fijo, depende de ciertos porcentajes variables. El sueldo<br />

tiene que ser calculado cada vez que se lo quiere leer. Tendremos que<br />

cambiar absolutamente todos los lugares donde se estaba leyendo el<br />

atributo sueldo por el envío de mensaje sueldo(). No solamente por la<br />

adaptabilidad al cambio, sino también por la flexibilidad que da enviar<br />

un mensaje (ya que se decide en runtime por method lookup), es que<br />

debemos siempre enviar mensajes en vez de acceder directamente a un<br />

atributo, incluso dentro del código de la misma clase.<br />

Las variables pueden ser inicializadas junto con su definición.<br />

public class Auto {<br />

private Marca marca; // inicializado al valor por defecto (null)<br />

private String modelo = “”; // inicializado<br />

…<br />

}<br />

En los métodos de la clase, estos atributos son accedidos<br />

directamente con su nombre o utilizando el pseudo variable this que<br />

es una referencia al objeto actual.<br />

Los atributos estáticos, aquellos que pertenecen<br />

a la clase, se definen agregando el modificador<br />

static. Estos atributos pueden ser accedidos por<br />

medio de su nombre o utilizando el nombre de la<br />

clase más el nombre del atributo.<br />

Cuando heredamos de una clase, heredamos los<br />

atributos definidos por ella, aunque no podamos<br />

acceder a ellos ya que podrían estar declarados<br />

como privados. Si estamos creando una jerarquía,<br />

es una buena práctica no definir atributos hasta<br />

los atributos<br />

estáticos deben<br />

definirse<br />

agregando el<br />

modificador static<br />

que no lleguemos a las clases concretas (opuesto a lo abstracto; si<br />

consideramos que las clases abstractas están en lo alto de la jerarquía,<br />

las clases concretas estarían abajo). Si lo hiciéramos estaríamos forzando<br />

una implementación particular y concreta en vez de una necesidad<br />

abstracta. Deberíamos declarar métodos abstractos (protected o public,<br />

dependiendo de la finalidad). Así las clases concretas pueden decidir<br />

ellas mismas que implementación quieren y necesitan.<br />

www.FreeLibros.me<br />

www.redusers.com

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

Saved successfully!

Ooh no, something went wrong!