Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia...

87
Curso de Java POO: Programaci´on orientada a objetos Luis Guerra Velasco Curso INEM. Programaci´on en Java Diciembre 2010

Transcript of Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia...

Page 1: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Curso de JavaPOO: Programacion orientada a objetos

Luis Guerra Velasco

Curso INEM. Programacion en Java

Diciembre 2010

Page 2: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Indice

Introduccion

Comportamiento y estado

POO en Java

Relaciones

Herencia

Polimorfismo

Abstractas e Interfaz

Empaquetado

Page 3: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Indice

Introduccion

Comportamiento y estado

POO en Java

Relaciones

Herencia

Polimorfismo

Abstractas e Interfaz

Empaquetado

Page 4: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Paradigma

I Un paradigma es una forma de afrontar la construccion decodigo software

I No hay paradigmas mejores ni peoresI Todos tienen sus ventajas e inconvenientes

I Hay distintos paradigmas:I POO, Estructurado, Funcional, Logico, etc

Page 5: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Caracterısticas de la POO

I Facilidad de diseno y relacion con el mundo real (UML)

I Reusabilidad y facilidad de mantenimientoI Sistemas mas complejos

I AbstraccionI Trabajo en equipo

I Del lenguaje maquina hacia el mundo real

I Resuelve problemas complicados. No esta pensado para tareassencillas

Page 6: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

UML

I UML (Unified Modeling Language): Lenguaje unificado demodelos

I “Mapa” del codigo. No sirve para desarrollar, sino paradescribir

I Se utilizan diferentes diagramas. 13 en UML 2.0

Figura: Jerarquıa de diagramas UML 2.0

Page 7: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Elementos de la POO

I Los elementos principales son:I clases: Especificacion de un conjunto de elementosI objetos: Elemento autonomo y con una funcionalidad concreta.

Instancias concretas de una clase

I Tambien se basa en otros conceptos, como herencia,polimorfismo y encapsulamiento, que seran estudiados masadelante

Page 8: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Elementos de la POO

I Los elementos principales son:I clases: Especificacion de un conjunto de elementosI objetos: Elemento autonomo y con una funcionalidad concreta.

Instancias concretas de una clase

I Tambien se basa en otros conceptos, como herencia,polimorfismo y encapsulamiento, que seran estudiados masadelante

Page 9: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Perros. Objetos y Clases

Page 10: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Perros. Objetos y Clases

Page 11: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Perros. Objetos y Clases

Page 12: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Perros. Objetos y Clases

Page 13: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Resumen de objetos y clases

I ClasesI Representan conceptos o entidades significativas de un

problemaI Se pueden ver como plantillas para definir elementos (objetos)I Pueden estar directamente relacionadas unas con otras

I ObjetosI Elementos con comportamiento definido en la clase y estado

concretoI Instancias de claseI Interactuan por medio de mensajes

Page 14: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Resumen de objetos y clases

I ClasesI Representan conceptos o entidades significativas de un

problemaI Se pueden ver como plantillas para definir elementos (objetos)I Pueden estar directamente relacionadas unas con otras

I ObjetosI Elementos con comportamiento definido en la clase y estado

concretoI Instancias de claseI Interactuan por medio de mensajes

Page 15: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Indice

Introduccion

Comportamiento y estado

POO en Java

Relaciones

Herencia

Polimorfismo

Abstractas e Interfaz

Empaquetado

Page 16: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Metodos y atributos

I Comportamiento, describe los servicios que proporciona unaclase (lo que se puede hacer con ella). Son los metodos

I Estado, describe el estado interno. Existen varias formas dedefinir distintos estados. Son los atributos

Page 17: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Metodos

I Definen el comportamiento de los objetos de una clase

I Devuelven un resultado

I Pueden necesitar parametros

Estructura

I Cabecera: tipoSalida - nombre - (parametros)

I Cuerpo: Se define la implementacion del servicio

Page 18: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Metodos habituales

Constructor

I Sirve para inicializar un objeto al crearlo

I Existe sobrecarga (distintos parametros) (para cualquiermetodo)

I Coincide con el nombre de la clase y no devuelve nada pordefinicion

Get & Set

I Sirven para obtener o para modificar los atributos de una clase

Page 19: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Metodos habituales

Constructor

I Sirve para inicializar un objeto al crearlo

I Existe sobrecarga (distintos parametros) (para cualquiermetodo)

I Coincide con el nombre de la clase y no devuelve nada pordefinicion

Get & Set

I Sirven para obtener o para modificar los atributos de una clase

Page 20: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Metodos habituales

Destructor

I No es tan habitual, no se suele usar (se hace de maneraautomatica)

I Se tiene que sobreescribir

I No devuelve nada por definicion

finalize

void f i n a l i z e ( )

Page 21: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Metodos habituales

Destructor

I No es tan habitual, no se suele usar (se hace de maneraautomatica)

I Se tiene que sobreescribir

I No devuelve nada por definicion

finalize

void f i n a l i z e ( )

Page 22: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Atributos

I Describen el estado interno de cada objeto concretoI Pueden ser:

I Tipos basicos (int, boolean, short, etc)I Array de elementosI Referencias a otros objetos

Page 23: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Tipos de variables

I De instancia: Definida para las instancias de una clase. Unacopia por objeto

I De clase: Definida para la clase. Una copia por clase

static

s t a t i c i n t p e r r o s = 0 ;

I Local: Definida dentro del cuerpo de un metodo, ambitorestringido

Page 24: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Tipos de variables

I De instancia: Definida para las instancias de una clase. Unacopia por objeto

I De clase: Definida para la clase. Una copia por clase

static

s t a t i c i n t p e r r o s = 0 ;

I Local: Definida dentro del cuerpo de un metodo, ambitorestringido

Page 25: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Tipos de variables

I De instancia: Definida para las instancias de una clase. Unacopia por objeto

I De clase: Definida para la clase. Una copia por clase

static

s t a t i c i n t p e r r o s = 0 ;

I Local: Definida dentro del cuerpo de un metodo, ambitorestringido

Page 26: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Uso de objetos e interaccion

I Los objetos son instanciaciones de las clases. Es necesariorealizar dicha instanciacion para poder usarlos

I Se comunican entre si mediante paso de mensajes

I La invocacion de los metodos es la manera en la que se realizael paso de mensajes

Page 27: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Indice

Introduccion

Comportamiento y estado

POO en Java

Relaciones

Herencia

Polimorfismo

Abstractas e Interfaz

Empaquetado

Page 28: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ejemplo de plantilla

pub l i c c l a s s NombreClase {

/∗∗∗ At r i b u t o s :∗ t i p o nombreAtr ibuto1 ;∗ t i p o nombreAtr ibuto2 ;∗/

/∗∗∗ Metodos :∗ s a l i d a nombreMetodo1 ( pa ramet ros ) { con t en i do d e l

metodo } ;∗ s a l i d a nombreMetodo2 ( pa ramet ros ) { con t en i do d e l

metodo } ;∗/

}

Page 29: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ejemplos de metodos habituales

c l a s s Per ro {S t r i n g nombre ;. . .vo id Per ro ( S t r i n g nombre ) {

t h i s . nombre = nombre ;}S t r i n g getNombre ( ) {

re tu rn t h i s . nombre ;}vo id setNombre ( S t r i n g nombre ) {

t h i s . nombre = nombre}

}

Page 30: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ejemplo de clase Perro

pub l i c c l a s s Per ro {

S t r i n g nombre ;S t r i n g r a za ;f l o a t a l t u r a ;

vo id pe r r o ( ) {}vo id comer ( ) {}vo id dormi r ( ) {}vo id l a d r a r ( ) {}

}

Page 31: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ejemplo de clase Perro

pub l i c c l a s s Per ro {

S t r i n g nombre ;S t r i n g r a za ;f l o a t a l t u r a ;

vo id pe r r o ( ) {}vo id comer ( ) {}vo id dormi r ( ) {}vo id l a d r a r ( ) {}

}

Page 32: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Instanciacion de objetos

Antes de poder usar un objeto tenemos que crearlo:

Nuevo operador

Tipo identificador = new Tipo()

Ejemplo con Perro

P e r r o miPancho = new P e r r o ( ” Pancho ” )

Per ro miPancho = new Per ro ( ”Pancho” , ”Cocker ” , 40)

Page 33: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Instanciacion de objetos

Antes de poder usar un objeto tenemos que crearlo:

Nuevo operador

Tipo identificador = new Tipo()

Ejemplo con Perro

P e r r o miPancho = new P e r r o ( ” Pancho ” )

Per ro miPancho = new Per ro ( ”Pancho” , ”Cocker ” , 40)

Page 34: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Operadores

Operador “.”

Acceso a miembros de una clase:

miPancho . nombre = ” Pancho ” ;miPancho . l a d r a r ( ) ;

Operador “this”

Acceso a atributos dentro de la propia clase:

t h i s . nombre = ” Pancho ” ;

Page 35: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Operadores

Operador “.”

Acceso a miembros de una clase:

miPancho . nombre = ” Pancho ” ;miPancho . l a d r a r ( ) ;

Operador “this”

Acceso a atributos dentro de la propia clase:

t h i s . nombre = ” Pancho ” ;

Page 36: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Uso de objetos

I Una vez tenemos el objeto instanciado...

I ...podemos modificar su estado usando los metodos

Per ro miPancho = new Per ro ( ”Pancho” , ”Cocker ” , 40)

miPancho . setNombre ( ”Toby” )miPancho . d o r m i r ( )

Page 37: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Uso de objetos

I Una vez tenemos el objeto instanciado...

I ...podemos modificar su estado usando los metodos

Per ro miPancho = new Per ro ( ”Pancho” , ”Cocker ” , 40)

miPancho . setNombre ( ”Toby” )miPancho . d o r m i r ( )

Page 38: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Encapsulacion

Puede (y suele) haber distintos niveles de visibilidad:

I public: se puede acceder desde cualquier lugar

I private: solo se puede acceder desde la propia clase

I protected: solo se puede acceder desde la propia clase o desdeuna clase que herede de ella

De esta forma se controla que cosas son modificables y como sepueden modificar El estado suele ser privado, y se suele modificar atraves del comportamiento

Page 39: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ejemplo de clase Perro con visibilidad

pub l i c c l a s s Per ro {

p r i v a t e S t r i n g nombre ;p r i v a t e S t r i n g r a za ;p r i v a t e f l o a t a l t u r a ;

pub l i c vo id pe r r o ( ) {}pub l i c vo id comer ( ) {}pub l i c vo id dormi r ( ) {}pub l i c vo id l a d r a r ( ) {}

}

Page 40: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ejemplo de clase Perro con visibilidad

pub l i c c l a s s Per ro {

p r i v a t e S t r i n g nombre ;p r i v a t e S t r i n g r a za ;p r i v a t e f l o a t a l t u r a ;

pub l i c vo id pe r r o ( ) {}pub l i c vo id comer ( ) {}pub l i c vo id dormi r ( ) {}pub l i c vo id l a d r a r ( ) {}

}

Page 41: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Organizacion de clases

I Puede haber mas de una clase en el mismo fichero fuente...

I ...pero solo una puede ser publica y debe coincidir en nombrecon el fichero

I Lo habitual suele ser tener una clase por cada fichero fuente

Page 42: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Indice

Introduccion

Comportamiento y estado

POO en Java

Relaciones

Herencia

Polimorfismo

Abstractas e Interfaz

Empaquetado

Page 43: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Dependencia

I Es muy habitualI Se refleja cuando la implementacion de una clase depende de

otra:I Uso de un objeto como argumento de un metodoI En la implementacion de un metodo

Page 44: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Asociacion

I Relacion entre clases que se mantiene en el tiempo

I Se refleja cuando se introducen referencias a objetos comoatributos

I Dependiendo de la cardinalidad, habra que usar arrays oestructuras de datos

Page 45: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Agregacion

I Caso particular de asociacion con contenido semantico

I Hay una clase que representa el “todo” y el resto son las“partes”

I No hay diferencia en la implementacion

Page 46: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Composicion

I Caso particular de agregacion

I En este caso, la clase “todo” controla a las clases “parte”

I Las clases “parte” no existen sin la clase “todo”

Page 47: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Indice

Introduccion

Comportamiento y estado

POO en Java

Relaciones

Herencia

Polimorfismo

Abstractas e Interfaz

Empaquetado

Page 48: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Herencia

I Es un mecanismo que sirve para reutilizar clases

I Se utiliza cuando existen clases que comparten muchas de suscaracterısticas

I Se extiende la funcionalidad de clases mas genericas

I Se introducen los conceptos de superclase y subclase

Page 49: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Superclase y Subclase

I Trabajador es la superclase

I Empleado y consultor son subclases

Page 50: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Superclase y subclase

I Los objetos de las subclases pueden poseer atributos ymetodos propios (no existentes en la superclase): adicion

I Y ademas, heredan los atributos y metodos de la superclase

Page 51: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Clase Object

I Realmente todas las clases que creemos son subclases...

I ...de la clase ObjectI Esta clase tiene metodos habituales que estan disponibles para

cualquier clase que creemos:I cloneI equalsI toStringI ...

Page 52: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Clase Object

I Realmente todas las clases que creemos son subclases...

I ...de la clase ObjectI Esta clase tiene metodos habituales que estan disponibles para

cualquier clase que creemos:I cloneI equalsI toStringI ...

Page 53: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ejemplo de superclase

pub l i c c l a s s Mamifero {

p r i v a t e S t r i n g o r i g e n ;p r i v a t e i n t pa ta s ;p r i v a t e S t r i n g nombre ;. . .

pub l i c Mamifero ( S t r i n g nombre , S t r i n g o r i g en , i n tpa ta s ) {t h i s . nombre = nombre ;t h i s . o r i g e n = o r i g e n ;t h i s . pa ta s = pata s

}. . .

}

Page 54: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ejemplo de subclase

pub l i c c l a s s Per ro extends Mamifero {p r i v a t e S t r i n g r a za ;. . .

pub l i c Per ro ( S t r i n g nombre , S t r i n g o r i g e n ) {super ( nombre , o r i g en , 4)

}. . .

}

Page 55: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Palabras reservadas

extendsSirve para indicar la superclase de la cual se hereda

super

Sirve para acceder a miembros de la superclase desde la subclase

I super() = Llamada al constructor

I super.metodoquesea = Llamada al metodoquesea

Page 56: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Recordatorio

I Los miembros protected son accesibles desde los miembros desu subclase

I Un objeto de una subclase, tambien es objeto de lasuperclase. Al reves no

I Java no permite herencia multiple

Page 57: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Redefinicion de metodos

I Se puede modificar localmente el comportamiento de losmetodos heredados

I De esta manera, objetos de diferentes tipos pueden responderde forma diferente a la misma llamada

I Permite programar de manera mas general

Page 58: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ejemplo

I ¿Se mueve igual un pez, un pajaro o una rana?

I En cambio, todos son animales y por tanto podrıan heredar elmetodo mover de dicha clase

I Gracias a la redefinicion, cada objeto concreto realizara laoperacion mover como corresponda

Page 59: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ejemplo

I ¿Se mueve igual un pez, un pajaro o una rana?

I En cambio, todos son animales y por tanto podrıan heredar elmetodo mover de dicha clase

I Gracias a la redefinicion, cada objeto concreto realizara laoperacion mover como corresponda

Page 60: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ejemplo

I ¿Se mueve igual un pez, un pajaro o una rana?

I En cambio, todos son animales y por tanto podrıan heredar elmetodo mover de dicha clase

I Gracias a la redefinicion, cada objeto concreto realizara laoperacion mover como corresponda

Page 61: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Apuntes

I No se debe confundir la redefinicion con la sobrecarga

I En caso de querer no permitir la redefinicion de metodos oincluso la creacion de subclases (herencia):

final

pub l i c f i n a l void mover ( )pub l i c f i n a l c l a s s P e r r o extends Mamifero

Page 62: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Indice

Introduccion

Comportamiento y estado

POO en Java

Relaciones

Herencia

Polimorfismo

Abstractas e Interfaz

Empaquetado

Page 63: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Concepto

I Consiste en la posibilidad de que una referencia a un objeto,pueda conectarse tambien con objetos descendientes de este

I Por tanto, es la capacidad de un objeto para comportarse demultiples formas

I Tiene sentido por la existencia de la herencia

I Sirve para generalizar, olvidandose de detalles y buscandopuntos comunes

Page 64: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Uso

I Se usa en la construccion de estructuras de datos (variablespolimorficas)

I Escenario:I Necesitamos mantener un array de perros y gatos de una

clınica veterinariaI ¿Como definimos dicho array? ¿Usamos uno o dos?

I Tambien se puede realizar de manera implıcita en el paso deargumentos

Ejemplo

pub l i c void metodoquesea ( Mamifero m)

Page 65: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Indice

Introduccion

Comportamiento y estado

POO en Java

Relaciones

Herencia

Polimorfismo

Abstractas e Interfaz

Empaquetado

Page 66: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Clases Abstractas

I Es una clase tan generica, que nunca se creara unainstanciacion en objetos

I Sirve solo como superclase, y por tanto, para definir subclases

I Cuando uno de los metodos no tiene implementacion, estamosante una clase abstracta

I El metodo sin implementacion sera un metodo abstracto

abstract

pub l i c abst ract c l a s s F i g u r apub l i c abst ract double a r e a ( ) ;

Page 67: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Clases Abstractas

I Es una clase tan generica, que nunca se creara unainstanciacion en objetos

I Sirve solo como superclase, y por tanto, para definir subclases

I Cuando uno de los metodos no tiene implementacion, estamosante una clase abstracta

I El metodo sin implementacion sera un metodo abstracto

abstract

pub l i c abst ract c l a s s F i g u r apub l i c abst ract double a r e a ( ) ;

Page 68: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ejemplo abstract

I Una figura es una clase abstracta tıpica...¿Por que?

I No se puede calcular el area de una fıgura

I Es necesario saber que figura es la subclase (cırculo,cuadrado...)

I Y redefinir el metodo para calcular el area dependiendo de lafigura concreta

Page 69: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ejemplo abstract

I Una figura es una clase abstracta tıpica...¿Por que?

I No se puede calcular el area de una fıgura

I Es necesario saber que figura es la subclase (cırculo,cuadrado...)

I Y redefinir el metodo para calcular el area dependiendo de lafigura concreta

Page 70: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ejemplo abstract

I Una figura es una clase abstracta tıpica...¿Por que?

I No se puede calcular el area de una fıgura

I Es necesario saber que figura es la subclase (cırculo,cuadrado...)

I Y redefinir el metodo para calcular el area dependiendo de lafigura concreta

Page 71: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Clases Interfaz

I Una interfaz es una clase completamente abstracta

I No contiene nada de implementacion ni encapsula datos

I Los atributos solo pueden ser constantes y deben inicializarse

I Siempre public, static y finalize

I La ventaja es que indica el que pero no el como

Page 72: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Palabras reservadas

interface

pub l i c i n t e r f a ce F i g u r a

implements

pub l i c c l a s s C i r c u l o implements F i g u r a

Page 73: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Interfaz

I Toda clase que implemente una interfaz debe proporcionaruna definicion a sus metodos

I Si alguno de los metodos no obtiene una “conducta”,estaremos creando una clase abstracta

I Si no se hace correctamente se obtendran errores decompilacion

Page 74: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Herencia multiple

I Ya hemos dicho que no existe herencia multiple...

I ...pero se pueden usar interfaces para ello

I Una clase puede implementar mas de una interfaz

I Una interfaz puede heredar de otra interfaz

Page 75: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Herencia multiple

I Ya hemos dicho que no existe herencia multiple...

I ...pero se pueden usar interfaces para ello

I Una clase puede implementar mas de una interfaz

I Una interfaz puede heredar de otra interfaz

Page 76: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Herencia multiple

I A, B y C deben ser interfaces

I B y C son subclases de A

I D extiende tanto a B como a C (y por tanto a A)

Page 77: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Indice

Introduccion

Comportamiento y estado

POO en Java

Relaciones

Herencia

Polimorfismo

Abstractas e Interfaz

Empaquetado

Page 78: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ficheros

I El codigo de una clase publica se encontrara en un fichero.java

I El nombre del fichero coincidira con el nombre de la clase

Excepcion

En un fichero podrıa haber varias clases, si solo una de ellas espublic y el resto clases auxiliares

Page 79: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Ficheros

I El codigo de una clase publica se encontrara en un fichero.java

I El nombre del fichero coincidira con el nombre de la clase

Excepcion

En un fichero podrıa haber varias clases, si solo una de ellas espublic y el resto clases auxiliares

Page 80: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Paquetes

I Las clases se agrupan en paquetes

I El paquete al que pertenece una clase se indica al comienzodel fichero:

Package

package e j e m p l o ;pub l i c c l a s s . . . {

I Una clase solo puede pertenecer a un paquete

Page 81: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Paquetes

I Las clases se agrupan en paquetes

I El paquete al que pertenece una clase se indica al comienzodel fichero:

Package

package e j e m p l o ;pub l i c c l a s s . . . {

I Una clase solo puede pertenecer a un paquete

Page 82: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Paquetes

I Las clases se agrupan en paquetes

I El paquete al que pertenece una clase se indica al comienzodel fichero:

Package

package e j e m p l o ;pub l i c c l a s s . . . {

I Una clase solo puede pertenecer a un paquete

Page 83: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Paquetes

I Se pueden organizar los paquetes de forma jerarquica

Jerarquia

package e j e m p l o . o b j e t o s ;

I Para usar una clase que esta en distinto paquete:I Se puede importar la clase enteraI Se pueden realizar llamadas utilizando:

nombrepaquete.loquesea

Page 84: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Importar clases

I Se puede importar un conjunto de clases

I O una clase concreta

import

import e j e m p l o . ∗ ;import e j e m p l o . Concreto ;

Page 85: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Accesos directos

I No es recomendable usarlo

I Se utilizarıa si vamos a acceder a algo muy concreto de otropaquete

Acceso directo

e j e m p l o . Concreto ejem = new e j e m p l o .Concreto ( ) ;

Page 86: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

Librerias externas

I Se pueden utilizar librerias (clases compiladas) externas anuestro codigo

I Por defecto, la libreria basica de JDK esta cargadaI Por eso podemos utilizar directamente cosas como Math.PI

I Cualquier paquete compilado se puede guardar como un .jar...

I ...y, por lo tanto, usarlo en otro proyecto

Page 87: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es › _media › docencia › cursos › java › 2010 › poob… · I UML (Uni ed Modeling Language): Lenguaje

.JAR

I Las librerias son ficheros .JAR (Java ARchive)

I Al compilar se guardan en la carpeta “dist”I Para usarlos, los anadimos a nuestro proyecto:

I Propiedades - Librerias - Anadir JAR