Vous êtes sur la page 1sur 36

Interfaces

jueves 17 de enero de 2013

Programacin Orientada a Objetos


M.C. Alma Delia Nieto Yez
1

Objetivo
Que el alumno sea capaz de modelar la solucin de un problema usando caractersticas avanzadas de clases y posteriormente sea capaz de codicar dicha solucin en el lenguaje de programacin Java.

Competencia: Elaborar programas de computadora usando herramientas de programacin.

2
jueves 17 de enero de 2013

Contenido
Herencia Denicin Ejemplos Modicadores de acceso en la herencia Clases abstractas Denicin Ejemplos Interfaces Ejercicios Bibliografa

3
jueves 17 de enero de 2013

Herencia
Las clases se relacionan entre s. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. Java nicamente permite la herencia simple. La palabra clave extends indica que una clase desciende de otra.

4
jueves 17 de enero de 2013

Herencia (Ejemplo)
Clase Figura

Clase Rectngulo

Clase Tringulo

5
jueves 17 de enero de 2013

Herencia (Ejemplo)

6
jueves 17 de enero de 2013

Herencia (Ejemplo)
public class Figura { protected double area; protected String color; public Figura () { this.area = 0; } public void setArea (double cantidad) { this.area = cantidad; } } public class Rectangulo extends Figura { private double base; private double altura; public void calcularArea () { super.setArea(base*altura); } }
6
jueves 17 de enero de 2013

Modicadores de acceso
Private Protected Public Default Una subclase hereda todos los miembros de la clase padre incluidos los privados. A los miembros privados se puede acceder mediante los mtodos set/get y los constructores.

7
jueves 17 de enero de 2013

Modicadores de acceso
Modificador de acceso En el mismo paquete En un paquete diferente Subclase en el Subclase en un mismo paquete paquete diferente

public private protected default

8
jueves 17 de enero de 2013

Sobreescritura de mtodos
Se realiza si los mtodos de la clase base no se ajustan a las necesidades de la nueva clase. Reglas: Debe tener el mismo formato que el mtodo de la superclase que sobrescribe (nombre, parmetros y tipo de devolucin). Si conserva el nombre pero cambian los parmetros, entonces no se sobrescribe sino que se sobrecarga el mtodo.

El mtodo sobrescrito puede tener un modicador de acceso menos restrictivo que el de la superclase, pero nunca uno ms restrictivo.
9

jueves 17 de enero de 2013

Constructores

Herencia permite a las subclases tener acceso a los datos no privados del padre, excepto los constructores. Los constructores deben denirse en cada subclase. Un objeto slo puede crearse con el operador new y una lista de argumentos que concuerde con uno de los constructores denidos en la clase. El compilador agregar el constructor nulo cuando si no se dene ningn constructor de forma explcita.

10
jueves 17 de enero de 2013

Constructores

Si una clase tiene ms de un constructor, el compilador no insertar el constructor nulo. Los constructores pueden sobrecargarse con diferentes lista de argumentos. Un constructor puede llamar a otro constructor. this(argumentos) Un constructor permite ejecutar el cuerpo de su cdigo hasta que la clase padre ha sido inicializada. Esto sucede porque el compilador agrega la llamada a super(). Pero si el padre no incluye al constructor nulo, se genera un error.

11
jueves 17 de enero de 2013

Constructores

Una llamada a un constructor de la clase base puede incluirse en el cuerpo de un constructor en la subclase. La llamada debe coincidir con uno de los constructores de la clase base y debe ser la primera instruccin del constructor de la subclase. Cuando los constructores sobrecargados llaman a otros con el enunciado this() debe ser la primera instruccin. En este caso la inicializacin de la clase base debe ser la primera instruccin del constructor sobrecargado.

12
jueves 17 de enero de 2013

Clases abstractas
Denicin: Clase en la que alguno de sus mtodos est declarado pero no est denido, es decir, se especca su nombre, parmetros y tipo de devolucin pero no incluye cdigo. Justicacin: Se sabe que es requerido, pero no se conoce cmo debe ser su implementacin. Sirve de base para futuras clases.

13
jueves 17 de enero de 2013

Clases abstractas
Clase Figura tiene un mtodo para calcular el rea.

Sintaxis

public abstract class Figura { protected String color; public abstract double calcularArea(); //otros mtodos }
14
jueves 17 de enero de 2013

Clases abstractas

15
jueves 17 de enero de 2013

Clases abstractas
public abstract class Figura { protected String color; protected double area; public abstract double calcularArea(); public Figura () { this.color= blanco; } public setArea (double cantidad) { this.area = cantidad; } } public class Rectangulo extends Figura { private double base; private double altura; private double area; public double calcularArea () { area=base*altura; return area; } }
jueves 17 de enero de 2013

15

Clases abstractas
Aspectos importantes: Una clase abstracta puede tener mtodos no abstractos. No es posible crear objetos de una clase abstracta. Las subclases de una clase abstracta estn obligadas a sobrescribir todos los mtodos abstractos que heredan. En caso que no interese sobrescribir alguno de esos mtodos, la subclase deber ser declarada tambin abstracta. Puede tener constructores.

16
jueves 17 de enero de 2013

Ejercicios:
Qu pasar cuando intentes compilar y ejecutar? abstract class Base{ abstract public void miFuncion(); ! public void otroMetodo(){ ! ! System.out.println("Otro Mtodo"); ! } } public class Abs extends Base{ ! public static void main(String args[]){ ! ! Abs a = new Abs(); Base b=new Base(); ! ! a.metodoA(); ! } public void miFuncion(int x){ System.out.println("Mi funcin"); !} ! public void metodoA(){miFuncion();! }
17
jueves 17 de enero de 2013

Ejercicios:
Qu pasar cuando intentes compilar y ejecutar? class Base{ public void miFuncion(); ! public void otroMetodo(){ ! ! System.out.println("Otro Mtodo"); ! } } public class Abs extends Base{ ! public static void main(String args[]){ ! ! Abs a = new Abs(); ! ! a.metodoA(); ! } public void miFuncion(){ System.out.println("Mi funcin"); !} ! public void metodoA(){miFuncion();! } }
18
jueves 17 de enero de 2013

Interfaces

Son la manera en que Java maneja la ausencia de la herencia mltiple. Se usa la palabra reservada interface. Pueden ser usadas para desarrollar las siguientes tareas:

Capturar similitudes entre clases no relacionadas sin forzar articialmente una relacin entre las clases. Declarar mtodos que se espera que la clase implemente. Revelar la interface de programacin de un objeto sin revelar su clase.

jueves 17 de enero de 2013

Interfaces

Dene un nuevo tipo de referencia. No provee implementacin. Todos los mtodos son abstractos. El modicador abstract es usualmente omitido por convencin. No pueden declararse mtodos estticos en una interface. Los atributos son implcitamente estticos y constantes.

jueves 17 de enero de 2013

Interfaces

Debe ser pblica. No se tienen constructores. Puede extender de otra interface.

jueves 17 de enero de 2013

Interfaces

Declaracin: [public] interface NombreInterfaz [extends <NombreInterface1> [<NombreInterface2>, ]]{ } Cuerpo de la interfaz Denicin de mtodos y constantes de la interfaz.

jueves 17 de enero de 2013

Interfaces
interface Flyer +volar() +despegar() +aterrizar()

Aeroplano +volar() +despegar() +aterrizar()

Pjaro +volar() +despegar() +aterrizar()

Helicptero +volar() +despegar() +aterrizar()

jueves 17 de enero de 2013

Interfaces versus Clases abstractas

Si una interface tiene muchos mtodos, resulta tedioso tener que implementarlos todos y ms si su implementacin es repetida. Una clase abstracta no necesariamente todos sus mtodos son abstractos. Una interface no se puede modicar al momento de implementarla.

jueves 17 de enero de 2013

Interfaces: Herencia mltiple

interface Flyer +volar() +despegar() +aterrizar()

Animal +comer()

Aeroplano +volar() +despegar() +aterrizar()

Pjaro +volar() +despegar() +aterrizar() +comer()

Helicptero +volar() +despegar() +aterrizar() +flotar()

Vehculo
jueves 17 de enero de 2013

Interfaces

Escriba un programa para una biblioteca que contenga libros y revistas.

Las caractersticas comunes que se almacenan tanto para las revistas como para los libros son el cdigo, el ttulo y el ao de publicacin. Estas tres caractersticas se pasan por parmetro en el momento de crear los objetos. Los libros tienen adems un atributo prestado. Los libros cuando se crean no estn prestados. Las revistas tienen un nmero. En el momento de crear las revistas se pasa el nmero por parmetro.

jueves 17 de enero de 2013

Interfaces

Escriba un programa para una biblioteca que contenga libros y revistas (continuacin):

Tanto las revistas como los libros deben tener (aparte de los constructores) un mtodo toString() que devuelve el valor de todos los atributos en una cadena de caracteres. Tambin tiene un mtodo que devuelve el ao de publicacin y otro para el cdigo. Para prevenir posibles cambios en el programa se tiene que implementar una interfaz Prestable con los mtodos prestar(), devolver() y prestado(). La clase libro implementa esta interfaz.

jueves 17 de enero de 2013

Interfaces

Escriba una clase Proyecto para almacenar informacin de los proyectos de n de carrera. Esta clase hereda de Publicacin (cdigo, el ttulo y el ao de publicacin) y aade un atributo que es el nombre de la carrera. Las publicaciones deben almacenarse en un arreglo, el cul debe estar ordenado usando el cdigo. Debe incluir un mtodo que devuelva toda la informacin de cada proyecto en un String.

jueves 17 de enero de 2013

Colisiones en herencia mltiple

Algunos mtodos atributos pueden coincidir en la clase que hereda, si dos de las interfaces padres tienen algn mtodo atributo que coincida en nombre. Solucin:

Atributos: Se obliga a especicar a qu interfaz base pertenece. Mtodos:


Mismo Si Si

nombre y diferentes parmetros: sobrecarga.

slo cambia el tipo de retorno: error de compilacin. coinciden en su declaracin: slo se implementa uno.

jueves 17 de enero de 2013

Ejercicio

Asuma que se quiere modelar personas de una universidad. Hay diferentes personas: miembros del personal, estudiantes, profesores, personal de mantenimiento, tutores (estudiantes que han sido elegidos para ensear algo), personal de soporte tcnico y estudiantes tcnicos (estudiantes que han sido seleccionados para colaborar en el soporte tcnico). Dibuje una jerarqua de tipos (clases e interfaces) que represente esta situacin. Especique clases concretas, abstractas e interfaces.

jueves 17 de enero de 2013

Interfaces

Puede una interfaz heredar de otra interfaz? Puede una interfaz implementar otra interfaz? Puede una clase heredar de una interfaz? Puede una clase implementar una interfaz? Puede una clase heredar de otra clase? Puede una clase implementar otra clase?

jueves 17 de enero de 2013

Bibliografa
Programas ejemplo: http://todojava.awardspace.com/ejemplos-java.html Pgina ocial: http://java.sun.com/j2se/1.5.0/docs/api/ Marcus Green. (2003). Tutorial para el examen de certicacin: SCJP 1.2 http://www.jchq.net/certkey/index.htm Bruke Eckel (2003). PIENSA EN JAVA, segunda edicin. ISBN: 84-205-3192-8 Prentice Hall.

32
jueves 17 de enero de 2013

Crear tres interfaces cada una con dos mtodos. Heredar una nueva interfaz de las tres y aadir un nuevo mtodo. Crear una clase implementando la interfaz y heredando de una clase concreta.

33
jueves 17 de enero de 2013

Interfaces
jueves 17 de enero de 2013

Programacin Orientada a Objetos


M.C. Alma Delia Nieto Yez
34

Vous aimerez peut-être aussi