Aspectos Relevantes De Una Clase en Java
Constructores
Un constructor es un método que se ejecuta automáticamente cuando se crea un objeto de una clase; sirve para inicializar los miembros de la misma.
El constructor tiene el mismo nombre que clase; cuando se define, no se puede especificar un valor de retorno porque nunca devuelve uno; sin embargo, puede tomar cualquier número de argumentos.
La clase Rectangulo tiene un constructor con cuatro parámetros.
public class
Rectangulo
{
private int
izdo;
private int
superior;
private int
dcha;
private int
inferior;
//
constructor
public
Rectangulo(int iz, int sr, int d, int inf)
{
izdo
= iz;
superior
= sr;
dcha
= d;
inferior
= inf;
}
//
definiciones de otros métodos miembro
}
|
Al crear un objeto se transfieren los valores de los argumentos al constructor, con la misma sintaxis que la llamada a un método; por ejemplo:
Rectangulo Rect = new Rectangulo (25, 25, 75, 75);
Se creó una instancia de Rectángulo, pasando valores concretos al constructor de la clase, de esta forma queda inicializado.
Constructor por defecto
Un constructor que no tiene parámetros se llama constructor por defecto; el cual normalmente inicializa los miembros dato de la clase con valores predeterminados.
El constructor por defecto inicializa x e y a cero.
public class
Punto
{
private int
x;
private
int y;
public
Punto() // constructor por defecto
{
x
= 0;
y
= 0;
}
}
Cuando
se crea un objeto Punto sus miembros dato se inicializan
a
cero.
Punto
P1 = new Punto() ; // P1.x == 0, P1.y == 0
|
Constructores sobrecargados
Métodos de una clase
Los métodos en Java siempre son miembros de clases, no hay métodos o funciones fuera de ellas; su implementación se incluye dentro del cuerpo de la clase.
La clase Racional define el numerador y denominador característicos de un número;por cada dato, se proporciona una método miembro que devuelve su valor y un método que asigna numerador y denominador; tiene un constructor que inicializa un objeto a 0/1.
class
Racional
{
private
int numerador;
private
int denominador;
public
Racional()
{
numerador =
0;
denominador
= 1;
}
public int
leerN() { return numerador; }
public int
leerD() { return denominador; }
public void
fijar (int n, int d)
{
numerador
= n;
denominador
= d;
}
}
|
This
Definida implícitamente en el cuerpo de los métodos, hace alusión al objeto sobre el que se invoca el método, es decir, el this es utilizado para hacer referencia al objeto de la clase actual. Se puede usar el this para referenciar a los miembros de la clase como métodos, constructores y variables.
Con this se evita la colisión entre argumentos y variables instancia.
En Java es posible sobrecargar métodos, es decir, definir dos o más dentro de la misma clase, que compartan nombre y que las declaraciones de sus parámetros sean diferentes; la sobrecarga es una forma de polimorfismo.
Se define la clase llamada sobrecarga con cuatro métodos de nombre prueba sobrecargados, diferenciándose entre ellos por el número/tipo de los parámetros; main() llama a cada uno de ellos.
class
Triangulo
{
private double
base;
private
double altura;
public void
datosTriangulo(double base, double altura)
{
this.base
= base;
this.altura
= altura;
}
//
...
}
|
Con this se evita la colisión entre argumentos y variables instancia.
Sobrecarga de métodos
En Java es posible sobrecargar métodos, es decir, definir dos o más dentro de la misma clase, que compartan nombre y que las declaraciones de sus parámetros sean diferentes; la sobrecarga es una forma de polimorfismo.
Se define la clase llamada sobrecarga con cuatro métodos de nombre prueba sobrecargados, diferenciándose entre ellos por el número/tipo de los parámetros; main() llama a cada uno de ellos.
Sobre-escritura de métodos
En java la sobre-escritura toma un método de la clase padre y se emplea en una subclase con el mismo nombre y parámetros establecidos pero utilizando este método para la subclase en específico , esto para facilitar el traslado de información de una clase a otra.
Interfaces
Las interfaces son clases sin ningún tipo de implementanción , es decir, en una interfaz solo deben aparecer métodos declarados y son usadas de una manera similar a las clases abstractas con la diferencia que la clase abstracta puede tener metodos implementados las interfaces no.
Las interfaces se declaran con la palabra reservada interface. Las interfaces no encapsulan datos solo definen cuales son los métodos que van a implementar los objetos de las clases que utilicen la interfaz
Las interfaces se declaran con la palabra reservada interface. Las interfaces no encapsulan datos solo definen cuales son los métodos que van a implementar los objetos de las clases que utilicen la interfaz
Implementación de una interfaz
La interfaz especifica el comportamiento común que tiene un conjunto de clases, el cual se realiza en cada una de ellas y se conoce como implementación de interfaz; utiliza una sintaxis similar a la derivación o extensión de una clase, con la palabra reservada implements en lugar de extends.
Jerarquía de interfaces
Es importante recordar que las interfaces se pueden organizar de forma jerárquica, de forma que los métodos sean heredados; a diferencia de las clases que sólo pueden heredar de una clase base (herencia simple), las interfaces pueden heredarse tanto como se precise; y como en las clases, también se utiliza la palabra reservada extends para especificar su herencia.
La herencia o relación es-un, es la relación existente entre dos clases: una es la derivada que se crea a partir de otra ya existente, denominada base; la nueva hereda de la ya existente; por ejemplo: si existe una clase Figura y se desea crear una clase Triangulo, esta última puede derivarse de la primera pues tendrá en común con ella un estado y un comportamiento, aunque tendrá sus características propias; Triangulo es-un tipo de Figura; otro ejemplo es Programador que es-un tipo de Empleado.
Declaración de las clases Programador y Triangulo; la primera se deriva o extiende la clase Empleado; la segunda, de Figura.
Clases abstractas
Las clases abstractas son aquellas que se basan en que una superclase permita unificar campos y métodos de las subclases, evitando la repetición de código y unificando procesos.
Las clases abstractas tienen, como lo indica su nombre métodos abstractos; si una clase tiene un método abstracto debe declararse con la palabra reservada abstract; una característica importante de estas clases es que debe tenr al menos un metodo sin instanciar .
Ejemplo:
En el ejemplo podemos observar que figura es una clase abstracta ya que el metodo área no esta inicializado esto debido a que el área varia dependiendo de la figura por lo tanto nos conviene usar una clase abstracta para que en el momento en el ésta se herede a una subclase no tenga ningún tipo de dato que pueda complicar el proceso
El código seria de la siguiente manera :
abstract
class NombreClase { // ... }
Por
ejemplo:
public
abstract class Persona
{
private
String apellido;
//
public void
identificacion(String a, String c){...}
}
|
Ejemplo:
En el ejemplo podemos observar que figura es una clase abstracta ya que el metodo área no esta inicializado esto debido a que el área varia dependiendo de la figura por lo tanto nos conviene usar una clase abstracta para que en el momento en el ésta se herede a una subclase no tenga ningún tipo de dato que pueda complicar el proceso
El código seria de la siguiente manera :
public abstract
class Figura
{
protected double x;
protected double y;
public Figura
(double x. double y)
{
this.x =x
this.y = y;
}
Publib abstract
double area() ;
}
publib class
Circulo extends Figura
{
private double
radio;
public Circulo
(double x, double y, double radio)
{
super (x, y);
this.radio =radio;
}
public double area
()
{
return Math. P*
radio *radio;
}
}
public class
Cuadrado extends Figura
{
private double
lado;
public Cuadrado
(double x, double y, double lado) {
super (x, y);
this.lado =
lado;
}
public double area
()
{
return
lado*lado;
}
}
|
Clases derivadas
La herencia o relación es-un, es la relación existente entre dos clases: una es la derivada que se crea a partir de otra ya existente, denominada base; la nueva hereda de la ya existente; por ejemplo: si existe una clase Figura y se desea crear una clase Triangulo, esta última puede derivarse de la primera pues tendrá en común con ella un estado y un comportamiento, aunque tendrá sus características propias; Triangulo es-un tipo de Figura; otro ejemplo es Programador que es-un tipo de Empleado.Declaración de las clases Programador y Triangulo; la primera se deriva o extiende la clase Empleado; la segunda, de Figura.
1.
class Programador extends Empleado
{
public
miembro público
//
miembros públicos
private
miembro privado
//
miembros privados
}
2.
class Triangulo extends Figura
{
public
//
miembros públicos
protected
//
miembros protegidos
...
}
|
Una
vez creada la clase derivada, el siguiente paso es añadir los nuevos miembros
que se requieren para cumplir las necesidades específicas de la nueva clase.
El modelo de un mecanismo de excepciones consta fundamentalmente de cinco nuevas palabras reservadas: try, throw, throws, catch y finally.
Los pasos del modelo son:
El mecanismo de excepciones se completa con:
Un bloque finally que, si se especifica, siempre se ejecuta al final de un try;
Especificaciones de excepciones que dictamina cuáles, si existen, puede lanzar un método.
Condiciones de error en programas
La
escritura de código fuente y el diseño correcto de clases y métodos es una
tarea difícil y delicada, por ello es necesario manejar con eficiencia las
erratas que se produzcan. El manejo de errores es una etapa
importante en el diseño de programas ya que no siempre se puede asegurar que
las aplicaciones utilizarán objetos o llamadas a métodos correctamente; en
lugar de añadir conceptos aislados de manejo de errores al código del programa,
se prefiere construir un mecanismo de dicho manejo como una parte integral del
proceso de diseño.
¿Por qué considerar las condiciones de error?
La
captura (catch) o localización de errores es siempre un problema en
programación; en la fase de desarrollo se debe pensar cómo localizar los errores;
también hay otras cuestiones a tener en cuenta como: ¿dónde deben capturarse
los errores?, o ¿cómo pueden manejarse?.
La
solución a tales problemas en Java es llamar mecanismos del lenguaje que
soportan manejo de errores para evitar hacer códigos de manejo de errores
complejos y artificiales en cada programa; cuando se genera una excepción en
Java, el error no se puede ignorar porque el programa terminará; si el código
de tratamiento del error encuentra el tipo de error específico, el programa
tiene la opción de recuperación del error y continuar la ejecución. Java
busca automáticamente en un bloque de código llamado manejador de excepciones
para responder de un modo apropiado; esta respuesta se llama capturar o atrapar
una excepción (catching an exception).
Mecanismo del manejo de excepciones en Java
·
try es un bloque para detectar
excepciones,
·
catch es un manejador para capturar
excepciones de los bloques try,
·
throw es una expresión para levantar (raise)
excepciones,
·
throws indica las excepciones que
puede elevar un método,
·
finally es un bloque opcional situado
después de los catch de un try.
Los pasos del modelo son:
1. Establecer un conjunto de operaciones para anticipar errores; esto
se realiza en un bloque try.
2. Cuando una rutina encuentra un error, lanzar una excepción; el
lanzamiento (throwing) es el acto de levantar una excepción.
3. Para propósitos de limpieza o recuperación, anticipar el error y
capturar (catch) la excepción lanzada.
El mecanismo de excepciones se completa con:
Un bloque finally que, si se especifica, siempre se ejecuta al final de un try;
Especificaciones de excepciones que dictamina cuáles, si existen, puede lanzar un método.
Normas
try
{
sentencias
}
catch
(parámetro)
{
sentencias
}
catch
(parámetro)
{
sentencias
}
etc.
|
Comentarios
Publicar un comentario