Plantilla:PHP/Sobrecarga
De WikiEducator
Revisión a fecha de 19:46 10 feb 2023; ManuelRomero (Discusión | contribuciones)
Sobrecarga
Un concepto muy importante y básico en la programación orientada a objetos. La sobrecarga es una concreción del principio de polimorfismo
|
- Sin embargo este aspecto en php no es del todo intuitivo. No existe la sobrecarga como la entendemos en otros lenguajes.
- No obstante tenemos técnicas para poder simular la sobrecarga.
- Muchas veces es fundamental. Especialmente importante a la hora de sobrecargar el constructor de la clase.
- Para simular la sobrecarga en php, jugamos con el concepto de que una variable que no tenga valor se considera de tipo null.
- Lo vemos con una serie de ejemplos para dejar claro este concepto.
- Tomamos como ejemplo una función:
Ejemplo
| |
function verTipoParametros($a=null,$b=null,$c=null){ echo "Primer parámetro "; var_dump($a); echo "Segundo parámetro "; var_dump($b); echo "Tercer parámetro "; var_dump($c); } </nowiki>
|
- Ahora la invocamos de diferente manera y vemos el resultado:
Invocar sin parámetros reales
| |
echo "Invocando a <strong>verTipoParametros ()</strong><hr / />"; verTipoParametros (); }
|
Invocar con 1 parámetro real
| |
... echo "Invocando a <strong>verTipoParametros (5)</strong><hr />"; verTipoParametros (5); ...
|
Invocar con 2 parámetros reales
| |
... echo "Invocando a <strong>verTipoParametros (5,7)</strong><hr />"; verTipoParametros (5,7); ...
|
Invocar con 3 parámetros reales
| |
... echo "Invocando a <strong> verTipoParametros ('pedro',5,9) </strong><hr />"; verTipoParametros ('pedro',5,9); ...
|
Invocar con 3 parámetro reales uno de ellos un array
| |
... echo "Invocando a <strong> verTipoParametros ([1,4,'maría'],true,'sonia') </strong><hr />"; verTipoParametros ([1,4,'maría'],true,'sonia'); ...
|
Sobrecargando el constructor
- Usando esta forma de trabajar vamos a sobre cargar el constructor de una clase
- Tomamos una clase de tipo Racional. Un número Racional es un objeto que tendrá numerador y denominador
- Ahora a la hora de construir el objeto planteamos la posibilidad de poder instanciar de la siguiente manera:
$r1 = new Racional ("8/5");/* 8/5 */ $r2 = new Racional (5,4); /* 5/6 */ $r3 = new Racional (5); /* 5/1 */ $r4 = new Racional (); /* 1/1 */
- Aquí vemos claramente que necesitamos sobrecargar el constructor para que pueda responder a todas las situaciones
- Aplicando los conceptos vistos antes, lo único que tenemos que hacer en el constructor es ir viendo de qué tipo' son los parámetros.
Tip: Recordar que null también es un tipo
- Vemos que podemos tener 0, 1 o 2 parámetros
- Por lo tanto la función constructora tendrá que tener 2 parámetros