Curso de Java POO: Programación orientada a...
Transcript of Curso de Java POO: Programación orientada a...
![Page 1: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/1.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Curso de JavaPOO: Programacion orientada a objetos
Luis [email protected]
Curso INEM. Programacion en Java
Marzo 2011
![Page 2: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/2.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Indice
1 Previo
2 Repaso y encapsulacion
3 Empaquetado
4 Relaciones entre clases
5 Herencia
6 Polimorfismo
7 Abstractas e Interfaz
![Page 3: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/3.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Indice
1 Previo
2 Repaso y encapsulacion
3 Empaquetado
4 Relaciones entre clases
5 Herencia
6 Polimorfismo
7 Abstractas e Interfaz
![Page 4: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/4.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Paradigma
Un paradigma es una forma de afrontar la construccion decodigo software
No hay paradigmas mejores ni peoresTodos tienen sus ventajas e inconvenientes
Hay distintos paradigmas:
POO, Estructurado, Funcional, Logico, etc
![Page 5: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/5.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Caracterısticas de la POO
Facilidad de diseno y relacion con el mundo real (UML)
Reusabilidad y facilidad de mantenimiento
Sistemas mas complejos
AbstraccionTrabajo en equipo
Del lenguaje maquina hacia el mundo real
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/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/6.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
UML
UML (Unified Modeling Language): Lenguaje unificado demodelos
“Mapa” del codigo. No sirve para desarrollar, sino paradescribir
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/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/7.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Elementos de la POO
Los elementos principales son:
clases: Especificacion de un conjunto de elementosobjetos: Elemento autonomo y con una funcionalidad concreta.Instancias concretas de una clase
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/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/8.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Elementos de la POO
Los elementos principales son:
clases: Especificacion de un conjunto de elementosobjetos: Elemento autonomo y con una funcionalidad concreta.Instancias concretas de una clase
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/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/9.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Perros. Objetos y Clases
![Page 10: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/10.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Perros. Objetos y Clases
![Page 11: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/11.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Perros. Objetos y Clases
![Page 12: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/12.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Perros. Objetos y Clases
![Page 13: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/13.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Resumen de objetos y clases
Clases
Representan conceptos o entidades significativas de unproblemaSe pueden ver como plantillas para definir elementos (objetos)Pueden estar directamente relacionadas unas con otras
Objetos
Elementos con comportamiento definido en la clase y estadoconcretoInstancias de claseInteractuan por medio de mensajes
![Page 14: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/14.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Resumen de objetos y clases
Clases
Representan conceptos o entidades significativas de unproblemaSe pueden ver como plantillas para definir elementos (objetos)Pueden estar directamente relacionadas unas con otras
Objetos
Elementos con comportamiento definido en la clase y estadoconcretoInstancias de claseInteractuan por medio de mensajes
![Page 15: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/15.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Metodos y atributos
Comportamiento, describe los servicios que proporciona unaclase (lo que se puede hacer con ella). Son los metodos
Estado, describe el estado interno. Existen varias formas dedefinir distintos estados. Son los atributos
![Page 16: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/16.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Metodos
Definen el comportamiento de los objetos de una clase
Devuelven un resultado
Pueden necesitar parametros
Estructura
Cabecera: tipoSalida - nombre - (parametros)
Cuerpo: Se define la implementacion del servicio
![Page 17: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/17.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Metodos habituales
Constructor
Sirve para inicializar un objeto al crearlo
Existe sobrecarga (distintos parametros) (para cualquiermetodo)
Coincide con el nombre de la clase y no devuelve nada pordefinicion
Get & Set
Sirven para obtener o para modificar los atributos de una clase
![Page 18: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/18.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Metodos habituales
Constructor
Sirve para inicializar un objeto al crearlo
Existe sobrecarga (distintos parametros) (para cualquiermetodo)
Coincide con el nombre de la clase y no devuelve nada pordefinicion
Get & Set
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/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/19.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Metodos habituales
Destructor
No es tan habitual, no se suele usar (se hace de maneraautomatica)
Se tiene que sobreescribir
No devuelve nada por definicion
finalize
void f i n a l i z e ( )
![Page 20: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/20.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Metodos habituales
Destructor
No es tan habitual, no se suele usar (se hace de maneraautomatica)
Se tiene que sobreescribir
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/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/21.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Atributos
Describen el estado interno de cada objeto concreto
Pueden ser:
Tipos basicos (int, boolean, short, etc)Array de elementosReferencias a otros objetos
![Page 22: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/22.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Tipos de variables
De instancia: Definida para las instancias de una clase. Unacopia por objeto
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 ;
Local: Definida dentro del cuerpo de un metodo, ambitorestringido
![Page 23: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/23.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Tipos de variables
De instancia: Definida para las instancias de una clase. Unacopia por objeto
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 ;
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/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/24.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Tipos de variables
De instancia: Definida para las instancias de una clase. Unacopia por objeto
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 ;
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/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/25.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Uso de objetos e interaccion
Los objetos son instanciaciones de las clases. Es necesariorealizar dicha instanciacion para poder usarlos
Se comunican entre si mediante paso de mensajes
La invocacion de los metodos es la manera en la que se realizael paso de mensajes
![Page 26: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/26.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
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 27: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/27.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
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 28: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/28.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
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 29: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/29.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
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 30: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/30.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
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 31: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/31.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
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 32: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/32.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
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 33: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/33.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
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 34: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/34.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Uso de objetos
Una vez tenemos el objeto instanciado...
...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 35: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/35.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Uso de objetos
Una vez tenemos el objeto instanciado...
...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 36: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/36.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Indice
1 Previo
2 Repaso y encapsulacion
3 Empaquetado
4 Relaciones entre clases
5 Herencia
6 Polimorfismo
7 Abstractas e Interfaz
![Page 37: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/37.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Repaso de conceptos
Clase
Objeto
Atributo
Variable
Metodo
Instanciar
Constructor
finalize
Paso de mensajes
static
Operador .
Operador this
Sobrecarga
final
![Page 38: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/38.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Algunas preguntas
¿Tienen valor los atributos de una clase?
¿Que ocurre si no hay constructor en una clase?
¿Que ocurre si en el constructor de un objeto no se inicializantodos sus atributos?
¿Se puede utilizar una clase como atributo de otra clase?
¿Que ocurre si hay mas de una clase con main?
![Page 39: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/39.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Encapsulacion
Puede (y suele) haber distintos niveles de visibilidad:
public: se puede acceder desde cualquier lugar
private: solo se puede acceder desde la propia clase
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 40: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/40.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
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/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/41.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
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 42: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/42.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Uso de metodos get y set
Get
Devuelve el valor de una variable
Set
Modifica el valor de una variable
Se pueden llamar como se quiera
El uso indiscriminado de estos metodos elimina laencapsulacion en Java. Principalmente si no se tiene cuidadoal programar cosas que pueden no tener sentido (pesonegativo, dıa 34, etc.)
![Page 43: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/43.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Indice
1 Previo
2 Repaso y encapsulacion
3 Empaquetado
4 Relaciones entre clases
5 Herencia
6 Polimorfismo
7 Abstractas e Interfaz
![Page 44: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/44.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Organizacion de clases
Puede haber mas de una clase en el mismo fichero fuente...
...pero solo una puede ser publica y debe coincidir en nombrecon el fichero
Lo habitual suele ser tener una clase por cada fichero fuente
![Page 45: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/45.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Ficheros
El codigo de una clase publica se encontrara en un fichero.java
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 46: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/46.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Ficheros
El codigo de una clase publica se encontrara en un fichero.java
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 47: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/47.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Paquetes
Las clases se agrupan en paquetes
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 . . . {
Una clase solo puede pertenecer a un paquete
![Page 48: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/48.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Paquetes
Las clases se agrupan en paquetes
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 . . . {
Una clase solo puede pertenecer a un paquete
![Page 49: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/49.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Paquetes
Las clases se agrupan en paquetes
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 . . . {
Una clase solo puede pertenecer a un paquete
![Page 50: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/50.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Paquetes
Se pueden organizar los paquetes de forma jerarquica
Jerarquia
package e j e m p l o . o b j e t o s ;
Para usar una clase que esta en distinto paquete:
Se puede importar la clase enteraSe pueden realizar llamadas utilizando:nombrepaquete.loquesea
![Page 51: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/51.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Importar clases
Se puede importar un conjunto de clases
O una clase concreta
import
import e j e m p l o . ∗ ;import e j e m p l o . Concreto ;
![Page 52: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/52.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Librerias externas
Se pueden utilizar librerias (clases compiladas) externas anuestro codigo
Por defecto, la libreria basica de JDK esta cargada
Por eso podemos utilizar directamente cosas como Math.PI
Cualquier paquete compilado se puede guardar como un .jar...
...y, por lo tanto, usarlo en otro proyecto
![Page 53: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/53.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
.JAR
Las librerias son ficheros .JAR (Java ARchive)
Al compilar se guardan en la carpeta “dist”
Para usarlos, los anadimos a nuestro proyecto:
Propiedades - Librerias - Anadir JAR
![Page 54: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/54.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Indice
1 Previo
2 Repaso y encapsulacion
3 Empaquetado
4 Relaciones entre clases
5 Herencia
6 Polimorfismo
7 Abstractas e Interfaz
![Page 55: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/55.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Introduccion a UML
Las relaciones entre clases se suelen ver en el diagrama declases en la fase de diseno
Posteriormente se implementan en el codigo dependiendo deltipo de relacion
Figura: Ejemplo de clase en UML
![Page 56: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/56.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Asociacion
Relacion entre clases que se mantiene en el tiempo
Puede tener un nombre, una direccion y una cardinalidad
Se refleja cuando se introducen referencias a objetos comoatributos
Dependiendo de la cardinalidad, habra que usar arrays oestructuras de datos
![Page 57: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/57.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Agregacion
Caso particular de asociacion con contenido semantico
Hay una clase que representa el “todo” y el resto son las“partes”
El ciclo de vida de las “partes” no esta ligado al del “todo”
Ejemplo: PC y monitor
![Page 58: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/58.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Composicion
Caso particular de agregacion
En este caso, la clase “todo” controla a las clases “parte”
Las clases “parte” no existen sin la clase “todo”
Ejemplo: Arbol y hojas
En lenguajes con recolector de basura, la diferencia entrecomposicion y agregacion es conceptual
![Page 59: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/59.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Dependencia
Es muy habitual
Es cuando una clase utiliza a otra
Se refleja en las clases cuando:
Una clase hace una instanciacion de otro objetoCuando se pasa un objeto como parametro de un metodo deotro objetoCuando se realiza un “return” de un objeto
![Page 60: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/60.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Generalizacion
Es una relacion de herencia
Se puede sustituir por la frase “es un”
Ejemplo: Medio de transporte y coche
Existe la relacion de Realizacion, cuando se implementa unainterfaz (se vera mas adelante)
![Page 61: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/61.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Ejemplo de diagrama de clases
Figura: Ejemplo de diagrama de clases
![Page 62: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/62.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Ejemplo de diagrama de clases II
Figura: Ejemplo de diagrama de clases con relaciones
![Page 63: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/63.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Indice
1 Previo
2 Repaso y encapsulacion
3 Empaquetado
4 Relaciones entre clases
5 Herencia
6 Polimorfismo
7 Abstractas e Interfaz
![Page 64: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/64.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Herencia
Es un mecanismo que sirve para reutilizar clases
Se utiliza cuando existen clases que comparten muchas de suscaracterısticas
Se extiende la funcionalidad de clases mas genericas
Se introducen los conceptos de superclase y subclase
![Page 65: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/65.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Superclase y Subclase
Trabajador es la superclase
Empleado y consultor son subclases
![Page 66: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/66.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Superclase y subclase
Los objetos de las subclases pueden poseer atributos ymetodos propios (no existentes en la superclase): adicion
Y ademas, heredan los atributos y metodos de la superclase
![Page 67: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/67.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Clase Object
Realmente todas las clases que creemos son subclases...
...de la clase Object
Esta clase tiene metodos habituales que estan disponibles paracualquier clase que creemos:
cloneequalstoString...
![Page 68: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/68.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Clase Object
Realmente todas las clases que creemos son subclases...
...de la clase Object
Esta clase tiene metodos habituales que estan disponibles paracualquier clase que creemos:
cloneequalstoString...
![Page 69: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/69.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Palabras reservadas
extends
Sirve para indicar la superclase de la cual se hereda
super
Sirve para acceder a miembros de la superclase desde la subclase
super() = Llamada al constructor
super.metodoquesea = Llamada al metodoquesea
![Page 70: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/70.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
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 71: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/71.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
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 72: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/72.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Recordatorio
Los miembros protected son accesibles desde los miembros desu subclase
Un objeto de una subclase, tambien es objeto de lasuperclase. Al reves no
Java no permite herencia multiple
![Page 73: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/73.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Redefinicion de metodos
Se puede modificar localmente el comportamiento de losmetodos heredados
De esta manera, objetos de diferentes tipos pueden responderde forma diferente a la misma llamada
Permite programar de manera mas general
Override
La palabra reservada @Override encima de un metodo indica alcompilador que queremos sobreescribir el metodo de la clase queestamos heredando.
![Page 74: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/74.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Ejemplo
¿Se mueve igual un pez, un pajaro o una rana?
En cambio, todos son animales y por tanto podrıan heredar elmetodo mover de dicha clase
Gracias a la redefinicion, cada objeto concreto realizara laoperacion mover como corresponda
![Page 75: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/75.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Ejemplo
¿Se mueve igual un pez, un pajaro o una rana?
En cambio, todos son animales y por tanto podrıan heredar elmetodo mover de dicha clase
Gracias a la redefinicion, cada objeto concreto realizara laoperacion mover como corresponda
![Page 76: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/76.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Ejemplo
¿Se mueve igual un pez, un pajaro o una rana?
En cambio, todos son animales y por tanto podrıan heredar elmetodo mover de dicha clase
Gracias a la redefinicion, cada objeto concreto realizara laoperacion mover como corresponda
![Page 77: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/77.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Apuntes
No se debe confundir la redefinicion con la sobrecarga
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
NOTA: Se puede preguntar si un objeto es instancia de otroconcreto con la palabra reservada instanceof
![Page 78: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/78.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Indice
1 Previo
2 Repaso y encapsulacion
3 Empaquetado
4 Relaciones entre clases
5 Herencia
6 Polimorfismo
7 Abstractas e Interfaz
![Page 79: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/79.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Concepto
Consiste en la posibilidad de que una referencia a un objeto,pueda conectarse tambien con objetos descendientes de este
Por tanto, es la capacidad de un objeto para comportarse demultiples formas
Tiene sentido por la existencia de la herencia
Sirve para generalizar, olvidandose de detalles y buscandopuntos comunes
![Page 80: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/80.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Uso
Se usa en la construccion de estructuras de datos (variablespolimorficas)
Escenario:
Necesitamos mantener un array de perros y gatos de unaclınica veterinaria¿Como definimos dicho array? ¿Usamos uno o dos?
Tambien se puede realizar de manera implıcita en el paso deargumentos
Ejemplo
pub l i c void metodoquesea ( Mamifero m)
![Page 81: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/81.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Indice
1 Previo
2 Repaso y encapsulacion
3 Empaquetado
4 Relaciones entre clases
5 Herencia
6 Polimorfismo
7 Abstractas e Interfaz
![Page 82: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/82.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Clases Abstractas
Es una clase tan generica, que nunca se creara unainstanciacion en objetos
Sirve solo como superclase, y por tanto, para definir subclases
Cuando uno de los metodos no tiene implementacion, estamosante una clase abstracta
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 83: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/83.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Clases Abstractas
Es una clase tan generica, que nunca se creara unainstanciacion en objetos
Sirve solo como superclase, y por tanto, para definir subclases
Cuando uno de los metodos no tiene implementacion, estamosante una clase abstracta
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 84: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/84.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Ejemplo abstract
Una figura es una clase abstracta tıpica...¿Por que?
No se puede calcular el area de una fıgura
Es necesario saber que figura es la subclase (cırculo,cuadrado...)
Y redefinir el metodo para calcular el area dependiendo de lafigura concreta
![Page 85: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/85.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Ejemplo abstract
Una figura es una clase abstracta tıpica...¿Por que?
No se puede calcular el area de una fıgura
Es necesario saber que figura es la subclase (cırculo,cuadrado...)
Y redefinir el metodo para calcular el area dependiendo de lafigura concreta
![Page 86: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/86.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Ejemplo abstract
Una figura es una clase abstracta tıpica...¿Por que?
No se puede calcular el area de una fıgura
Es necesario saber que figura es la subclase (cırculo,cuadrado...)
Y redefinir el metodo para calcular el area dependiendo de lafigura concreta
![Page 87: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/87.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Clases Interfaz
Una interfaz es una clase completamente abstracta
No contiene nada de implementacion ni encapsula datos
Los atributos solo pueden ser constantes y deben inicializarse
Siempre public, static y final
La ventaja es que indica el que pero no el como, define elcomportamiento, pero no la implementacion
![Page 88: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/88.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
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 89: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/89.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Interfaz
Toda clase que implemente una interfaz debe proporcionaruna definicion a sus metodos
Si alguno de los metodos no obtiene una “conducta”,estaremos creando una clase abstracta
Si no se hace correctamente se obtendran errores decompilacion
![Page 90: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/90.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Herencia multiple
Ya hemos dicho que no existe herencia multiple...
...pero se pueden usar interfaces para ello
Una clase puede implementar mas de una interfaz
Una interfaz puede heredar de otra interfaz
![Page 91: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/91.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Herencia multiple
Ya hemos dicho que no existe herencia multiple...
...pero se pueden usar interfaces para ello
Una clase puede implementar mas de una interfaz
Una interfaz puede heredar de otra interfaz
![Page 92: Curso de Java POO: Programación orientada a objetoslaurel.datsi.fi.upm.es/_media/docencia/cursos/java/2011/pooc.pdf · POO: Programaci on orientada a objetos Luis Guerra l.guerra@upm.es](https://reader034.fdocumento.com/reader034/viewer/2022052309/5ba269a409d3f210318bf25d/html5/thumbnails/92.jpg)
Previo Repaso y encapsulacion Empaquetado Relaciones entre clases Herencia Polimorfismo Abstractas e Interfaz
Herencia multiple
A, B y C deben ser interfaces
B y C son subclases de A
D extiende tanto a B como a C (y por tanto a A)