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
PROGRAMACIÓN ESTRUCTURADA-Evelyn Suquillo-2C-003
PROGRAMACIÓN ESTRUCTURADA-Evelyn Suquillo-2C-003

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 PROGRAMACIÓN ESTRUCTURADA-Evelyn Suquillo-2C-003

Similar a PROGRAMACIÓN ESTRUCTURADA-Evelyn Suquillo-2C-003 (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 Evelynsuquillo1

Unidad3tema1 210404035121-210406055819
Unidad3tema1 210404035121-210406055819Unidad3tema1 210404035121-210406055819
Unidad3tema1 210404035121-210406055819Evelynsuquillo1
 
Unidad3tema4 210404034934
Unidad3tema4 210404034934Unidad3tema4 210404034934
Unidad3tema4 210404034934Evelynsuquillo1
 
Unidad3tema3 210404034656
Unidad3tema3 210404034656Unidad3tema3 210404034656
Unidad3tema3 210404034656Evelynsuquillo1
 
Unidad2tema4 210404033353
Unidad2tema4 210404033353Unidad2tema4 210404033353
Unidad2tema4 210404033353Evelynsuquillo1
 
Unidad2tema3 210404033201
Unidad2tema3 210404033201Unidad2tema3 210404033201
Unidad2tema3 210404033201Evelynsuquillo1
 
Unidad2tema2 210404033025
Unidad2tema2 210404033025Unidad2tema2 210404033025
Unidad2tema2 210404033025Evelynsuquillo1
 
Unidad2tema2 210404032945
Unidad2tema2 210404032945Unidad2tema2 210404032945
Unidad2tema2 210404032945Evelynsuquillo1
 
Unidad2tema1 210404032722
Unidad2tema1 210404032722Unidad2tema1 210404032722
Unidad2tema1 210404032722Evelynsuquillo1
 
Unidad1tema3 210404032226
Unidad1tema3 210404032226Unidad1tema3 210404032226
Unidad1tema3 210404032226Evelynsuquillo1
 
Uniad1tema2 210404031921
Uniad1tema2 210404031921Uniad1tema2 210404031921
Uniad1tema2 210404031921Evelynsuquillo1
 
Unidad1tema1 210404030858
Unidad1tema1 210404030858Unidad1tema1 210404030858
Unidad1tema1 210404030858Evelynsuquillo1
 
Unidad3tema2 210404034356
Unidad3tema2 210404034356Unidad3tema2 210404034356
Unidad3tema2 210404034356Evelynsuquillo1
 
Unidad3tema1 210404035121
Unidad3tema1 210404035121Unidad3tema1 210404035121
Unidad3tema1 210404035121Evelynsuquillo1
 
Unidad4tema4 210404040205
Unidad4tema4 210404040205Unidad4tema4 210404040205
Unidad4tema4 210404040205Evelynsuquillo1
 
Unidad4tema4 210404040205
Unidad4tema4 210404040205Unidad4tema4 210404040205
Unidad4tema4 210404040205Evelynsuquillo1
 
Unidad4tema4 210404040205
Unidad4tema4 210404040205Unidad4tema4 210404040205
Unidad4tema4 210404040205Evelynsuquillo1
 
Unidad4tema3 210404035907
Unidad4tema3 210404035907Unidad4tema3 210404035907
Unidad4tema3 210404035907Evelynsuquillo1
 

Más de Evelynsuquillo1 (20)

Informe final (3)
Informe final (3)Informe final (3)
Informe final (3)
 
Informe final
Informe finalInforme final
Informe final
 
Informe final (2)
Informe final (2)Informe final (2)
Informe final (2)
 
Unidad3tema1 210404035121-210406055819
Unidad3tema1 210404035121-210406055819Unidad3tema1 210404035121-210406055819
Unidad3tema1 210404035121-210406055819
 
Unidad3tema4 210404034934
Unidad3tema4 210404034934Unidad3tema4 210404034934
Unidad3tema4 210404034934
 
Unidad3tema3 210404034656
Unidad3tema3 210404034656Unidad3tema3 210404034656
Unidad3tema3 210404034656
 
Unidad2tema4 210404033353
Unidad2tema4 210404033353Unidad2tema4 210404033353
Unidad2tema4 210404033353
 
Unidad2tema3 210404033201
Unidad2tema3 210404033201Unidad2tema3 210404033201
Unidad2tema3 210404033201
 
Unidad2tema2 210404033025
Unidad2tema2 210404033025Unidad2tema2 210404033025
Unidad2tema2 210404033025
 
Unidad2tema2 210404032945
Unidad2tema2 210404032945Unidad2tema2 210404032945
Unidad2tema2 210404032945
 
Unidad2tema1 210404032722
Unidad2tema1 210404032722Unidad2tema1 210404032722
Unidad2tema1 210404032722
 
Unidad1tema3 210404032226
Unidad1tema3 210404032226Unidad1tema3 210404032226
Unidad1tema3 210404032226
 
Uniad1tema2 210404031921
Uniad1tema2 210404031921Uniad1tema2 210404031921
Uniad1tema2 210404031921
 
Unidad1tema1 210404030858
Unidad1tema1 210404030858Unidad1tema1 210404030858
Unidad1tema1 210404030858
 
Unidad3tema2 210404034356
Unidad3tema2 210404034356Unidad3tema2 210404034356
Unidad3tema2 210404034356
 
Unidad3tema1 210404035121
Unidad3tema1 210404035121Unidad3tema1 210404035121
Unidad3tema1 210404035121
 
Unidad4tema4 210404040205
Unidad4tema4 210404040205Unidad4tema4 210404040205
Unidad4tema4 210404040205
 
Unidad4tema4 210404040205
Unidad4tema4 210404040205Unidad4tema4 210404040205
Unidad4tema4 210404040205
 
Unidad4tema4 210404040205
Unidad4tema4 210404040205Unidad4tema4 210404040205
Unidad4tema4 210404040205
 
Unidad4tema3 210404035907
Unidad4tema3 210404035907Unidad4tema3 210404035907
Unidad4tema3 210404035907
 

Último

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Último (10)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

PROGRAMACIÓN ESTRUCTURADA-Evelyn Suquillo-2C-003

  • 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