No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende Inglés, Desarrollo Web, AI, Ciberseguridad y mucho más.

Antes: $249

Currency
$209
Comienza ahora

Termina en:

0 Días
17 Hrs
27 Min
42 Seg

Declarando un Método Constructor en Java y JavaScript

23/37
Recursos

Aportes 234

Preguntas 75

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Hola 👨🏽‍🚀🖐🏽, les comparto la parte de JS donde ya se permite usar “class” [ES6].



Si no te funcionó escribir html5, cambia la extensión de tu archivo index por index.htm (sin la L final).

Recuerden respetar el orden de los documentos de js .
Forma Correcta.
Account.js
Car.js
index.js
Forma incorrecta
index.js
Car.js
Account.js

Nota: Javascript ahora soporta clases sin prototipos 😄

De lujo!, en lo personal creo que para aprovechar al máximo este curso hay que tener nociones previas de los lenguajes que se usan aquí, más que nada para no estar perdidos ya que aprender a hacer lo mismo en 4 lenguajes no es un trabajo fácil para alguien que va iniciando. Tener en cuenta eso.

La profe es excelente explicando y se entiende bien los conceptos pero, soy el único que por ahí se marea un poco con tantos lenguajes? jajaja como que quiero absorber todo y voy a explotar jaja

Clases en JavaScript con ES6:

// Account.js
class Account {
  id;
  name;
  document;
  email;
  password;

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

// Car.js
class Car {
  id;
  license;
  driver;
  passengers;

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

  printDataCar() {
    console.log(this.license);
    console.log(this.driver);
    console.log(this.driver.name);
    console.log(this.driver.document);
  }
}

// index.js
var car = new Car("ZZZ999", new Account("Camila Morales", "CAM169"));
car.passengers = 4;
car.printDataCar();

Hice todo y funciono , pero no entendi mucho sinceramente

Para aplicar test a los archivos javascript tambien puedes utilizar la consola y con node ejemplo:

// Car.js
function Car(license, driver) {
  this.id;
  this.license = license;
  this.driver = driver;
  this.passenger;
}
Car.prototype.printDataCar = function() {
  console.log(this.driver);
  console.log(this.driver.name);
  console.log(this.driver.document);
}
module.exports = Car;

// Account.js
function Account(name, document) {
  this.id;
  this.name = name;
  this.document = document;
  this.email;
  this.password;
}

module.exports = Account;

// index.js
const Car = require('./Car');
const Account = require('./Account');

const car = new Car('AMD147', new Account('Nombre Apellido', '147852369'));

console.log(car.printDataCar());

Luego en la consola:

node index.js

y esto imprimirá en consola la informacion del metodo car.printDataCar()

[JS] Me paso que me seguía mostrando el error en la consola y por más que corregí los errores seguía apareciendo:

Pasaba que se estaba ejecutando el index.js antes que las clases 😅

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

Sólo basto con dejar el index.js al último

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

🔆 Declarando un método constructor en el lenguaje Dart.

class Account {
  int id;
  String name;
  String document;
  String email;
  String password;

  Account({this.name, this.document});
}
import 'account.dart';

class Car {
    int id;
    String license;
    Account driver;
    int passenger;

    Car({this.license, this.driver});

    void printDataCar(){
      print('License: $license Driver: ${driver.name}');
    }
}
import 'account.dart';
import 'car.dart';

void main() {
	print('Hello World!');
  Car car = Car(license: 'AMQ123', driver: Account(name:  'Andres Herrera', document: '123'));
  car.passenger = 4;
  car.printDataCar();

  Car car2 = Car(license: 'QWE567', driver: Account(name: 'Andres Herrera', document: '123'));
  car2.passenger = 3;
  car2.printDataCar();
}

se volvio confuso…

Estoy súper perdido con este curso. Tendré que dejarlo. No creo que esté chido que pongan este curso en la ruta de Data Analyst si no sabemos programar en otra cosa que no sea Python, y menos si vamos empezando como es el caso de un servidor. He aprendido más de mi libro de OOP en Python que de este curso. Al final de la ruta lo completaré solo para tener todo al 100% pero le he invertido muchísimo tiempo y no logro captarle. OJO, no digo que sea malo, solo digo que si vengo trabajando con Python, sería mejor que hicieran un curso de OOP exclusivamente para Python. IMHO 😃

Me parece un curso demasiado confuso y mas cuando es ofrecido para alguien que está iniciando desde cero

a los que no les sirve en .html coloquenlo en .htm como que cambio la forma de colocar la extension

Este curso era lo que necesitaba antes de haber iniciado la escuela de javascript :v

excelente!!




No comprendo como funciona la parte en la cual driver pasa a ser de tipo account y en el metodo printDataCar() esta misma variable es driver.name?

En PHP

Class Account en otro archivo .php

<?php 
class Account{
    public $id;
    public $name;
    public $document;
    public $email;
    public $password;

    public function __construct($valorName, $valorEmail){
        $this->name=$valorName;
        $this->email=$valorEmail;
    }
}

Class Car en otro archivo .php

<?php
class Car{
    public $id;
    public $license;
    public $driver;
    public $passengers;

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

    public function echo_License_Driver_Email(){
        echo 'La licencia es: '
        . $this->license .'<br>'
        .'El conductor es: '. $this->driver->name .'<br>'
        . 'El correo de contacto es: ' . $this->driver->email;
    }
}

Traemos las clases al index.php y las usamos
Debemos traer las clases antes de usarlas o nos dará error

<?php 
        require_once 'Account.php'; 
        require_once 'Car.php';
?>
<?php
        $bochito = new Car('LEMM-180300', new Account('Marco Antonio', '[email protected]'));
        
$bochito->echo_License_Driver_Email();
?>

//Resultado en el navegador:
/*
La licencia es: LEMM-180300
El conductor es: Marco Antonio
El correo de contacto es: [email protected]
*/

En c#
Clase Account

using System;

namespace Uber.Clases
{
    public class Account
    {
        public int id;
        public String name;
        public String document;
        public String email;
        public String password;

        public Account(String name, String document)
        {
            this.name = name;
            this.document = document;
        }
    }
}

Clase Car

using System;


namespace Uber.Clases
{
    public class Car
    {
        public int id;
        public String license;
        public Account driver;
        public int passanger;

       
    public Car(String license, Account driver)
     {
         this.license = license;
         this.driver = driver;

     }


      public  void printDataCar()
        {
            Console.WriteLine("Licence: "+ license + "Driver "+ driver.name);
        }
    }
}

Metodo Main (program.cs)

using System;
using Uber.Clases;

namespace Uber
{
    class Program
    { 
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Car car = new Car("UTF-18", new Account(" Leandro Santiago ", "UTF-158"));
            car.passanger= 4;
            car.printDataCar();

            Console.WriteLine("Mi licencia es: "+car.license);
        }
    }
}

Es relativamente similar a java

Parece tan fácil pero no lo es 😦

Es importante el orden de los script src, de último debe ser invocado el index.js

Demasiada información! Me hierve la cabeza 😃

Una variable local únicamente vive dentro del método en donde se esta declarando.
Las variables globales , generalmente se declaran al principio del programa y cualquier método o función puede acceder a ella.

le falta explicar mas detalladamente lo que se va haciendo

Detallo un error que me dio por las dudas que ha alguien se le replique.

Al momento de ejecutar java mediante run, aparecían dos errores en la compilación y no podía ejecutarlo.
El error es que en el archivo Route.java falto de agregar cuando explican la siguiente línea:
import java.util.ArrayList;
Nunca use Java y el error me costo encontrarlo, revisando los archivos en la sección de archivos encuentro esa diferencia, agregue la línea y todo empezó a funcionar.

Espero ayudar a alguien.
Saludos

En JavaScript se mira mucho mejor usando la palabra reservada class de ES6 con su método constructor

se deberia poder utilizar calidades mas bajas de 720p en el reproductor para cuando no tenemos la mejor conexion!!

Mi resumen #23

En mi opnión, este curso debería de estar en una etapa más tardía para los que inicionamos cursos de Data desde cero. Aún no conocemos al detalle los comandos, metodos, entre otros. Además, no deberían de haberlo mezclado con todos los lenguajes de programación. Si adquirí ciertos conocimientos pero me hubiera gustado aprender más. Sin embargo, volveré en un futuro.

Es mi parecer o las calase resulta un poco entreveradas ya que a mi entender deberiamos primero ir po un legujae y despues ir al otro, eso de estar de uno a otro me marea un poco bastatne

Tengo que admitir que el curso me parece excelente, sin embargo, al estar haciendo rutas de data science, me siento extraviado y desconectado de los conocimientos que he logrado adquirir previamente, en el momento que domine más los temas de programación podré retomar este curso con más agrado.

Cada que avanzas más en el curso, definitivamente vas teniendo una mejor claridad sobre la forma en que debes codificar, es decir, cambia tu forma de pensar y de ver las cosas. Sobre todo cuando solo has trabajado en programación estructurada.

ya me agoteeee, dios que fastidio que las clases de este curso son un arroz con mango, estás viendo java, y python y JS y php todo al mismo tiempo, entonces pasa de un lenguaje a otro y uno ni cuenta se da, y empieza uno confundir conceptos y al final termina uno con desorden mental. QUE ES ESTO?, QUE ES ESTE DESASTRE DIOS MIO?. Y de repente la chama se saca cosas de la manga que no habíamos visto antes, hermana, explica que es lo que estás haciendo para que te sigamos. De paso el curso de verdad está imcompleto a mi parecer, le faltan algunas cosas esenciales que deberían estar en este curso, como instalar JDK, como crear una variable de entorno para HOME_JAVA, como instalar php. ACTUALICEN EL CURSO POR FAVOR, hagan presión a platzi para que actualicen el curso.

1. Como hacer un método constructor en Java en JavaScript:
1.1 Como crear un método constructor en Java:

class Car {
    Integer id;
    String license;
    Account Driver;
    Integer passenger;
}

public Nombre_de_clase(los parametros que son indispensables, ejemplo "String license"){
    this.license = license

}
  • Tu en los parámetros del constructor puedes poner lo que te de la gana, pero en realidad es una buena práctica que pongas el mismo nombre de los atributos de la clase para mantener la consistencia en la información del código, volviendo al ejemplo del código si tú pones en el código “String lcnse”, pero no lo hagas.
  • Los parámetros del método constructor son variables locales, mientras que las variables de la clase car son variables públicas.
  • Ahora para inicializar el atributo que está en la clase car, dentro del método constructor vamos a llamas al tributo dentro del método, pero como distinguimos del método y de los atributos sin ambos se llaman igual?, así de simple, por ejemplo en el atributo license lo llamamos: this.license. Como puedes ver en la clase ponemos el
    .
    Cómo declara inicializar objetos en java:
	
// Definir la Clase
public class Persona {
    private String nombre;
    private int edad;
    
    public Persona(String nombre, int edad) {
        this.nombre = nombre;
        this.edad = edad;
    }
    
    public void saludar() {
        System.out.println("Hola, mi nombre es " + nombre + " y tengo " + edad + " años.");
    }
}


// Crear una instancia de la Clase Persona
Persona persona1 = new Persona("Juan", 25);

// Llamar a un Método de la Clase
persona1.saludar();

.
Para declarar un objeto en Java, primero debe tener una clase que describa las propiedades y comportamientos del objeto. Luego, puede crear una instancia de esa clase utilizando la palabra clave “new” seguida del nombre de la clase y paréntesis vacíos o con argumentos de inicialización. Aquí hay un ejemplo:

En este ejemplo 34, la clase “Persona” define dos propiedades (nombre y edad) y un método (saludar). Luego, se crea una instancia de la clase utilizando el constructor que toma un par de parametros y se asigna a la variable “persona1”. Finalmente, se llama al método “saludar” en la instancia de la clase.

Nota: (esto fue escrito con IA, pero se entiende).

En caso que tengas en la clase que estás declarando un atributo que hereda de la clase, tienes que hacerlo así: "Car car1 = new Car(“atributos x”, new “nombre de la clase de la cual hereda el atributo”(atributos de la clase original)),.
.

Car car1 = new Car("atributos x", new "nombre de la clase de la cual hereda el atributo"(atributos de la clase original)

.
1.2. Como hacer un método constructor en JavaScript:
Para hacer una clase en JavaScript se utiliza la sintaxis de class, que se introdujo en ES6. Para definir un método constructor, el cual se llama automáticamente cuando se crea un nuevo objeto a partir de la clase 1, utilizamos el método especial constructor(). Aquí te muestro un ejemplo sencillo:

class Persona {
  // Método constructor
  constructor(nombre, edad) {
    this.nombre = nombre;
    this.edad = edad;
  }

Para definir una clase en JavaScript que tenga atributos automáticos, como la edad que es un parámetro opcional en la creación de la instancia, puedes hacer lo siguiente usando “class” y “function”:

		
function Persona(nombre, email, edad) {
  this.nombre = nombre;
  this.email = email;
  this.edad = edad || null;
}
class Persona {
  constructor(nombre, email, edad = null) {
    this.nombre = nombre;
    this.email = email;
    this.edad = edad;
  }
}

El parámetro edad se define con un valor por defecto de null.

Inicializando las clases:

let persona1 = new Persona("Juan", "[email protected]");
let persona2 = new Persona("Pepe", "[email protected]", 25);

¿cuál es la diferencia entre usar function y class?
.
En JavaScript ES6, no es necesariamente una mala práctica utilizar la palabra clave function para definir una clase en lugar de class. De hecho, ambas formas son válidas y permitidas en el estándar ECMAScript 6. La principal diferencia radica en la sintaxis y el estilo de programación. El uso de class en lugar de function puede mejorar la legibilidad del código y simplificar la estructura de la clase.
.
Sin embargo, hay algunas diferencias importantes entre las clases definidas mediante class y las clases definidas mediante function. Por ejemplo, las clases definidas con class no son funciones para propósitos de la sintaxis y deben usarse siempre con el operador new. Además, las clases definidas mediante class no pueden ser elevadas y no son alcanzables antes de su definición, mientras que las clases definidas con function sí.
.
En general, el uso de class puede mejorar la estructura y legibilidad de la clase y se considera una buena práctica, pero el uso de function para definir una clase también sigue siendo válido. La elección entre ambas dependerá del problema específico que se desea resolver y del estilo de programación personal.

# **Declarando un Método Constructor en Java y JavaScript**

El método constructor es una función especial que se llama automáticamente cuando se crea un objeto a partir de una clase. Es el encargado de inicializar los valores iniciales de los atributos del objeto.

En Java

En Java, el método constructor tiene el mismo nombre que la clase y se declara sin tipo de retorno. Por ejemplo, si tenemos una clase Car, el método constructor se declararía así:


public class Car {
    String make;
    String model;
    int year;

    public Car(String make, String model, int year) {
        this.make = make;
        this.model = model;
        this.year = year;
    }
}


En este ejemplo, el constructor recibe tres parámetros que corresponden a las propiedades de la clase. Estos valores son asignados a los atributos usando la palabra clave this.

En JavaScript

En JavaScript, el método constructor es una función especial que se declara con el nombre constructor. Por ejemplo, si tenemos una clase Car, el método constructor se declararía así:


class Car {
    constructor(make, model, year) {
        this.make = make;
        this.model = model;
        this.year = year;
    }
}


En este ejemplo, el constructor recibe tres parámetros que corresponden a las propiedades de la clase. Estos valores son asignados a los atributos usando la palabra clave this.

Instanciando un objeto

Una vez que hemos definido la clase y el constructor, podemos crear un objeto a partir de ella usando la sintaxis new. Por ejemplo:

En Java


Car myCar = new Car("Honda", "Civic", 2022);


En JavaScript


let myCar = new Car("Honda", "Civic", 2022);


Imprimiendo los atributos del objeto

Para imprimir los atributos de un objeto en Java, podemos usar el método System.out.println() y concatenar los valores con el operador +. Por ejemplo:


System.out.println("Make: " + myCar.make);
System.out.println("Model: " + myCar.model);
System.out.println("Year: " + myCar.year);


En JavaScript, podemos imprimir los atributos de un objeto usando la función console.log(). Por ejemplo:


console.log("Make: " + myCar.make);
console.log("Model: " + myCar.model);
console.log("Year: " + myCar.year);

Estoy mareado con tantos lenguajes jajaja

Para que no tengan que refrescar su navegador con cada cambio que hagan, VS Code tiene una opción que se llama Live Server, la pueden encontrar en la barra inferior del lado derecho, la van a encontrar como “Go Live”, así,c ada vez que guarden los cambios en VS Code, el navegador se refrescara por si solo.

https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer

20. Mis apuntes sobre: “Declarando un Método Constructor en Java y JavaScript”

Les comparto el código donde ya se permite el uso de “Class” en JavaScriptS desde [ES6]:

Código Javascript

-1.Account.js

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



-2.Car.js

class Car{
    constructor(license, driver){
        this.id;
        this.license = license;
        this.driver = driver;
        this.passenger;
    }
   printDataCar(){
       console.log(this.license);
       console.log(this.driver);
       console.log(this.driver.name);
       console.log(this.driver.document);
   }
}



-3.index.js

var car = new Car("AW456", new Account("Andres Herrera", "KAD23"));
car.passenger = 4;
car.printDataCar();

'
'
Ahora el código HTML
-4.index.hmtl

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>OOP</title>
</head>
<body>
    <h1>Programación Orientada a Objetos en Javascript</h1>
    <script src="Car.js"></script>
    <script src="Account.js"></script>
    <script src="index.js"></script> 
</body>
</html>

Clases en JS

Car.js

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

  dataCard() {
    console.log(`License: ${this.license}`)
    console.log(`Driver name: ${this.driver.nameDriver}`)
    console.log(`Document: ${this.driver.document}`)
  }
}

export default Car

Account.js

class Account {
  constructor(nameDriver, document) {
    this.nameDriver = nameDriver
    this.document = document
  }
}

export default Account

Index.js

import Car from './Car.js'
import Account from './Account.js'

const car = new Car("HDL852", new Account("Jose", "ID654"))
car.dataCard()

const car2 = new Car("KWL852", new Account("Luis", "ID987"))
car2.dataCard()

Script en HTML

<script type="module" src="./index.js"></script>

En javascript si colocamos el archivo de type=“module” podemos import las class

main js

import Card from './Card.js'
import Account from './Account.js'

let auto = new Card('WERT345', new Account('Juan Manani', 3245499))
auto.passengenger = 34
auto.printData()

class Card

function Card(license, driver) {
    this.id = null;
    this.license = license;
    this.driver = driver;
    this.passengenger = null;
}

Card.prototype.printData = function() {
    console.log(`Card license: ${this.license}`)
    console.log('Card driver: ' + this.driver.name)
}

export default Card;

class Account

function Account(name, document) {
    this.id = null;
    this.name = name;
    this.document = document;
    this.email = null;
    this.password = null;
}

export default Account;

html

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

Me quedo en Python solo porque mi visual studio no importa las clases T_T

Considero más complicado Javascript porque se complica en muchas cosas.

No es necesario crear la estructura de HTML, para los que tengan Node.js lo pueden correr con el comando: node nombrearchivo.js. En Ubuntu me funcionó como nodejs nombrearchivo.js

de poquito en poquito, pero voy aprendiendo…

En el minuto 13:00 la profesora colocó:

console.log(this.driver.name)

lo cual me generó mucha duda pero lo resolví y aquí se los dejo explicado de una vez junto al método de la clase"Car.prototype.printData()"
.
Car.prototype.printData()

class Account {
  constructor(id, name, age, experience) {
    this.name = name;
    this.id = id;
  }
}

class Car {
  constructor(brand, color, driver) { 
    this.id = driver; 
    this.brand = brand;
    this.model = model;
    this.color = color;
  }
}

var car = new Car("Aveo", "Anquerita", new Account("Andres Herrera", "QWE234"))

Car.prototype.printDataCar = function () {
    console.log(this.brand)
    console.log(this.driver)
    console.log(this.driver.name)
}

#Output: 
    "Aveo"
    "Account { name: 'Andres Herrera', id: 'QWE234' }"
    "Andres Herrera"

Cuando definimos un método como Car.prototype.printDataCar = function() {…}, estamos agregando el método printDataCar al prototipo de la clase Car. Esto significa que cualquier instancia creada a partir de la clase Car tendrá acceso a este método.

En el ejemplo proporcionado, la función printDataCar() se define como un método en el prototipo de la clase Car. El método printDataCar() se utiliza para imprimir los valores de las propiedades brand, driver, y “driver. name” (va pegado, no separado) de una instancia de Car. De esta forma podemos acceder a las variables de la instancia creada.

Ahora quiero explicar, “console.log(this. driver. name” (va pegado no separado", esta linea de código es posible porque le estamos dando como parametro a car otra clase como si fuese el parametro driver, por lo que tu puedes llamar a un atributo en especifico de la otra clase de esa manera, conserva el nombre del atributo de la clase a la que estás llamando en “Car.prototype.printDataCar”, pero el atributo a su vez tiene subs atributos heredados de otra clase.

Me salió este error al ejecutar el main:
“Acount cannot be resolved to a type”

Me di cuenta que el error era porque había escrito mal la clase Acount en vez de Account.

Sin embargo, al arreglar el problema, seguía mostrando el mismo mensaje. Entonces borre todo el objeto “car” con su instancia y modelo constructor, lo volví a construir y esta vez si funciono 😃

si en este punto sienten frustracion por que no estan entendiendo todo y solo estan replicando lo que hace la maestra, les recomiendo aprender POO enfocandose solo python (es la eleccion mas facil). yo aprendi bien en un canal llamado BitBoss.

Anahí debo confesar que tengo años huyendole al código y a POO, porque nunca vi explicaciones tan sencillas y practicas, nisiquiera aqui en platzi, que buena clase, eres lo máximo

Seguiré publicando mis avances haciendo el curso con C#, quizás en un futuro los volveré a ver aquí 😄

Ya saben, cualquier critica para mejorar el código o algo que no sea del todo correcto aunque funcione por favor coméntenmelo.

class Account
{
    public int id;
    public string name;
    public string document;
    public string email;
    public string password;

    public Account(string name, string document) 
    { 
        this.name = name;
        this.document = document;  
    }
}

class Car
{
    public int id;
    public string license;
    Account driver;
    public int passengers;

    public Car(string license, Account driver, int passengers)
    {
        this.license = license;
        this.driver = driver;
        this.passengers = passengers;
    }

    public void printDataCar()
    {
        Console.WriteLine($"License: {license} \nDriver Name: {driver.name} \nDriver Document {driver.document}  \nPassengers: {passengers} \n");
    }
}

class Payment
{
    public int id;
}

class Route
{
    public int id;
    public double[] start;
    public double[] end;
}
 
internal class OOPUberCourse
{
    static void Main(string[] args)
    {
        Console.WriteLine("Let's fucking go");
        Car car = new Car("AMQ123", new Account("Andres Herrera", "1619-5168-12365"), 4);
        car.printDataCar();

        Car car1 = new Car("HGY849", new Account("Fredy Romero", "0501-2002-02314"), 2);
        car1.printDataCar();

    }
}

Había estado en otros cursos de Java, leído libros y nunca había entendido para que sirve el " this ", y Anahí me lo hizo entender en cuestión de segundos

Demasiado bueno como ella nos enseña

Al principio cuando empeze con java me parecia pesado, despues me fui con PHP y javascript y ahora con el que mas le encuentrpo sentido es con java por su tipado fuerte.

Usando modulos.

// Account.js
class Account {

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

}

export default Account;

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

  printDataCar = () => {
    console.log(this.license);
    console.log(this.driver);
    console.log(this.driver.name);
    console.log(this.driver.document);
  }

}

export default Car;

// index.js
import Account from './Account.js'
import Car from './Car.js'

const car = new Car('Drop-123', new Account('Pepe', '77777'));
car.printDataCar()

// index.html
<script type="module" src="./index.js"></script>

JavaScript ha tenido muchas mejoras, ahora en la etiqueta script ponemos <script src="./index.html" type=“module”></script>
Y ya solo importamos las clases cuando las ocupamos.
En los archivos de cada clase debe ir:
export default class Car { … } y en el index lo llamamos así

Buena clase así se aprende haciendo

Declaración de contructor en Java

Para cualquiera que tenga problemas con la declaracion en Python, encontre la solucion despues de 20 minutos, y creo que es un error conceptual que se soluciona enumerando los carros:

from Car import Car

if name==“main”:
print("*Wellcome to the firt program UBER like")

car1 = Car()
car1.license = "MCU999"
car1.driver = "Andres Herrera"
print(vars(car1))

car2 = Car()
car2.license = "SZP736"
car2.driver = "Gustavo Lopez"
print(vars(car2))

#Por demas decir que con esta declaracion funciono perfecto!

Hola, tengo un problema con visual studio code y los archivos HTML, simplemente no reconoce la extensión. ¿Como puedo solucionar este problema? Muchas gracias!

class Main {
public static void main(String[] args) {
Car car = new Car(“AQR123”, new Account(“Antonio Matos”, “ADN123”));
car.passegenger = 4;
car.PrintDataCar();

    Car car2 = new Car("QTP456", new Account("Juan Mota", "PDE456"));
    car2.passegenger = 4;
    car2.PrintDataCar();

    
}

private static Account Account(String string, String string2) {
    return null;
}

}

License: AQR123 Name Driver: Antonio Matos
License: QTP456 Name Driver: Juan Mota

Me costo un poco entenderlo en java, pero listo, sigamos

Siguiendo los pasos de la clase 😃

notorio que el lenguaje favorito de la profesora es java 😅

Interesante. Aunque al inicio me cuesta: nunca he usado Java. ¡Pero se ve muy robusto!

Esto se esta complicando, espero estar entendiendo bien.

Tambien se puede hacer de la siguiente forma en JavaScript.
Primero en el archivo HTML solo llamamos al archivo index.js y le ponemos el atributo “type” de la siguiente forma

( type=“module” ) sirve para poder exportar e importar archivos.

luego vamos a nuestro archivo index.js e importamos los archivos Car y Account de la siguiente forma.
Pero aun falta algo, y es que tenemos que exportar primero los archivos Car y Account.

y es simple, en la parte final del archivo Car.js ponemos " export default Car " y de esta forma exportamos con éxito la clase Car.
Hacemos lo mismo con el archivo account y ya podemos utilizarlos en el archivo Index.js

Me confundí con los atributos license, este esta para las clases Car y Account.

Pero ya le entendí, license en Car hace referencia a la palca y en Account a la licencia de conducir.

Además, se invoca

 driver.name 

porque si se invoca solo driver este invocará los dos atributos oblicatorios par que pueda existir el objeto Driver, es decir, en este caso solo queremos llamar el nombre del conductor por eso es

driver.name

En otros cursos lo aprendí: En VS Code en vez de usar “html:5” para el autocompletado del código básico se puede colocar solo “!” (Emmet Abbreviation).

Una forma de importar clases desde otro archivo en JavaScript sin necesidad de crear tantas etiquetas <src> en HTML es aprovechando los módulos de EcmaScript que usan la siguiente sintáxis:

  • Para habilitar nuestro archivo para ser exportado y usado, debemos agregar esta linea al final del documento: export default nombreDeLaFuncion;. Ejemplo:
    proyecto/Car.js
function Car(name, driver){
[...]
}

export default Car;
  • Para importarlo debemos agregar esta línea al inicio de nuestro archivo index.js (o cualquier archivo que vaya a usar la clase) import Car from "./Car.js. Ejemplo:
import Car from "./Car.js";

var car = new Car("AW456", new Account("Andrés Herrera", "QWE234"));
  • Por último vamos a agregar la etiqueta <script> en nuestro index.html que haga referencia a al index de Javascript, sin olvidar agregar el atributo type="module"; es común que nos salga el error SyntaxError: Cannot use import statement outside a module si olvidamos este atributo.
<head>
</head>
<body>
	[...]
	<script src="./index.js" type="module"/>
</body>

Hola compañeros, aunque actualmente en JS se pueda usar “class” creo que es importante aprender esta forma también, ya que en nuestro camino encontraremos mucho código antiguo(o no) escrito de esta forma y tenemos que ser capaces de interpretarlo. No descarten conocimiento.
Saludos.

yo no lo puedo hacer en Visual Studio, lo estoy haciendo en NeatBeans.

Si alguien me pude ayudar a correrlo en vidual studio se los agradeceria mucho

Java asi explicado no es tan doloroso como en la universidad : D

Para no estar importando cada javascript en el index.html, se puede usar la propiedad type=“module” e importar en el javascript principal, que para este caso index.js, las diferentes clases de javascript.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>Document</title>
</head>
<body>
    <h1>POO en JS</h1>
</body>
<script src="index.js" type="module"></script>
</html>
import Car from './Car.js';
import Account from './Account.js'

let car = new Car("AWS123", new Account("Andress Herrera", "ID34"));
car.printDataCar();

Y en cada clase de javascript se puede hacer un export default de la función.

function Car(lisence, driver){
    this.id;
    this.license = lisence;
    this.driver = driver;
    this.passenger;
}

Car.prototype.printDataCar = function() {
    console.log(this.license);
    console.log(this.driver.name);
    console.log(this.driver.document)
}

export default Car;
function Account(name, document) {
    this.id;
    this.name = name;
    this.document = document;
    this.email;
    this.password;
}

export default Account;

Si quieren correr el código JS, en la propia salida de consola del Visual Studio,
pueden instalar la extensión de Code Runner.

Nombre: Code Runner
ID: formulahendry.code-runner
Descripción: Run C, C++, Java, JS, PHP, Python, Perl, Ruby, Go, Lua, Groovy, PowerShell, CMD, BASH, F#, C#, VBScript, TypeScript, CoffeeScript, Scala, Swift, Julia, Crystal, OCaml, R, AppleScript, Elixir, VB.NET, Clojure, Haxe, Obj-C, Rust, Racket, Scheme, AutoHotkey, AutoIt, Kotlin, Dart, Pascal, Haskell, Nim,
Versión: 0.9.17
Editor: Jun Han
Vínculo de VS Marketplace: https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner

A continuación comparto mi versión en C#

<
using PooEjemplo;

Car car = new Car(new Account("Juan David Forero","123456789"),"AD1234", 4);
car.imprimir();
Car car2 = new Car(new Account("Andres Camilo Parra","987654321"), "AD2456", 4);
car2.imprimir();    

namespace PooEjemplo
{
    internal class Car
    {
        public int id;
        public String licence;
        public Account driver;
        public int passengenger;

        public Car(Account driver, String licence, int passengenger)
        {
            this.driver = driver;
            this.licence = licence;
            this.passengenger = passengenger;
        }

        public void imprimir()
        {
            Console.WriteLine("Condctor: " + driver + " Matricula: " + licence + " Pasajeros: " + passengenger);
            Console.ReadKey();
        }
    }
}

namespace PooEjemplo
{
    internal class Account
    {
        public String id;
        public String document;
        public String name;
        public String email;
        public String password;

        public Account(String name, String document)
        {
            this.name = name;   
            this.document = document;
        }
    }
}
> 

Python

main .py

from car import Car
from account import Account

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

    car1 = Car("AE628EA", Account("Peter33", "3456812", "[email protected]", "123456"))
    car1.printDataCar()

    car2 = Car("DF458KN", Account("Ann", "4135687", "[email protected]", "654321"))
    car2.printDataCar()

account .py

class Account:
    ID = int
    name = str
    document = str
    email = str
    password = str

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

car .py

from account import Account

class Car:
    ID = int
    licenses = str
    driver = Account
    passegenger = str
    
    def __init__(self, licenses, driver):
        self.licenses = licenses
        self.driver = driver

    def printDataCar(self):
        print("Car license: ", self.licenses, " Driver: ", self.driver.name)    

Al principio vi engorroso el tema de 4 lenguajes al tiempo, pero al ver la estructura OOP de diferentes maneras queda más claro.

Hola, si cuando le dan clic a console en el inspector no les sale la info, debe dar clic en la opción de todos los niveles y ponerle el check a información.

Me volví a ver toda la clase pensando que algo estaba haciendo mal XD

Me encataría ver una actualización de este curso. AnnCode

Explica bien, se entiende bien, maneja de forma excelente lo que esta explicando y encima es hermosa, me enamore v:

Uncaught TypeError: Car.prototype is not a function
at index.js:4:5 me sale este error cuando quiero ver mi proyecto en la web alguien me podria ayudar

una forma también de sacar el html5 es ! tab

estoy corriendo el index.html pero al revisar en consolé me sale indefinido en las lineas del console.log,
pero las estoy llamando en estas líneas en el archivo
<script src=“Account.js”></script>
<script src=“Car.js”></script>
<script src=“index.js”></script>

no puedo imprimir los datos alguna idea?

una pregunta, ¿para que sirve o cuál es el beneficio de un constructor y como funciona ? algo que no entendí en esto que soy nuevo

TA POTENTE

Creia que el metodo constructor solo se usaba en la clase Main.

Otra opción para el atajo de HTML 5 es colocar el signo de admiración ! y presionar la tecla tabulador (tab),

No entendí en que momento se realiza la herencia de los atributos de Accounts en Cars cuando se trabaja en JavaScripts. Es en el momento de crear el nuevo objeto con el método constructor en index? o en que momento? es que me perdí que en cars a la hora de imprimir tengamos el “this driver name”

Si alguien se pregunta como hacerlo en Kotlin
https://www.geeksforgeeks.org/kotlin-class-and-objects/
pueden hacer las clases en diferentes archivos y no pasa nada, sin embargo el metodo Main, no se deja guardar en un class, yo lo hice asi

main file

fun main(args: Array<String>) {

        val car = Car(1, "ASD123", "Lalo Cota", 4)

        println(car.driver)

    }

Car class

class Car{
    var id: Int
    var license: String
    var driver: String
    var passenger: Int


    constructor(id: Int, license: String, driver: String,passenger: Int){
        this.id = id
        this. license = license
        this.driver = driver
        this.passenger = passenger
    }


}

algo curioso es q al crear los parametros si lo haces con un var va a requerir valores iniciales o deberas crear un constructor con parametros, como en el ejemplo

Mmmm… Creo que no fue muy buena idea dictar un curso de OOPs utilizando 4 lenguajes diferentes. Entiendo que lo que se quiere transmitir es el concepto del paradigma. Pero en un punto influye mucho el lenguaje que se utiliza. Esto lo digo a modo de critica constructiva, no esta en mi, el deseo de atacar. Considero que se puede aprovechar mucho mejor este curso si se enseña con un solo lenguaje.
Espero que este curso, en su momento, se pueda mejorar, creo que se puede disfrutar mucho mas.

Si se tiene node.js instalado, se podría realizar de esta otra forma para JS con [ES6];
Car.js:

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

  // Imprimir por consola usando template string
  printData() {
    console.log(
      `Car license: ${this.license}\nCar driver: ${this.driver.name}\nCar passengers: ${this.passengers}`
    );
  }
}

Account.js

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

index.js

import Account from "./Account.js";
import Car from "./Car.js";

const driver1 = new Account(1, "John Doe", "JON689", "[email protected]");
const car1 = new Car(1, "AMQ123", driver1, 4);

car1.printData();

y para ver los resultados, en consola estando en la ruta de la carpeta JS simplemente se ejecuta el siguiente comando:

node index.js

Si desean solo incluir el index.js en el index.html, pueden utilizar:

  • Import para incluir las clases car y la clase account.
  • Export para exportar cada clase y poder importarla.
function Account(name,document) {
    this.id;
    this.name = name;
    this.document =  document;
    this.email;
    this.password;
}

export {Account}
import {Account} from './Account.js'
function Car(licence,Account) {
    this.id;
    this.license = licence;
    this.driver = Account;
    this.passenger;
    
}
export {Car};

import {Car} from './Car.js'
import {Account} from './Account.js'
var car = new Car("ABVC123", new Account("Hector Cabrera","BCA987"))
car.PrintData();

En typescript primero se iniciatizan las variables:

class Car {
    id;
    driver;
    passenger;
    license;

    constructor(license, driver) {
        this.id;
        this.driver = driver;
        this.passenger;
        this.license = license;
    }
    metodVisualizadorCar = () => {
        console.log(this.driver)
        console.log(this.driver.name)
        console.log(this.driver.document)
    }
}

![](

Ahora en VSCode no necesitan poner html5 para que les llene todo como lo hizo la profe. Si ponen el signo de admiración (!) y hacen click en la primera opción de una se llena todo.

Aquí comienza la explicación de JS

Información resumida de esta clase
#EstudiantesDePlatzi

  • Los archivos de JavaScript necesitan un navegador para ser visualizados

  • En programación buscamos escribir poco código y así ser eficiente

  • Es importante ir escribiendo el código a medida que va pasando la clase

Me pasaba que mi navegador por defecto es opera pero voy a la carpeta raiz del proyecto en JS y le digo abrir con chrome y abre. listo

Buenas, despues de ver la clase tenia el mismo error en el que Car no estaba definido, sin emabrgo ya habia asigando en index.html ya habia llamado a Car.js, sin embargo, lo hice despues de index.js y debe ser ANTES les dejo el orden que usa la profe y que esta en los recursos de la clase por si acaso 😄

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