Acceso
El estado de un
objeto está dado por el conjunto de valores de sus atributos. Una modificación
arbitraria, intencionada o no, puede provocar inconsistencias o comportamientos
no deseados de un objeto. Es por este motivo que se debe controlar el acceso a
los atributos de los objetos.
Java proporciona mecanismos de acceso a los elementos
de una clase, de forma que se puede determinar el derecho de acceso de cada
elemento según las necesidades de los objetos.
Acceso privado: Los elementos
privados solo se pueden utilizar dentro de la clase que los define. Para
indicar el acceso privado se utiliza private.
Acceso de paquete: El acceso a estos componentes
es libre dentro del paquete en el que se define la clase. El acceso de paquete
no se indica expresamente.
Acceso protegido: Los elementos
protegidos solo se pueden utilizar dentro de la clase que los define, aquellas
clases que la extiendan y cualquier clase definida en el mismo paquete. Para
indicar el acceso protegido se utiliza protected.
Acceso público: Los elementos
públicos se pueden utilizar libremente. Para indicar expresamente el acceso
público se utiliza public. No es necesario, el acceso público se utiliza como
valor por defecto mientras no se indique private o protected.
Para limitar el
acceso a los atributos de la clase Vehiculo se utiliza private. Al utilizar
este tipo de acceso, solo los métodos "get" y "set" de la clase pueden acceder
a ellos.
public class Vehiculo
{
private String
matricula;
private String marca;
private String
modelo;
private String color;
private double
tarifa;
private boolean
disponible;
}
Con esta declaración,
todos los atributos de la clase tienen acceso private y el diagrama de clases
muestra un signo menos delante del identificador del atributo para indicar que
es privado.
La clase Vehiculo con
sus métodos "get" y "set".
public class Vehiculo
{
private String
matricula;
private String marca;
private String
modelo;
private String color;
private double
tarifa;
private boolean
disponible;
public String
getMatricula() {
return
this.matricula;
}
public String
getMarca() {
return this.marca;
}
public String
getModelo() {
return this.modelo;
}
public String
getColor() {
return this.color;
}
public double
getTarifa() {
return this.tarifa;
}
public boolean
getDisponible() {
return
this.disponible;
}
public void
setTarifa(double tarifa) {
this.tarifa = tarifa;
}
public void
setDisponible(boolean disponible) {
this.disponible =
disponible;
}
}
La clase Vehiculo define
métodos "get" para los atributos matrícula, marca, modelo, color, tarifa y disponible.
Los métodos "set" solo son aplicables a los atributos tarifa y disponible porque
se considera que el resto de atributos de la clase no pueden modificar su valor
una vez que se ha creado el objeto.
La responsabilidad de
modificar los atributos de los objetos es de los métodos "set". Estos métodos
deben verificar que el valor que se desea asignar a un atributo es válido y
cumple con las restricciones de diseño de la clase.