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
Certificado (1)
Certificado (1)

Más contenido relacionado

La actualidad más candente

Fundamentos de programacion en java
Fundamentos de programacion en javaFundamentos de programacion en java
Fundamentos de programacion en java
Jefferson Sarmiento
 
Características de c sharp
Características de c sharpCaracterísticas de c sharp
Características de c sharp
uccvirtual
 
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++
Karime Hernández
 

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 Certificado (1)

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
RamonMartinespaa
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
Krizztiina Pacheko
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]
Hack '
 
Investigacion v unidad
Investigacion v unidadInvestigacion v unidad
Investigacion v unidad
Elena Perz
 

Similar a Certificado (1) (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 LENINMATEO1 (20)

Examen
ExamenExamen
Examen
 
Chatbot
ChatbotChatbot
Chatbot
 
Cheque
ChequeCheque
Cheque
 
Ejercicios basicos php lenin quishpe
Ejercicios basicos php lenin quishpeEjercicios basicos php lenin quishpe
Ejercicios basicos php lenin quishpe
 
Tabla de multiplicar con for y while
Tabla de multiplicar con for y whileTabla de multiplicar con for y while
Tabla de multiplicar con for y while
 
Tabla de multiplicar con for
Tabla de multiplicar con forTabla de multiplicar con for
Tabla de multiplicar con for
 
Tabla de multiplicar con while
Tabla de multiplicar con whileTabla de multiplicar con while
Tabla de multiplicar con while
 
Tarea con switch
Tarea con switchTarea con switch
Tarea con switch
 
Uso de variables en php
Uso de variables en phpUso de variables en php
Uso de variables en php
 
In 29
In 29In 29
In 29
 
In 28
In 28In 28
In 28
 
In 27
In 27In 27
In 27
 
In 26
In 26In 26
In 26
 
In 25
In 25In 25
In 25
 
In 24
In 24In 24
In 24
 
In 23
In 23In 23
In 23
 
In 22
In 22In 22
In 22
 
In 21
In 21In 21
In 21
 
In 20
In 20In 20
In 20
 
In 18
In 18In 18
In 18
 

Último

Último (16)

LOS MIMBRES HACEN EL CESTO: AGEING REPORT.
LOS MIMBRES HACEN EL CESTO: AGEING  REPORT.LOS MIMBRES HACEN EL CESTO: AGEING  REPORT.
LOS MIMBRES HACEN EL CESTO: AGEING REPORT.
 
Mercado Eléctrico de Ecuador y España.pdf
Mercado Eléctrico de Ecuador y España.pdfMercado Eléctrico de Ecuador y España.pdf
Mercado Eléctrico de Ecuador y España.pdf
 
41 RAZONES DE PORQUE SI ESTAMOS MAL EN MÉXICO
41 RAZONES DE PORQUE SI ESTAMOS MAL EN MÉXICO41 RAZONES DE PORQUE SI ESTAMOS MAL EN MÉXICO
41 RAZONES DE PORQUE SI ESTAMOS MAL EN MÉXICO
 
Compañías aseguradoras presentacion power point
Compañías aseguradoras presentacion power pointCompañías aseguradoras presentacion power point
Compañías aseguradoras presentacion power point
 
Revista Estudiantil de la Carrera de Contaduría Pública de la Universidad May...
Revista Estudiantil de la Carrera de Contaduría Pública de la Universidad May...Revista Estudiantil de la Carrera de Contaduría Pública de la Universidad May...
Revista Estudiantil de la Carrera de Contaduría Pública de la Universidad May...
 
EL HALVING DEL BITCOIN: REDUCIR A LA MITAD EL MINADO DE LOS MINEROS.
EL HALVING DEL BITCOIN: REDUCIR A LA MITAD EL MINADO DE LOS MINEROS.EL HALVING DEL BITCOIN: REDUCIR A LA MITAD EL MINADO DE LOS MINEROS.
EL HALVING DEL BITCOIN: REDUCIR A LA MITAD EL MINADO DE LOS MINEROS.
 
Situación Mercado Laboral y Desempleo.ppt
Situación Mercado Laboral y Desempleo.pptSituación Mercado Laboral y Desempleo.ppt
Situación Mercado Laboral y Desempleo.ppt
 
El cheque 1 y sus tipos de cheque.pptx
El cheque  1 y sus tipos de  cheque.pptxEl cheque  1 y sus tipos de  cheque.pptx
El cheque 1 y sus tipos de cheque.pptx
 
titulo valor prate principal y accesoria...................
titulo valor prate principal y accesoria...................titulo valor prate principal y accesoria...................
titulo valor prate principal y accesoria...................
 
el problema metodológico en la contabilidad.pdf
el problema metodológico en la contabilidad.pdfel problema metodológico en la contabilidad.pdf
el problema metodológico en la contabilidad.pdf
 
SIRE-RCE. REGISTRO DE COMPRAS.. Y VENTAS
SIRE-RCE. REGISTRO DE COMPRAS.. Y VENTASSIRE-RCE. REGISTRO DE COMPRAS.. Y VENTAS
SIRE-RCE. REGISTRO DE COMPRAS.. Y VENTAS
 
Tema 1 de la asignatura Sistema Fiscal Español I
Tema 1 de la asignatura Sistema Fiscal Español ITema 1 de la asignatura Sistema Fiscal Español I
Tema 1 de la asignatura Sistema Fiscal Español I
 
PLANEACION-Y-CONTROL-DE-UTILIDADES-.pptx
PLANEACION-Y-CONTROL-DE-UTILIDADES-.pptxPLANEACION-Y-CONTROL-DE-UTILIDADES-.pptx
PLANEACION-Y-CONTROL-DE-UTILIDADES-.pptx
 
Venezuela Entorno Social y Económico.pptx
Venezuela Entorno Social y Económico.pptxVenezuela Entorno Social y Económico.pptx
Venezuela Entorno Social y Económico.pptx
 
mercado de capitales universidad simon rodriguez - guanare (unidad I).pdf
mercado de capitales universidad simon rodriguez - guanare (unidad I).pdfmercado de capitales universidad simon rodriguez - guanare (unidad I).pdf
mercado de capitales universidad simon rodriguez - guanare (unidad I).pdf
 
ejemplo de tesis para contabilidad- capitulos
ejemplo de tesis para contabilidad- capitulosejemplo de tesis para contabilidad- capitulos
ejemplo de tesis para contabilidad- capitulos
 

Certificado (1)

  • 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