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