Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Sobrecarga Vs Sobreescritura (diferencias)
jonathan Monsalve Sin conexión
lider de proyecto
****

Mensajes: 114
Registro en: Mar 2011
Reputación: 0
Mensaje: #1
Sobrecarga Vs Sobreescritura (diferencias)
Sobrecarga de funciones: La sobrecarga de funciones (y en el caso de POO la sobrecarga de métodos )permite escribir y utilizar múltiples funciones con el mismo nombre, pero con diferente lista de argumentos. La lista de argumentos es diferente si tiene un argumento con un tipo de dato distinto, si tiene un numero diferente de argumentos, o ambos. La lista de argumentos suele llamarse signatura de la función.
por ejemplo:
int cubo(int x)
{
return x*x*x;
}

si desea implementar una función similar para procesar un valor long o double y no se dispone de la propiedad de sobrecarga debemos crear funciones que usen nombres diferentes para cada tipo p.e:
long lcubo (long x); //en el caso de que el dato sea long

en el caso de lenguajes que soportan la sobrecarga se pueden definir funciones sobrecargadas que tuvieran el mismo nombre y argumentos diferentes p.e:
int cubo (int x);
long cubo(long x);

El compilador verifica el tipo de parámetro enviado para determinar cual es la función a llamar.

si por ejemplo:
int num =3;
resultado=cuadrado(num);//llama al método que recibe un int (porq num es de tipo int)



Sobre escritura de funciones/métodos:
este termino es comúnmente usado en la herencia de la POO, consiste en instanciar en una clase base algún(os) método(s) los cuales serán sobreescritos en la(s) clase(s) derivadas (derivación inmediata o no) con el mismo nombre del método usado en la clase base, de esta forma el método llamado dependerá del tipo del objeto que llame al método (el cual es llamado IGUAL y recibe LOS MISMOS PARÁMETROS y DEL MISMO TIPO), es importante resaltar que estos métodos sobreescritos pertenecen a la interfaz de ambas clases y el método en la clase derivada sobreescribe al de la clase base, quizás para aprender y aprehender el concepto deberíamos ver algún ejemplo(usare el c++ porque en este punto es mas fácil que todos lo entandamos antes que el java y antes que mis palabras es mas facil ver el ejemplo):
class Punto
{
//..... atributos y otros metodos miembros
public:
void imprimir(){cout<<"llamada a clase base punto "} //metodo imprimir en clase base

};

class circulo : public Punto //clase circulo hereda de Punto
{
//..... atributos y otros metodos miembros

public:
void imprimir(){cout<<"llamada a clase derivada circulo "}
//metodo sobreescrito en clase derivada
};


observamos que en la clase derivada circulo el método imprimir se escribe igual que en su clase base recibe el mismo numero y tipo de parámetros y retorna lo mismo por lo tanto en la clase derivada se esta sobreescribiendo la implementación de la funcion imprimir de la clase base
si en el programa principal :
Circulo var1;
Punto var2;

//... Asignar valores a las instancias

var1.imprimir();// llamara a el método imprimir de la clase circulo pues var1 es una instancia de la clase circulo

var2.imprimir();// llamara a el método imprimir de la clase punto pues var2 es una instancia de la clase Punto

este ejemplo carece quizá de algo de lógica porq realmente no estoy imprimiendo un circulo o un punto simplemente este es un ejemplo para entender la sobreescritura de metodos, interesante es cuando se declara punteros de tipo de clase base que apuntan a objetos de tipo de clases derivadas se producen resultados diferentes pero esto ya entra en el tema de polimorfismo (ver cap 10 deitel de c/c++ )
disculpen los errores queria plasmar la idea rápidamente, seria bueno complementar la idea incluso anexar cosas interesantes sobre estas propiedades poderosas de algunos lenguajes
(Este mensaje fue modificado por última vez en: 05-04-2011 07:08 PM por jonathan Monsalve.)
05-04-2011 07:05 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
demian Sin conexión
Administrator
*******

Mensajes: 1.808
Registro en: Jun 2010
Reputación: 0
Mensaje: #2
RE: Sobrecarga Vs Sobreescritura (diferencias)
Bien, esto es correcto. En teoría rafael te ganó, es decir, publicó primero, pero tu respuesta me pareció también interesante y original, de modo que voy a darles el punto a ambos. Me recuerdan por favor en el examen (¿era de BD cierto?) porque si lo dejan a mi memoria de seguro me voy a olvidar.

[Imagen: dmi-1.jpg]
12-04-2011 09:42 AM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Enviar respuesta 


Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)