Beruflich Dokumente
Kultur Dokumente
tipo,
Herencia.
La herencia en java representa lo que conocemos
de herencia en el mundo real, bsicamente
mediante esta obtenemos las caractersticas o
rasgos comunes de nuestros padres o abuelos, en
java es el mismo enfoque permitiendo la creacin
de nuevas clases basadas en clases ya existentes, con las cuales
podemos obtener las caractersticas de las clases padres, heredando
campos, atributos, mtodos o funcionalidades.
Bsicamente mediante este concepto
podemos obtener las caractersticas
de una clase padre o de una jerarqua
mayor dependiendo de nuestro rbol
de herencia, en java definimos esta
jerarqua
mediante
la
palabra
extends seguido del nombre de la
clase a la que vamos a heredar,
tambin se debe tener claro que solo
se puede heredar de una sola clase
pues el lenguaje no permite la
Herencia mltiple (En Java por defecto
todas las clases heredan de la clase
Object, es decir, esta es la clase
Padre de todas las clases en Java).
Encapsulamiento.
Clases Abstractas.
La abstraccin permite resaltar la
parte ms representativa de
algo,
para
ignorando
centrarse
detalles
en
lo
principal.
La imagen
es
muy
fcil de identificar, con base a ella podemos crear una clase
persona, o la clase hombre, humano entre otras, pero
obviamente vemos que la imagen no tiene elementos como
ojos, nariz, boca, rostro en general, ni dedos, pies, manos o cuello,
Cundo Utilizarlas?
Cundo Utilizarlas?
Su uso est muy ligado al concepto de herencia y cumple el mismo
principio que aplicamos al usar clases abstractas, lo que buscamos es
establecer un mecanismo donde podamos compartir caractersticas
comunes entre clases diferentes, adems al igual que con clases
abstractas nos aseguramos que los mtodos y atributos solo estn
disponibles para las clases que las implementen.
Polimorfismo.
Este tal vez sea uno de los conceptos de la programacin orientada a
objetos ms usados pero muchas veces sin saber que se aplica ya
que el concepto inicialmente puede ser un poco confuso, bsicamente
mediante el polimorfismo programamos de forma
general en lugar de hacerlo de forma especfica,
se usa cuando se trabajen con la herencia y
objetos de caractersticas comunes los cuales
comparten la misma superClase y rbol
jerrquico, al trabajar con este concepto
optimizamos y simplificamos en gran medida nuestro trabajo.
Bsicamente podemos definirlo como la capacidad que tienen los
objetos de comportarse de mltiples formas sin olvidar que para esto
se requiere de la herencia, en si consiste en hacer referencia a
objetos de una clase que puedan tomar comportamientos de objetos
descendientes de esta.
Con el polimorfismo usamos la generalizacin olvidando los detalles
concretos de los objetos para centrarnos en un punto en comn
mediante una clase padre.
Tomando como ejemplo la imagen anterior, podemos decir que un
objeto de la clase FiguraGeometrica puede usarse para referirse a
cualquier objeto de cualquier subClase de FiguraGeometrica, en otras
palabras, una figura geomtrica puede ser un cuadro, un tringulo,
un cuadrado o cualquier figura que en trminos generales sea
geomtrica.
Excepciones.
Una excepcin es un objeto que se genera automticamente cuando
se produce un acontecimiento circunstancial que impide el normal
funcionamiento del programa:
-
}
Si al llamarse a la funcin paint, el objeto grafico no ha sido
inicializado con el valor devuelto por new al crear un objeto de la
clase Grafico o de alguna de sus clases derivadas, se lanza la
excepcin NullPointerException apareciendo en la consola el
siguiente texto.
Tipos de excepcin
Todos los tipos de excepcin son subclase de Throwable. Esta clase
tiene dos subclases:
1. Exception: Se usa para las excepciones que debern capturar los
programas de usuario.
Esta clase tiene como subclase a RuntimeException, que representa
excepciones definidas automticamente por los programas (divisin
por 0, ndice invlido de matriz, etc). Adems tiene otras subclases
como ClassNotFoundException, InterruptedException,etc.
1. Error: Excepciones que no se suelen capturar en condiciones
normales.
Suelen ser fallos catastrficos no gestionados
programas. Ejemplo: desbordamiento de la pila.
por
nuestros
Excepciones Predefinidas
Las excepciones predefinidas y su jerarqua de clases es la que se
muestra en la figura:
-Excepciones no capturadas
public class EjemploExcepcion {
static void subroutine() {
int d = 0;
int a = 10 / d;
}
public static void main(String args[]) {
System.out.println("Antesxc1.subroutine");
EjemploExcepcion.subroutine();
System.out.println("Despuesxc1.subroutine");
}
}
}
catch(Exception e) {
System.out.println("catch cualquier tipo de excepcin.");
}
/* Este catch nunca se ejecutar */
catch(ArithmeticException e) { // ERROR - no alcanzable
System.out.println("Estoa se ejecutar.");
}
}
}
Sentencias try anidadas
Una sentencia try puede estar incluida dentro del bloque de otra
sentencia try.
Ejemplo
public class TrysAnidados {
public static void main(String args[]) {
try {
int a = args.length;
/* Si no hay ningn argumento en la lnea de rdenes
se generar una excepcin de divisin por cero. */
int b = 42 / a;
System.out.println("a+ a);
try { // bloque try anidado
/* Si se utiliza un argumento en la lnea de rdenes
se generar una excepcin de divisin por cero. */
if(a==1) a = a/(a-a); // divisin por cero
/* Si se le pasan dos argumentos en la lnea de rdenes,
se genera una excepcin al sobrepasar los lmites
del tamao de la matriz. */
if(a==2) {
int c[] = { 1 };
c[42] = 99; // genera una excepcin de fuera de lmites
}
} catch(ArrayIndexOutOfBoundsException e) {
System.out.println("Indicea de limites: " + e);
}
} catch(ArithmeticException e) {
System.out.println("Divisin0: " + e);
}
}
}
Lanzar excepciones explcitamente: throw
Usando la sentencia throw es posible hacer que el programa lance
una excepcin de manera explcita: throw objetoThrowable;
El objetoThrowable puede obtenerse mediante:
1.- El parmetro de una sentencia catch.
2.- Con el operador new.
Ejemplo
public class ThrowDemo {
public static void demoproc() {
try {
throw new NullPointerException("demo");
} catch(NullPointerException e) {
System.out.println("Capturaro de demoproc.");
throw e; // relanza la excepcin
}
}
public static void main(String args[]) {
try {
demoproc();
} catch(NullPointerException e) {
System.out.println("Nueva captura: " + e);
}
}
}
El flujo de ejecucin se detiene tras la sentencia throw (cualquier
sentencia posterior no se ejecuta).
Salida del anterior ejemplo:
Captura dentro de demoproc.
Nueva captura: java.lang.NullPointerException: demo
Sentencia throws
Sirve para enumerar una lista de los tipos de excepcin que un
mtodo puede lanzar.
El mtodo que use al del throws debe capturar todas las excepciones
listada con el throws.
Ejemplo
// Programa correcto
class ThrowsDemo {
static void throwOne() throws IllegalAccessException {
System.out.println("DentrohrowOne.");
throw new IllegalAccessException("demo");
}
public static void main(String args[]) {
try {
throwOne();
} catch (IllegalAccessException e) {
System.out.println("Capturae);
}
}
}
Sentencia finally
Ejemplo
public class FinallyDemo {
public static void procA() {// Lanza una excepcin fuera del mtodo
try {
System.out.println("DentrorocA");
throw new RuntimeException("demo");
} finally {
System.out.println("Sentencially de procA");
}
}
public static void procB() {// Ejecuta la sentencia return
// dentro del try
try {
System.out.println("DentrorocB");
return;
} finally {
System.out.println("Sentencially de procB");
}
}
public static void procC() {// Ejecuta un bloque try normalmente
try {
System.out.println("DentrorocC");
} finally {
System.out.println("Sentencially de procC");
}
}
public static void main(String args[]) {
try {procA();
} catch (Exception e) {
System.out.println("Excepcinurada");
}
procB(); procC();
}
}