Unidad III - Llamas Blog · 2010-02-12 · Unidad III Programacion Orientada a objetos con JAVA...

Preview:

Citation preview

Unidad IIIProgramacion Orientada a objetos con JAVAParte II

Ing. José Luis Llamas Cárdenas

Métodos Constructores

Se ejecutan al crearse el objeto en memoria

Se llaman igual que la clase No retornan ningún valor y

tampoco se les indica Pueden estar sobrecargados

Unidad III

Métodos Finalizadores Los finalizadores son métodos que vienen a

completar la labor del garbage collector. Un finalizador es un método que se llama

automáticamente cuando se va a destruir un objeto.

Se utilizan para ciertas operaciones de terminación distintas de liberar memoria

Un finalizador es un método de objeto (no static), sin valor de retorno, sin argumentos y que siempre se llama finalize().

Los finalizadores se llaman de modo automático

Unidad III

Sobrecarga de métodos

Los métodos pueden estar sobrecargados, esto significa la capacidad de tener mas de un método con el mismo nombre pero con diferente número y tipo de argumentos o de valores de retorno.

Unidad III

Ejercicios 3.2

Construir un constructor para la clase Persona que inicialice el nombre y la edad.

Construir una clase Circulo con un atributo, radio y dos metodos constructores uno que reciba el radio y otro que no reciba radio y le asigne un random.

Unidad III

4 Herencia La herencia permite que se pueden definir

nuevas clases basadas en clases existentes, lo cual facilita re-utilizar código previamente desarrollado.

Si una clase deriva de otra (extends) hereda todas sus variables y métodos.

La clase derivada puede añadir nuevas variables y métodos y/o redefinir las variables y métodos heredados

Unidad III

HerenciaUnidad III

Redefinición de Métodos Una clase puede redefinir (volver a definir)

cualquiera de los métodos heredados de su super-clase que no sean final o static. El nuevo método sustituye al heredado para todos los efectos en la clase que lo ha redefinido.

Los métodos redefinidos pueden ampliar los derechos de acceso de la super-clase (por ejemplo ser public, en vez de protected o private), pero nunca restringirlos.

Unidad III

Clases y Métodos Abstractos Una clase abstracta (abstract) es una clase

de la que no se pueden crear objetos. Su utilidad es permitir que otras clases deriven de ella, proporcionándoles un marco o modelo que deben seguir y algunos métodos de utilidad general. Las clases abstractas se declaran anteponiéndoles la palabra abstract, como por ejemplo,

public abstract class Geometria { ... }

Una clase abstract puede tener métodos declarados como abstract, en cuyo caso no se da definición del método.

Unidad III

Ejercicio 12

Crear la clase taxista derivada de la clase persona.

Unidad III

Persona

TaxistaNo.Licencia

AsignarLicencia();LeerLicencia();

Concepto de Interface

Una interface es un conjunto de declaraciones de funciones.

Si una clase implementa (implements) una interface, debe implementar todas las funciones especificadas por la interface.

Una clase puede implementar más de una interface, representando una forma alternativa de la herencia múltiple.

Unidad III

Clases y Métodos Finales

las variables declaradas como final no pueden cambiar su valor una vez que han sido inicializadas.

Una clase declarada final no puede tener clases derivadas. Esto se puede hacer por motivos de seguridad y también por motivos de eficiencia, porque cuando el compilador sabe que los métodos no van a ser redefinidos puede hacer optimizaciones adicionales.

Análogamente, un método declarado como final no puede ser redefinido por una clase que derive de su propia clase.

Unidad III

Interfaces Una interface es un conjunto de

declaraciones de métodos (sin definición). También puede definir constantes, que son implícitamente public, static y final, y deben siempre inicializarse en la declaración.

Todas las clases que implementan una determinada interface están obligadas a proporcionar una definición de los métodos de la interface, y en ese sentido adquieren una conducta o modo de funcionamiento.

Unidad III

Interfaces Una clase puede implementar una o varias

interfaces. Para indicar que una clase implementa una o más

interfaces se ponen los nombres de las interfaces, separados por comas, detrás de la palabra implements, que a su vez va siempre a la derecha del nombre de la clase o del nombre de la super-clase en el caso de herencia. Por ejemplo,

public class CirculoGrafico extends Circuloimplements Dibujable, Cloneable {...}

Unidad III

Definición de Interfaces

Una interface se define de un modo muy similar a las clases. A modo de ejemplo se reproduce aquí la definición de la interface Dibujable:

// archivo Dibujable.javaimport java.awt.Graphics;public interface Dibujable {public void setPosicion(double x, double y);public void dibujar(Graphics dw);}

Unidad III

Jerarquía e Interfaces

Clase Padre

Clase Hija Clase Hija Clase Hija

Clase Padre Clase Padre

Clase Padre

Clase Hija

Interface

Herencia permitida por java Herencia no válida en Java

Uso de Interfaces

Unidad III

Ejemplo

Clase Object

Clase CCuenta

Clase CCuentaAhorro

Clase CCuentaCorriente

Clase CCuentaCorrienteConIn

Clase CBanco

Interfase IFecha

Unidad III

Ejercicio 13

Crear una interfaz, llamada Cantante para hacer cantar a los objetos de la clase persona

Crear El archivo Interfaz.java para hacer cantar un objeto persona

Unidad III

Polimorfismo El polimorfismo tiene que ver con la relación que

se establece entre la llamada a un método y el código que efectivamente se asocia con dicha llamada.

Con funciones normales o sobrecargadas se utiliza vinculación temprana

Con funciones redefinidas en Java se utiliza siempre vinculación tardía, excepto si el método es final.

La vinculación tardía hace posible que, con un método declarado en una clase base (o en una interface) y redefinido en las clases derivadas (o en clases que implementan esa interface),

Unidad III

Excepciones Una Excepción es un cierto tipo de error o

una condición anormal que se ha producido durante la ejecución de un programa.

Algunas excepciones son fatales y provocan que se deba finalizar la ejecución del programa.

En este caso conviene terminar ordenadamente y dar un mensaje explicando el tipo de error que se ha producido.

Unidad III

Excepciones

class Principal {

public static void main( String[] a ) {

int i=0, j=0, k;

k = i/j; // Origina un error de division-by-zero}

}

Unidad III

Excepcionesclass Exep01 {

public static void main(String[] Args){

String holas[] = {"Hola", "Hola", "Hola", "Hola", "Hola"};try {

for(int i = 0; i < 6; i++)System.out.println(holas[i]+" "+(i+1));

}catch(ArrayIndexOutOfBoundsException e) {

System.err.println("Arreglo Desordado");}catch(Exception e2) {

System.err.println("Ocurrio otro error");}finally {

System.out.println("Siempre sale esto");}

}}

Unidad III

Excepciones PredefinidasUnidad III

Lanzar una Excepción

Se crea un objeto Exception de la clase adecuada.

Se lanza la excepción con la sentencia throw seguida del objeto Exception creado.

Unidad III

Creación de Excepcionesclass ServerTimeOutException extends Exception {}

public void conectame( String nombreServidor ) throws Exception {

int exito;int puerto = 80;exito = open( nombreServidor,puerto );if( exito == -1 )

throw ServerTimeOutException;}

Unidad III