lunes, 14 de marzo de 2016

Ampliación de clases en JAVA - 1 de 2



Elementos de clase (Static)

Los atributos y métodos de una clase precedidos con la palabra static se denominan elementos de clase. Solo existe un elemento estático para todos los objetos de una misma clase. Esto significa que los elementos de clase son compartidos por todas las instancias de la clase. Cuando se modifica un elemento de clase todas las instancias de la clase ven dicha modificación.
Los atributos de clase deben tener un valor inicial aunque no exista ninguna instancia de la clase. Si el elemento de clase es un valor constante, entonces se debe indicar la palabra final. 

Por ejemplo, se puede definir la constante PI para calcular el perímetro y el área de la clase Circulo.

public class Circulo {
public static final double PI = 3.1415926536;
private double radio;
public Circulo(double radio) {
this.radio = radio;
}
public double getRadio() {
return this.radio;
}
public double calcularPerimetro() {
return 2 * PI * this.radio;
}
public double calcularArea() {
return PI * this.radio * this.radio;
}
}

El acceso al elemento estático PI, la instanciación del objeto miCirculo y las invocaciones a los métodos calcularPerimetro() y calcularArea().

// Este programa calcula el perímetro y el área de una circunferencia
public class PerimetroAreaCircunferencia {
public static void main (String[] args) {
System.out.println("El valor de PI es " + Circulo.PI);
Circulo miCirculo = new Circulo(10.0);

System.out.println("El radio del circulo es " +
miCirculo.getRadio() +
" su perimetro es " +
miCirculo.calcularPerimetro() +
" y su área es " +
miCirculo.calcularArea());
}
}


Derechos de 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.


Paquetes

Los paquetes son grupos de clases, interfaces y otros paquetes que están relacionados entre sí. Los paquetes aportan una forma de encapsulación de un nivel superior al de las clases. Permiten unificar un conjunto de clases e interfaces que se relacionan funcionalmente. Por ejemplo, el paquete java engloba un conjunto de paquetes con utilidades de soporte para desarrollo y ejecución de aplicaciones como util o lang. 

Un paquete se declara con la siguiente sintaxis: 

package nombre-del-paquete;

Por ejemplo, se podría definir el paquete vehiculos para la aplicación de le empresa de alquiler de vehículos:

package vehiculos;


Uso

Para utilizar componentes que están en otro paquete diferente se debe añadir una declaración de importación.

El uso de un paquete se declara con la siguiente sintaxis: 

import nombre-del-paquete;

Se puede importar un paquete entero o un componente del paquete. Por ejemplo, si se desea importar las librerías para cálculos matemáticos de Java.

import java.math.*;

Si solo se desea importar una librería, entonces se debe indicar el nombre 7 del paquete y del componente. En este ejemplo se importa el componente Calendar de la librería de utilidades de Java. 

import java.util.Calendar;

La declaración de importación se incluye antes de la declaración de la clase.
En el siguiente ejemplo se incluye el componente Calendar de util y se utiliza el método getInstance() para obtener el día, el mes y el año de la fecha actual.

import java.util.Calendar;
public class CalcularFechaHoy {
public static void main (String[] args) {
int edad, diaHoy, mesHoy, añoHoy;
diaHoy = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
mesHoy = Calendar.getInstance().get(Calendar.MONTH) + 1;
añoHoy = Calendar.getInstance().get(Calendar.YEAR);
System.out.println("La fecha de hoy es " +
diaHoy + "/" +
mesHoy + "/" +
añoHoy);
}
}


Espero haber ayudado en algo. Hasta la próxima oportunidad!











  

No hay comentarios:

Publicar un comentario en la entrada