Roxana Isadora
Kenyi Julberht Hancco Quispe
Josué Ramírez Ramírez
Gustavo Alonso Medina Santiago
Cesar Hernández Ramírez
Uriel Alfonso Velandia Donado
Ariel Ricardo Delgadillo Terrazas
H NA
Jhoan Sebastián Lopera Gallego
Emmanuel García
Mono Jullier
Usuario anónimo
Walther Smith Franco Otero
Luis Felipe Restrepo Meneses
Michelle lcr
Jorge Luis Chan Chan
Daniel Camacho
Lee Palacios
Jhoan Sebastián Lopera Gallego
Carlos Andrés Delprado Valdés
Jorge Iván Otero Vargas
Ramón Ruiz
Marco Antonio Garza Pérez
Diego Camacho
Maria Isabel Quimí Caicedo
Hernan Perci Nuñez Palomino
Camila Púa
Sebastián Suárez
Nicolas Valencia Madrid
Anfernee Valera
Santiago Caldevila
Omar Daniel Centeno
Camila Púa
Guerlmy Nuñez
Freddy Rafael Peñalver Nuñez
Walter Marvin Rodriguez Sanchez
Àlex Serra N
++Java:++ !image
++Python:++ !image
++Javascript:++ !image !image
++Php:++ !image !image
Excelente aporte!
realmente wow me dejo sin palabras . Una consultita ¿como hiciste para tomar la captura de esa forma? Éxitos .
Yo lo hice en Python
class Account: id = int name = str document = str email = str password = str def __init__(self, name, document): self.name = name self.document = document
from account import Account class User(Account): def __init__(self, name, document, email, password): super.__init__(name, document, email, password)
from account import Account class Driver(Account): def __init__(self, name, document, email, password): super.__init__(name, document, email, password)
Tu super clase no recibe email ni password, no es necesario que pongas esas variables en super(), ya que la super ni siquiera los recibe
Por ahí dicen que "la verdad sin empatía es simple crueldad"...
La recomendación que te haría es que por la super clase solo deberías pasar los atributos que extiendes de la clase padre(los obligatorios del metodo constructor), es decir, de la siguiente manera.
Este es un ejemplo de un proyecto parecido al de Uber pero que llevo a la par con el curso.
class Account: id = int email = str password = str document = int status = bool def __init__(self, email, password, document): self.email = email self.password = password self.document = document from account import Account class Person(Account): fullname = str contact_phone = int def __init__(self, email, password, document, fullname, contact_phone): super().__init__(email, password, document) self.fullname = fullname self.contact_phone = contact_phone from account import Account class Enterprise(Account): reference = int user_code = str def __init__(self, email, password, document, reference, user_code): super().__init__(email, password, document) self.reference = reference self.user_code = user_code
Hecho en Java
Account
public class Account { Integer id; String name; String document; String email; String password; public Account(String name, String document, String email, String password){ this.name = name; this.document = document; this.email = email; this.password = password; } }
Driver
public class Driver extends Account{ public Driver(String name, String document, String email, String password){ super(name, document, email, password); } }
User
public class User extends Account{ public User(String name, String document, String email, String password){ super(name, document, email, password); } }
Mis resultados en JavaScript:
Account.js
class Account { constructor(name, document, email, password) { this.id; this.name = name; this.document = document; this.email = email; this.password = password; } printDataAccount() { console.log("The name: " + this.name); console.log("The document: " + this.document); console.log("The email: " + this.email); console.log("The password: " + this.password); } }
User.js
class User extends Account { constructor(name, document, email, password) { super(name, document, email, password) } }
Driver.js
class Driver extends Account { constructor(name, document, email, password) { super(name, document, email, password) } }
index.js
var user = new User("Jose Ramirez", "INE001","jose@mail.com", "mypass"); user.printDataAccount();
index.html
<!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>Herencia JS</title> </head> <body> <script src="Account.js"></script> <script src="User.js"></script> <script src="index.js"></script> </body> </html>
Resultados en consola:
Gracias
Me esto dando cuenta que todos están haciendo los ejemplos en el lenguaje de preferencia, yo los he hecho en todos 😓😫
Yo también. Y me sirvió un montón para reforzar los conceptos.
🐱💻 Plasmando la solución en lenguaje Dart.
class Account { int id; String name; String document; String email; String password; Account({this.name, this.document}); void printData(){ print('Name: $name Document: $document'); } }
import 'account.dart'; class User extends Account{ User({name, document}):super(name: name, document: document); }
import 'account.dart'; class Driver extends Account{ Driver({name, document}):super(name: name, document: document); }
import 'user.dart'; import 'driver.dart'; void main() { User user = User(name: 'Andres Herrera', document: 'QWE234'); user.printData(); Driver driver = Driver(name: 'Andrea Ferran', document: 'ANDA765'); driver.printData(); }
En Python creería que debe ser así.
Clase Account
class Account: """ account class """ id = int name = str document = str email = str password = str def __init__(self,id,name,document,email,password): self.id = id self.name = name self.document = document self.email = email self.password = password
Clase User
from account.py import Account class User(Account): """ User Class """ def __init__(self,id,name,document,email,password): super().__init__(id,name,document,email,password)
Clase Driver
from account.py import Account class Driver(Account): """ Driver Class """ def __init__(self,id,name,document,email,password): super().__init__(id,name,document,email,password)
Excelente! lo único que note, es que al importar la clase, no se debe colocar la extensión .py en account, porque va tirar error.
Gran aporte, pero me hizo dudar si es necesario agregar el this.nombre = nombre y this.document = document, Eso es correcto o se esta haciendo algo de más?
Si es correcto Jorge no se porque instancio los argumentos
name y document, si estos no pertenecen a la clase local user o driver llamarlos en elsuper(name, document)ya era sufuciente.
Aquí les muestro como seria en Ruby ;)
class Account attr_accessor :id, :name, :document, :email, :password def initialize(id, name, document, email, password) self.id = id self.name = name self.document = document self.email = email self.password = password end end class Driver < Account def call_taxi puts "Llamaste al conductor: #{self.name} con documento #{self.document}" end end class User < Account def fullname puts "El nombre de este usuario es: " + self.name end end d = Driver.new(1, 'Ferdy', '98761', 'example@example.com', 'pass$$') d.call_taxi # Llamaste al conductor: Ferdy con documento 98761 d.name # Ferdy
Muchas gracias
¿Soy el único que se siente totalmente perdido ?
No, hay muchas cosas con este ejemplo que no tienen sentido, además que tratar de explicar 4 lenguajes a la vez dispersa totalmente la atención del estudiante.
Python :
//main.py from car import Car from payment import Payment from account import Account if __name__ == "__main__": print("Hola Mundo") car = Car() car.license = "AMS234" car.driver = "Andres Herrera" print(vars(car)) car2 = Car() car2.license = "QWE567" car2.driver = "Matha" print(vars(car2)) paypal = Payment() paypal.id = 21231 paypal.email = "SHlaoa@gmail.com" print(vars(paypal)) user = Account() user.id = 21222 user.name = "Sherk" user.document = "S21K" user.email = "sherk.pantano@burro.com" user.password = "YoMeOp0ngo" print(vars(user)) //account.py class Account: id = int name = str document = str email = str password = str //user.py from account import Account class User(Account): def __init__ (self, id, name, document, email, password): super.__init__(id, name, document, email, password) //driver.py from account import Account class Driver(Account): def __init__ (self, id, name, document, email, password): super.__init__(id, name, document, email, password)
En Ruby:
account.rb
class Account attr_accessor :name, :document, :email, :password def initialize(name, document, email, password) @name = name @document = document @email = email @password = password end def print_data_account puts "Name: #{@name}" puts "Document: #{@document }" puts "Email: #{@email}" # Esto es para imprimir ****** en lugar del password ;-) puts "Password: #{'*' * @password.length}" end end
user.rb
class User < Account end
driver.rb
class Driver < Account end
app.rb
user= User.new("Diego Camacho", "ID001","dcamacho@gmail.com", "password") user.print_data_account # Name: Diego Camacho # Document: ID001 # Email: dcamacho@gmail.com # Password: ********
Hola a todos! trabajo con lenguaje Python y tengo un error de Type en main, les comparto mi codigo y todo lo que tengo declarado, espero me puedan ayudar por favor, no comprendo que ocurre. El error:
Muchas gracias a todos por su atención <3
después del argumento driver en la linea 10 de main,py te faltan 2 argumentos más.
es que en el constructor de Car también estás pidiendo email y password, lo cual no es necesario porque ya lo tienes en Account y el error aparece porque no estás poniendo los parametros (email y password) en el main en la línea 10, te recomiendo quitar email y password del constructor de Car,
Saludos
Hola. Tengo una duda con los m'etodos getters y setters. Estos son metodos de POO o son métodos solo de Java?
Hasta donde tengo entendido, están enfocados para el desarrollo orientado a objetos
Son métodos que incluyen los lenguajes orientados a objetos.
Buenas, una consulta no seria mas organizado tener las clases separadas por archivos que sean la familia y ahí adentro declarar todo? Ej tengo 7 archivos de la familia car cuando podría tenerlo en uno solo y en caso de en mi main no utilizar una parte puedo importar solo lo necesario
Hola
Claro, tu puedes organizar los archivos y carpetas con las clases y contenido que sea más útil para cada caso de uso específico. Creo que en estas clases hacerlo de esta forma hace más evidente que podemos modularizar el código a nuestro favor.
he estado intentándolo pero luego no sé importar las clases en el main :/ ¿alguien sabe hacerlo? gracias
Este seria el reto de la herencia para la familia account?
En mi caso PHP:
Account.php
<?php class Account { public $id; public $name; public $document; public $email; public $password; public function __construct($name, $document){ $this->name = $name; $this->document = $document; } }
User.php
<?php require_once('Account.php'); class User extends Account{ public function __construct($name, $document){ parent::__construct($name, $document); } }
Diver.php
<?php require_once('Account.php'); class Driver extends Account{ public function __construct($name, $document){ parent::__construct($name, $document); } }
codigo en python:
account:
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
user:
from account import Account class User(Account): typeUser = str def __init__(self, name, document, email, password, typeUser): super().__init__(name, document, email, password) self.typeUser = typeUser
driver:
from account import Account class Driver(Account): typeDriver = str def __init__(self, name, document, email, password, typeDriver): super().__init__(name, document, email, password) self.typeDriver = typeDriver
User.php
<?php require_once('Account.php'); class User extends Account { public function __construct($name, $document) { $this->name = $name; $this->document = $document; } }
Driver.php
<?php require_once('Account.php'); class Driver extends Account { public function __construct($name, $document) { $this->name = $name; $this->document = $document; } }