SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
1. Utilización Herencia
Es importante recordar que la herencia es un paradigma de la programación orientada
a objetos, que tiene como principal objetivo la reutilización.
Para cumplir con la reutilización la herencia determina que el código escrito en una clase
padre puede ser utilizado por todas su clases hijas, evitando que este código se
repita cada vez.
Cuando se requiere que un objeto herede los atributos y los métodos de una super clase
se utiliza la palabra reservada extends.
Para ejemplificar su utilización, se empleará la herencia entre las
clases Vehiculo como clase padre y VehiculoHibrido como clase hija, la
herencia en lenguaje natural se expresa como "es un " así un
VehiculoHibrido es un Vehiculo
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Vehiculo {
private String color;
private String placa;
private int cilindraje;
private int velocidad;
private String marchaActual;
public void acelerar(int valorIncrementoDeVelocidad){
velocidad=velocidad+valorIncrementoDeVelocidad;
}
public void frenar(int valorDecrementoDeVelocidad){
velocidad=velocidad-valorDecrementoDeVelocidad;
}
public void cambiarDeMarcha(String marchaNueva){
marchaActual=marchaNueva;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getPlaca() {
return placa;
}
public void setPlaca(String placa) {
this.placa = placa;
}
public int getCilindraje() {
return cilindraje;
}
36
37
38
39
40
41
42
43
44
45
46
47
public void setCilindraje(int cilindraje) {
this.cilindraje = cilindraje;
}
public String getMarchaActual() {
return marchaActual;
}
public void setMarchaActual(String marchaActual) {
this.marchaActual = marchaActual;
}
}
Figura 1.1: Superclass
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class VehiculoHibrido extends Vehiculo {
private int cargaBateria;
public VehiculoHibrido() {
super();
}
public void frenar(int valorDecrementoDeVelocidad){
super.frenar(valorDecrementoDeVelocidad);
this.cargaBateria++;
}
public int getCargaBateria() {
return cargaBateria;
}
public void setCargaBateria(int cargaBateria) {
this.cargaBateria = cargaBateria;
}
}
Figura 1.2: Subclase
Para llamar explicitamente a algún miembro de la clase Padre (Vehiculo), desde la clase
hija (VehiculoHibrido), se puede utilizar la palabra reservada super, como se pudo
apreciar en la figura anterior.
Adicionalmente se debe destacar que en el constructor de la clase hija, la primera línea
que debe ser llamada es el constructor de la clase padre; denotada
porsuper(<argumentos>) donde argumentos son el número de parámetros que tiene
el constructor de la clase Vehiculo.
Recordemos que la
Herencia es uno de los 3
paradigmas de la
Programación Orientada
a Objetos y que su
principal objetivo es la
reutilización, mediante
la creación de clases
padres e hijas.
1.1 Sobreescritura Métodos
Muchas veces en las clases hijas, la utilización de un método heredado de la clase padre
no cumple con la totalidad de los requerimientos en la clase hija, así en el caso del
ejemplo entre el Vehiculo y el VehiculoHibrido, en el método frenar se le
agrega la funcionalidad de incremento de la carga en la batería. En estas
situaciones se aplica la técnica conocida como sobreescritura de
métodos, la cual como se mencionó consiste en cambiar total o
parcialmente el comportamiento de un método heredado.
La sobrevescritura debe cumplir con las siguientes condiciones
• El tipo de retorno debe ser el mismo o un subtipo del declarado originalmente.
• La firma del método (número y tipo de argumentos) no se puede modificar.
• El nivel de acceso no debe ser más restrictivo, por ejemplo si es public no puede ser
private.
• No se puede sobreescribir métodos marcados como static o final.
La sobreescritura es una de las formas de
implementar el segundo paradigma orientada a
objetos El Polimorfismo, el cual consiste en
utilizar el mismo nombre de método pero con
distinta implementación (diferente funcionalidad)
1.1 Sobrecarga de Métodos
La sobrecarga de métodos es la segunda forma de aplicar el polimorfismo y se puede
aplicar de las siguiente maneras:
• Modificando el tipo de datos de los parámetros de un método, así si el método
frenar recibe un parámetro del tipo entero, en el caso de una sobrecarga del
método puede cambiar y recibir un parámetro tipo long.
public void frenar(long valor)
• Modificando el número de parámetros que recibe un método,
public void frenar(int valorDecrementoDeVelocidad, intvalorCargaBateria)
public void frenar()
• Modificando el tipo de retorno del método en conjunto con el
número de parámetros o el tipo de datos
public double frenar(){
return 0d ;
}
• Un método puede ser sobrecargado en la misma clase o subclase.
La sobrecarga es otra forma de implementar el
concepto de Polimorfismo, en este caso en específico
el nombre del método se mantiene pero los
parámetros varian.
Video 1.1 Utilización de Herencia
https://www.youtube.com/watch?v=4O0m5DRZwQg
2. Interface
Las interfaces, por lo general, son como “contratos de negocio” en los cuales existen
dos partes: el contratante y el(los) contratado(s), quien deben cumplir todas las
reglas o normas definidas de manera obligatoria. Lo fundamental es que cumplan
todas y cada una de las reglas definidas.
En lo que respecta a Java, una interfaz es un tipo referencial similar a una Clase, pero
con ciertas diferencias que se denotan a continuación:
• Las interfaces no pueden ser instanciadas, solo pueden ser implementadas por
una clase o extendidas por otras interfaces.
• Todos los atributos definidos en una interface son constantes.
• Solo se pueden definir métodos abstractos (no tienen cuerpo); son solo
definiciones de métodos.
Para crear una interfaz se utiliza la palabra reservada interface, y para realizar su
implementación se utiliza la palabra reservada implements. Cabe destacar que a través
de las interfaces se puede simular la herencia múltiple, debido a que una clase puede
implementar más de una interface. A continuación se muestra la creación e
implementación de un contrato de negocio para Usuario.
?
1
2
3
4
5
6
7
8
9
10
11
package ec.edu.cec.epn.java.fun.semana3;
public interface IAdminUsuario {
boolean verificarCredenciales(String usuario, String contrasenia);
public void resetearContrasenia(String mail);
String encriptarContrasenia(String contrasenia);
}
Figura 2.1: Interface
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package ec.edu.cec.epn.java.fun.semana3;
/**
* Clase que implementa la interfaz IAdminUsuario y las correspondientes
operaciones
* @author Pablo
*
*/
public class AdminUsuario implements IAdminUsuario {
@Override
public boolean verificarCredenciales(String usuario, String contrasenia)
{
// TODO Auto-generated method stub
return false;
}
@Override
public void resetearContrasenia(String mail) {
// TODO Auto-generated method stub
}
@Override
public String encriptarContrasenia(String contrasenia) {
// TODO Auto-generated method stub
return null;
}
}
Figura 2.2: Implementación Interfaz
Haciendo la similitud con un contrato, cada uno de
los métodos de la interface se constituyen en las
“clausulas del contrato” y los atributos en los
valores definidos, que una vez escritos en el
contrato no son negociables ni modificables
https://www.youtube.com/watch?v=c9q5lorCrD8
Video 2.1 Utilización de Polimorfismo (Interface)
3. Clases Abstractas
Una clase abstracta se identifica con la palabra reservada abstract . Se trata de un tipo
especial de clase, su principal característica es la capacidad de defnir un contrato de
funcionalidad (como una interface) y adicionalmente métodos con cuerpo o
implementación (como una clase normal). Se utiliza principalmente para implementar
conceptos de herencia y reutilización.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package ec.edu.cec.epn.java.fun.semana3;
public abstract class Fruta {
private String sabor;
private String consistencia;
private String color;
public abstract String getConsistencia();
public abstract String getColor();
public String getSabor() {
return sabor;
}
public void setSabor(String sabor) {
this.sabor = sabor;
17
18
19
20
21
22
23
24
25
26
27
}
public void setConsistencia(String consistencia) {
this.consistencia = consistencia;
}
public void setColor(String color) {
this.color = color;
}
}
Figura 3.1: Clase abstracta
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package ec.edu.cec.epn.java.fun.semana3;
public class Manzana extends Fruta{
@Override
public String getConsistencia() {
return "arenosa";
}
@Override
public String getColor() {
return "roja";
}
public String getPaisProcedencia(){
return "Ecuador";
}
}
Figura 3.2: Clase concreta
Cabe destacar que una clase abstract solo se puede heredar, nunca instanciar.
Esto significa que no se puede definir un constructor e invocarlo:
Fruta fruta= new Fruta();//imposible instanciar una clase abstracta
Casting
Es el proceso que consiste en convertir un tipo de dato a otro. Java maneja cuatro tipos
de casting o conversión:
Para estos ejemplos consideremos la clase Padre Persona y la clase hija Empleado
• Implicito.- Sucede cuando un tipo de dato con menor jerarquía es promovido a un tipo de dato con
mayor jerarquía, pero sin realizar ninguna operación adicional. En el caso de Objetos sucede
exactamente lo mismo, pero con la diferencia que el un objeto debe de heredar del otro. Por ejemplo
tenemos dos Clases: Persona que es la clase padre yEmpleado que es la clase hija; es decir, hereda
de Persona. Entonces al hacer el casting implicito ,la conversión de un Empleado a Persona es
automático como se muestra continuación:
Figura 6.1: Casting Implicito
Este tipo de casting no presenta ningún inconveniente ya que si
consideramos que un Empleado es definitivamente una Persona
• Explicito.- Sucede cuando un tipo de dato con mayor jerarquía es promovido a un tipo de dato con
menor jerarquía, pero necesitamos cambiarle expllícitamente. Se diferencia del casting implicito
porque no aplica con objetos. A continuación se muestra un ejemplo:
Figura 6.2 Casting Explícito
Este casting puede fallar ya que una persona no necesariamente es un Empleado.
• Autoboxing.- Permite realizar la conversión automática de tipos de datos primitivos a sus respectivos
Wrapper. Por ejemplo: de int a Integer, de double a Double etc.
Figura 6.3: Autoboxing
Un Wrapper es una clase que permite trabajar con los tipos de datos primitivos como si
se trataran de objetos.
• Inboxing.- Es la operación inversa del autoboxing. Permite la conversión automática de los diferentes
Wrappers a tus datos primitivos; por ejemplo: de Integer a int
Figura 6.4: Inboxing
4. Innerclass
Una innerclass es una clase que está definida dentro de otra clase; es decir, como una
clase interna, razón por la cual es tratada como un atributo más.
Cabe aclarar que una Innerclass puede tener cualquier modificador de acceso excepto
public,ya que en una archivo .java solamente puede haber una clase pública.
4.1 Creación InnerClass
Se puede crear una Innerclass de tres formas:
• local-Innerclass.- Consiste en declarar la clase dentro del cuerpo de un método,
con lo que la clase solo existe en la llamada del método y no puede tener ningún
modificador de acceso. Este tipo de creación es muy recomendado para
mecanismos de seguridad, A continuación se puede apreciar un ejemplo:
Figura 4.1: Local Innerclass
• anonymous-Innerclass.- Consiste en declarar la clase dentro del cuerpo de un
método, pero sin nombrarlo; es decir, crearlo en caliente el mismo momento de
utilizarla. A continuación se puede apreciar un ejemplo:
Figura 4.2: Innerclass Anónima
• nested-Innerclass.- Consiste en declarar la clase fuera de un método como un
miembro más; esta es la forma más común de utilización. A continuación se
puede apreciar un ejemplo:
Figura 4.3: Nested Innerclass
4.2 Utilización
Para poder utilizar una Innerclass, debemos identificar el modo en que fue declarado.
El más común es a nivel de miembro ya que las otras Innerclasses declaradas a nivel de
método solo existen dentro del mismo. Para crear una instancia de Innerclass lo
hacemos a través de una instancia de la clase contenedora (Outer Class), siempre y
cuando la Innerclass no sea estática o privada, como se muestra a continuación:
Figura 4.4: Utilización Innerclass
Abstral herencias
Abstral herencias

Más contenido relacionado

La actualidad más candente

La actualidad más candente (15)

4 Polimorfismo
4  Polimorfismo4  Polimorfismo
4 Polimorfismo
 
Introduccion al java script
Introduccion al java scriptIntroduccion al java script
Introduccion al java script
 
Clase n°1 java
Clase n°1 javaClase n°1 java
Clase n°1 java
 
Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.
Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.
Ejercicios de Java Básico. Listado 1 de Ejercicios.Programación.
 
Poo 3-herencia-10-11
Poo 3-herencia-10-11Poo 3-herencia-10-11
Poo 3-herencia-10-11
 
Programacion en C#
Programacion en C#Programacion en C#
Programacion en C#
 
62016561 java
62016561 java62016561 java
62016561 java
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
Java 1
Java 1Java 1
Java 1
 
Fundamentos de programacion en java
Fundamentos de programacion en javaFundamentos de programacion en java
Fundamentos de programacion en java
 
Características de c sharp
Características de c sharpCaracterísticas de c sharp
Características de c sharp
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Programación orientada a objetos con c++
Programación orientada a objetos con c++Programación orientada a objetos con c++
Programación orientada a objetos con c++
 
Laboratorio nº 2
Laboratorio nº 2Laboratorio nº 2
Laboratorio nº 2
 
Clase 10 expresiones regulares
Clase 10 expresiones regularesClase 10 expresiones regulares
Clase 10 expresiones regulares
 

Similar a Abstral herencias

Similar a Abstral herencias (20)

Programacion 3 unidad ii
Programacion 3   unidad iiProgramacion 3   unidad ii
Programacion 3 unidad ii
 
MéTodos
MéTodosMéTodos
MéTodos
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
MéTodos
MéTodosMéTodos
MéTodos
 
MéTodos
MéTodosMéTodos
MéTodos
 
03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdf03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdf
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
 
INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
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
 
Clase 2 Poo
Clase 2 PooClase 2 Poo
Clase 2 Poo
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
 
sentenciareturnymetodos
sentenciareturnymetodossentenciareturnymetodos
sentenciareturnymetodos
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]
 
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
 
Interfaces
InterfacesInterfaces
Interfaces
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
 
Investigacion v unidad
Investigacion v unidadInvestigacion v unidad
Investigacion v unidad
 
Semana 3 Herencia en Java
Semana 3   Herencia en JavaSemana 3   Herencia en Java
Semana 3 Herencia en Java
 
Polimorfismo ppt
Polimorfismo  pptPolimorfismo  ppt
Polimorfismo ppt
 

Más de GonzaloFarinangoMora (20)

-cumplimiento-de-la-ley-de-ohm-fundamentos-y-aplicaciones-en-circuitos-electr...
-cumplimiento-de-la-ley-de-ohm-fundamentos-y-aplicaciones-en-circuitos-electr...-cumplimiento-de-la-ley-de-ohm-fundamentos-y-aplicaciones-en-circuitos-electr...
-cumplimiento-de-la-ley-de-ohm-fundamentos-y-aplicaciones-en-circuitos-electr...
 
-introduccion-a-la-programacion-basica-aprendiendo-los-fundamentos-de-la-prog...
-introduccion-a-la-programacion-basica-aprendiendo-los-fundamentos-de-la-prog...-introduccion-a-la-programacion-basica-aprendiendo-los-fundamentos-de-la-prog...
-introduccion-a-la-programacion-basica-aprendiendo-los-fundamentos-de-la-prog...
 
La-robotica-definicion-y-relevancia-en-la-actualidad-20230815024858NnuJ.pdf
La-robotica-definicion-y-relevancia-en-la-actualidad-20230815024858NnuJ.pdfLa-robotica-definicion-y-relevancia-en-la-actualidad-20230815024858NnuJ.pdf
La-robotica-definicion-y-relevancia-en-la-actualidad-20230815024858NnuJ.pdf
 
ProgramaciónyRobótica.pdf
ProgramaciónyRobótica.pdfProgramaciónyRobótica.pdf
ProgramaciónyRobótica.pdf
 
EXAMEN
EXAMENEXAMEN
EXAMEN
 
9
99
9
 
8
88
8
 
7
77
7
 
6
66
6
 
5
55
5
 
4
44
4
 
3
33
3
 
1
11
1
 
13
1313
13
 
12
1212
12
 
11
1111
11
 
10
1010
10
 
9
99
9
 
8
88
8
 
7
77
7
 

Último

FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosJonathanCovena1
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfenelcielosiempre
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 

Último (20)

Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 

Abstral herencias

  • 1. 1. Utilización Herencia Es importante recordar que la herencia es un paradigma de la programación orientada a objetos, que tiene como principal objetivo la reutilización. Para cumplir con la reutilización la herencia determina que el código escrito en una clase padre puede ser utilizado por todas su clases hijas, evitando que este código se repita cada vez. Cuando se requiere que un objeto herede los atributos y los métodos de una super clase se utiliza la palabra reservada extends. Para ejemplificar su utilización, se empleará la herencia entre las clases Vehiculo como clase padre y VehiculoHibrido como clase hija, la herencia en lenguaje natural se expresa como "es un " así un VehiculoHibrido es un Vehiculo ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 public class Vehiculo { private String color; private String placa; private int cilindraje; private int velocidad; private String marchaActual; public void acelerar(int valorIncrementoDeVelocidad){ velocidad=velocidad+valorIncrementoDeVelocidad; } public void frenar(int valorDecrementoDeVelocidad){ velocidad=velocidad-valorDecrementoDeVelocidad; } public void cambiarDeMarcha(String marchaNueva){ marchaActual=marchaNueva; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getPlaca() { return placa; } public void setPlaca(String placa) { this.placa = placa; } public int getCilindraje() { return cilindraje; }
  • 2. 36 37 38 39 40 41 42 43 44 45 46 47 public void setCilindraje(int cilindraje) { this.cilindraje = cilindraje; } public String getMarchaActual() { return marchaActual; } public void setMarchaActual(String marchaActual) { this.marchaActual = marchaActual; } } Figura 1.1: Superclass ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public class VehiculoHibrido extends Vehiculo { private int cargaBateria; public VehiculoHibrido() { super(); } public void frenar(int valorDecrementoDeVelocidad){ super.frenar(valorDecrementoDeVelocidad); this.cargaBateria++; } public int getCargaBateria() { return cargaBateria; } public void setCargaBateria(int cargaBateria) { this.cargaBateria = cargaBateria; } } Figura 1.2: Subclase Para llamar explicitamente a algún miembro de la clase Padre (Vehiculo), desde la clase hija (VehiculoHibrido), se puede utilizar la palabra reservada super, como se pudo apreciar en la figura anterior. Adicionalmente se debe destacar que en el constructor de la clase hija, la primera línea que debe ser llamada es el constructor de la clase padre; denotada porsuper(<argumentos>) donde argumentos son el número de parámetros que tiene el constructor de la clase Vehiculo.
  • 3. Recordemos que la Herencia es uno de los 3 paradigmas de la Programación Orientada a Objetos y que su principal objetivo es la reutilización, mediante la creación de clases padres e hijas. 1.1 Sobreescritura Métodos Muchas veces en las clases hijas, la utilización de un método heredado de la clase padre no cumple con la totalidad de los requerimientos en la clase hija, así en el caso del ejemplo entre el Vehiculo y el VehiculoHibrido, en el método frenar se le agrega la funcionalidad de incremento de la carga en la batería. En estas situaciones se aplica la técnica conocida como sobreescritura de métodos, la cual como se mencionó consiste en cambiar total o parcialmente el comportamiento de un método heredado. La sobrevescritura debe cumplir con las siguientes condiciones • El tipo de retorno debe ser el mismo o un subtipo del declarado originalmente. • La firma del método (número y tipo de argumentos) no se puede modificar. • El nivel de acceso no debe ser más restrictivo, por ejemplo si es public no puede ser private. • No se puede sobreescribir métodos marcados como static o final. La sobreescritura es una de las formas de implementar el segundo paradigma orientada a objetos El Polimorfismo, el cual consiste en utilizar el mismo nombre de método pero con distinta implementación (diferente funcionalidad) 1.1 Sobrecarga de Métodos La sobrecarga de métodos es la segunda forma de aplicar el polimorfismo y se puede aplicar de las siguiente maneras: • Modificando el tipo de datos de los parámetros de un método, así si el método frenar recibe un parámetro del tipo entero, en el caso de una sobrecarga del método puede cambiar y recibir un parámetro tipo long. public void frenar(long valor) • Modificando el número de parámetros que recibe un método,
  • 4. public void frenar(int valorDecrementoDeVelocidad, intvalorCargaBateria) public void frenar() • Modificando el tipo de retorno del método en conjunto con el número de parámetros o el tipo de datos public double frenar(){ return 0d ; } • Un método puede ser sobrecargado en la misma clase o subclase. La sobrecarga es otra forma de implementar el concepto de Polimorfismo, en este caso en específico el nombre del método se mantiene pero los parámetros varian. Video 1.1 Utilización de Herencia https://www.youtube.com/watch?v=4O0m5DRZwQg 2. Interface Las interfaces, por lo general, son como “contratos de negocio” en los cuales existen dos partes: el contratante y el(los) contratado(s), quien deben cumplir todas las reglas o normas definidas de manera obligatoria. Lo fundamental es que cumplan todas y cada una de las reglas definidas. En lo que respecta a Java, una interfaz es un tipo referencial similar a una Clase, pero con ciertas diferencias que se denotan a continuación: • Las interfaces no pueden ser instanciadas, solo pueden ser implementadas por una clase o extendidas por otras interfaces. • Todos los atributos definidos en una interface son constantes. • Solo se pueden definir métodos abstractos (no tienen cuerpo); son solo definiciones de métodos.
  • 5. Para crear una interfaz se utiliza la palabra reservada interface, y para realizar su implementación se utiliza la palabra reservada implements. Cabe destacar que a través de las interfaces se puede simular la herencia múltiple, debido a que una clase puede implementar más de una interface. A continuación se muestra la creación e implementación de un contrato de negocio para Usuario. ? 1 2 3 4 5 6 7 8 9 10 11 package ec.edu.cec.epn.java.fun.semana3; public interface IAdminUsuario { boolean verificarCredenciales(String usuario, String contrasenia); public void resetearContrasenia(String mail); String encriptarContrasenia(String contrasenia); } Figura 2.1: Interface ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 package ec.edu.cec.epn.java.fun.semana3; /** * Clase que implementa la interfaz IAdminUsuario y las correspondientes operaciones * @author Pablo * */ public class AdminUsuario implements IAdminUsuario { @Override public boolean verificarCredenciales(String usuario, String contrasenia) { // TODO Auto-generated method stub return false; } @Override public void resetearContrasenia(String mail) { // TODO Auto-generated method stub } @Override public String encriptarContrasenia(String contrasenia) { // TODO Auto-generated method stub return null; } } Figura 2.2: Implementación Interfaz
  • 6. Haciendo la similitud con un contrato, cada uno de los métodos de la interface se constituyen en las “clausulas del contrato” y los atributos en los valores definidos, que una vez escritos en el contrato no son negociables ni modificables https://www.youtube.com/watch?v=c9q5lorCrD8 Video 2.1 Utilización de Polimorfismo (Interface) 3. Clases Abstractas Una clase abstracta se identifica con la palabra reservada abstract . Se trata de un tipo especial de clase, su principal característica es la capacidad de defnir un contrato de funcionalidad (como una interface) y adicionalmente métodos con cuerpo o implementación (como una clase normal). Se utiliza principalmente para implementar conceptos de herencia y reutilización. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 package ec.edu.cec.epn.java.fun.semana3; public abstract class Fruta { private String sabor; private String consistencia; private String color; public abstract String getConsistencia(); public abstract String getColor(); public String getSabor() { return sabor; } public void setSabor(String sabor) { this.sabor = sabor;
  • 7. 17 18 19 20 21 22 23 24 25 26 27 } public void setConsistencia(String consistencia) { this.consistencia = consistencia; } public void setColor(String color) { this.color = color; } } Figura 3.1: Clase abstracta ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 package ec.edu.cec.epn.java.fun.semana3; public class Manzana extends Fruta{ @Override public String getConsistencia() { return "arenosa"; } @Override public String getColor() { return "roja"; } public String getPaisProcedencia(){ return "Ecuador"; } } Figura 3.2: Clase concreta Cabe destacar que una clase abstract solo se puede heredar, nunca instanciar. Esto significa que no se puede definir un constructor e invocarlo: Fruta fruta= new Fruta();//imposible instanciar una clase abstracta Casting Es el proceso que consiste en convertir un tipo de dato a otro. Java maneja cuatro tipos de casting o conversión: Para estos ejemplos consideremos la clase Padre Persona y la clase hija Empleado • Implicito.- Sucede cuando un tipo de dato con menor jerarquía es promovido a un tipo de dato con mayor jerarquía, pero sin realizar ninguna operación adicional. En el caso de Objetos sucede exactamente lo mismo, pero con la diferencia que el un objeto debe de heredar del otro. Por ejemplo tenemos dos Clases: Persona que es la clase padre yEmpleado que es la clase hija; es decir, hereda de Persona. Entonces al hacer el casting implicito ,la conversión de un Empleado a Persona es automático como se muestra continuación:
  • 8. Figura 6.1: Casting Implicito Este tipo de casting no presenta ningún inconveniente ya que si consideramos que un Empleado es definitivamente una Persona • Explicito.- Sucede cuando un tipo de dato con mayor jerarquía es promovido a un tipo de dato con menor jerarquía, pero necesitamos cambiarle expllícitamente. Se diferencia del casting implicito porque no aplica con objetos. A continuación se muestra un ejemplo: Figura 6.2 Casting Explícito Este casting puede fallar ya que una persona no necesariamente es un Empleado. • Autoboxing.- Permite realizar la conversión automática de tipos de datos primitivos a sus respectivos Wrapper. Por ejemplo: de int a Integer, de double a Double etc. Figura 6.3: Autoboxing Un Wrapper es una clase que permite trabajar con los tipos de datos primitivos como si se trataran de objetos. • Inboxing.- Es la operación inversa del autoboxing. Permite la conversión automática de los diferentes Wrappers a tus datos primitivos; por ejemplo: de Integer a int
  • 9. Figura 6.4: Inboxing 4. Innerclass Una innerclass es una clase que está definida dentro de otra clase; es decir, como una clase interna, razón por la cual es tratada como un atributo más. Cabe aclarar que una Innerclass puede tener cualquier modificador de acceso excepto public,ya que en una archivo .java solamente puede haber una clase pública. 4.1 Creación InnerClass Se puede crear una Innerclass de tres formas: • local-Innerclass.- Consiste en declarar la clase dentro del cuerpo de un método, con lo que la clase solo existe en la llamada del método y no puede tener ningún modificador de acceso. Este tipo de creación es muy recomendado para mecanismos de seguridad, A continuación se puede apreciar un ejemplo: Figura 4.1: Local Innerclass • anonymous-Innerclass.- Consiste en declarar la clase dentro del cuerpo de un método, pero sin nombrarlo; es decir, crearlo en caliente el mismo momento de utilizarla. A continuación se puede apreciar un ejemplo: Figura 4.2: Innerclass Anónima • nested-Innerclass.- Consiste en declarar la clase fuera de un método como un miembro más; esta es la forma más común de utilización. A continuación se puede apreciar un ejemplo:
  • 10. Figura 4.3: Nested Innerclass 4.2 Utilización Para poder utilizar una Innerclass, debemos identificar el modo en que fue declarado. El más común es a nivel de miembro ya que las otras Innerclasses declaradas a nivel de método solo existen dentro del mismo. Para crear una instancia de Innerclass lo hacemos a través de una instancia de la clase contenedora (Outer Class), siempre y cuando la Innerclass no sea estática o privada, como se muestra a continuación: Figura 4.4: Utilización Innerclass