sesion 07 clases y interfaces

21
CLASES ABSTRACTAS E INTERFACES Expositor: Ing. Wilmer Richard Perfecto Manrique

Upload: luigicastroalvis

Post on 04-Jan-2016

13 views

Category:

Documents


0 download

DESCRIPTION

Clases y Interfaces en Java

TRANSCRIPT

Page 2: Sesion 07 Clases y Interfaces

Agenda Polimorfismo

Clases Abstractas

Interfaces

Page 3: Sesion 07 Clases y Interfaces
Page 4: Sesion 07 Clases y Interfaces

Polimorfismo Polimorfismo significa la capacidad de adquirir

múltiples formas; en programación orientada aobjetos esto significa que una operación puedetener más de un método que la implemente entiempo de ejecución.

Mediante el polimorfismo se puede asignar a unareferencia de un tipo en la jerarquía, una instanciade un tipo inferior (que sea heredera).

Page 5: Sesion 07 Clases y Interfaces

Polimorfismo El polimorfismo permite que cuando se envía un

mensaje a un objeto (invocación de un método deese objeto), sólo se decida en tiempo de ejecuciónqué método se invoca.

Page 6: Sesion 07 Clases y Interfaces

Polimorfismo El polimorfismo por sobrecarga significa que la misma operación se implementa a través de

métodos diferentes con la misma firma.

class Punto3D extends Punto {protected int z;

Punto3D() {super(); // Invoca al constructor de la superclase Puntoz = 0;

}Punto3D(int x, int y, int z) {

super(x,y) // Invoca al constructor de la superclase Puntothis.z = z;

}

public int CordZ() {return z;}

.....

}

Page 8: Sesion 07 Clases y Interfaces

Clases Abstractas Una clase abstracta representa un concepto muy genérico, sin un

comportamiento claro y específico. En Java Se declaran mediante la palabrareservada abstract.

Se fija un conjunto de métodos y atributos que permitan modelar un ciertoconcepto, que será refinado mediante la herencia.

Una clase abstracta no puede ser instanciada, es decir, no se puede hacer newsobre este tipo de clases. Pero sí se pueden definir los constructores.

Su utilidad es permitir que otras clases deriven de ella, proporcionándoles unmarco o modelo que deben seguir y algunos métodos de utilidad general.

Una clase abstract puede tener métodos que no son abstract y con unaimplementación-

Un método no puede ser abstract y static a la vez, ya que los métodos static nopueden ser redefinidos.

Page 9: Sesion 07 Clases y Interfaces

Clases Abstractas Métodos abstractos:

Son declarados como abstract.

Sólo cuentan con la declaración y no poseen cuerpo de definición.

La implementación es específica de cada subclase.

Toda clase que contenga algún método abstracto (heredado o no) es abstracta. Puedetener también métodos efectivos.

Page 10: Sesion 07 Clases y Interfaces

Clases Abstractaspublic abstract class FiguraGeometrica {

FiguraGeometrica ();FiguraGeometrica (int x, int y);public asbtract void Mover();public abstract void Dibujar();public abstract void Rotar();...

}public class Cuadrado extends FiguraGeometrica {

public void Dibujar(){//código especifico para dibujar cuadrados...

}...

}

Page 12: Sesion 07 Clases y Interfaces

Interfaces Una interface es un conjunto de declaraciones de métodos. Si

una clase implementa una interface, debe definir todos losmétodos especificados por la interface.

Las interfaces pueden también definir variables finales pero node instancia y tampoco static.

Una interface puede derivar de otra interface o incluso de variasinterfaces, lo que equivale decir que una clase puedeimplementar más de una interface

Una interface sirve para crear referencias a objetos. Cuando elnombre de un objeto es de un tipo de interface, a través de dichonombre (y el operador punto) sólo se pueden utilizar losmétodos declarados por dicha interface

Page 13: Sesion 07 Clases y Interfaces

Interfaces Una clase puede implementar una o varias interfaces. Si

una clase implementa una interface ésta debe proporcionaruna definición de todos los métodos de ésta.

Un interface es como una especie de protocolo o modo deconducta. Todas las clases que implementan una interfacetienen una conducta similar (en los aspectos determinadospor los métodos de la interface).

Las interfaces son independiente de las jerarquías de clases,pueden ser utilizadas o implementadas en cualquiera deellas, y sirven para proporcionar un comportamierntoadicional a objetos de cualquier jerarquía de clases.

Page 14: Sesion 07 Clases y Interfaces

InterfacesPublic interface Dibujable {

public void Dibujar(Graphics g);

}

public class Circulo extends FiguraGeometrica implements Dibujable {

...

public void Dibujar(Graphics g) {

g.setColor(color);

g.drawArc((int)(centro.CoordX() – this.radio), (int)centro.CoordY() –

this.radio),(int)(2*this.radio),(int)(2*this.radio),angulo,360);

}

protected void Mover(Punto c) {

centro = c;

}

}

Page 15: Sesion 07 Clases y Interfaces

Interfaces Una interface se define de una forma similar a una clase:

public interface Dibujable {

final float PI = 3.14159; // Una constante

public void Dibujar(Graphics g);

}

Si la interface nos es public no será accesible fuera delpackage.

Page 16: Sesion 07 Clases y Interfaces

Interfaces Los métodos declarados en una interface son public y abstract

de modo implícito. Cada interface public debe ser definida en un archivo *.java

especial con el nombre de la interface. Entre interfaces existe una jerarquía que permite herencia

simple y múltiple. Si una interface extiende otra, incluye todas sus constantes

y declaraciones de métodos. Una interace puede ocultar una constante definida en su

super-interface definiendo otra con el mismo nombre. De lamisma forma puede ocultar la declaración de un método desu super-interface redeclarándolo nuevamente.

Una interface puede extender varias interfaces (se ponensu nonbres tras la palabra extends, separada por comas).

Page 17: Sesion 07 Clases y Interfaces

Interfaces Las constantes definidas en una interface se utilizan en

cualquier otra clase (que no la implemente)

precediéndoles del nombre de la interface, como por

ejemplo:

area = 2.0*Dibujable.PI*r;

Si embargo, en las clases que implementan la interface,

las constantes de la interface se pueden utilizar

directamente, como si fueran constantes de la misma

clase.

Page 18: Sesion 07 Clases y Interfaces

Interfaces El nombre de una interface se puede utilizar como un nuevo tipo de

variable:

En este sentido, el nombre de una interface puede ser utilizado

en lugar del nombre de la clase que la implementa.

El objeto cuya referencia sea de un tipo de interface sólo se

podrá utilizar con los métodos declarados en dicha interface.

Un objeto de ese tipo puede también ser utilizado como valor de

retorno.

Las interfaces no deben ser modificadas, más que en caso de

extrema necesidad. Si se modifican, por ejemplo añadiendo alguna

declaración, las clases que implementan dicha inteface dejarán de

funcionar a menos que implementen el nuevo método.

Page 19: Sesion 07 Clases y Interfaces

Interfaces Una clase no puede heredar de dos clases abstractas,

pero si puede heredar de una clase abstracta eimplementar una o mas interfaces.

Los interfaces son muy útiles para definir unmecanismo común de comunicación en objetos detipología variada (independencia de la jerarquía).

Las interfaces permiten mucha mas flexibilidad paraconseguir que dos clases tengan el mismocomportamiento independientemente de dónde estánen la jerarquía de clases de Java.

Page 20: Sesion 07 Clases y Interfaces

Interfaces Los métodos de las interfaces no tienen código en la

definición de la interface.

Los métodos de las clases abstractas sí pueden tener

código, a excepción de los métodos declarados como

abstract.

Una clase que hereda de una clase abstracta está

obligada a implementar todos los métodos abstractos, no

así si fuese también una clase abstracta.

Page 21: Sesion 07 Clases y Interfaces

Muchas Gracias..

Ing. Wilmer Richard Perfecto Manrique