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

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

Aplicando herencia en lenguaje Python y JavaScript

28/37

Lectura

Python

Recuerdas que en Python la herencia se expresa de manera muy similar a un m茅todo constructor de otros lenguajes. Apliquemos herencia para nuestra familia Car, para esto crearemos las siguientes clases:

Captura de pantalla 2019-01-21 a la(s) 3.34.29.png
Captura de pantalla 2019-01-21 a la(s) 3.34.40.png
Captura de pantalla 2019-01-21 a la(s) 3.34.56.png
Captura de pantalla 2019-01-21 a la(s) 3.35.10.png

El c贸digo completo puedes verlo aqu铆: https://github.com/anncode1/Curso-POO-Platzi/tree/2cbdf9db470a98323328f8a21bf6a9de941d008e/Python

JavaScript

En clases anteriores te expliqu茅 c贸mo ejecutar herencia en est谩ndares anteriores al EcmaScript 6. Uno de los beneficios de utilizar este nuevo est谩ndar que ejecutar herencia es tan simple como utilizar la palabra reservada extends.

Captura de pantalla 2019-01-21 a la(s) 4.10.32.png
Captura de pantalla 2019-01-21 a la(s) 4.10.48.png
Captura de pantalla 2019-01-21 a la(s) 4.11.01.png
Captura de pantalla 2019-01-21 a la(s) 4.11.18.png

Ahora para utilizar una de las clases y crear un objeto, por ejemplo de UberX, no olvides declarar la clase en el archivo index.html.

Captura de pantalla 2019-01-21 a la(s) 4.11.34.png

Nuestro ejemplo se ver谩 as铆:

Captura de pantalla 2019-01-21 a la(s) 4.11.52.png

El c贸digo completo puedes verlo aqu铆: https://github.com/anncode1/Curso-POO-Platzi/tree/9251101bdc2722ed13f9d93cb432ba8e9aba17b4/JS

Aportes 188

Preguntas 10

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Genial solo tuve problemas en Python
me genero el error: TypeError: descriptor 鈥init鈥 requires a 鈥榮uper鈥 object but received a 'str鈥
si les sale este error solo cambien

super.__init__(...)  

por

super().__init__(...)  

o

super(UberX,self).__init__(...)

Recuerden que Js es un lenguaje que maneja algo llamado event loop lo cual indica que el orde es muy importante

<script src="Account.js"></script>
<script src="Car.js"></script>
<script src="uberX.js"></script>
<script src="index.js"></script>```

Creo que la funci贸n super lleva los par茅ntesis en Python:

super().__init__(license, driver)

Para los que tengan problema con la ejecuci贸n del script en Python, puede ser por lo siguiente:

1.- Agregar par茅ntesis luego de escribir super, quedar铆a algo as铆:

super().__init__(license, driver)

2.- Si a煤n no funciona, revisa la versi贸n de Python que tienes, puesto que puede ser que est茅s probando con Python 2.x, lo cual hace que la sintaxis cambie. Para ello, instala la versi贸n 3.x o si ya la tienes instalada, al ejecutar el main.py, escribe en el terminal el comando 鈥減ython3鈥, en vez de solo 鈥減ython鈥, de esta manera:

python3 main.py

Para resolver el problema de python init requires a super object but received a str:

class UberX(Car):
    brand   = str
    model   = str

    def __init__(self, license, driver, brand, model):
        super(UberX, self).__init__(license, driver)
        self.brand = brand
        self.model = model

Las clases deben ir declaradas por orden jer谩rquico, si la colocamos de la siguiente manera nos genera error de referencia:

<script src= 鈥淯berVan.js鈥></script>
<script src= 鈥淯berPool.js鈥></script>
<script src= 鈥淯berBlack.js鈥></script>
<script src= 鈥淯berx.js鈥></script>
<script src= 鈥淎ccount.js鈥></script>
<script src= 鈥淐ar.js鈥></script>
<script src= 鈥渋ndex.js鈥></script>

El orden correcto de declarar seria debajo de Car.js y antes de index.js. De la siguiente manera:
<script src= 鈥淎ccount.js鈥></script>
<script src= 鈥淐ar.js鈥></script>
<script src= 鈥淯berVan.js鈥></script>
<script src= 鈥淯berPool.js鈥></script>
<script src= 鈥淯berBlack.js鈥></script>
<script src= 鈥淯berx.js鈥></script>
<script src= 鈥渋ndex.js鈥></script>

Hola a todos, si les sale alg煤n error de que la clase (p.ej UberX.js) no esta definida en el index.js es porque tienen que poner el script de esa clase antes que el script del archivo index.js en el archivo html. Puede que sea obvio pero ah铆 esta mi aporte.

Hola a todos!
Si al correr su programa en Python les aparece el:
TypeError: descriptor 鈥init鈥 of 鈥榮uper鈥 object needs an argument
Es porque en Anah铆 omit铆o los parentesis a la hora de llamar al metodo __ init __

Soluci贸n:

super().__init__()

super() devuelve un proxy object el cual es un objeto temporal y funge como intermediario entre la presente clase y la clase padre.

馃攩 Aplicando herencia en lenguaje Dart.

import 'car.dart';

class UberX extends Car{
  String brand;
  String model;
  
  UberX({license, driver, this.brand, this.model}): super(license: license, driver: driver);
}
import 'car.dart';

class UberPool extends Car{
  String brand;
  String model;
  
  UberPool({license, driver, this.brand, this.model}): super(license: license, driver: driver);
}
import 'car.dart'

class UberBlack extends Car{
  Map<String, Map<String, int>> typeCarAccepted;
  List<String> seatsMaterial;
  
  UberBlack({license, driver, this.typeCarAccepted, this.seatsMaterial}):super(license: license, driver: driver);
}
import 'car.dart'

class UberVan extends Car{
  Map<String, Map<String, int>> typeCarAccepted;
  List<String> seatsMaterial;
  
  UberVan({license, driver, this.typeCarAccepted, this.seatsMaterial}):super(license: license, driver: driver);
}
import 'account.dart';
import 'car.dart';
import 'uber_x.dart';

void main() {
  Car car = new Car(license: 'AW456', driver: Account(name: 'Andres Herrera', document: 'QWE234'));
  car.passenger = 4;
  car.printDataCar();

  UberX uberX = UberX(license: 'AW456', driver: Account(name: 'Andrea Ferran', document: 'ANDA765'), brand: 'Chevrolet', model: 'Spark');
  uberX.passenger = 4;
  uberX.printDataCar();
}

Algo importante y que no sab铆a hasta que realic茅 este ejercicio es que el orden de los scripts en HTML si importa, por lo que tenemos que poner el 鈥渋ndex.js鈥 como el 煤ltimo script en nuestro HTML, lo digo por si a alguien le sirve 馃槂

Encontr茅 un error en Python pero al parecer era en la linea donde se llamaba al constructor del padre (Carr), para arreglarlo busque esta otra manera de llamar al constructor padre:

from Car import Car

class UberX(Car):
    brand = str
    model = str

    def __init__(self, license, driver, brand, model):
        Car.__init__(self, license, driver)
        self.brand = brand
        self.model = model
        

luego el main.py, solo creamos el uberX y lo pintamos en consola:

from Car import Car
from Account import Account
from UberX import UberX

if __name__ == "__main__":
    print("Hola mundo")
    car = Car("AMS123", Account("Perdo Juarez", "ANF456"))

    print(vars(car))
    print(vars(car.driver))

    uberX = UberX("JJJ123", Account("Juanito Perez", "UFF234"), "Hyundai", "S201")

    print(vars(uberX))

En Python, el super debe ir con par茅ntesis, quedando super().

from car import Car

class UberPool(Car):
    brand = str
    model = str

    def __init__(self, license, driver, brand, model):
        super().__init__(license, driver)
        self.brand = brand
        self.model = model

El orden de llamada de los script en index.html es importante! El archivo index.js debe ir al final.

Soy un poco raro, i know, pero me gusta darle otra vuelta de rosca a lo que ofrecen estos cursos.

Para los que quieren ejecutar JS en consola pueden descargarse node (no tengo un tutorial pero google)

para no usar un html como interprete de javascript puede usar module.exports y require

por ejemplo:

const Car = require('./Car')

class UberBlack extends Car{
    constructor(license , driver, typeCarAccepted, seatMaterial){
        super(license, driver)
        this.typeCarAccepted = typeCarAccepted;
        this.seatMaterial = seatMaterial;
    }
}

module.exports = UberBlack;

Luego en consola (yo uso WSL) lo ejecutan con :

node index.js

y listo 馃槈

Es importante mencionar que en python tambi茅n se puede dar herencia m煤ltiple que implica que la clase hija hereda de m谩s de una clase, en este v铆nculo se puede encontrar m谩s informaci贸n con ejemplo pr谩cticos.

Al declara el m茅todo super en python, se debe estar pendiente que este es una funci贸n por lo cual se deber谩 declara como super()

from car import Car

class UberX(Car):
  brand = str
  model = str

  def __init__(self, license, driver, brand, model):
    super().__init__(license, driver)
    self.brand = brand
    self.model = model

La verdad este curso me parece el peor que he tomado hasta ahora.
Una mezcla de lenguajes, que hace que si ven铆s en tu ruta de Python, te tengas que fumar clases que no te importan (o peor a煤n , te confunden un mont贸n).
O sino, saltearlas. El problema es que al saltearlas luego no comprendes del todo porque la profesora es desorganizada.
Lamentablemente me estoy yendo a Youtube a buscar un curso de POO con Python que me aclare paso a paso este enjambre.

Completadooo

Es necesario aprender varios lenguajes de programaci贸n, pero especializarse en uno.

Algo que me pas贸 a m铆 fue que el objeto uberx que iba a crear en JS lo estaba nombrando igual que la clase es decir:

var UberX = new UberX(鈥渄es234鈥, new Account(鈥淓sneider Mosquera鈥, 鈥79560160鈥),鈥淐hevrolet鈥,鈥淪park鈥);

Esto les va a tomar como error ya que est谩 asumiendo que est谩 redeclarando la clase o algo as铆. Deber铆a verse parecido as铆 para que el motor de JS lo diferencie.

JS

Listo.

La sintaxis para Python 3 es:

class UberX(Car):
    brand = str
    model = str

    def __init__(self, license, driver, brand, model):
        super(UberX,self).__init__(license,driver)
        self.brand = brand
        self.model = model

Para los que tengan error en python, esta es la causa:

def __init__(self, license, driver, brand, model):
	super().__init__(license, driver)   #Darse cuenta en "super()"
	self.brand = brand
	self.model = model


Pueden darse cuenta que en la imagen del documento no esta as铆, y eso causa el error ya que estamos haciendo funcionar incorrectamente super()

Uhm no sab铆a que ten铆a importancia el orden de la declaraci贸n de las clases en el index.html.

Caso 1:

Caso 2:

Saludos!


class UberX extends Car{
    constructor(license, driver, brand, model){
        super(license, driver)
        this.brand = brand;
        this.model = model;
    }

    printCarModel(){
        console.log(this.brand)
        console.log(this.model)
    }
}
var car = new Car("AWD123", new Account("Andres Herrera", "QWE123"))
car.passenger = 4;
car.printDataCar();

var uberX = new UberX("OWC123", new Account("Juan Perez", "JUP123"), "Chevrolet", "Malibu")
uberX.passenger = 4;
uberX.printDataCar();
uberX.printCarModel();```



<!DOCTYPE html>
<html lang=鈥渆n鈥>
<head>
<meta charset=鈥淯TF-8鈥>
<meta http-equiv=鈥淴-UA-Compatible鈥 content=鈥淚E=edge鈥>
<meta name=鈥渧iewport鈥 content=鈥渨idth=device-width, initial-scale=1.0鈥>
<title>POO</title>
</head>
<body>
<h1>POO con JavaScript</h1>
</body>
<script src=鈥淎ccount.js鈥></script>
<script src=鈥淐ar.js鈥></script>
<script src=鈥淯berX.js鈥></script>
<script src=鈥淯berBlack.js鈥></script>
<script src=鈥渋ndex.js鈥></script>
</html>```

JavaScript





Python





PYTHON

JAVASCRIPT

Como lo hice yo sin usar index.html:

  • Creo la clase Car:
class Car {
    id;
    license;
    driver;
    passenger;

    constructor(license, driver) {
        this.license = license;
        this.driver = driver;
    }

    printCarInfo() {
        console.log(this);
    }
}

module.exports = Car;

(Al final uso module.exports para importarlo en el siguiente c贸digo)

  • Creo mi archivo UberPool.js e importo el 鈥淐ar鈥 que export茅 anteriormente, y la guardo en una constante (variable)
const Car = require('./Car');
  • Creo mi clase UberPool y la exporto de igual forma:
const Car = require('./Car');

class UberPool extends Car {
  brand;
  model;

  constructor(license, driver, brand, model) {
    super(license, driver);

    this.brand = brand;
    this.model = model;
  }
}

module.exports = UberPool;
  • Hago lo mismo con Account, creo la clase, el archivo y luego exporto.
class Account {
    id;
    name;
    document;
    email;
    password;

    constructor(name, document) {
        this.name = name;
        this.document = document;
    }
}

module.exports = Account;
  • En mi index.js importo UberPool y Account.
const UberPool = require('./UberPool');
const Account = require('./Account');
  • Armo todo mi objeto con sus datos, as铆 deber铆a quedar:
const UberPool = require('./UberPool');
const Account = require('./Account');

let user = new Account("Lucas Alvarez", "34567890")
let car = new UberPool("ABC123", user, "Lamborghini", "Gallardo");

car.printCarInfo();
  • Cuando termino de escribir en index.js le doy a 鈥淩un Code (Ctrl+Alt+N)鈥 y me muestra el resultado en OUTPUT de vscode:

Mucho texto, pero lo dejo por si les interesa

Me va gustando Python, pero estoy tan acostumbrado al tipado fuerte de Java que me da 鈥渁mciedad鈥 no poner punto y coma al final de cada l铆nea jaja

Me daba un error que dec铆a que 鈥淯berX鈥 no se ha encontrado y revisando me di cuenta de que en el archivo index.html el orden en el que yo estaba declarando las clases no era el mismo, entonces coloque <script src=鈥渋ndex.js鈥></script> al final de los scripts y funcion贸 perfectamente, debi贸 ser por el orden en el que se compila.
Espero que pueda ayudar por si alguien tuvo el mismo problema.

Hola Comunidad a mi no me funciono en python super. __init__ (params)

En vez de ello utilice super(UberBlack, self).__init__(params):

from car import Car

class UberBlack(Car):
    """
    docstring
    """
    typeCarAccepted = []
    seatsMaterial = []

    def __init__(self, licence, driver, typeCarAccepted, seatsMaterial):
        super(UberBlack, self).__init__(licence, driver)
        self.typeCarAccepted = typeCarAccepted
        self.seatsMaterial = seatsMaterial```

Python:

JS:

Chevere

Yo tuve un problema con python, no importaba la sintaxis que ponia siempre me salia error en el 鈥渟uper()鈥.
Descubri que el error era que tenia dos versiones de python instaladas en mi equipo (la 2.7 y la 3.7).
Aparentemente al correr el codigo del archivo main.py, mi equipo estaba usando la version mas antigua y lo que tuve que hacer fue establecer dos alternativas y fijar la version 3.7 como mi alternativa por defecto

La solucion la saque de este post

Yo estoy usando Ubuntu por lo que esta solucion me sirvio perfectamente y me corre con super( ).
Tal vez los que tienen Windows o Mac y tienen el mismo problema con la herencia necisten configurar algo similar

Este es mi codigo para la clase UberX

from car import Car

class UberX(Car):
    brand = str
    model = str

    def __init__(self, license, driver, brand, model):
        super().__init__(license, driver)
        self.brand = brand
        self.model = model
	

No venia entendiendo este tema del todo, se me ocurri贸 algo, tire un triple y FUNCIONO! Me subi贸 mucho el animo xD

from car import Car
from account import Account
from uberx import UberX

if __name__ == '__main__':
    print('El auto que pasa por ti es un ' + UberX.brand('Audi') + ' ' + UberX.model('A4') )

(Hablo de llamar el atributo de la clase UberX con un punto y pasar el dato)

Pueden usar Pycharm si est谩n teniendo problemas con los plugins de Visual Studio Code para python. Aqui esta el link.Lo importante es aprender no importa la herramienta

Hola amigos, les queria compartir un error que me sucedio en MacOSX. Por defecto en Mac viene Python instalado en el sistema, pero debes saber que dependiendo de la version puede darnos un error como en mi caso con la version 2.7.16 (Al parecer para esta version de python lo constructores se definen distinto), es por esa razon que si no les sirve python main . py o les arroja algun error, entonces deben ejecutarlo con la version 3, de esta forma python3 main . py.

PDT: Separo el main . py en los comandos porque el editor me muestra error. Sorry 馃槂

Adjunto captura de pantalla mas explicativa:

Para los que quieren utilizar node

var Car = require('./Car.js');

module.exports = class UberX extends Car {
    constructor(license, driver, brand, model) {
        super(license, driver)
        this.brand = brand;
        this.model = model;
    }
}

En serio ECMAScript simplic贸 mucho las clases de JavaScript xD Antes la herencia con JavaScript era feo jaja:( En el modo en el que vimos aqu铆 estabamos sobreescribiendo prototype y si no me equivoco no se hace una herencia prototipal, pero hay incluso otro modo m谩s feo pero que es correcto jaja D:

Alguien podr铆a compartir como seria implementada la herencia en UberX en JS antes de EcmaScript 6? Gracias!

Mis apuntes de esta Clase:

Aplicando herencia en lenguaje Python y JavaScript

En el caso de Python para definir la herencia entre clases primero hay que importar la s煤per clase.

from car import Car # car 鈫 el nombre del archivo que contiene la Clase pero sin extenci贸n. Car 鈫 El nombre de la Clase que se quiere importar.

Luego se define la herencia usando la siguiente sintaxis:

class UberX(Car): #UberX 鈫 (Sub Clase) La clase sobre la que se va a aplicar la herencia. Car 鈫 (S煤per Clase) La Clase que se va a heredar.

Despu茅s se crea el m茅todo constructor con los par谩metros requeridos para crear el objeto, incluidos los par谩metros de la Clase que se hered贸. Luego se usa super para acceder al M茅todo Constructor de la s煤per Clase y finalmente con self se acceder a los atributos de sub Clase para asignarles el valor que se pase por par谩metro en el m茅todo constructor.

def __init__(self, license, driver, brand, model): # M茅todo Constructor con los par谩metros para crear el objeto
    super.__init__(license, driver)
    self.brand = brand
    self.model = model

Nota: si al ejecutar el programa aparece un mensaje de error como este: __int__ requires a super object but received a str hay que hacer el siguiente cambio al acceder al constructor de la s煤per Clase:

super(UberX, self).__init__(license, driver)

En el caso de JavaScript, si se usa la nueva sintaxis que ofrece EcmaScript 6 se usa extends para definir la herencia. Luego se crea el constructor y se definen los atributos para crear el objeto.

class UberX extends Car {
    constructor(license, driver, brand, model) {
        this.brand = brand;
        this.model = model;
    }
}

Para crear una instancia de un objeto hay que asegurarse de tener el archivo con la s煤per Clase vinculado en el HTML, despu茅s se crea una instancia del objeto en JavaScript con la siguiente sintaxis:

var uberX = new UberX("SXC53", new Account("Felipe Molina", "UISD6JASD6T832"), "Ford", "Focus")
from car import Car
from UberX import UberX
from UberBlack import UberBlack
from account import Account


if __name__ == "__main__":
    print("Hola mundo")

    car = Car("AMD234", Account("Jonathan", "12358DAS"))
    print(vars(car))
    print(vars(car.driver))
    print(" ")

    uberX = UberX("AKSd",Account("Angie",12345),"chebrolet","MD")
    print(vars(uberX))
    print(vars(uberX.driver))
    print(" ")

    uberBlack = UberX("AKSd",Account("Angie",12345),["chebrolet","mazta"],["MD","KS"])
    print(vars(uberX))
    print(vars(uberX.driver))

Listo en JS 馃槂.

Me encanta Pyton y JS EC6

JavaScript super sencillo, me gusta

porque cuando estoy en python aveces no me autoacompleta las palabras ?
ejemplo: cuando estaba haciendo la clase UberX al pasarle 鈥渓icense鈥 y 鈥渄river鈥 me las autoacompletaba pero en las demas clases de Uber no

Buenas las clases hasta ahora JS me comienza a gustar

dos puntos por terminar de leer :v

Mis codigos en JS quedaron as铆:

class Account {
  constructor(name, document) {
    this.id;
    this.name = name;
    this.document = document;
    this.email;
    this.password;
  }
}

class Car {
  constructor(license, driver) {
    this.id;
    this.license = license;
    this.driver = driver;
    this.passenger;
  }

  printDataCar() {
    console.log(this);
  }
}

class UberX extends Car {
  constructor(license, driver, brand, model) {
    super(license, driver);
    this.brand = brand;
    this.model = model;
  }
}

class UberPool extends Car {
  constructor(license, driver, brand, model) {
    super(license, driver);
    this.brand = brand;
    this.model = model;
  }
}

var driver = new Account("Juan Mata", "HGL879");
var car = new Car("BVGRT87", driver),
  uberX = new UberX("HVJCEBW", driver, "Chevrolet", "Spark"),
  uberPool = new UberPool("RVJWLN", driver, "Dodge", "Attitude");

car.printDataCar();
uberX.printDataCar();
uberPool.printDataCar();

Listo

Me doy cuenta de que me gustan mucho estos dos lenguajes, entiendo mejor cada concepto ac谩 en comparaci贸n con Java y PHP :C

Algo importante que me pas贸 y no me dejaba ejecutar el c贸digo: en el index.html tengan en cuenta el orden en que colocan los scripts ya que cuando colocaba uberx.js de primero me salia que la clase Car no estaba definida y a continuaci贸n que la clase UberX tampoco lo estaba. Tengan en cuenta que primero deben ir las clases padres y luego los hijos:

![](

Super() -> Esta funci贸n nos permite invocar y conservar un m茅todo o atributo de una clase padre (primaria) desde una clase hija (secundaria) sin tener que nombrarla expl铆citamente. Esto nos brinda la ventaja de poder cambiar el nombre de la clase padre (base) o hija (secundaria) cuando queramos y a煤n as铆 mantener un c贸digo funcional, sencillo y mantenible.

Herencia simple de clase y atributos en python con super()
Supongamos que queremos que una clase hija o secundaria herede los atributos de clase primaria o padre. Si nosotros no recurrimos a la funci贸n super, o llamamos al constructor init especificando los atributos. Deberemos reescribirlos, lo cual en una clase por ejemplo con 20 atributos seria una perdida de tiempo enorme!

Si ya vamos a usar el feature de class de ECMA6, pues tambi茅n hay que usar modules para poder importar/exportar c贸digo entre los archivos .js sin tener que referenciarlos todos en el html. Aqu铆 les dejo un v铆deo tutorial:

Mi aporte con Python!!

Output

{'license': 'AMQ123', 'driver': <account.Account object at 0x7f604f346c10>}
{'name': 'Andres Herrera', 'document': 'ANDA876'}
{'license': 'KVB129', 'driver': <account.Account object at 0x7f604f1f1190>}
{'name': 'Julian Munoz', 'document': '123456789'}
{'license': 'AMQ123', 'driver': <account.Account object at 0x7f604f1c4d90>, 'brand': 'Chevrolet', 'model': 'Spark'}
{'license': 'KBV129', 'driver': <account.Account object at 0x7f604f1c4e50>, 'brand': 'Mazda', 'model': 'Cx7'}
{'license': 'XSD856', 'driver': <account.Account object at 0x7f604f1c4f10>, 'typeCarAccepted': 'credit cards', 'seatsMaterial': 'leather'}
{'license': 'EQS205', 'driver': <account.Account object at 0x7f604f1c4fd0>, 'typeCarAccepted': 'credit cards', 'seatsMaterial': 'leather'}

Herencia en JavaScript Prototypes:

const {Car} = require("./Car");

function UberVan(license, driver, typeCarAccepted, seatsMaterial) {
    this.typeCarAccepted = typeCarAccepted;
    this.seatsMaterial = seatsMaterial;
    Car.call(this,license,driver);
}

UberVan.prototype = new Car();

module.exports = {
    UberVan: UberVan
}

Dejo un art铆culo que explica un poco m谩s la herencia:
https://lenguajejs.com/javascript/caracteristicas/herencia-de-clases/

Me gusta mucho este curso

Hola este es mi resultado para Python 馃悕馃敟

Y este es mi resultado para JavaScript 馃殌馃捇 Yo lo hice de esta manera

Solo una cr铆tica constructiva. La etiqueta <script> debe estar a finalizar el <body> pero no fuera de este. Lo correcto ser铆a colocar las etiquetas de <script> justo antes de la etiqueta de cierre </body>
La etiqueta <html> solo tiene y contiene 2 etiquetas hijas que son <head> </head> y <body> </body>

Las clases deben ir declaradas por orden jer谩rquico.

Para resolver el problema de python init requires a super object but received a str:
class UberX(Car):
brand = str
model = str

def __init__(self, license, driver, brand, model):
    super(UberX, self).__init__(license, driver)
    self.brand = brand
    self.model = model

manejar una l贸gica eso ayuda mucho

Si tienen Python3.9 el editor de c贸digo directamente les pone:

    def __init__(self, license, driver):
        super().__init__(license, driver)

Esto sucede al momento de redactar el c贸digo. 脷nicamente tienen que agregar lo que falta el par茅ntesis del M茅todo Constructor (o M谩gico como prefieran)

python es ese amigo piola que encima sabe todo con el que siempre querias hacer grupo en el colegio

Le agregue un print mas al js

var uberx1 = new UberX("AWQ123", new Account("Andres Herrera","Q45289722"),"Chevrolet", "Spark")
uberx1.passenger = 4;
uberx1.printDataCar();
uberx1.printDataUberx();

L贸gicamente debes incluirlo en el archivo UberX.js

Pero Python no separa palabras poniendo may煤sculas a la segundo palabra, la separa con un guion bajo 馃槷
Ooh鈥! 隆隆malas practicas!!

var car = new Car(鈥淎WSSS鈥, new Account(鈥淒uqueza Campo鈥, 鈥1161594824鈥));
car.passenger = 4;
car.printDataCar();

var uberX = new UberX(鈥淚GU829鈥,
new Account(鈥淒uqueza Campo鈥, 鈥11615948鈥),
鈥淐herolet鈥, 鈥淪ail鈥);

uberX.passenger = 5;
uberX.printDataCar();

Bien en JS. pero en python me sigue saliento este error:

Import 鈥渁ccount鈥 could not be resolved

from account import Account

class Car:
   id         = int
   license    = str
   driver     = Account("","")
   passengers = int 
   
   def __init__(self, license, driver):
      self.license   = license
      self.driver    = driver


y en el main:

Import 鈥渦berX鈥 could not be resolved

from car import Car
from account import Account
from uberX import UberX

if __name__ == "__main__":
    print('Lista de Vehiculos')

    uberX1 = UberX ("SKD458", Account("Fabian Lopez", "413545"), "Mazda", "Allegro")
    uberX1.id = 1
    print(vars(uberX1))```

Agradezco la ayuda de alguien que me oriente. mil gracias

Gracias! 鉂わ笍

Me sale este error en Python

Hola Mundo
Traceback (most recent call last):
  File "Python/main.py", line 8, in <module>
    car = UberX("LaPlaca123", Account("Roger Olivares", "Licencia123"), 'Chevrolet', 'Spark')
  File "/code/Python/uberX.py", line 8, in __init__
    super.__init__(driver, license)
TypeError: descriptor '__init__' requires a 'super' object but received a 'Account'

Excelente, me va gustando mucho Java, PHP y JavaScript. 馃槉

Es extra帽o pero muy reconfortante como cada lenguaje de programacion al ser distinto siempre termina teniendo co-relacion con los demas.

Hola, alguien me puede ayudar con este c贸digo de Python que no me quiere funcionar y todo lo tengo igual que en clase.

buenas, estoy teniendo problemas con las herencias. No me reconoce account en car ni en index. Alguna Idea? estuve revisando el codigo de los ejemplos y esta identico.

Alguna idea???

CAR.PY

from account import Account

class Car:
id = int
license = str
driver = Account("","")
passegenger = int

def __init__(self, license, driver):
    self.license    = license
    self.driver     = driver

from account import Account

class Car:
id = int
license = str
driver = Account("","")
passegenger = int

def __init__(self, license, driver):
    self.license    = license
    self.driver     = driver

INDEX.PY

from car import Car
from account import Account

if name == 鈥main鈥:
print(鈥渉ola mundo鈥)
car = Car(鈥淎MS231鈥, Account(鈥淔ede castresana鈥, 2344556))
print(vars(car))
print(vars(car.driver))


ACCOUNT.PY

class Account:
id = int
name = str
document = str
emai = str
password = str

def __init__(self, name, document):
    self.name       = name
    self.document   = document

la base de aprender a programar literalmente nace en estos conceptos 馃槃

muchas gracias!!

Perfecto!

Preguntas python
1 Se supone que los carros van a heredar todo lo par谩metros de la clase Car, correcto, ID, license, etc, y cada uber tiene sus propios par谩metros que son brand y model?.

2 Entonces cuando creo el objeto que hereda todos los par谩metros que escriba son propios del objeto, si ?

3 porque se pone super, para que sirve y como se utiliza?

Muy bien explicado

Excelente clase .

Esta super claro!

Muy bueno

Genial!

Excelente!!

Listos, ya qued贸!

Para no tener que incluir tantas etiquetas de Javascript en HTML podemos hacer esto. Asi solo llamamos la clases donde la vamos a usar
The script tag in the HTML must have a type=鈥渕odule鈥 otherwise it won鈥檛 work

<!DOCTYPE html>
<html lang="en">
<head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>Document</title>
</head>
<body> 
       <h1>OOP Course</h1>
   
     <script type="module" src="index.js"></script>
</body>
</html>


export default class Car {
     constructor (license, driver) {
          this.id,
          this.passenger;
          this.license = license;
          this.driver = driver;
       

     }


import Car from "./Car";

class UberX extends Car {
           constructor(license, driver, brand, model) {
                   super(license, driver);
                   this.brand = brand;
                   this.model = model;  
           }
}

genial

No se imaginan cuanto amo el lenguaje revelde JS

La sintaxis de JavaScript es muy similar a la de Java

Team Java forever, sin embargo, python y java script se vuelven cada vez mas atractivos

A seguir reforzando JS

Hola trate de realizar al herencia en python con el super() pero no me funcionaba asi que use lo siguiente

 def __init__(self,Licence,Driver,Brand,Model):
        Car.__init__(self,Licence,Driver)
        self.Brand = Brand
        self.Model = Model

Alguien me puede decir por que puede ser que pase esto? =)

Excelente

excelente todo, lo malo es que desde que empece el modo constructor python ni php me ha ido bien ejecutando pero en fin por ahora no le dere mente, y raro es que el codigo esta bien php no ejecuta el server por algo de path y python no le sirve esto from car import y sale malo metodo Account("", 鈥溾) pero de resto la explicacion de curso muy buena aprendere full stack javascritp

Es incre铆ble como JavaScript mejoro usando el nuevo est谩ndar EcmaScript 6.

Como dicen otros compa帽eros: Aunque me gusta mas Java, es increible la mejoria que tuvo JavaScript. Sinceramente despues de mejorar Java estudiare JavaScript sin duda alguna.