Académique Documents
Professionnel Documents
Culture Documents
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.
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
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
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.
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.
Interfaces
Interfaces
Declaracin: [public] interface NombreInterfaz [extends <NombreInterface1> [<NombreInterface2>, ]]{ } Cuerpo de la interfaz Denicin de mtodos y constantes de la interfaz.
Interfaces
interface Flyer +volar() +despegar() +aterrizar()
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.
Animal +comer()
Vehculo
jueves 17 de enero de 2013
Interfaces
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.
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.
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.
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:
slo cambia el tipo de retorno: error de compilacin. coinciden en su declaracin: slo se implementa uno.
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.
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?
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