Bienvenida e Introducci贸n

1

驴Por qu茅 aprender Programaci贸n Orientada a Objetos?

2

驴Qu茅 resuelve la Programaci贸n Orientada a Objetos?

3

Paradigma Orientado a Objetos

4

Lenguajes Orientados a Objetos

5

Instalando Visual Studio Code

6

Diagramas de Modelado

7

Qu茅 es UML

Orientaci贸n a Objetos

8

Objetos

9

Abstracci贸n y Clases

10

Modularidad

11

Analizando Uber en Objetos

12

Reto 1: identificando objetos

Programaci贸n Orientada a Objetos. An谩lisis

13

Clases en UML y su sintaxis en c贸digo

14

Modelando nuestros objetos Uber

15

驴Qu茅 es la herencia?

16

Aplicando Herencia a nuestro proyecto Uber

17

Reto 2: analicemos un problema

Clases, Objetos y M茅todo Constructor

18

Creando nuestras carpetas iniciales para el curso

19

Definiendo clases en Java y Python

20

Definiendo Clases en JavaScript

21

Objetos, m茅todo constructor y su sintaxis en c贸digo

22

Objetos. Dando vida a nuestras clases en Java y Python

23

Declarando un M茅todo Constructor en Java y JavaScript

24

JavaScript orientado a objetos, lo m谩s nuevo

25

Declarando un m茅todo constructor en Python

Herencia

26

Aplicando herencia en lenguaje Java y PHP

27

Soluci贸n del reto de herencia en PHP

28

Aplicando herencia en lenguaje Python y JavaScript

29

Otros tipos de Herencia

30

Reto 4

Encapsulamiento

31

Encapsulamiento

32

Encapsulando atributos en Java

Polimorfismo

33

Generando polimorfismo en Java

34

Generando polimorfismo en PHP

Cierre del curso

35

El Diagrama UML de Uber

36

Conclusiones

37

Bonus: Qu茅 es la Programaci贸n Orientada a Objetos

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de Programaci贸n Orientada a Objetos: POO

Curso de Programaci贸n Orientada a Objetos: POO

Anah铆 Salgado D铆az de la Vega

Anah铆 Salgado D铆az de la Vega

Soluci贸n del reto de herencia en PHP

27/37
Recursos

Aportes 127

Preguntas 38

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Soluci贸n al error: Server error: Error: spawn php ENOENT
Este error ocurre cuando intentas prender el servidor PHP pero no te muestra la p谩gina creada sino te dice que "La p谩gina localhost ha rechazado la conexi贸n."
El primer paso es descargar e instalar Xampp desde el siguiente enlace: https://www.apachefriends.org/es/index.html
Despu茅s te tiene que dirigir a la secci贸n de Extensions ubicada en la parte izquierda de tu Visual Studio Code.
Luego tienes que buscar la extensi贸n que instalamos al inicio del curso llamada PHP Server, dar click en el engrane que aparece en la extensi贸n e ingresar a la opci贸n que dice 鈥淓xtension Settings鈥.
Por 煤ltimo ubicar el apartado de 鈥淧hpserver: PHP Path鈥, debes de colocar ah铆 la ruta del ejecutable de PHP que se instal贸 junto con el servidor Xampp, com煤nmente est谩 en la ruta C:\xampp\php\php.exe
Despu茅s de haber hecho estos pasos deber铆a iniciar el servidor PHP sin problemas y aparecer como se muestra en el video.

que complejo manejar los 4 lenguajes a la vez, sobretodo ahora empezando con este mundo

Con PHP se necesita tener el interprete instalado, claro, en el cas que quieras usar la extensi贸n del live server, pero PHP tambi茅n tiene integrado su propio servidor el cual lo pueden levantar con el comando:

php -S localhost:8080 index.php

Y simplemente entran al navegador con la url: localhost:8080

Para los que trabajen con Ubuntu(linux) en la terminal de Windows. Lo que pueden hacer es instalar php:

sudo apt install php7.4-cli

Iniciar el servidor:

php -S localhost:8080 index.php

Si tiene alg煤n error en el c贸digo, el mismo server les estar谩 indicando en que l铆neas y no se olviden de iniciar el editor con

 code .

Si de pronto no saben de lo que hablo pueden ver este curso 馃槃 https://platzi.com/clases/prework-windows/

Tuve al igual que varios el problema de poner a funcionar el servicio PHP. Despu茅s de varios intentos y leyendo varios foros, logre poner a funcionar el servicio PHP desde Visual Studio.

Esto fue lo que hcie:

  1. Instalar Xampp
  2. Configurar las variables de entorno:
    • Dentro de la variable Path agregar la ruta C:\xampp\php
  3. En visual Studio ir a file->preferences->Settings y buscar 鈥渆ditar desde settings.json鈥 y en este archivo adicionar las siguientes lineas:
"php.executablePath": "C:/xampp/php/php.exe",
"php.validate.executablePath": "C:/xampp/php/php.exe"

Otra manera de poder consultar php a navegador:

A nuestra terminal accedemos al directorio donde tengamos nuestro index.php
Desde all铆 escribimos php -S localhost:8000

Ahora desde nuestro navegador preferido ya podemos acceder a localhost:8000 y all铆 podremos ver el index.php

Ok para los que van iniciando en Php, es l贸gico pensar que previo a este curso no tienen instalado ning煤n tipo de servidor local, si como muchos de nosotros instalaron la extensi贸n de Php Server y les da errores es porque esta extensi贸n necesita de un servidor local pre instalado, lo que recomiendo es instalar primero el servidor local y despu茅s la extensi贸n en VSC ya que de esta manera la extensi贸n reconoce de manera autom谩tica la ruta del ejecutable del servidor, Si te da errores entonces deber谩s configurar de manera manual la ruta que apunta al servidor, y esto lo hacemos de la manera en que el resto de compa帽eros han especificado en sus aportes. Suerte 馃槂

馃惐鈥嶐煉 Instanciando objetos de las clases mencionadas en lenguaje Dart.

import 'account.dart';
import 'uber_x.dart';
import 'uber_pool.dart';

void main() {
  UberX uberX = UberX(license: 'CVB123', driver: Account(name:  'Andres Herrera', document: 'AND456'), brand: 'Chevrolet', model: 'Spark');
  uberX.printDataCar();

  UberPool uberPool = UberPool(license: 'TYU567', driver: Account(name:  'Andrea Ferran', document: 'ANDA765'), brand: 'Dodge', model: 'Attitude');
  uberX.printDataCar();
}

Salto de linea <br />

public $driver;
  public $passegenger;

  public function __construct($license, $driver){
    $this->license = $license;
    $this->driver = $driver;
  }

  public function printDataCar(){
    echo "Licencia: $this->license Driver: ".$this->driver->name."<br />";
  }
}
?>```

Una vez m谩s para los que estamos empezando en este mundo, no nos atormentemos queriendo entender los 4 lenguajes a la vez, escojan uno, con el que vengan trabajando o tengan mayor afinidad s铆ganlo y enti茅ndanlo bien eso s铆, y a los otros simplemente d茅jenlos a un lado por el momento en un futuro ya habr谩 tiempo para repasarlos, es lo que yo he venido haciendo y resulta mas digerible el curso, y los otros lenguajes simplemente veo las clases para tener un poquito mas de contexto pero hasta ahi

por fin me salio

amigos a alguien le sale el siguiente error? Server error: Error: spawn php ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:232:19)
at onErrorNT (internal/child_process.js:407:16)
at process._tickCallback (internal/process/next_tick.js:63:19)

Aqu铆 el index.php

Aqu铆 el resultado en el navegador (Cabe resaltar que estoy usando el servicio de Xampp, con Visual Studio no me funcion贸)

Francamente no me gusta PHP jaja su sintaxis est谩 bien fea y no me voy a dedicar a eso.

Solamente voy a terminar el curso, porque ya falta poco para terminarlo鈥

A mi me sal铆a un error al imprimir los datos de carro, as铆 que utilice esta sintaxis

public function printDataCar() {
        echo 'License: '.$this->license.' ';
        echo 'Driver: '.$this->driver->name.' ';
    }

Bueno, a partir de aqui dejo php

Mi evidencia del ejercicio Logrado:

PHP
Driver.php

<<?php
include_once("Account.php");

class Driver extends Account
{
    public $typeUser;

    public function __construct($id, $name, $document, $email, $password, $typeUser)
    {
        parent::__construct($id, $name, $document, $email, $password);
        $this->typeUser = $typeUser;
    }
}
?>>

uberX.php

<<?php
    require_once('Car.php');
    require_once('Driver.php');
    
    class UberX extends Car
    {
        public $brand;
        public $model;

        public function __construct($id, $license, $driver, $passenger, $brand, $model)
        {
            parent::__construct($id, $license, $driver, $passenger);
            $this->brand = $brand;
            $this->model = $model;
        }
    }
?>>

Main2.php

<<?php 
require_once("Car.php");
include_once("UberX.php");
require_once("Driver.php");

$driver1 = new Driver(1235, "quiamentino noro帽o", "28009657", "noro帽[email protected]", "mipasdword", "driver");
$uberX1 = new UberX(3452, "FGT567F", $driver1, 4, "Chevrolet", "Spark 2017");
echo $uberX1->printDataCar();
?>>

resultado
![](C:\Users\VITm2421\Dropbox\Capturas de pantalla)

Cuando intento correr el Serve Project en el navegador me aparece
"La p谩gina localhost ha rechazado la conexi贸n.
驴Quer铆as decir http://localhost3000.org/?
Busca localhost 3000 en Google
ERR_CONNECTION_REFUSED"

Y en visual basic me sale esto

Excelente respuesta de @abbustamante para solucionar el problema de configuraci贸n de php server, gracias.

Para los que corremos VS Code desde WSL2 y Ubuntu aqui las consideraciones para que puedan ejecutar php, cabe mencionar que la instalaci贸n de php es desde l铆nea de comando y no se requiere instalar Xampp.
https://www.youtube.com/watch?v=xErcf1uJdIo

Para los que tienen WSL2 y ven esto en 2022 tienen que instalar PHP desde la terminal con la siguiente l铆nea :

sudo apt install php8.1-cli

Luego ir a la carpeta PHP de tu proyecto y ejecuta esta l铆nea:

php -S localhost:8080 index.php

Luego vayan a su navegador y abran el localhost:8080 .

Warning: require_once(Account.php): Failed to open stream: No such file or directory in /home/jjcuri/Escritorio/ESCUELAS PLATZI/Escuela Data Science e IA/programacion orientada a objetos/CursoPOOUber/PHP/car.php on line 8

alguien que me pueda orientar para solucionar este tema, llevo una semana sin poder solucionarlo, que estresante鈥

La mayor铆a de los lenguajes son parecidos y al final se obtiene el mismo resultado utilizando cualquiera de ellos. 馃挌

Buenos d铆as, tengo este error, mi sistema operativo es Ubuntu 20.04. PHP: syntax error, unexpected 鈥(鈥 in /opt/lampp/bin/php-8.1.2 on line 3. [Tue Feb 8 09:20:37 2022] PHP 8.1.2 Development Server " started

Estuve revisando los comentarios de los compa帽eros, y no encontr茅 alguno que ejecutara php desde consola como se hace con Python. Si repasan un poco de historia de PHP naci贸 para ejecutarse por consola como AWK o script en bash. Por lo que v铆 esta clase se puede ejecutar desde consola (Sea windows o GNU/Linux) y trae el mismo resultado en consola,

Logre ejecutar el php, pero debo confesar que fue dif铆cil hacerlo correr viendo algunos tutoriales e instalando xampp, y tambi茅n logre imprimir los dem谩s datos:
index.php

quedo as铆:

Con salto de linea el resultado:

<?php
require_once("car.php");
require_once("UberX.php");
require_once("account.php");
require_once("UberPool.php");

$UberX = new UberX("CVB123", new account("Andres Herrera \n","AND456"),"CHEVrolet","spark");
$UberX ->printDataCar(); 


$UberPool = new UberPool("TYU567", new account("Andrea Ferran","AND765"),"Dodge","Attitude");

$UberPool->printDataCar();

RESULTADO:
Licencia: CVB123 Driver: Andres Herrera
Licencia: TYU567 Driver: Andrea Ferran

隆Reto completado!

  • Estando en linux en la carpeta del proyecto y habiendo instalado php por consola con los comandos:
php -S IP:puerto nombreArchivo.php
  • Les crea un servidor con ese archivo, luego digitan en el navegador:
ip:puerto/nombreArchivo.php

Y listo.

creo firmemente que las aplicacion de los cuatro lenguajes es conocimiento en bruto es necesario practicar hasta que los conceptos tengan forma.

Saludos, al momento de imprimir me da este error, que puede ser?

cuales extenciones utiliza?

Logrado!

require_once(鈥渁rchivo.php鈥) incluye el c贸digo que est谩 dentro de los archivos que se llama, s贸lo que si ya llam贸 una vez, no va a repetir el procedimiento, algo que no va a pasar con el require(鈥渁rchivo.php鈥).

<?php
require_once(鈥渃ar.php鈥);
require_once(鈥渦berX.php鈥);
require_once(鈥渦berPool.php鈥);
require_once(鈥渁ccount.php鈥);

$uberX = new uberX("CVB123", new Account("Andres Herrera", "AND456"), "Chevrolet", "Spark");
$uberX -> printDataCar();

$uberPool = new uberPool("TY567", new Account("Andrea Ferran", "ANDA765"), "Dodge","Attitude");
$uberPool -> printDataCar();

License: CVB123 Driver: Andres Herrera Document: AND456 License: TY567 Driver: Andrea Ferran Document: ANDA765

Muy buena esta clase

Despues de leer, todas las soluciones realice lo siguiente:
1.-Desistale XAMPP, porque lo tenia en otro disco (debido al espacio de mi disco principal) y lo instale en 鈥淐鈥, cabe mencionar que me encuentro en win.
2.-Edite en las variables de entorno, agregandola en el path, como aparece en la siguiente imagen:

3.-Dentro de Visual Studio Code edite el archivo .json de la siguiente forma:

},
  "phpserver.router": "",
  "phpserver.relativePath": ,
  "php.debug.executablePath": "",
  "php.executablePath": "C:/xampp/php/php.exe",
  "php.validate.executablePath": "C:/xampp/php/php.exe" 
}

La manera mas rapida para llegar a los settings, es darle click al engrane, luego clickear en configuracion, como se muestra en la siguiente imagen:

4.- Apezar de realizar todo lo mencionado, no podia correr el dicho servidor.
5.-Desabilite todas las extensiones php y posteriormente realice la ultima prueba y por fin logre el reto.

ok no crei que hiciera lo correcto pero php esta vez nos llevaremos mejor!


Yo me puse a jugar y me adelante , he hice un m茅todo en la clase uberX para imprimir tambi茅n la marca y modelo

![](

Informaci贸n resumida de esta clase
#EstudiantesDePlatzi

  • Para crear los archivos podemos usar la terminal con el comando touch y el nombre del archivo

  • En PHP utilizamos el signo $ para poder definir una variable

  • Es importante reutilizar m茅todos y atributos

Seguire con el curso, el fatal error no desaparece 馃槮

Traten de checar si los

require_once("");

levan punto y coma al final

Tuve que reinstalar mi sistema operativo en Mac para que funcione xampp

Falta mostrar brand y model

Saludos.

Por que require_once y no require?

Bueno, aunque para el ejemplo se puede la forma basica require, es una buena practica usar el _once, y lo que hace require_once es, si el archivo requerido ya existe, no lo cargaria nuevamente; para el require pues trae el archivo todas las veces que lo solicitemos.

Peque帽o aporte, espero sirva.

Saludos.

Lo logre con salto de linea

En mi caso, me dio el siguiente error:

鈥/index.php - Uncaught Error: Object of class Account could not be converted to string.

para solventarlo en la clase 鈥淐ar鈥 hice lo siguiente:

<?php
require_once('account.php');
class Car {
    public $id;
    public $licence;
    public Account $driver;
    public $passengers;

    public function __construct($id, $licence, $driver) {
        $this->id = $id;
        $this->licence = $licence;
        $this->driver =$driver;
    }

    public function printDataCar() { 
        echo "Licence: $this->licence Driver: ".$this->driver->name;
    }
}
?>

en resumen, >
public Account $driver;

Es bellisimo! 馃構

馃懢

Para poder diferenciar los tipos de Uber, agregue una variable que se envia a la funci贸n printDataCar() y esta lo imprime鈥

en index.php

<?php
....
$uberX = new UberX("YJI62C", new Account("Mauricio L贸pez", "43921108"), "MAZDA", "CX-30");
$tipoUber = "uberX";
$uberX->printDataCar($tipoUber);
....
?>

en Car.php

public function PrintDataCar($tipoUber){
    echo "$tipoUber: License: $this->license, Conductor: {$this->driver->name}, Documento: {$this->driver->document} <br><br>";
  }

Con esto se imprime el mensaje:

uberX: License: YJI62C, Conductor: Mauricio L贸pez, Documento: 43921108

Y as铆 se puede diferenciar en el ejemplo que tipo de uber es.

Todos los lenguajes se parecen

猸愶笍Opci贸n:
Configurar el php server en visual basic code desde la configuraci贸n de usuario > Extensiones > PHP Server Config y configuralo con el servidor Apache y tu instalaci贸n de PHP, tambien con el puerto

Con PHP se necesita tener el interprete instalado, claro, en el cas que quieras usar la extensi贸n del live server, pero PHP tambi茅n tiene integrado su propio servidor el cual lo pueden levantar con el comando:
php -S localhost:8080 index.php

como es que todo tiene una l贸gica y un sentido por lo que se puede ir completando el c贸digo

En mi caso me mostraba esto:

En las propiedades de la extension:

y en mi archivo php lo guarde como utf-8, no se por que me lo creo como utf-16be con esos cambios me funciono.

Lo logre gente 鉂わ笍

Los que no pueden iniciar el servidor para ejectutar PHP, les digo como pude hacerlo:

  1. Instale XAMPP
  2. Copie mis archivos PHP y pegu茅 dentro de htdocs que est谩 dentro de XAMPP
  3. Inici茅 el servidor XAMPP

Y al entrar al navegador y escibir 鈥渓ocalhost/nombreCarpeta/index.php鈥 pude ejecutar mi c贸digo.

Si ya tienen PHP y ya configuraron VS Code para trabajar con este lenguje y aun asi no les carga el alchivo index cuando le dan click derecho PHP Server : Server Project. 鈥

Puede que falte un punto y coma o cambiar una may煤scula por una min煤scula o viceversa.

Resultado!.

Buenas tardes , me encuentro ejecutando el index pero me esta arrojando 404, me podr铆an ayudar indicandome cual es el error, gracias.


Gente, cudado que en php (no se en que otro leguaje mas) importa el orden de los parametros en las calses contructoras tanto del hijo como el del padre.


A mi me sirvio este tutorial para poder instalar PHP: https://www.youtube.com/watch?v=xAU3Tb7mm80

Espero que le puede ser de ayuda a alguien mas

Parece que tambi茅n se pueden visualizar los cambios realizados en el c贸digo, solo refrescando la pagina del navegador.

Bueno php y python no vemos mas adelante .
Excelente clase saludos.

Bien!!!

genial

Inyecci贸n de dependencias

Hola tengo un problema con PHP al imprimir, tengo todo exactamente como esta en el ejercicio, sin embargo cuando imprimo en el servidor, sale en blanco no imprime nada nisiquiera arroja un error.

Muy Bueno

Es un buen ejemplo donde en el camino se pueden encontrar muchos errores, y se aprende, solucionandolos, es lo mejor lo que refuerza nuestro aprendizaje

Excente clase!!

Arrancar el servidor de PHP para correr los archivos dando clid derecho y seleccionando la opci贸n: "PHP serve project"

Tengo este errorr!!!

id = $id; $this->name = $name; } } ?>id = $id; $this->driver = $driver; } public function getDataTrip(){ echo "Car id" . $this->id ." Driver name: " . $this->driver->name; } } ?>
Fatal error: Uncaught Error: Class 'Car' not found in C:\Users\DeLL\Desktop\Fundamentos de programacion\POO\PHP\Main.php:6 Stack trace: #0 {main} thrown in C:\Users\DeLL\Desktop\Fundamentos de programacion\POO\PHP\Main.php on line 6```

Todo nuevo con PHP

dos puntos por terminar de ver el video :v

Super, super super. 馃槂

en a creaci贸n de las clases me present贸 un error en la direccion de la carpeta, por ende no pude realizar la programacion con el correcto orden, que podr铆a hacer en este caso???

Herencia en PHP 鈥

Cual es la diferencia entre include_once y requiere_once? Cuando utilizar uno y cuando utilizar el otro?

Perfecto entendido.

no entend铆a la parte del new account dentro de otro new hasta hize otro similar
animal.php

<?php
class animal{
    private $id;
    private $persona;

    public function __construct($id,$persona){
        $this->id=$id;
        $this->persona=$persona;
    }
    public function printAnimal() {
        echo "Id: $this->id persona: ".$this->persona->apellido;
    }
}```

persona.php


<?php
class persona{
public $nombre;
public $apellido;
public function __construct($nombre,$apellido){
$this->nombre=$nombre;
$this->apellido=$apellido;
}
}```

index.php

<?php
require_once('animal.php');
require_once('gato.php');
require_once('persona.php');

$persona1=new persona("anthony","cardenas");
$gato1=new gato("1",$persona1);
$gato1->setpelaje("blanco");
echo $gato1->printAnimal();

echo  " pelaje : ".$gato1->getpelaje();```

gato.php


<?php
require_once(鈥榓nimal.php鈥);
require_once(鈥榩ersona.php鈥);
class gato extends animal{
private $pelaje;

public function getpelaje(){
   return $this->pelaje;
}
public function setpelaje($pelaje) {
   return $this->pelaje=$pelaje;
}
public function __construct($id,$nombre){
    parent::__construct($id,$nombre);

}

}


Es curioso que en php para implementar la herencia de una clase primero debemos insertar el codigo de la super clase con include o require

En este enlace Encontraras mas informacion sobre el include y el require

No me permite ejecutar el servidor de PHP, me sale server error, algui茅n me podr铆a ayudar?

se me a presentaod muchos problemas con vs tanto con python y ahora php quue no ejecuta su server que por algo de path y ahora que cierro e inicio derrepnete todos los archivos de las sub clases con problemas de sintazis y veo que estan bien

Un tip para tomar en cuenta es que la clase Account est谩 siendo inicializada en ambas clases con los mismos datos, deber铆a estar una sola instanciaci贸n de la case para reutilizarlo en los parametros que utilicen ese mismo objeto.

Excelente, gracias por mostrarnos como reutilizar m茅todos y aprovechar mejor la herencia en PHP instructora Anah铆.

Al momento de correrlo me aparecen s铆mbolos raros 馃槮

MZ锟??锟斤拷锟紷????锟?锟 锟!锟?L锟!This program cannot be run in DOS mode. $锟統r锟斤拷??锟斤拷??锟斤拷??锟斤拷`锟斤拷锟?

Vamos Bien!.. Herencia.

Reto, terminar la herencia en PHP, casi igual que en java.

Excelente gracias estoy muy emocionado con lo que se esta aprendiendo =)

no hubo caso, no pude hacer correr el servidor php

Great Class!

En linux installan el servicio php

Tuve una cantidad de problemas, pero los aportes fueron de mucha ayuda. Otro problema fue que la carpeta account la escribi mal, por lo cual no encontraba nada. Sigamos.