140 likes | 366 Views
Herencia y Concepto de Interface. Estructura de Datos 2007. HERENCIA. Lo que le da a la clase potencia es el concepto de herencia. Un objeto puede recibir (heredar) las propiedades de su objeto padre.
E N D
Herencia y Concepto de Interface Estructura de Datos 2007
HERENCIA Lo que le da a la clase potencia es el concepto de herencia. Un objeto puede recibir (heredar) las propiedades de su objeto padre. Los humanos construimos taxonomias para describir la relación de un tipo de objeto con otro tipo. (Ejemplo las clasificaciones estudiadas en biología). Todo animal tiene un reino, una clase, un orden, un genero y habitualmente subespecies. La organización nos ayuda a reducir drásticamente la cantidad de información que debemos almacenar. Si ya se sabe lo que es un Ave, la frase “un pato es un Ave que nada” transmite una considerable cantidad de información. Indica información sobre la biología del pato (es de sangre caliente), su ciclo reproductivo (pone huevos), sus hábitos estaciónales (vuela al sur o al norte para pasar el invierno, etc.
La mayoría de la información que conocemos de la clase Ave puede ser almacenada en un lugar y volver a utilizarse con las clases Patos, Gansos, Gorriones, Halcones, etc. La relación entre pato y un Ave se denomina la relación ES_UN (un pato ES_UN ave, lo contrario no siempre es cierto). Esta relación y sus implicaciones son fundamentales para la programación orientada a objetos. Una clase hereda las variables y los métodos de otra clase empelando la palabra clave extends. En la practica esto aparece como:
Class CuentaBanco{ private double saldo; public double retSaldo(){ return saldo; } … } Class ChequeaCuenta extends CuentaBanco{ public void EscribeChequeo (double monto){ //…. } //… otros metodos exclusivos … } Class miClase{ public static void algunaFuncion(){ ChequeaCuenta ca = new ChequeaCuenta(); ca.Deposito (100.00); System.out.println(ca.Saldo()); } }
INTERFACES Una interface es un conjunto de declaraciones de funciones. Si una clase implementa (implements) una interface, debe definir todas las funciones que especifica la interface. Una clase puede implementar mas de una interface, esto posibilita la herencia múltiple. Una interface puede derivar de otra o incluso de varias interfaces, en cuyo caso incorpora todos los métodos de las clases de las interfaces que deriva.
Public interface Persistente{ void Almacena(); void Recupera(); } Class Ejemplo implements Persistente{ // Obligado a implementar los métodos // de la interface. } Class Ejemplo extends Cuenta implements Persistente{ // Hereda los métodos de Cuenta. // Obligado a implementar los métodos // de la interface. }
ARREGLOS Declaración preferida de un arreglo: int[] A; Declaración compatible con C: int A[]; En Java, la declaración de un arreglo es similar a la declaración de un puntero en C: En Java int[] A; En C int* A;
ARREGLOS Errores típicos con arreglos: int A[10]; // Ahí no va el tamaño! int[] A; // Ok! A[1] = 100; // Todavía no se ha pedido // espacio para el arreglo. Petición de espacio para un arreglo: int[] A; A = new int[10]; A[1] = 100; // Correcto! O: int [] A = new int[10]; // Correcto!
IMPLEMENTACION DE UNA LISTA UTILIZANDO ARREGLOS Public interface Lista{ // Tamaño de la lista (Largo Actual) public int size(); // public boolean isEmpty(); public boolean hayEspacio(); public Object RetPrimero(); public Object RetUltimo(); public Object RetMedio(int pos); public void AddPrimero(Object elemento); public void AddUltimo(Object elemento); // Agrega después de pos public void AddMedio(Object elemento, int pos); }
IMPLEMENTACION DE UNA LISTA UTILIZANDO ARREGLOS public class ArregloLista implements Lista{ }