0% encontró este documento útil (0 votos)
109 vistas6 páginas

Generando Polimorfismo en PHP

Este documento explica cómo aplicar polimorfismo en PHP. Primero se crean las clases Car y UberVan, con UberVan heredando de Car. Luego, se sobrescribe el método setPassenger en UberVan para permitir 6 pasajeros en lugar de 4. Esto permite que UberVan se comporte de forma diferente sin afectar a otras clases. Finalmente, se pide como reto aplicar polimorfismo al método printDataCar para imprimir también la marca y modelo en UberX.

Cargado por

carolina
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
109 vistas6 páginas

Generando Polimorfismo en PHP

Este documento explica cómo aplicar polimorfismo en PHP. Primero se crean las clases Car y UberVan, con UberVan heredando de Car. Luego, se sobrescribe el método setPassenger en UberVan para permitir 6 pasajeros en lugar de 4. Esto permite que UberVan se comporte de forma diferente sin afectar a otras clases. Finalmente, se pide como reto aplicar polimorfismo al método printDataCar para imprimir también la marca y modelo en UberX.

Cargado por

carolina
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 6

2/10/21 10:08 Generando polimorfismo en PHP

42 pts Menú

Bienvenida e
Introducción

¿Por qué aprender


1
Programación…

¿Qué resuelve la
2
Programación…

Paradigma Orientado a
3
Objetos

Lenguajes Orientados a
4
Objetos

Instalando Visual
5
Studio Code

Diagramas de
6
Modelado

7 UML

Orientación a Objetos

8 Objetos

9 Abstracción y Clases

10 Modularidad

Analizando Uber en
11
Objetos

Reto 1: identificando
12
objetos

Programación
Orientada a Objetos.…
https://platzi.com/clases/1474-oop/37244-generando-polimorfismo-en-php/ 1/6
2/10/21 10:08 Generando polimorfismo en PHP

Clases en UML y su
Generando
13 polimorfismo en PHP 34/37
sintaxis en código

Modelando
Curso de nuestros
Programación Orientada a Objetos: POO
14 EL DIAGRAMA UM…
objetos Uber

Ahora
15 quees
¿Qué yalaentiendes
herencia? cómo funciona el polimorfismo y lo aplicaste a Java veamos
cómo hacer el mismo ejemplo en PHP.
Aplicando Herencia a
16
nuestro proyecto Uber
Aplicar polimorfismo en PHP es relativamente más sencillo, pues este es un lenguaje
con un tipado
Reto más flexible
2: analicemos un (que no requiere que especifiques qué tipo de dato usar) y su
17
problema
sintaxis es muy sencilla.
Clases, Objetos y
HastaMétodo
ahoraConstructor
esto es lo que tenemos en nuestro archivo car.php:

Creando nuestras
18
carpetas iniciales para…

Definiendo clases en
require_once('account.php');
19
Java
class y Python
Car {

Definiendo Clases en
20 public $id;

JavaScript
public $license;
public $driver;

Objetos, método
21 protected $passenger; // Es importante que esta propiedad esté marcada como protected

constructor y su sintax…

Objetos. Dando__construct($license,
public function vida a $driver){

22
nuestras clases= en
$this->license Jav…
$license;

$this->driver = $driver;
Declarando
}

un Método
23
Constructor en Java y…
public function printDataCar() {
JavaScript orientado a
24 echo "Licencia: $this->license Driver: ".$this->driver->name;

objetos, lo más nuevo


}

Declarando un método
25
}
constructor en Python
?>

Herencia

Aún Aplicando
nos herencia
falta añadir en
nuestros getters y setters, en PHP es sencillo, simplemente
26
lenguaje
tenemos queJava y PHP
escribir dos funciones, una que nos devuelva nuestro número de
pasajeros, y otra
Solución quede
del reto nos permita establecer cierto número de pasajeros.
27
herencia en PHP
https://platzi.com/clases/1474-oop/37244-generando-polimorfismo-en-php/ 2/6
2/10/21 10:08 Generando polimorfismo en PHP

La función getter es la más sencilla de todas, pues simplemente hay que retornar el
Aplicando herencia en
28
valorlenguaje
de la propiedad
Python y…passenger:

29 Otros tipos de Herencia


public function getPassenger() {
return $this->passenger;
}
Reto 4
30

Encapsulamiento
Recuerda que para hacer nuestra función setter necesitamos hacer una validación. Uber
únicamente
31 nos permite tener 4 pasajeros (comportamiento que modificaremos más
Encapsulamiento
adelante con polimorfismo), por lo que nuestra función setter quedaría así:
Encapsulando atributos
32
en Java
public function setPassenger($passenger) {

Polimorfismo
if ($passenger == 4) {

$this->passenger = $passenger;

Generando
33
}

polimorfismo en Java
else {

Generando
echo "Necesitas asignar 4 pasajeros";

34
polimorfismo
}
en PHP

Cierre del curso

El Diagrama UML de
35
Uberahora ya estamos listos para empezar a trabajar, recuerda que ya deberías
¡Genial!,
tener tu clase UberVan creada hasta este punto 😉.
36 Conclusiones

Antes de comenzar a aplicar polimorfismo veamos qué sucede si intento generar una
Bonus: Qué es la
instancia
37 de 6 pasajeros con mi clase UberVan, recuerda que para hacer estas pruebas
Programación…
estamos trabajando sobre nuestro archivo index.php (no olvides hacer el require
hacia el archivo uberVan.php 👀):

$uberVan = new UberVan("OJL395", new Account("Raúl Ramírez", "AND456"), "Nissan",


"Versa");

$uberVan->setPassenger(6);

$uberVan->printDataCar();

https://platzi.com/clases/1474-oop/37244-generando-polimorfismo-en-php/ 3/6
2/10/21 10:08 Generando polimorfismo en PHP

Cuando trato de ejecutar este código, esto es lo que me imprime en mi navegador:

Me dice que solo puedo asignar 4 pasajeros, ¡pero para Uber Van deben ser 6 pasajeros!
Es hora de usar el polimorfismo.

Aplicando polimorfismo

Para permitir que la clase UberVan acepte 6 pasajeros sin afectar a las otras clases de
Uber, necesitamos sobreescribir el método setPassenger, pero permitiendo que esta
vez acepte 6 pasajeros.

Recuerda que cuando aplicamos herencia, todos los métodos de la clase Car fueron
pasados a la clase UberVan, por tanto, esta clase también tiene acceso al método
setPassenger, pero este método solo permite 4 pasajeros. Para aplicar polimorfismo,
podemos sobreescribir dicho método dentro de nuestra clase UberVan alojada en el
archivo uberVan.php, ¡pero ahora permitiendo 6 pasajeros!

public function setPassenger($passenger) {

if ($passenger == 6) {

$this->passenger = $passenger;

else {

echo "Necesitas asignar 6 pasajeros


";

Si lo deseas, también puedes añadir la propiedad $passenger a la clase UberVan


(aunque en PHP no es necesario):

https://platzi.com/clases/1474-oop/37244-generando-polimorfismo-en-php/ 4/6
2/10/21 10:08 Generando polimorfismo en PHP

protected $passenger;

Para hacerlo más interesante, vamos a cambiar el código de nuestro método


printDataCar de la clase Car ubicada en car.php por el siguiente:

public function printDataCar() {


echo "

Licencia: $this->license

Driver: {$this->driver->name}

Número de pasajeros: $this->passenger

";

El código es el mismo, pero lo hicimos más legible, agregamos la información del


número de pasajeros y agregamos un salto de línea al final.

¡Ahora pongamos a prueba nuestra clase polimórfica! Vayamos a nuestro index.php,


aquí ya teníamos escrito el código para instanciar nuestra clase UberVan con 6
pasajeros, pero agreguemos el código para instanciar una clase de 4 pasajeros:

$uberX = new UberX("CVB123", new Account("Andres Herrera", "AND456"), "Chevrolet",


"Spark");

$uberX->setPassenger(4);
$uberX->printDataCar();

¡Vualá!, ahora vemos que nuestra clase UberVan nos permite añadir 6 pasajeros,
mientras que el resto de clases nos permite seguir añadiendo 4 pasajeros, ¡hemos
creado una clase polimórfica!

https://platzi.com/clases/1474-oop/37244-generando-polimorfismo-en-php/ 5/6
2/10/21 10:08 Generando polimorfismo en PHP

Reto

Ahora que ya sabes cómo trabajar con polimorfismo en PHP, te reto a que apliques el
polimorfismo al método printDataCar de la clase Car en la clase UberX de tal forma
que al llamarlo desde una instancia de UberX este también imprima la marca y el
modelo.

Una vez que hayas completado el reto puedes dejar tu solución en los aportes de la
clase y compararlo con la solución de otros estudiantes. ¡Nos vemos en la siguiente
clase para dar un repaso al diagrama UML de Uber que obtuvimos al final!

https://platzi.com/clases/1474-oop/37244-generando-polimorfismo-en-php/ 6/6

También podría gustarte