SlideShare una empresa de Scribd logo
1 de 25
SOBRECARGA DE MÉTODOS
EN JAVA
El concepto de Java Sobrecarga de métodos es uno de
los conceptos más clásicos de programación . La
sobrecarga hace referencia a un método al cual se le
pueden pasar diferentes tipos o números de
argumentos. Vamos a verlo a través de ejemplos
sencillos. Para ello partiremos de dos clases . La clase
Bolsa y la clase Producto. Una Bolsa contiene varios
productos.
package com.arquitecturajava;
public class Producto {
private String nombre;
private double precio;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public double getPrecio() {
return precio;
}
public void setPrecio(double precio) {
this.precio = precio;
}
public Producto(String nombre, double precio) {
super();
this.nombre = nombre;
this.precio = precio;
}
}
package com.arquitecturajava;
import java.util.ArrayList;
import java.util.List;
public class Bolsa {
private List<Producto> lista = new
ArrayList<Producto>();
public void addProducto(Producto p) {
lista.add(p);
}
}
1. Cómo sobrecargar un método
En general, para sobrecargar un método, simplemente declare versiones diferentes de él. El compilador se
ocupa del resto. Debe observar una restricción importante: el tipo y/o el número de parámetros de cada
método sobrecargado debe diferir. No es suficiente que dos métodos difieran solo en sus tipos de devolución.
Los tipos de devolución no proporcionan información suficiente en todos los casos para que Java decida qué
método utilizar.
Por supuesto, los métodos sobrecargados también pueden diferir en sus tipos de devolución. Cuando se llama
a un método sobrecargado, se ejecuta la versión del método cuyos parámetros coinciden con los argumentos.
Aquí hay un ejemplo simple que ilustra la sobrecarga de métodos:
Salida
Como puede ver, está sobrecargado cuatro veces. La primera versión no toma parámetros, la
segunda toma un parámetro entero, la tercera toma dos parámetros enteros (int), y la cuarta toma
dos parámetros double.
Observe que las primeras dos versiones de ovlDemo() no devuelven nada, y las otras dos devuelven
un valor. Esto es perfectamente válido, pero tal como se explicó, la sobrecarga no se ve afectada en
un sentido u otro por el tipo de devolución de un método. Por lo tanto, intentar utilizar las dos
versiones siguientes de provocará un error:
2. Conversiones de tipo automáticas
Como recordará anteriormente en Conversión de tipos de datos, Java proporciona ciertas conversiones
de tipo automáticas. Estas conversiones también se aplican a los parámetros de métodos
sobrecargados. Por ejemplo, considere lo siguiente:
Salida
En este ejemplo, sólo dos versiones de están definidos: uno que tiene un parámetro de tipo int y otro que
tiene un tipo double. Sin embargo, es posible pasar un valor de tipo byte, short, o float a . En el caso
de byte y short, Java automáticamente convierte a int. Así, mitipo(int) se invoca. En el caso de la float, el
valor se convierte a double y mitipo(double) es llamado.
Es importante entender, sin embargo, que la conversión automática sólo se aplican si no hay ninguna
coincidencia directa entre un parámetro y argumento. Por ejemplo, aquí está el programa anterior con la
adición de una versión de f ( ), que especifica un parámetro byte:
Salida
3. Introducción a Polimorfismo
La sobrecarga de métodos soporta el polimorfismo porque es una de las formas en que Java
implementa el paradigma de “una interfaz, múltiples métodos“.
Para comprender cómo, considere lo siguiente: En los lenguajes que no admiten la sobrecarga de
métodos, a cada método se le debe asignar un nombre único. Sin embargo, frecuentemente querrá
implementar esencialmente el mismo método para diferentes tipos de datos.
Considere la función de valor absoluto. En los lenguajes que no admiten la sobrecarga, usualmente
hay tres o más versiones de esta función, cada una con un nombre ligeramente diferente. Por
ejemplo, en C, la función abs() devuelve el valor absoluto de un entero, labs() devuelve el valor
absoluto de un entero largo, y fabs() devuelve el valor absoluto de un valor de coma flotante. Como C
no admite sobrecarga, cada función debe tener su propio nombre, aunque las tres funciones hacen
esencialmente lo mismo.
Esto hace que la situación sea más compleja, conceptualmente, de lo que realmente es. Aunque el
concepto subyacente de cada función es el mismo, todavía tiene tres nombres para recordar. Esta
situación no ocurre en Java, porque cada método de valor absoluto puede usar el mismo nombre.
De hecho, la biblioteca de clases estándar de Java incluye un método de valor absoluto,
llamado abs(). Este método está sobrecargado por la clase Math de Java para manejar todos los
tipos numéricos. Java determina qué versión de abs() llamar en función del tipo de argumento.
El método addProducto
Estamos ante una situación muy sencilla con la clase Bolsa que contiene una lista de Productos y
para añadir elementos a la bolsa incorpora el método addProducto
public void addProducto(Producto p) {
lista.add(p);
}
Este método es elemental y simplemente añade nuevos Productos a la Bolsa. no hace nada más
Java Sobrecarga de métodos
Vamos a sobrecargarlo y generar un método con el mismo nombre pero diferente tipo de argumentos
que nos permita por ejemplo añadir también un Producto pero pasándole el concepto y el importe.
Esta es la sobrecarga más sencilla ya que simplemente cambiamos el tipo de parámetros pero
seguimos añadiendo el mismo concepto a la lista un producto.
public void addProducto(String nombre, double precio) {
lista.add(new Producto(nombre, precio));
}
El programa principal gana en flexibilidad y permite las dos opciones
package com.arquitecturajava;
public class Principal {
public static void main(String[] args) {
Producto p1= new Producto ("galletas",3);
Bolsa b= new Bolsa();
b.addProducto(p1);
b.addProducto("chocolate",4);
}
}
Otras Sobrecargas
No solo esta sobrecarga es posible sino que ademas podríamos añadir otras que nos permitan una mayor
flexibilidad. Por ejemplo podemos añadir un método que nos permita pasar como parámetro una lista de
Productos y añadirlos todos de golpe. Este método no se podrá denominar addProducto ya que este indica
que solo añade uno . Se tendrá que denominar addProductos por lo tanto “no es una sobrecarga” pero si
añade flexibilidad al código:
public void addProductos(List<Producto> productos) {
lista.addAll(productos);
}
Java varargs
¿Cómo podemos sobrecargarle ? . Bueno podemos usar las capacidades de varargs de Java y
añadir una sobrecarga que nos permita pasar varios productos de forma manual.
public void addProductos(Producto... productos) {
for (Producto f : productos) {
lista.add(f);
}
}
Vamos a ver cómo usar ambos.
package com.arquitecturajava;
import java.util.ArrayList;
import java.util.List;
public class Principal {
public static void main(String[] args) {
Producto p1= new Producto ("galletas",3);
Bolsa b= new Bolsa();
b.addProducto(p1);
b.addProducto("chocolate",4);
List<Producto> productos= new ArrayList<Producto>();
productos.add(new Producto("pan",2));
productos.add(new Producto("leche",3));
b.addProductos(productos);
b.addProductos(new Producto("pizza",5),new Producto("lechuga",3));
}
}
Acabamos de sobrecargar otro método en nuestra clase Bolsa y disponemos de dos
implementaciones
Java Sobrecarga y Constructores
El concepto de sobrecarga también se suele aplicar a los constructores ya que estos no son ni
más ni menos que métodos de la clase . En nuestro caso podríamos decidir que la Bolsa
cuando se crea se le pueda pasar una lista inicial de productos.
package com.arquitecturajava;
import java.util.ArrayList;
import java.util.List;
public class Bolsa {
private List<Producto> lista = new ArrayList<Producto>();
public Bolsa() {
super();
}
public Bolsa(List<Producto> lista) {
super();
this.lista = lista;
}
public void addProducto(Producto p) {
lista.add(p);
}
public void addProducto(String nombre, double precio) {
lista.add(new Producto(nombre, precio));
}
public void addProductos(List<Producto> productos) {
lista.addAll(productos);
}
public void addProductos(Producto... productos) {
for (Producto f : productos) {
lista.add(f);
}
}
}
https://www.youtube.com/watch?v=qHy
w-9CxXVs
VIDEO
DEMOSTRATIVO

Más contenido relacionado

Similar a METODO DE SOBRECARGA EN PROGRAMACION.pptx

Similar a METODO DE SOBRECARGA EN PROGRAMACION.pptx (20)

1 -programacion_oo
1  -programacion_oo1  -programacion_oo
1 -programacion_oo
 
05 Creando Clases
05   Creando Clases05   Creando Clases
05 Creando Clases
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
Datos previos
Datos previosDatos previos
Datos previos
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
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
 
Introduccion java
Introduccion javaIntroduccion java
Introduccion java
 
Java 1
Java 1Java 1
Java 1
 
Semana9b Vbr
Semana9b VbrSemana9b Vbr
Semana9b Vbr
 
Java argumentos variables
Java argumentos variablesJava argumentos variables
Java argumentos variables
 
Herencia
HerenciaHerencia
Herencia
 
Abstral herencias
Abstral herenciasAbstral herencias
Abstral herencias
 
Certificado (1)
Certificado (1)Certificado (1)
Certificado (1)
 
PROGRAMACIÓN ESTRUCTURADA-Evelyn Suquillo-2C-003
PROGRAMACIÓN ESTRUCTURADA-Evelyn Suquillo-2C-003PROGRAMACIÓN ESTRUCTURADA-Evelyn Suquillo-2C-003
PROGRAMACIÓN ESTRUCTURADA-Evelyn Suquillo-2C-003
 
Abstral herencias
Abstral herenciasAbstral herencias
Abstral herencias
 
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
 
Sesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clasesSesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clases
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 

Más de juan gonzalez

METODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxMETODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxjuan gonzalez
 
TIPOS DE COMUNICACION EN LAS OFICINAS.pptx
TIPOS DE COMUNICACION EN LAS OFICINAS.pptxTIPOS DE COMUNICACION EN LAS OFICINAS.pptx
TIPOS DE COMUNICACION EN LAS OFICINAS.pptxjuan gonzalez
 
Politicas-de-ruteo-con-MikroTik-RouterOS.pptx
Politicas-de-ruteo-con-MikroTik-RouterOS.pptxPoliticas-de-ruteo-con-MikroTik-RouterOS.pptx
Politicas-de-ruteo-con-MikroTik-RouterOS.pptxjuan gonzalez
 
Mecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptx
Mecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptxMecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptx
Mecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptxjuan gonzalez
 
recursividad EN PROGRAMACION ORIENTADA .pptx
recursividad EN PROGRAMACION ORIENTADA .pptxrecursividad EN PROGRAMACION ORIENTADA .pptx
recursividad EN PROGRAMACION ORIENTADA .pptxjuan gonzalez
 
OBJETIVO 5 VECTORES que se utilizan en la programacion.pptx
OBJETIVO 5 VECTORES que se utilizan en la programacion.pptxOBJETIVO 5 VECTORES que se utilizan en la programacion.pptx
OBJETIVO 5 VECTORES que se utilizan en la programacion.pptxjuan gonzalez
 
ESCANER E IMPRESORAS para las oficinas.pptx
ESCANER E IMPRESORAS para las oficinas.pptxESCANER E IMPRESORAS para las oficinas.pptx
ESCANER E IMPRESORAS para las oficinas.pptxjuan gonzalez
 
AGENDA DIGITAL. para las organizacionespptx
AGENDA DIGITAL. para las organizacionespptxAGENDA DIGITAL. para las organizacionespptx
AGENDA DIGITAL. para las organizacionespptxjuan gonzalez
 
MULTIMETRO para medir los niveles electricos.pptx
MULTIMETRO para medir los niveles  electricos.pptxMULTIMETRO para medir los niveles  electricos.pptx
MULTIMETRO para medir los niveles electricos.pptxjuan gonzalez
 
DISTRIBUCION DE PRODUCTOS BASISCOS DE LAS EMPRESAS
DISTRIBUCION DE PRODUCTOS BASISCOS DE LAS EMPRESASDISTRIBUCION DE PRODUCTOS BASISCOS DE LAS EMPRESAS
DISTRIBUCION DE PRODUCTOS BASISCOS DE LAS EMPRESASjuan gonzalez
 
COMERCIO ELECTRONICO COMO SOPORTE PARA LAS EMPRESAS
COMERCIO ELECTRONICO COMO SOPORTE PARA LAS EMPRESASCOMERCIO ELECTRONICO COMO SOPORTE PARA LAS EMPRESAS
COMERCIO ELECTRONICO COMO SOPORTE PARA LAS EMPRESASjuan gonzalez
 
MODELO NEGOCIOS PARA LAS EMPRESAS PUBLICAS Y PRIVADAS
MODELO NEGOCIOS PARA LAS EMPRESAS PUBLICAS Y PRIVADASMODELO NEGOCIOS PARA LAS EMPRESAS PUBLICAS Y PRIVADAS
MODELO NEGOCIOS PARA LAS EMPRESAS PUBLICAS Y PRIVADASjuan gonzalez
 
programaciON EXTREMA.pptx
programaciON EXTREMA.pptxprogramaciON EXTREMA.pptx
programaciON EXTREMA.pptxjuan gonzalez
 
metodologia asd.pptx
metodologia asd.pptxmetodologia asd.pptx
metodologia asd.pptxjuan gonzalez
 
metodologia scrum.pptx
metodologia scrum.pptxmetodologia scrum.pptx
metodologia scrum.pptxjuan gonzalez
 
METODOLOGIA RUP.pptx
METODOLOGIA RUP.pptxMETODOLOGIA RUP.pptx
METODOLOGIA RUP.pptxjuan gonzalez
 
caractersticas de los medios de transmision de datos.pptx
caractersticas de los medios de transmision de datos.pptxcaractersticas de los medios de transmision de datos.pptx
caractersticas de los medios de transmision de datos.pptxjuan gonzalez
 
COMPONENTES BASE DE LAS TIC.pptx
COMPONENTES BASE DE LAS TIC.pptxCOMPONENTES BASE DE LAS TIC.pptx
COMPONENTES BASE DE LAS TIC.pptxjuan gonzalez
 

Más de juan gonzalez (20)

METODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptxMETODOS HEREDADOS EN LA PROGRAMACION .pptx
METODOS HEREDADOS EN LA PROGRAMACION .pptx
 
TIPOS DE COMUNICACION EN LAS OFICINAS.pptx
TIPOS DE COMUNICACION EN LAS OFICINAS.pptxTIPOS DE COMUNICACION EN LAS OFICINAS.pptx
TIPOS DE COMUNICACION EN LAS OFICINAS.pptx
 
Politicas-de-ruteo-con-MikroTik-RouterOS.pptx
Politicas-de-ruteo-con-MikroTik-RouterOS.pptxPoliticas-de-ruteo-con-MikroTik-RouterOS.pptx
Politicas-de-ruteo-con-MikroTik-RouterOS.pptx
 
Mecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptx
Mecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptxMecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptx
Mecanismos-de-abstraccion-en-Java PARA PROGRAMAR.pptx
 
recursividad EN PROGRAMACION ORIENTADA .pptx
recursividad EN PROGRAMACION ORIENTADA .pptxrecursividad EN PROGRAMACION ORIENTADA .pptx
recursividad EN PROGRAMACION ORIENTADA .pptx
 
OBJETIVO 5 VECTORES que se utilizan en la programacion.pptx
OBJETIVO 5 VECTORES que se utilizan en la programacion.pptxOBJETIVO 5 VECTORES que se utilizan en la programacion.pptx
OBJETIVO 5 VECTORES que se utilizan en la programacion.pptx
 
ESCANER E IMPRESORAS para las oficinas.pptx
ESCANER E IMPRESORAS para las oficinas.pptxESCANER E IMPRESORAS para las oficinas.pptx
ESCANER E IMPRESORAS para las oficinas.pptx
 
AGENDA DIGITAL. para las organizacionespptx
AGENDA DIGITAL. para las organizacionespptxAGENDA DIGITAL. para las organizacionespptx
AGENDA DIGITAL. para las organizacionespptx
 
MULTIMETRO para medir los niveles electricos.pptx
MULTIMETRO para medir los niveles  electricos.pptxMULTIMETRO para medir los niveles  electricos.pptx
MULTIMETRO para medir los niveles electricos.pptx
 
DISTRIBUCION DE PRODUCTOS BASISCOS DE LAS EMPRESAS
DISTRIBUCION DE PRODUCTOS BASISCOS DE LAS EMPRESASDISTRIBUCION DE PRODUCTOS BASISCOS DE LAS EMPRESAS
DISTRIBUCION DE PRODUCTOS BASISCOS DE LAS EMPRESAS
 
COMERCIO ELECTRONICO COMO SOPORTE PARA LAS EMPRESAS
COMERCIO ELECTRONICO COMO SOPORTE PARA LAS EMPRESASCOMERCIO ELECTRONICO COMO SOPORTE PARA LAS EMPRESAS
COMERCIO ELECTRONICO COMO SOPORTE PARA LAS EMPRESAS
 
MODELO NEGOCIOS PARA LAS EMPRESAS PUBLICAS Y PRIVADAS
MODELO NEGOCIOS PARA LAS EMPRESAS PUBLICAS Y PRIVADASMODELO NEGOCIOS PARA LAS EMPRESAS PUBLICAS Y PRIVADAS
MODELO NEGOCIOS PARA LAS EMPRESAS PUBLICAS Y PRIVADAS
 
programaciON EXTREMA.pptx
programaciON EXTREMA.pptxprogramaciON EXTREMA.pptx
programaciON EXTREMA.pptx
 
metodologia asd.pptx
metodologia asd.pptxmetodologia asd.pptx
metodologia asd.pptx
 
metodologia scrum.pptx
metodologia scrum.pptxmetodologia scrum.pptx
metodologia scrum.pptx
 
METODOLOGIA RUP.pptx
METODOLOGIA RUP.pptxMETODOLOGIA RUP.pptx
METODOLOGIA RUP.pptx
 
METODOLOGIAS.pptx
METODOLOGIAS.pptxMETODOLOGIAS.pptx
METODOLOGIAS.pptx
 
PARADIGMAS.ppt
PARADIGMAS.pptPARADIGMAS.ppt
PARADIGMAS.ppt
 
caractersticas de los medios de transmision de datos.pptx
caractersticas de los medios de transmision de datos.pptxcaractersticas de los medios de transmision de datos.pptx
caractersticas de los medios de transmision de datos.pptx
 
COMPONENTES BASE DE LAS TIC.pptx
COMPONENTES BASE DE LAS TIC.pptxCOMPONENTES BASE DE LAS TIC.pptx
COMPONENTES BASE DE LAS TIC.pptx
 

Último

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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 

Último (10)

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...
 
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
 
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
 
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
 
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)
 
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
 
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
 
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
 

METODO DE SOBRECARGA EN PROGRAMACION.pptx

  • 2. El concepto de Java Sobrecarga de métodos es uno de los conceptos más clásicos de programación . La sobrecarga hace referencia a un método al cual se le pueden pasar diferentes tipos o números de argumentos. Vamos a verlo a través de ejemplos sencillos. Para ello partiremos de dos clases . La clase Bolsa y la clase Producto. Una Bolsa contiene varios productos.
  • 3. package com.arquitecturajava; public class Producto { private String nombre; private double precio; public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public double getPrecio() { return precio; } public void setPrecio(double precio) { this.precio = precio; } public Producto(String nombre, double precio) { super(); this.nombre = nombre; this.precio = precio; } } package com.arquitecturajava; import java.util.ArrayList; import java.util.List; public class Bolsa { private List<Producto> lista = new ArrayList<Producto>(); public void addProducto(Producto p) { lista.add(p); } }
  • 4. 1. Cómo sobrecargar un método En general, para sobrecargar un método, simplemente declare versiones diferentes de él. El compilador se ocupa del resto. Debe observar una restricción importante: el tipo y/o el número de parámetros de cada método sobrecargado debe diferir. No es suficiente que dos métodos difieran solo en sus tipos de devolución. Los tipos de devolución no proporcionan información suficiente en todos los casos para que Java decida qué método utilizar. Por supuesto, los métodos sobrecargados también pueden diferir en sus tipos de devolución. Cuando se llama a un método sobrecargado, se ejecuta la versión del método cuyos parámetros coinciden con los argumentos. Aquí hay un ejemplo simple que ilustra la sobrecarga de métodos:
  • 5.
  • 6.
  • 7. Salida Como puede ver, está sobrecargado cuatro veces. La primera versión no toma parámetros, la segunda toma un parámetro entero, la tercera toma dos parámetros enteros (int), y la cuarta toma dos parámetros double. Observe que las primeras dos versiones de ovlDemo() no devuelven nada, y las otras dos devuelven un valor. Esto es perfectamente válido, pero tal como se explicó, la sobrecarga no se ve afectada en un sentido u otro por el tipo de devolución de un método. Por lo tanto, intentar utilizar las dos versiones siguientes de provocará un error:
  • 8.
  • 9. 2. Conversiones de tipo automáticas Como recordará anteriormente en Conversión de tipos de datos, Java proporciona ciertas conversiones de tipo automáticas. Estas conversiones también se aplican a los parámetros de métodos sobrecargados. Por ejemplo, considere lo siguiente:
  • 10.
  • 12. En este ejemplo, sólo dos versiones de están definidos: uno que tiene un parámetro de tipo int y otro que tiene un tipo double. Sin embargo, es posible pasar un valor de tipo byte, short, o float a . En el caso de byte y short, Java automáticamente convierte a int. Así, mitipo(int) se invoca. En el caso de la float, el valor se convierte a double y mitipo(double) es llamado. Es importante entender, sin embargo, que la conversión automática sólo se aplican si no hay ninguna coincidencia directa entre un parámetro y argumento. Por ejemplo, aquí está el programa anterior con la adición de una versión de f ( ), que especifica un parámetro byte:
  • 13.
  • 15. 3. Introducción a Polimorfismo La sobrecarga de métodos soporta el polimorfismo porque es una de las formas en que Java implementa el paradigma de “una interfaz, múltiples métodos“. Para comprender cómo, considere lo siguiente: En los lenguajes que no admiten la sobrecarga de métodos, a cada método se le debe asignar un nombre único. Sin embargo, frecuentemente querrá implementar esencialmente el mismo método para diferentes tipos de datos. Considere la función de valor absoluto. En los lenguajes que no admiten la sobrecarga, usualmente hay tres o más versiones de esta función, cada una con un nombre ligeramente diferente. Por ejemplo, en C, la función abs() devuelve el valor absoluto de un entero, labs() devuelve el valor absoluto de un entero largo, y fabs() devuelve el valor absoluto de un valor de coma flotante. Como C no admite sobrecarga, cada función debe tener su propio nombre, aunque las tres funciones hacen esencialmente lo mismo. Esto hace que la situación sea más compleja, conceptualmente, de lo que realmente es. Aunque el concepto subyacente de cada función es el mismo, todavía tiene tres nombres para recordar. Esta situación no ocurre en Java, porque cada método de valor absoluto puede usar el mismo nombre. De hecho, la biblioteca de clases estándar de Java incluye un método de valor absoluto, llamado abs(). Este método está sobrecargado por la clase Math de Java para manejar todos los tipos numéricos. Java determina qué versión de abs() llamar en función del tipo de argumento.
  • 16. El método addProducto Estamos ante una situación muy sencilla con la clase Bolsa que contiene una lista de Productos y para añadir elementos a la bolsa incorpora el método addProducto public void addProducto(Producto p) { lista.add(p); } Este método es elemental y simplemente añade nuevos Productos a la Bolsa. no hace nada más
  • 17. Java Sobrecarga de métodos Vamos a sobrecargarlo y generar un método con el mismo nombre pero diferente tipo de argumentos que nos permita por ejemplo añadir también un Producto pero pasándole el concepto y el importe. Esta es la sobrecarga más sencilla ya que simplemente cambiamos el tipo de parámetros pero seguimos añadiendo el mismo concepto a la lista un producto. public void addProducto(String nombre, double precio) { lista.add(new Producto(nombre, precio)); }
  • 18. El programa principal gana en flexibilidad y permite las dos opciones package com.arquitecturajava; public class Principal { public static void main(String[] args) { Producto p1= new Producto ("galletas",3); Bolsa b= new Bolsa(); b.addProducto(p1); b.addProducto("chocolate",4); } }
  • 19. Otras Sobrecargas No solo esta sobrecarga es posible sino que ademas podríamos añadir otras que nos permitan una mayor flexibilidad. Por ejemplo podemos añadir un método que nos permita pasar como parámetro una lista de Productos y añadirlos todos de golpe. Este método no se podrá denominar addProducto ya que este indica que solo añade uno . Se tendrá que denominar addProductos por lo tanto “no es una sobrecarga” pero si añade flexibilidad al código: public void addProductos(List<Producto> productos) { lista.addAll(productos); }
  • 20. Java varargs ¿Cómo podemos sobrecargarle ? . Bueno podemos usar las capacidades de varargs de Java y añadir una sobrecarga que nos permita pasar varios productos de forma manual. public void addProductos(Producto... productos) { for (Producto f : productos) { lista.add(f); } }
  • 21. Vamos a ver cómo usar ambos. package com.arquitecturajava; import java.util.ArrayList; import java.util.List; public class Principal { public static void main(String[] args) { Producto p1= new Producto ("galletas",3); Bolsa b= new Bolsa(); b.addProducto(p1); b.addProducto("chocolate",4); List<Producto> productos= new ArrayList<Producto>(); productos.add(new Producto("pan",2)); productos.add(new Producto("leche",3)); b.addProductos(productos); b.addProductos(new Producto("pizza",5),new Producto("lechuga",3)); } }
  • 22. Acabamos de sobrecargar otro método en nuestra clase Bolsa y disponemos de dos implementaciones
  • 23. Java Sobrecarga y Constructores El concepto de sobrecarga también se suele aplicar a los constructores ya que estos no son ni más ni menos que métodos de la clase . En nuestro caso podríamos decidir que la Bolsa cuando se crea se le pueda pasar una lista inicial de productos.
  • 24. package com.arquitecturajava; import java.util.ArrayList; import java.util.List; public class Bolsa { private List<Producto> lista = new ArrayList<Producto>(); public Bolsa() { super(); } public Bolsa(List<Producto> lista) { super(); this.lista = lista; } public void addProducto(Producto p) { lista.add(p); } public void addProducto(String nombre, double precio) { lista.add(new Producto(nombre, precio)); } public void addProductos(List<Producto> productos) { lista.addAll(productos); } public void addProductos(Producto... productos) { for (Producto f : productos) { lista.add(f); } } }