SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Proporcionar al futuro docente las
herramientas básicas que le permitan
diseñar programas, propiedades y
conceptos de programación orientada a
objeto y de programación por eventos.
ESTRUCTURA DE DATOS Y
PROGRAMACIÓN III
 Implementar los conceptos de herencia y polimorfismo
en la programación de aplicaciones informáticas en el
lenguaje seleccionado.
OBJETIVO GENERAL
OBJETIVOS ESPECÍFICOS
 Conocer y estudiar concepto de Herencia en la POO
 Definir y usar clases abstractas.
 Conocer el uso de las interfaces en la POO.
 Conocer y analizar la Sobrecarga de Métodos.
Conocer y estudiar concepto de Polimorfismo en la POO
La herencia, uno de los pilares que fundamentan la POO,
es un mecanismo de la programación orientada a objetos que
permite que una clase herede propiedades y características de una
clase padre.
En otras palabras, se pueden crear nuevas clases a partir
de clases existentes, definiendo así, nuevas propiedades y
características propias que sean más específicas para la clase hija.
HERENCIA
Vehículo
Carro
Bicicleta Moto
Camión
-Clases derivadas.
-Clases Hijas
-SubClases
-Clases Base
-Clase Padre
-SuperClase
HERENCIA - EJEMPLO
Del mismo modo, la herencia hace referencia a la relación
que existe entre lo general y lo específico, es decir:
Generalización Especialización
Las clases padres,
representan lo
mas general de la
implementación
Las clases hijas,
representan lo
mas especifico de
la implementación
heredada de la
clase padre
Herencia
HERENCIA
Clase Padre
Atributos clase
padre
Métodos clase padre
Clase Hija1
Atributos Propios de
Clase Hija 1
Métodos Propios de
Clase Hija 1
Clase Hija2
Atributos Propios de
Clase Hija 2
Métodos Propios de
Clase Hija 2
Los atributos y
métodos de las
clases hijas,
especifican sus
características y
comportamiento
HERENCIA
Tipos de Herencia
Herencia Simple Herencia Múltiple
La clase hija, hereda los
atributos y operaciones de
la clase padre o super
clase
La clase hija puede
heredar atributos y
operaciones de dos o mas
clases padres.
La herencia múltiple, no es soportado por todos los
lenguajes de programación debido a inconvenientes y malas
prácticas. (Sólo es soportada por C++).
Java y C# no soportan la herencia múltiple.
HERENCIA - TIPOS
HERENCIA - VENTAJAS
Ventajas de la Herencia
Reutilización de Código
Las clases heredadas reutilizan el código
de las clases padres.
Evita la Duplicidad
Evita que las clases similares tengan que
implementar el mismo código en común.
Mayor fiabilidad
La fiabilidad posibilita encontrar errores
más fácilmente. Mejora el
mantenimiento.
Ocultación de Información
Los modificadores de acceso permiten
establecer la visibilidad de los elementos.
Mejora el Desarrollo
El ahorro de código permite ganar
tiempo y esfuerzo en el desarrollo.
MODIFICADORES DE ACCESO
Tipo de
Elemento
Accesible a
Clases Hijas
Accesible a
otras Clases
Acceso a
Paquetes
publico Si Si Si
protegido Si No Si
privado No No No
default Si Si No
Los modificadores de la accesibilidad permite determinar el
acceso a los elementos de una clase, si son visibles o no, hacia
otras clases.
Van resumidas en la siguiente tabla:
Resumen:
1. Los elementos públicos puden ser visibles de cualquier parte.
2. Los elementos protegidos solo por la misma clase y sus clases hijas.
3. Los elementos privados solo pueden ser vistos desde la misma clase.
4. Los elementos por defecto son visibles por las clases del mismo paquete.
Animal
Oso
León Tiburón
Mono
-Clases derivadas de la clase
Animal
-Especialización
-Clases Base
-Generalización
En POO, la herencia es una relación
“Es un” o “Es de tipo”:
-Oso es un Animal
-León es de tipo Animal
-Tiburón es un Animal
-Mono es de tipo Animal
HERENCIA - EJEMPLO
Motor
caballosFuerza
peso
tamaño
+ encender
+ apagar
MotorElectrico
- consumo
+ mostrarConsumo
MotorCombustion
- presion
+ mostrarPresion
Atributos y métodos
propios de la clase Motor Eléctrico
Atributos y métodos
propios de la clase Motor
Combustión
HERENCIA - EJEMPLO
Animal
- nombre
- peso
- tamaño
+ caminar
+ dormir
+ comer
Perro
- raza
- pelaje
+ ladrar( )
Tiburón
- tipo
-Habitad
+ nadar( )
+ cazar ( )
Se pueden añadir todos los atributos y
métodos necesarios para especificar la clase
derivada.
HERENCIA - EJEMPLO
public class Perro extends Animal{
//Declaraciones publicas
//Declaraciones privadas
public Perro(){
super();
}
}
En java, la declaración sería así: la palabra
reservada extends, indica que la clase es
extensión o es de tipo la clase base.
La palabra reservada super(); indica el
llamado al método constructor de la clase
padre o super clase.
HERENCIA - DECLARACIÓN
public class Animal{
//Declaraciones publicas
//Declaraciones privadas
public Animal(){
}
}
public class Perro extends Animal{
//Declaraciones publicas
//Declaraciones privadas
public Perro(){
super();
}
}
Clase Animal,
clase padre o
super clase
Clase Perro, clase
hija de la clase
Animal
Llamada al método
constructor de la
clase Padre
HERENCIA - DECLARACIÓN
public class Motor{
int caballos;
int peso
int tamaño
public Motor(int caballos, int peso, int tamaño){
this.caballos = caballos;
this.peso = peso;
this.tamaño = tamaño;
}
public String encender(){
return “El motor ha sido encendido!”;
}
public String apagar(){
return “El motor ha sido apagado”;
}
}
Motor
caballosFuerza
peso
tamaño
+ encender
+ apagar
El constructor de
la clase padre con
parámetros
Nota: los atributos y métodos declarados de forma
private, no son heredados por las clases derivadas
HERENCIA – EJEMPLO 1
public class MotorElectrico extends Motor{
private int consumo;
public MotorElectrico(int caballos, int peso,
int tamaño, int consumo){
this.consumo = consumo;
super(caballos,peso,tamaño);
}
public int mostrarConsumo (){
return consumo;
}
} MotorElectrico
- consumo
+ mostrarConsumo
Llamado al
constructor del
padre con sus
respectivos
parámetros.
HERENCIA – EJEMPLO 1
public class MotorCombustion extends Motor{
private int presion;
public MotorElectrico(int caballos, int peso,
int tamaño, int presion){
this.presion = presion;
super(caballos,peso,tamaño);
}
public int mostrarPresion (){
return presion;
}
}
MotorCombustion
- presion
+ mostrarPresion
Llamado al
constructor del
padre con sus
respectivos
parámetros.
HERENCIA – EJEMPLO 1
public class Programa{
public static void main(String [] args){
Motor motor1 = new MotorElectrico(30,50,20,5);
Motor motor2 = new MotorCombustion(200,300,150,45);
System.out.prinln(“Encendiendo el Motor
”+motor1.encender());
System.out.prinln(“Encendiendo el Motor
”+motor2.encender());
System.out.prinln(“El consumo del motor eléctrico
es: ”+motor1.mostrarConsumo());
System.out.prinln(“La presión del motor a combustion
es: ”+motor2.mostrarPresion());
System.out.prinln(“Apagando motor1: ” +motor1.apagar());
System.out.prinln(“Apagando motor2: ” +motor2.apagar());
}//Fin del método main
}//Fin del programa
HERENCIA – EJEMPLO 1
Realice una aplicación en Java, que permita crear objetos de tipo
Persona y objetos de tipo Obrero, Ingeniero, Docente y Estudiante
que hereden de la clase Persona.
HERENCIA – EJERCICIO PROPUESTO
Una clase abstracta, es aquella que representa una clase que
define los atributos y el comportamiento básico para otras clases.
Una clase abstracta, no se puede instanciar, es decir, que no se
pueden crear objetos de una clase abstracta.
Una clase que abstracta debe poseer operaciones o métodos
abstractos.
Una clase que posea un método abstracto, se considera una
clase abstracta.
Las métodos abstractos no poseen implementación, es decir
solo se declaran.
Las clases abstractas son ideales para definir Super clases o
clases Padres.
CLASE ABSTRACTA
Imaginemos que tenemos la clase abstracta Profesor, de la
cual se crearan otras clases como ProfesorInstructor y Profesor Titular.
Para ello la sintaxis sería la siguiente:
CLASE ABSTRACTA - EJEMPLO
Public abstract class Profesor{
protected String nombre;
protected int edad;
public Profesor(String nombre, int edad){
this.nombre = nombre;
this.edad = edad;
}
public String getNombre(){
return nombre;
}
abstract public calcularSueldo(){
}
}
Una interfaz es una colección de propiedades y
métodos abstractos donde se especifica el qué debe hacer pero
no el cómo lo debe hacer, es decir, no se hace la
implementación.
En otras palabras, se podría describir como una lista
de acciones que deben ser implementadas en un objeto.
Las clases que implementen la interfaz, son las que
describirán e implementaran el código de los métodos
abstractos de la misma.
INTERFACES
Las interfaces son muy similares a las clases, con la
diferencia que no se usa la clausula class, sino interface.
Las interfaces no tienen ni constructor ni métodos
implementados, solo declaraciones.
La sintaxis es la siguiente:
INTERFACES
public interface AccionesDocentes{
public final int canEstudiantes = 50;
public String darClases();
public String corregirExamenes();
public String darNotas();
}
Existe diversas diferencias entre las interfaces y las
clases abstractas, se presentan a continuación.
INTERFACES Y LAS CLASES
ABSTRACTAS
Clase Abstracta Interfaz
Una clase puede heredar solo una clase
abstracta.
Una clase puede implementar una o
varias interfaces.
Una clase hereda los métodos
implementados por la clase abstracta.
Una clase no hereda los métodos
implementados en la interfaz.
Requiere de la herencia para que un
objeto pueda implementar sus
elementos.
Proporciona la encapsulación de los
métodos sin necesidad de la herencia.
El polimorfismo permite básicamente distintos comportamientos
para un método dependiendo de la clase donde estén definidos.
“La propiedad de polimorfismo es aquella en que una operación
tiene el mismo nombre en diferentes clases, pero se ejecuta de diferentes
formas en cada clase”
Joyanes Aquilar
Por ejemplo la operación “abrir” tiene una acción distinta si se
trata de abrir una puerta, abrir un libro o abrir una cuenta.
POLIMORFISMO
Figura
- color
+ calcularArea
Cuadrado
- lado
+ calcularArea
Circulo
- radio
+ calcularArea
Para el cálculo del área de una figura
cuadrada, es necesario implementar la
siguiente fórmula: Area = L2.
Para el cálculo del área de un circulo, es
necesario implementar la siguiente
fórmula: Area = Pi * R2.
POLIMORFISMO - EJEMPLO
POLIMORFISMO - EJEMPLO
public class Programa{
public static void main (String [] args){
Figura redonda;
Figura cuadrada;
int radio = 5;
int lado = 10;
redonda = new Circulo(radio);
cuadrada = new Cuadrado(lado);
int areaCirculo = redonda.calcularArea();
int areaCuadrado = cuadrada.calcularArea();
System.out.println(“El área del circulo es: “+areaCirculo);
System.out.println(“El área del cuadrado es: “+areaCirculo);
}
}
Declaración de variables
de la clase figura.
Creación de los Objetos
según sus características
Llamado al
método calcular
área
SOBRE-ESCRIBIR O REDEFINIR UN
MÉTODO
public class Esfera {
double radio;
void mostrarValores() {
System.out.println("R=" + radio);
}
}
class Planeta extends Esfera {
int numSatelites;
void mostrarValores() {
System.out.println("R=" + radio + "Num.
Sat.=" + numSatelites);
}
}
Redefinición o sobre-
escritura del método
mostrarValores()
Cuando se habla de sobre-escritura o redefinición de un método, se
habla de modificar la implementación del mismo de ser necesario en la clase
hija, por ejemplo:
SOBRE-ESCRIBIR O REDEFINIR UN
MÉTODO
public class Esfera {
double radio;
void mostrarValores() {
System.out.println("R=" + radio);
}
}
class Planeta extends Esfera {
int numSatelites;
void mostrarValores() {
System.out.println("R=" + radio + "Num.
Sat.=" + numSatelites);
}
}
Redefinición o sobre-
escritura del método
mostrarValores()
Cuando se habla de sobre-escritura o redefinición de un método, se
habla de modificar la implementación del mismo de ser necesario en la clase
hija, por ejemplo:
SOBRECARGA DE UN MÉTODO
public class Articulo{
private float precio;
public void setPrecio(){
precio = 3.50;
}
public void setPrecio(float nuevoPrecio){
precio = nuevoPrecio;
}
}
Sobrecarga del Método
setPrecio en la clase
Articulo
Cuando se habla de sobrecarga de un método, se habla de
implementar mas de un método con el mismo nombre dentro de la misma
clase pero con parámetros e implementaciones diferentes entre sí.
SOBRECARGA DE UN CONSTRUCTOR
public class Articulo{
private String nombre;
private float precio;
public Articulo(String nombre){
this.nombre = nombre;
precio = 3.50;
}
public Articulo(float nuevoPrecio, String nombre){
precio = nuevoPrecio;
this.nombre = nombre;
}
public Articulo(){
precio = 3.50;
nombre = “Sin Nombre”;
}
}
Sobrecarga del Método
constructor en la clase
Articulo
Cuando se habla de sobrecarga de un constructor, se habla de
implementar mas de un método constructor dentro de la misma clase pero
con parámetros e implementaciones diferentes entre sí.
Realice una aplicación en Java, que permita crear una clase abstracta
de tipo Figura y objetos de tipo Circulo, Cuadrado y Triángulo que
hereden de la clase Figura e implementar métodos abstractos
calcular área y mostrar figura.
HERENCIA – EJERCICIO PROPUESTO
REFERENCIAS
JOYANES A. Luis (2008). FUNDAMENTOS DE PROGRAMACIÓN.
Algoritmos, Estructura de Datos y Objetos.
Cuarta Edición. Madrid España: McGRAW-HILL
Llobet A. Rafael (2009). INTRODUCCIÓN A LA PROGRAMACIÓN
ORIENTADA A OBJETOS CON JAVA.
Primera Edición. Valencia España: Departamento de Sistemas Informáticos
y Computación Universidad Politécnica de Valencia

Más contenido relacionado

Similar a Programacion 3 unidad ii

Similar a Programacion 3 unidad ii (20)

Guía Herencia PO_O
Guía Herencia PO_OGuía Herencia PO_O
Guía Herencia PO_O
 
JAVA- basico
JAVA- basicoJAVA- basico
JAVA- basico
 
Guia poo php
Guia poo phpGuia poo php
Guia poo php
 
POO-3-Herencia-10-11.pdf
POO-3-Herencia-10-11.pdfPOO-3-Herencia-10-11.pdf
POO-3-Herencia-10-11.pdf
 
Poo 3-herencia-10-11
Poo 3-herencia-10-11Poo 3-herencia-10-11
Poo 3-herencia-10-11
 
Guía PHP Orientado a Objeto con MVC
Guía PHP Orientado a Objeto con MVC Guía PHP Orientado a Objeto con MVC
Guía PHP Orientado a Objeto con MVC
 
Unidad_01_04.pdf
Unidad_01_04.pdfUnidad_01_04.pdf
Unidad_01_04.pdf
 
Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)
 
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
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
 
Herencia
HerenciaHerencia
Herencia
 
Investigacion v unidad
Investigacion v unidadInvestigacion v unidad
Investigacion v unidad
 
JAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIAJAVA 00 - TEMA 05 - HERENCIA
JAVA 00 - TEMA 05 - HERENCIA
 
JAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptxJAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptx
 
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
 
Laboratorio interfaces
Laboratorio interfacesLaboratorio interfaces
Laboratorio interfaces
 
Herencia
HerenciaHerencia
Herencia
 
Abstral herencias
Abstral herenciasAbstral herencias
Abstral herencias
 

Último

Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
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
 
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
 
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
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
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
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
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
 
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
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
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
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 

Último (19)

Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
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)
 
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
 
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
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
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
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
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
 
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...
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
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
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 

Programacion 3 unidad ii

  • 1. Proporcionar al futuro docente las herramientas básicas que le permitan diseñar programas, propiedades y conceptos de programación orientada a objeto y de programación por eventos. ESTRUCTURA DE DATOS Y PROGRAMACIÓN III
  • 2.  Implementar los conceptos de herencia y polimorfismo en la programación de aplicaciones informáticas en el lenguaje seleccionado. OBJETIVO GENERAL OBJETIVOS ESPECÍFICOS  Conocer y estudiar concepto de Herencia en la POO  Definir y usar clases abstractas.  Conocer el uso de las interfaces en la POO.  Conocer y analizar la Sobrecarga de Métodos. Conocer y estudiar concepto de Polimorfismo en la POO
  • 3. La herencia, uno de los pilares que fundamentan la POO, es un mecanismo de la programación orientada a objetos que permite que una clase herede propiedades y características de una clase padre. En otras palabras, se pueden crear nuevas clases a partir de clases existentes, definiendo así, nuevas propiedades y características propias que sean más específicas para la clase hija. HERENCIA
  • 4. Vehículo Carro Bicicleta Moto Camión -Clases derivadas. -Clases Hijas -SubClases -Clases Base -Clase Padre -SuperClase HERENCIA - EJEMPLO
  • 5. Del mismo modo, la herencia hace referencia a la relación que existe entre lo general y lo específico, es decir: Generalización Especialización Las clases padres, representan lo mas general de la implementación Las clases hijas, representan lo mas especifico de la implementación heredada de la clase padre Herencia HERENCIA
  • 6. Clase Padre Atributos clase padre Métodos clase padre Clase Hija1 Atributos Propios de Clase Hija 1 Métodos Propios de Clase Hija 1 Clase Hija2 Atributos Propios de Clase Hija 2 Métodos Propios de Clase Hija 2 Los atributos y métodos de las clases hijas, especifican sus características y comportamiento HERENCIA
  • 7. Tipos de Herencia Herencia Simple Herencia Múltiple La clase hija, hereda los atributos y operaciones de la clase padre o super clase La clase hija puede heredar atributos y operaciones de dos o mas clases padres. La herencia múltiple, no es soportado por todos los lenguajes de programación debido a inconvenientes y malas prácticas. (Sólo es soportada por C++). Java y C# no soportan la herencia múltiple. HERENCIA - TIPOS
  • 8. HERENCIA - VENTAJAS Ventajas de la Herencia Reutilización de Código Las clases heredadas reutilizan el código de las clases padres. Evita la Duplicidad Evita que las clases similares tengan que implementar el mismo código en común. Mayor fiabilidad La fiabilidad posibilita encontrar errores más fácilmente. Mejora el mantenimiento. Ocultación de Información Los modificadores de acceso permiten establecer la visibilidad de los elementos. Mejora el Desarrollo El ahorro de código permite ganar tiempo y esfuerzo en el desarrollo.
  • 9. MODIFICADORES DE ACCESO Tipo de Elemento Accesible a Clases Hijas Accesible a otras Clases Acceso a Paquetes publico Si Si Si protegido Si No Si privado No No No default Si Si No Los modificadores de la accesibilidad permite determinar el acceso a los elementos de una clase, si son visibles o no, hacia otras clases. Van resumidas en la siguiente tabla: Resumen: 1. Los elementos públicos puden ser visibles de cualquier parte. 2. Los elementos protegidos solo por la misma clase y sus clases hijas. 3. Los elementos privados solo pueden ser vistos desde la misma clase. 4. Los elementos por defecto son visibles por las clases del mismo paquete.
  • 10. Animal Oso León Tiburón Mono -Clases derivadas de la clase Animal -Especialización -Clases Base -Generalización En POO, la herencia es una relación “Es un” o “Es de tipo”: -Oso es un Animal -León es de tipo Animal -Tiburón es un Animal -Mono es de tipo Animal HERENCIA - EJEMPLO
  • 11. Motor caballosFuerza peso tamaño + encender + apagar MotorElectrico - consumo + mostrarConsumo MotorCombustion - presion + mostrarPresion Atributos y métodos propios de la clase Motor Eléctrico Atributos y métodos propios de la clase Motor Combustión HERENCIA - EJEMPLO
  • 12. Animal - nombre - peso - tamaño + caminar + dormir + comer Perro - raza - pelaje + ladrar( ) Tiburón - tipo -Habitad + nadar( ) + cazar ( ) Se pueden añadir todos los atributos y métodos necesarios para especificar la clase derivada. HERENCIA - EJEMPLO
  • 13. public class Perro extends Animal{ //Declaraciones publicas //Declaraciones privadas public Perro(){ super(); } } En java, la declaración sería así: la palabra reservada extends, indica que la clase es extensión o es de tipo la clase base. La palabra reservada super(); indica el llamado al método constructor de la clase padre o super clase. HERENCIA - DECLARACIÓN
  • 14. public class Animal{ //Declaraciones publicas //Declaraciones privadas public Animal(){ } } public class Perro extends Animal{ //Declaraciones publicas //Declaraciones privadas public Perro(){ super(); } } Clase Animal, clase padre o super clase Clase Perro, clase hija de la clase Animal Llamada al método constructor de la clase Padre HERENCIA - DECLARACIÓN
  • 15. public class Motor{ int caballos; int peso int tamaño public Motor(int caballos, int peso, int tamaño){ this.caballos = caballos; this.peso = peso; this.tamaño = tamaño; } public String encender(){ return “El motor ha sido encendido!”; } public String apagar(){ return “El motor ha sido apagado”; } } Motor caballosFuerza peso tamaño + encender + apagar El constructor de la clase padre con parámetros Nota: los atributos y métodos declarados de forma private, no son heredados por las clases derivadas HERENCIA – EJEMPLO 1
  • 16. public class MotorElectrico extends Motor{ private int consumo; public MotorElectrico(int caballos, int peso, int tamaño, int consumo){ this.consumo = consumo; super(caballos,peso,tamaño); } public int mostrarConsumo (){ return consumo; } } MotorElectrico - consumo + mostrarConsumo Llamado al constructor del padre con sus respectivos parámetros. HERENCIA – EJEMPLO 1
  • 17. public class MotorCombustion extends Motor{ private int presion; public MotorElectrico(int caballos, int peso, int tamaño, int presion){ this.presion = presion; super(caballos,peso,tamaño); } public int mostrarPresion (){ return presion; } } MotorCombustion - presion + mostrarPresion Llamado al constructor del padre con sus respectivos parámetros. HERENCIA – EJEMPLO 1
  • 18. public class Programa{ public static void main(String [] args){ Motor motor1 = new MotorElectrico(30,50,20,5); Motor motor2 = new MotorCombustion(200,300,150,45); System.out.prinln(“Encendiendo el Motor ”+motor1.encender()); System.out.prinln(“Encendiendo el Motor ”+motor2.encender()); System.out.prinln(“El consumo del motor eléctrico es: ”+motor1.mostrarConsumo()); System.out.prinln(“La presión del motor a combustion es: ”+motor2.mostrarPresion()); System.out.prinln(“Apagando motor1: ” +motor1.apagar()); System.out.prinln(“Apagando motor2: ” +motor2.apagar()); }//Fin del método main }//Fin del programa HERENCIA – EJEMPLO 1
  • 19. Realice una aplicación en Java, que permita crear objetos de tipo Persona y objetos de tipo Obrero, Ingeniero, Docente y Estudiante que hereden de la clase Persona. HERENCIA – EJERCICIO PROPUESTO
  • 20. Una clase abstracta, es aquella que representa una clase que define los atributos y el comportamiento básico para otras clases. Una clase abstracta, no se puede instanciar, es decir, que no se pueden crear objetos de una clase abstracta. Una clase que abstracta debe poseer operaciones o métodos abstractos. Una clase que posea un método abstracto, se considera una clase abstracta. Las métodos abstractos no poseen implementación, es decir solo se declaran. Las clases abstractas son ideales para definir Super clases o clases Padres. CLASE ABSTRACTA
  • 21. Imaginemos que tenemos la clase abstracta Profesor, de la cual se crearan otras clases como ProfesorInstructor y Profesor Titular. Para ello la sintaxis sería la siguiente: CLASE ABSTRACTA - EJEMPLO Public abstract class Profesor{ protected String nombre; protected int edad; public Profesor(String nombre, int edad){ this.nombre = nombre; this.edad = edad; } public String getNombre(){ return nombre; } abstract public calcularSueldo(){ } }
  • 22. Una interfaz es una colección de propiedades y métodos abstractos donde se especifica el qué debe hacer pero no el cómo lo debe hacer, es decir, no se hace la implementación. En otras palabras, se podría describir como una lista de acciones que deben ser implementadas en un objeto. Las clases que implementen la interfaz, son las que describirán e implementaran el código de los métodos abstractos de la misma. INTERFACES
  • 23. Las interfaces son muy similares a las clases, con la diferencia que no se usa la clausula class, sino interface. Las interfaces no tienen ni constructor ni métodos implementados, solo declaraciones. La sintaxis es la siguiente: INTERFACES public interface AccionesDocentes{ public final int canEstudiantes = 50; public String darClases(); public String corregirExamenes(); public String darNotas(); }
  • 24. Existe diversas diferencias entre las interfaces y las clases abstractas, se presentan a continuación. INTERFACES Y LAS CLASES ABSTRACTAS Clase Abstracta Interfaz Una clase puede heredar solo una clase abstracta. Una clase puede implementar una o varias interfaces. Una clase hereda los métodos implementados por la clase abstracta. Una clase no hereda los métodos implementados en la interfaz. Requiere de la herencia para que un objeto pueda implementar sus elementos. Proporciona la encapsulación de los métodos sin necesidad de la herencia.
  • 25. El polimorfismo permite básicamente distintos comportamientos para un método dependiendo de la clase donde estén definidos. “La propiedad de polimorfismo es aquella en que una operación tiene el mismo nombre en diferentes clases, pero se ejecuta de diferentes formas en cada clase” Joyanes Aquilar Por ejemplo la operación “abrir” tiene una acción distinta si se trata de abrir una puerta, abrir un libro o abrir una cuenta. POLIMORFISMO
  • 26. Figura - color + calcularArea Cuadrado - lado + calcularArea Circulo - radio + calcularArea Para el cálculo del área de una figura cuadrada, es necesario implementar la siguiente fórmula: Area = L2. Para el cálculo del área de un circulo, es necesario implementar la siguiente fórmula: Area = Pi * R2. POLIMORFISMO - EJEMPLO
  • 27. POLIMORFISMO - EJEMPLO public class Programa{ public static void main (String [] args){ Figura redonda; Figura cuadrada; int radio = 5; int lado = 10; redonda = new Circulo(radio); cuadrada = new Cuadrado(lado); int areaCirculo = redonda.calcularArea(); int areaCuadrado = cuadrada.calcularArea(); System.out.println(“El área del circulo es: “+areaCirculo); System.out.println(“El área del cuadrado es: “+areaCirculo); } } Declaración de variables de la clase figura. Creación de los Objetos según sus características Llamado al método calcular área
  • 28. SOBRE-ESCRIBIR O REDEFINIR UN MÉTODO public class Esfera { double radio; void mostrarValores() { System.out.println("R=" + radio); } } class Planeta extends Esfera { int numSatelites; void mostrarValores() { System.out.println("R=" + radio + "Num. Sat.=" + numSatelites); } } Redefinición o sobre- escritura del método mostrarValores() Cuando se habla de sobre-escritura o redefinición de un método, se habla de modificar la implementación del mismo de ser necesario en la clase hija, por ejemplo:
  • 29. SOBRE-ESCRIBIR O REDEFINIR UN MÉTODO public class Esfera { double radio; void mostrarValores() { System.out.println("R=" + radio); } } class Planeta extends Esfera { int numSatelites; void mostrarValores() { System.out.println("R=" + radio + "Num. Sat.=" + numSatelites); } } Redefinición o sobre- escritura del método mostrarValores() Cuando se habla de sobre-escritura o redefinición de un método, se habla de modificar la implementación del mismo de ser necesario en la clase hija, por ejemplo:
  • 30. SOBRECARGA DE UN MÉTODO public class Articulo{ private float precio; public void setPrecio(){ precio = 3.50; } public void setPrecio(float nuevoPrecio){ precio = nuevoPrecio; } } Sobrecarga del Método setPrecio en la clase Articulo Cuando se habla de sobrecarga de un método, se habla de implementar mas de un método con el mismo nombre dentro de la misma clase pero con parámetros e implementaciones diferentes entre sí.
  • 31. SOBRECARGA DE UN CONSTRUCTOR public class Articulo{ private String nombre; private float precio; public Articulo(String nombre){ this.nombre = nombre; precio = 3.50; } public Articulo(float nuevoPrecio, String nombre){ precio = nuevoPrecio; this.nombre = nombre; } public Articulo(){ precio = 3.50; nombre = “Sin Nombre”; } } Sobrecarga del Método constructor en la clase Articulo Cuando se habla de sobrecarga de un constructor, se habla de implementar mas de un método constructor dentro de la misma clase pero con parámetros e implementaciones diferentes entre sí.
  • 32. Realice una aplicación en Java, que permita crear una clase abstracta de tipo Figura y objetos de tipo Circulo, Cuadrado y Triángulo que hereden de la clase Figura e implementar métodos abstractos calcular área y mostrar figura. HERENCIA – EJERCICIO PROPUESTO
  • 33. REFERENCIAS JOYANES A. Luis (2008). FUNDAMENTOS DE PROGRAMACIÓN. Algoritmos, Estructura de Datos y Objetos. Cuarta Edición. Madrid España: McGRAW-HILL Llobet A. Rafael (2009). INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA. Primera Edición. Valencia España: Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia