SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
Programación
orientada a objetos II
 Unidad 8
Introducción
 Propiedades de la POO
 Concepto de Herencia
 Mecanismos de Herencia
 this y super
 Mecanismos en Constructores
 Dynamic binding
 Herencia forzada. Clases abstractas
 Revisión de los modificadores
 La clase Object
Propiedades de la POO
 Encapsulamiento
 Una clase se compone tanto de variables (propiedades) como de funciones y
procedimientos (métodos)
 No se pueden definir variables (ni métodos) fuera de una clase (es decir no
hay variables globales)
 Ocultación
 Hay una zona privada al definir la clases que sólo es utilizada por esa clases y
por alguna clase relacionada
 Hay una zona pública que puede ser utilizada por cualquier parte del código
 Polimorfismo
 Un método de una clase puede tener varias definiciones distintas
 Una variable puede referirse a objetos de diferentes clases
 Herencia
 Una clase puede heredar propiedades de otra
COMPOSICION
La composición es el agrupamiento de uno o varios objetos y valores
como atributos que conforman el valor de los distintos objetos de una
clase.
La composición crea una relación TIENE
Ejemplo: Decimos que un Claustro está formado por un Catedrático, un Profesor
Titular, un Alumno, un responsable de Administración y el Rector
Concepto de Herencia
 En los lenguajes de programación orientados a objetos el
mecanismo básico para la reutilización de código es la
herencia
 Permite crear nuevas clases que heredan características
presentes en clases anteriores
 la clase original se denomina clase padre, clase base o
superclase
 la nueva clase se denomina clase hija, derivada o subclase
 En JAVA, sólo se puede tener herencia de una clase
(herencia simple)
 La herencia establece una relacion ES-UN entre clases
Concepto de Herencia
 En el lenguaje Java hay dos aspectos donde la
herencia es particularmente relevante:
 La herencia se emplea exhaustivamente en el propio
lenguaje a lo largo del conjunto de librerías que posee
 El lenguaje da soporte a la definición de nuevas clases
heredadas de las características ya definidas
 Se emplea la palabra extends en la clase hija seguida
del nombre de la clase padre
class B extends A { ... }
Herencia. Ejemplo 1
class Persona {
public String nombre;
public String apellidos;
public int añoDeNacimiento;
public void imprime() {
System.out.println(“Datos personales: “ + nombre + “ “ +
apellidos + “ (“ + añoDeNacimiento + “)”);
}
}
class Alumno extends Persona {
private String grupo;
private Horario horario;
public void ponGrupo(String grupo, Horario horario) {
this.grupo = grupo;
this.horario = horario;
}
}
Herencia. Ejemplo 1
 En el ejemplo, la clase Alumno hereda los atributos
nombre, apellidos y añoDeNacimiento de la clase
Persona, así como el método imprime
 sobre un objeto de la clase Alumno es posible llamar al
método imprime
//Creación de un nuevo alumno
Alumno alumno1 = new Alumno();
//...
//Llamada al método imprime heredado de la clase Persona
alumno1.imprime();
Herencia. Ejemplo 2
Herencia. Ejemplo 2
Mecanismos de Herencia
 La subclase tiene (o hereda) TODOS los atributos y
métodos de la superclase, aunque no todos los
miembros tienen porque ser accesibles:
 Serán accesibles todos los métodos y propiedades
protected, public y “de paquete”
 no serán accesibles los métodos y propiedades private
Mecanismos de Herencia
 En la clase derivada pueden añadirse atributos (que
generalmente serán privados) y métodos adicionales
 La subclase no hereda los constructores:
 cada nueva clase (incluso las derivadas) deben definir
sus constructores
 Si no se implementa ningún constructor se genera uno
sin argumentos por defecto
Mecanismos de Herencia
 Podemos definir una propiedad en la subclase con el
mismo nombre que en la superclase:
 La propiedad de la superclase queda “oculta”
 Podemos definir un método en la subclase con el
mismo nombre y la misma firma que en la superclase:
 El método se reemplaza por el nuevo. Se dice que se
está redefiniendo el método
 El atributo de acceso debe ser el mismo o menos
restrictivo que el de la superclase
 En ambos casos, al referenciar la propiedad o método
con el Nombre (o this.Nombre) nos referimos a la
subclase. Para referirinos a la superclase escribimos
super.Nombre
Mecanismos de Herencia. Ejemplo
Mecanismos de Herencia
 Las subclase también pueden sobrecargar métodos
para proporcionar una versión
 Para impedir que se pueda redefinir un atributo o un
método se le antepone el modificador final
 El modificador final aplicado a una clase impide que se
puedan definir clases derivadas
super
 La palabra reservada super nos permite llamar a una
propiedad o método de la superclase:
 this hace referencia a la clase actual
 super hace referencia a la superclase
respecto a la clase actual
Nota: Como hemos visto en la diapositiva anterior, super
es imprescindible para poder acceder a métodos
redefinidos o anulados por herencia
super. Ejemplo
 la llamada
super.acelerar(cantidad) llama al
método acelerar de la clase
vehículo
 Se puede llamar a un constructor
de una superclase usando la
sentencia super( )
Mecanismos en Constructores
 Los constructores tienen la posibilidad de invocar a otro constructor de su propia clase con
la sentencia this(..)
 Los constructores de las subclases tienen la posibilidad de invocar a los constructores de las
superclases con la sentencia super(..)
 La llamada super(..) o this(..) en caso de utilizarse, debe ser obligatoriamente la primera
sentencia del constructor
Por defecto Java realiza estas acciones:
 Si la primera instrucción de un constructor de una subclase es una sentencia que no es ni
super ni this
 añade de forma invisible e implícita una llamada super() al constructor por defecto de la
superclase
• Esto puede dar errores, si en la superclase hemos definido algún constructor y no hemos
definido el constructor sin parámetros, el compilador no encontrará ese constructor
• Si en la superclase no hemos definido ningún constructor, no habrá problemas
 Si se usa super(..) en la primera instrucción
 se llama al constructor seleccionado de la superclase
 Si la primera instrucción es this(..)
 se llama al constructor seleccionado por medio de this y después continúa con las sentencias
del constructor
Polimorfismo. Upcasting y Downcasting
 Una variable puede referirse a objetos de diferentes clases
 Upcasting
 A una variable de un tipo A podemos no sólo asignarle
objetos del tipo A, sino también cualquier objeto de un tipo
que descienda de A
class Persona { ... }
class Alumno extends Persona { ... }
Alumno a = new Alumno(),
Persona p = a; // implícito
Persona p = (Persona) a; // explícito; no es necesario
 Esta operación siempre se puede hacer, sin necesidad de
indicárselo explícitamente al compilador
Polimorfismo.
 Downcasting
 Se dice del caso en el que una variable de una
subclase referencia a un objeto de la superclase
Persona p = new Alumno();
Alumno a = (Alumno) p; // explícito; es necesario
 Esta operación sólo se puede hacer, si el objeto
referenciado por “p” es realmente de tipo Alumno;
 De lo contrario se provoca un error lanzándose una
excepción de tipo ClassCastException.
Dynamic binding (elección dinámica de método)
 Ejemplo:
Persona p = new Alumno(),
Alumno a = new Alumno();
 Supongamos que la clase Persona dispone de un
método imprime() y que este método se ha
sobreescrito en la clase Alumno
 Podemos escribir:
p.imprime()
a.imprime()
 Ambas invocaciones ejecutarán el código de la clase
Alumno
instanceof
 Permite comprobar si un determinado objeto pertenece
a una clase concreta:
objeto instanceof clase
 Comprueba si el objeto pertenece a una determinada
clase y devuelve un valor true si es así
 Ejemplo:
Herencia forzada. Clases abstractas
 Se puede obligar que para usar una clase haya que
hacerlo escribiendo una nueva clase que herede de ella
 Para ello se utiliza el modificador abstract delante de la
definición de la clase
 Ejemplo:
abstract class NombreDeClase { ... }
 Una clase abstracta no se puede instanciar (no se
puede crear objetos), pero si heredar.
 Se debe instanciar la clase derivada que se encargará
de definir los metodos abstractos, si no se hace se
deben declarar también abstractas
La Clase Object
 Es una clase de java con la particularidad de ser la
“madre de todas las clases”
 Todas las clases que escriban los programadores
heredan de Object
• directamente (si no se dice nada)
• indirectamente (si la clase extiende a otra)
 Es equivalente:
class Ejemplo { ... }
class Ejemplo extends Object { ... }
 La clase Object define métodos que son compartidos
por absolutamente todos los objetos que se creen
La Clase Object
 Algunos métodos de Object son:
 getClass( )
 retorna la clase del objeto en ejecución
 equals(Object obj)
 retorna true si este objeto es igual al pasado como
argumento
 toString( )
 retorna una representación textual del objeto
 Una buena estrategia es sobrecargar toString() para
modificar la representación de un objeto
La Clase Object. Ejemplo de toString( )
INTERFACES
El concepto de interfaz puede parecer similar al de clase abstracta. De hecho, posee declaración y
definición. Sin embargo, mientras que en una clase abstracta podemos definir los métodos que
queramos, en una interfaz no podemos definir métodos.
Una interface es una variante de una clase abstracta con la condición de que todos sus métodos deben
ser abstractos. Si la interface va a tener atributos, éstos deben llevar las palabras reservadas public final
y con un valor inicial ya que funcionan como constantes por lo que, por convención, su nombre va en
mayúsculas.
public interface MiInterfaz {
public final double PI = 6.14;
public final int CONST = 75;
void put(int dato);
int get();
}
Para implementar las interfaces de la clase usaremos implements, y las distintas interfaces separadas
por comas.
class Miclase extends MiSuperClase implements MiInterfaz {
// Cuerpo de la clase
}
RECUERDA….
Revisión de los modificadores de clases, atributos y métodos
Modificadores de acceso de clases (Unidad 05)
 Java define 4 modificadores fundamentales que califican a
clases:
Palabra
clave
Definición
public La clase es accesible desde otros paquetes
(por defecto)
de paquete
La clase será visible en todas las clases declaradas en
el mismo paquete
abstract La clase no pueden ser instanciadas. Sirve únicamente
para declarar subclases
final ninguna clase puede heredar de una clase final
Modificadores de atributos y métodos (Unidad 05)
 Java define 4 modificadores fundamentales que califican a
métodos y atributos:
Palabra
clave
Definición
public el elemento es accesible desde cualquier sitio
protected
el elemento es accesible dentro del paquete en el que
se define y, además, en las subclases
(por defecto)
de paquete
el elemento sólo es accesible dentro del paquete en el
que se define (clases en el mismo directorio)
private
el elemento sólo es accesible dentro del fichero en el
que se define

Más contenido relacionado

Similar a U8.- Programacion Orientada a objetos II (2).pdf

Cuarta sesion herencia y polimorfismo-explicacion anibal
Cuarta sesion herencia y polimorfismo-explicacion anibalCuarta sesion herencia y polimorfismo-explicacion anibal
Cuarta sesion herencia y polimorfismo-explicacion anibalCarlos Anibal Riascos Hurtado
 
Clases abstractas java metodos abstract class api ejemplo ejercicio
Clases abstractas java metodos abstract class api ejemplo ejercicioClases abstractas java metodos abstract class api ejemplo ejercicio
Clases abstractas java metodos abstract class api ejemplo ejercicioJose Luis Moreno Arcos
 
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Kositha Jimhiz G
 
Cesar adrian barrios alarcon unidad 2
Cesar adrian barrios alarcon      unidad 2       Cesar adrian barrios alarcon      unidad 2
Cesar adrian barrios alarcon unidad 2 Cesar Mcfly
 
Apunte paradigma orientado a objetos
Apunte paradigma orientado a objetosApunte paradigma orientado a objetos
Apunte paradigma orientado a objetosAlejandro Canosa
 
METODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxMETODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxjuan gonzalez
 
Herencia y Polimorfismo
Herencia y PolimorfismoHerencia y Polimorfismo
Herencia y Polimorfismonestor_moren
 
Programación ii presentación tema 5
Programación ii presentación tema 5Programación ii presentación tema 5
Programación ii presentación tema 5Joel Mieses
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoAngel Vázquez Patiño
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Hack '
 
Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)Alexandra Pérez
 
Constructor Y Destructor
Constructor Y DestructorConstructor Y Destructor
Constructor Y DestructorTecnologico
 
Herencia en C++
Herencia en C++Herencia en C++
Herencia en C++joel1386
 

Similar a U8.- Programacion Orientada a objetos II (2).pdf (20)

Guia poo
Guia pooGuia poo
Guia poo
 
Cuarta sesion herencia y polimorfismo-explicacion anibal
Cuarta sesion herencia y polimorfismo-explicacion anibalCuarta sesion herencia y polimorfismo-explicacion anibal
Cuarta sesion herencia y polimorfismo-explicacion anibal
 
Clases abstractas java metodos abstract class api ejemplo ejercicio
Clases abstractas java metodos abstract class api ejemplo ejercicioClases abstractas java metodos abstract class api ejemplo ejercicio
Clases abstractas java metodos abstract class api ejemplo ejercicio
 
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
 
Cesar adrian barrios alarcon unidad 2
Cesar adrian barrios alarcon      unidad 2       Cesar adrian barrios alarcon      unidad 2
Cesar adrian barrios alarcon unidad 2
 
Guía Herencia PO_O
Guía Herencia PO_OGuía Herencia PO_O
Guía Herencia PO_O
 
08 Herencia
08   Herencia08   Herencia
08 Herencia
 
Apunte paradigma orientado a objetos
Apunte paradigma orientado a objetosApunte paradigma orientado a objetos
Apunte paradigma orientado a objetos
 
Clase y Herencia en VB
Clase y Herencia en VBClase y Herencia en VB
Clase y Herencia en VB
 
METODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxMETODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptx
 
Clase viii
Clase viiiClase viii
Clase viii
 
Herencia y Polimorfismo
Herencia y PolimorfismoHerencia y Polimorfismo
Herencia y Polimorfismo
 
Programación ii presentación tema 5
Programación ii presentación tema 5Programación ii presentación tema 5
Programación ii presentación tema 5
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismo
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]
 
Semana 3 Herencia en Java
Semana 3   Herencia en JavaSemana 3   Herencia en Java
Semana 3 Herencia en Java
 
Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
 
Constructor Y Destructor
Constructor Y DestructorConstructor Y Destructor
Constructor Y Destructor
 
Herencia en C++
Herencia en C++Herencia en C++
Herencia en C++
 

Último

Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasSegundo Silva Maguiña
 
Trabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruanaTrabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruana5extraviado
 
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosRevista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosJeanCarlosLorenzo1
 
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdfRicardoRomeroUrbano
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxPaolaVillalba13
 
Biología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxBiología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxluisvalero46
 
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónEstacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónAlexisHernandez885688
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaANDECE
 
Peligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionPeligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionOsdelTacusiPancorbo
 
Diagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxDiagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxHarryArmandoLazaroBa
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialyajhairatapia
 
Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)dianamateo1513
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidasNelsonQuispeQuispitu
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfJessLeonelVargasJimn
 
Electromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfElectromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfAnonymous0pBRsQXfnx
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasSOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasLeonardoMendozaDvila
 
Parámetros de Perforación y Voladura. para Plataformas
Parámetros de  Perforación y Voladura. para PlataformasParámetros de  Perforación y Voladura. para Plataformas
Parámetros de Perforación y Voladura. para PlataformasSegundo Silva Maguiña
 
Sistema de Base de Datos (Rubén Alberto)
Sistema de Base de Datos (Rubén Alberto)Sistema de Base de Datos (Rubén Alberto)
Sistema de Base de Datos (Rubén Alberto)mendezruben1901
 

Último (20)

Topografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la IngenieríasTopografía 1 Nivelación y Carretera en la Ingenierías
Topografía 1 Nivelación y Carretera en la Ingenierías
 
Trabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruanaTrabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruana
 
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosRevista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
 
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptx
 
Biología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxBiología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptx
 
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónEstacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de Almería
 
Peligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionPeligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacion
 
Diagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxDiagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptx
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundial
 
Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)Sistema de Gestión de Freelancers (Base de Datos)
Sistema de Gestión de Freelancers (Base de Datos)
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidas
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdf
 
Electromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfElectromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdf
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasSOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
 
Parámetros de Perforación y Voladura. para Plataformas
Parámetros de  Perforación y Voladura. para PlataformasParámetros de  Perforación y Voladura. para Plataformas
Parámetros de Perforación y Voladura. para Plataformas
 
Sistema de Base de Datos (Rubén Alberto)
Sistema de Base de Datos (Rubén Alberto)Sistema de Base de Datos (Rubén Alberto)
Sistema de Base de Datos (Rubén Alberto)
 

U8.- Programacion Orientada a objetos II (2).pdf

  • 2. Introducción  Propiedades de la POO  Concepto de Herencia  Mecanismos de Herencia  this y super  Mecanismos en Constructores  Dynamic binding  Herencia forzada. Clases abstractas  Revisión de los modificadores  La clase Object
  • 3. Propiedades de la POO  Encapsulamiento  Una clase se compone tanto de variables (propiedades) como de funciones y procedimientos (métodos)  No se pueden definir variables (ni métodos) fuera de una clase (es decir no hay variables globales)  Ocultación  Hay una zona privada al definir la clases que sólo es utilizada por esa clases y por alguna clase relacionada  Hay una zona pública que puede ser utilizada por cualquier parte del código  Polimorfismo  Un método de una clase puede tener varias definiciones distintas  Una variable puede referirse a objetos de diferentes clases  Herencia  Una clase puede heredar propiedades de otra
  • 4. COMPOSICION La composición es el agrupamiento de uno o varios objetos y valores como atributos que conforman el valor de los distintos objetos de una clase. La composición crea una relación TIENE Ejemplo: Decimos que un Claustro está formado por un Catedrático, un Profesor Titular, un Alumno, un responsable de Administración y el Rector
  • 5. Concepto de Herencia  En los lenguajes de programación orientados a objetos el mecanismo básico para la reutilización de código es la herencia  Permite crear nuevas clases que heredan características presentes en clases anteriores  la clase original se denomina clase padre, clase base o superclase  la nueva clase se denomina clase hija, derivada o subclase  En JAVA, sólo se puede tener herencia de una clase (herencia simple)  La herencia establece una relacion ES-UN entre clases
  • 6. Concepto de Herencia  En el lenguaje Java hay dos aspectos donde la herencia es particularmente relevante:  La herencia se emplea exhaustivamente en el propio lenguaje a lo largo del conjunto de librerías que posee  El lenguaje da soporte a la definición de nuevas clases heredadas de las características ya definidas  Se emplea la palabra extends en la clase hija seguida del nombre de la clase padre class B extends A { ... }
  • 7. Herencia. Ejemplo 1 class Persona { public String nombre; public String apellidos; public int añoDeNacimiento; public void imprime() { System.out.println(“Datos personales: “ + nombre + “ “ + apellidos + “ (“ + añoDeNacimiento + “)”); } } class Alumno extends Persona { private String grupo; private Horario horario; public void ponGrupo(String grupo, Horario horario) { this.grupo = grupo; this.horario = horario; } }
  • 8. Herencia. Ejemplo 1  En el ejemplo, la clase Alumno hereda los atributos nombre, apellidos y añoDeNacimiento de la clase Persona, así como el método imprime  sobre un objeto de la clase Alumno es posible llamar al método imprime //Creación de un nuevo alumno Alumno alumno1 = new Alumno(); //... //Llamada al método imprime heredado de la clase Persona alumno1.imprime();
  • 11. Mecanismos de Herencia  La subclase tiene (o hereda) TODOS los atributos y métodos de la superclase, aunque no todos los miembros tienen porque ser accesibles:  Serán accesibles todos los métodos y propiedades protected, public y “de paquete”  no serán accesibles los métodos y propiedades private
  • 12. Mecanismos de Herencia  En la clase derivada pueden añadirse atributos (que generalmente serán privados) y métodos adicionales  La subclase no hereda los constructores:  cada nueva clase (incluso las derivadas) deben definir sus constructores  Si no se implementa ningún constructor se genera uno sin argumentos por defecto
  • 13. Mecanismos de Herencia  Podemos definir una propiedad en la subclase con el mismo nombre que en la superclase:  La propiedad de la superclase queda “oculta”  Podemos definir un método en la subclase con el mismo nombre y la misma firma que en la superclase:  El método se reemplaza por el nuevo. Se dice que se está redefiniendo el método  El atributo de acceso debe ser el mismo o menos restrictivo que el de la superclase  En ambos casos, al referenciar la propiedad o método con el Nombre (o this.Nombre) nos referimos a la subclase. Para referirinos a la superclase escribimos super.Nombre
  • 15. Mecanismos de Herencia  Las subclase también pueden sobrecargar métodos para proporcionar una versión  Para impedir que se pueda redefinir un atributo o un método se le antepone el modificador final  El modificador final aplicado a una clase impide que se puedan definir clases derivadas
  • 16. super  La palabra reservada super nos permite llamar a una propiedad o método de la superclase:  this hace referencia a la clase actual  super hace referencia a la superclase respecto a la clase actual Nota: Como hemos visto en la diapositiva anterior, super es imprescindible para poder acceder a métodos redefinidos o anulados por herencia
  • 17. super. Ejemplo  la llamada super.acelerar(cantidad) llama al método acelerar de la clase vehículo  Se puede llamar a un constructor de una superclase usando la sentencia super( )
  • 18. Mecanismos en Constructores  Los constructores tienen la posibilidad de invocar a otro constructor de su propia clase con la sentencia this(..)  Los constructores de las subclases tienen la posibilidad de invocar a los constructores de las superclases con la sentencia super(..)  La llamada super(..) o this(..) en caso de utilizarse, debe ser obligatoriamente la primera sentencia del constructor Por defecto Java realiza estas acciones:  Si la primera instrucción de un constructor de una subclase es una sentencia que no es ni super ni this  añade de forma invisible e implícita una llamada super() al constructor por defecto de la superclase • Esto puede dar errores, si en la superclase hemos definido algún constructor y no hemos definido el constructor sin parámetros, el compilador no encontrará ese constructor • Si en la superclase no hemos definido ningún constructor, no habrá problemas  Si se usa super(..) en la primera instrucción  se llama al constructor seleccionado de la superclase  Si la primera instrucción es this(..)  se llama al constructor seleccionado por medio de this y después continúa con las sentencias del constructor
  • 19. Polimorfismo. Upcasting y Downcasting  Una variable puede referirse a objetos de diferentes clases  Upcasting  A una variable de un tipo A podemos no sólo asignarle objetos del tipo A, sino también cualquier objeto de un tipo que descienda de A class Persona { ... } class Alumno extends Persona { ... } Alumno a = new Alumno(), Persona p = a; // implícito Persona p = (Persona) a; // explícito; no es necesario  Esta operación siempre se puede hacer, sin necesidad de indicárselo explícitamente al compilador
  • 20. Polimorfismo.  Downcasting  Se dice del caso en el que una variable de una subclase referencia a un objeto de la superclase Persona p = new Alumno(); Alumno a = (Alumno) p; // explícito; es necesario  Esta operación sólo se puede hacer, si el objeto referenciado por “p” es realmente de tipo Alumno;  De lo contrario se provoca un error lanzándose una excepción de tipo ClassCastException.
  • 21. Dynamic binding (elección dinámica de método)  Ejemplo: Persona p = new Alumno(), Alumno a = new Alumno();  Supongamos que la clase Persona dispone de un método imprime() y que este método se ha sobreescrito en la clase Alumno  Podemos escribir: p.imprime() a.imprime()  Ambas invocaciones ejecutarán el código de la clase Alumno
  • 22. instanceof  Permite comprobar si un determinado objeto pertenece a una clase concreta: objeto instanceof clase  Comprueba si el objeto pertenece a una determinada clase y devuelve un valor true si es así  Ejemplo:
  • 23. Herencia forzada. Clases abstractas  Se puede obligar que para usar una clase haya que hacerlo escribiendo una nueva clase que herede de ella  Para ello se utiliza el modificador abstract delante de la definición de la clase  Ejemplo: abstract class NombreDeClase { ... }  Una clase abstracta no se puede instanciar (no se puede crear objetos), pero si heredar.  Se debe instanciar la clase derivada que se encargará de definir los metodos abstractos, si no se hace se deben declarar también abstractas
  • 24. La Clase Object  Es una clase de java con la particularidad de ser la “madre de todas las clases”  Todas las clases que escriban los programadores heredan de Object • directamente (si no se dice nada) • indirectamente (si la clase extiende a otra)  Es equivalente: class Ejemplo { ... } class Ejemplo extends Object { ... }  La clase Object define métodos que son compartidos por absolutamente todos los objetos que se creen
  • 25. La Clase Object  Algunos métodos de Object son:  getClass( )  retorna la clase del objeto en ejecución  equals(Object obj)  retorna true si este objeto es igual al pasado como argumento  toString( )  retorna una representación textual del objeto  Una buena estrategia es sobrecargar toString() para modificar la representación de un objeto
  • 26. La Clase Object. Ejemplo de toString( )
  • 27. INTERFACES El concepto de interfaz puede parecer similar al de clase abstracta. De hecho, posee declaración y definición. Sin embargo, mientras que en una clase abstracta podemos definir los métodos que queramos, en una interfaz no podemos definir métodos. Una interface es una variante de una clase abstracta con la condición de que todos sus métodos deben ser abstractos. Si la interface va a tener atributos, éstos deben llevar las palabras reservadas public final y con un valor inicial ya que funcionan como constantes por lo que, por convención, su nombre va en mayúsculas. public interface MiInterfaz { public final double PI = 6.14; public final int CONST = 75; void put(int dato); int get(); } Para implementar las interfaces de la clase usaremos implements, y las distintas interfaces separadas por comas. class Miclase extends MiSuperClase implements MiInterfaz { // Cuerpo de la clase }
  • 28. RECUERDA…. Revisión de los modificadores de clases, atributos y métodos
  • 29. Modificadores de acceso de clases (Unidad 05)  Java define 4 modificadores fundamentales que califican a clases: Palabra clave Definición public La clase es accesible desde otros paquetes (por defecto) de paquete La clase será visible en todas las clases declaradas en el mismo paquete abstract La clase no pueden ser instanciadas. Sirve únicamente para declarar subclases final ninguna clase puede heredar de una clase final
  • 30. Modificadores de atributos y métodos (Unidad 05)  Java define 4 modificadores fundamentales que califican a métodos y atributos: Palabra clave Definición public el elemento es accesible desde cualquier sitio protected el elemento es accesible dentro del paquete en el que se define y, además, en las subclases (por defecto) de paquete el elemento sólo es accesible dentro del paquete en el que se define (clases en el mismo directorio) private el elemento sólo es accesible dentro del fichero en el que se define