Java:
Python:
Javascript:
Php:
Bienvenida e Introducción
¿Por qué aprender Programación Orientada a Objetos?
¿Qué resuelve la Programación Orientada a Objetos?
Paradigma Orientado a Objetos
Lenguajes Orientados a Objetos
Instalando Visual Studio Code
Diagramas de Modelado
Qué es UML
Orientación a Objetos
Objetos
Abstracción y Clases
Modularidad
Analizando Uber en Objetos
Reto 1: identificando objetos
Programación Orientada a Objetos. Análisis
Clases en UML y su sintaxis en código
Modelando nuestros objetos Uber
¿Qué es la herencia?
Aplicando Herencia a nuestro proyecto Uber
Reto 2: analicemos un problema
Clases, Objetos y Método Constructor
Creando nuestras carpetas iniciales para el curso
Definiendo clases en Java y Python
Definiendo Clases en JavaScript
Objetos, método constructor y su sintaxis en código
Objetos. Dando vida a nuestras clases en Java y Python
Declarando un Método Constructor en Java y JavaScript
JavaScript orientado a objetos, lo más nuevo
Declarando un método constructor en Python
Herencia
Aplicando herencia en lenguaje Java y PHP
Solución del reto de herencia en PHP
Aplicando herencia en lenguaje Python y JavaScript
Otros tipos de Herencia
Reto 4
Encapsulamiento
Encapsulamiento
Encapsulando atributos en Java
Polimorfismo
Generando polimorfismo en Java
Generando polimorfismo en PHP
Cierre del curso
El Diagrama UML de Uber
Conclusiones
Bonus: Qué es la Programación Orientada a Objetos
Nos queda la Jerarquía Account pendiente.
...
Regístrate o inicia sesión para leer el resto del contenido.
Aportes 540
Preguntas 15
Java:
Python:
Javascript:
Php:
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)
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","[email protected]", "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:
Me esto dando cuenta que todos están haciendo los ejemplos en el lenguaje de preferencia, yo los he hecho en todos 😓😫
🐱💻 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)
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', '[email protected]', 'pass$$')
d.call_taxi # Llamaste al conductor: Ferdy con documento 98761
d.name # Ferdy
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 = "[email protected]"
print(vars(paypal))
user = Account()
user.id = 21222
user.name = "Sherk"
user.document = "S21K"
user.email = "[email protected]"
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","[email protected]", "password")
user.print_data_account
# Name: Diego Camacho
# Document: ID001
# Email: dcamacho@gmail.com
# Password: ********
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;
}
}
PHP:
<?php
require_once('Account.php');
class AccountUser extends Account{
public function __construct($name, $document, $email, $password){
parent::__construct($name, $document);
$this->email = $email;
$this->password = $password;
}
}
?>
<?php
require_once('Account.php');
class AccountDriver extends Account{
public function __construct($name, $document, $email, $password){
parent::__construct($name, $document);
$this->email = $email;
$this->password = $password;
}
}
?>
Python
]
En Python:
Python:
User:
from account import Account
class User(Account):
def __init__(self, name, document):
super.__init__(name, document)
Driver:
from account import Account
class Driver(Account):
driverLicense = str
def __init__(self, name, document, driverLicense):
super.__init__(name, document)
self.driverLicense = driverLicense
[](
JS:
Java
public class Account {
Integer id;
String name;
String document;
String email;
String password;
public Account(String name, String document) {
this.name = name;
this.document = document;
}
public Account(String name, String document, String email, String password) {
this.name = name;
this.document = document;
this.email = email;
this.password = password;
}
public void printData() {
System.out.println("Name: " + this.name);
System.out.println("Document: " + this.document);
System.out.println("E-mail: " + this.email);
}
}
public class User extends Account {
public User(String name, String document, String email, String password) {
super(name, document, email, password);
}
}
public class Driver extends Account {
public String licenseNumber;
public Driver(String licenseNumber, String name, String document, String email, String password) {
super(name, document, email, password);
this.licenseNumber = licenseNumber;
}
Hola! Dejo mi aporte, hice el reto en Python y Java!
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
from account import Account
class Driver(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)
class Driver extends Account{
public Driver(String name, String document, String email, String password){
super(name, document, email, password);
}
}
class User extends Account{
public User(String name, String document, String email, String password){
super(name, document, email, password);
}
}
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;
}
void printUsersData() {
System.out.println("User Name: " + name + " User Document: " + document + " User email: " + email + " User password: " + password);
}
void printDriverData() {
System.out.println("Driver Name: " + name + " Driver Document: " + document + " Driver email: " + email + " Driver password: " + password);
}
}
from account import Account
class User(Account):
def __init__(self, id, name, document, email, password):
super.__init__(id, name, document, email, password)
from account import Account
class Driver(Account):
def __init__(self, id, name, document, email, password):
super.__init__(id, name, document, email, password)
Esta es mi clase base:
class BaseClass:
def __init__(self, id_: int):
self.id_ = id_
El id
es declarado como id_
porque id
es una function reservada en Python.
Todas las demás clases extiended la BaseClass
class Account(BaseClass):
def __init__(self, id_: int, name: str, email: str, password: str):
super().__init__(id_)
self.name = name
self.email = email
self.password = password
def __str__(self) -> str:
return f'{self.name}, email: {self.email}'
En este caso, estamos creando un constructor con los datos pertinentes. El __str__
significa que cada vez que imprimimos un objeto Account
, retorna el nombre y el email.
class Driver(Account):
pass
class Passenger(Account):
pass
Ya que el ID lo da la clase Account, no es necesario que las subclases Client y Driver tengan un ID. Las subclases pueden, por el momento, no tener atributos propios y solo usar los de la clase padre.
// java
class Client extends Account {
public Client(String name, String document) {
super(name, document);
}
}
class Driver extends Account {
public Driver(String name, String document) {
super(name, document);
}
}
# python (no olvidar importar la clase Account)
class Client(Account):
def __init__(self, name, document):
super().__init__(name, document)
class Driver(Account):
def __init__(self, name, document):
super().__init__(name, document)
// javascript
class Client extends Account {
constructor(name, document) {
super(name, document);
}
}
class Driver extends Account {
constructor(name, document) {
super(name, document);
}
}
JAVASCRIPT
class Account
{
constructor(name, document)
{
this.name = name;
this.document = document;
this.id;
this.email;
this.password;
}
setID(id) {
this.id = id;
}
printAllAccountData() {
console.log("ID: ", this.id);
console.log("name: ", this.name);
console.log("document: ", this.document);
}
printPublicAccountData() {
console.log(this.name);
console.log(this.document);
console.log(this.email);
}
printPrivateAccountData() {
console.log(this.id);
console.log(this.password);
}
}
class User extends Account
{
constructor(account, email, pswd)
{
super(account, email, pswd);
this.account = account;
this.email = email;
this.password = pswd;
}
printAllUserData() {
console.log("----User Data----\r\n");
this.account.printAllAccountData();
console.log("email:\t", this.email);
console.log("pswd:\t", this.password);
}
}
class Driver extends Account
{
constructor(account, email, pswd)
{
super(account);
this.account = account;
this.email = email;
this.password = pswd;
}
printAllDriverData()
{
console.log("----Driver Data----\r\n");
this.account.printAllAccountData();
console.log("email:\t", this.email);
console.log("pswd:\t", this.password);
}
}
var Acc1 = new Account("Acc1", "30333444");
Acc1.setID("1");
var driver1 = new Driver(Acc1, "[email protected]", "pswd1")
driver1.printAllDriverData();
var Acc2 = new Account("Acc2", "30333555");
Acc2.setID("2");
var user1 = new User(Acc2, "[email protected]", "pswd2");
user1.printAllUserData();
----Driver Data----
ID: 1
name: Acc1
document: 30333444
email: acc1@gmail.com
pswd: pswd1
----User Data----
ID: 2
name: Acc2
document: 30333555
email: acc2@gmail.com
pswd : pswd2
Driver
User
main
account
Python
account. py
class Account:
id = int
name = str
document = str
email = str
password = str
def __init__(self, name, document):
self.name = name
self.document = document
Driver. py
from account import Account
class Driver(Account):
email = str
password = str
def __init__(self, name, document, email, password):
super().__init__(name, document)
self.email = email
self.password = password
User. py
from account import Account
class User(Account):
email = str
password = str
def __init__(self, name, document, email, password):
super().__init__(name, document)
self.email = email
self.password = password
23. Mis apuntes sobre: “Reto 4”
Les comparto la implementación del reto en mi lenguaje favorito por el momento, Javascript:
En primer lugar agregué una función para que imprima los datos a la clase Account:
-1.Account.js
class Account{
constructor(name, document){
this.id;
this.name = name;
this.document = document;
this.email;
this.password;
}
printDataAccount(){
console.log(this.name);
console.log(this.document);
}
}
‘
’
-2.User.js
class User extends Account{
constructor(name, document){
super(name, document)
}
}
‘
’
-3.Driver.js
class Driver extends Account{
constructor(name, document){
super(name, document)
}
}
‘
’
Así de Fácil! 😃
public class User extends Account {
public User(String name, String document) {
super(name, document);
}
}
public class Driver extends Account {
public Driver(String name, String document) {
super(name, document);
}
}
JAVA
class Account {
Integer id;
String name;
String document;
String email;
String password;
public Account(String name, String document) {
this.name = name;
this.document = document;
}
}
class User extends Account {
public User(String name, String document) {
super(name, document);
}
}
class Driver extends Account {
public Driver(String name, String document) {
super(name, document);
}
}
JAVASCRIPT
class Account {
constructor(name, document) {
this.id;
this.name = name;
this.document = document;
this.email;
this.password;
}
}
class User extends Account {
constructor(name, document) {
super(name, document)
}
}
class Driver extends Account {
constructor(name, document) {
super(name, document)
}
}
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;
}
}
?>
<?php
require_once('account.php');
class User extends Account {
public function __construct($name, $document){
parent::__construct($name, $document);
}
}
?>
<?php
require_once('account.php');
class Driver extends Account {
public function __construct($name, $document){
parent::__construct($name, $document);
}
}
?>
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):
super().__init__(name, document)
from account import Account
class Driver(Account):
def __init__(self, name, document):
super().__init__(name, document)
class User extends Account{
public User(String name,String document){
super(name, document);
}
}
class Driver extends Account{
public Driver(String name,String document){
super(name, document);
}
}```
class Driver extends Account
{
public Driver(String name, String document){
super(name, document);
}
}```
class User extends Account
{
public User(String name, String document){
super(name, document);
}
}```
CODIGO en Account.php
<?php
class Account{
public $id;
public $name;
public $document;
public $email;
public $password;
public function __construct($name, $document, $email){
$this->name = $name;
$this->document = $document;
$this->email = $email;
}
public function showDataUser(){
echo "<h3>Informacion de Usuario:</h3>";
echo "<br/> Nombres y Apellidos: " . $this->name;
echo "<br/> Documento de Identidad: " . $this->document;
echo "<br/> Correo: " . $this->email;
}
}
?>
CODIGO en User.php
<?php
include_once('Account.php');
class User extends Account{
public $foto;
public $telefono;
public function __construct($name, $document, $email, $foto, $telefono){
parent:: __construct($name, $document, $email);
$this->foto = $foto;
$this->telefono = $telefono;
}
}
?>
CODIGO en Driver.php
<?php
include_once('Account.php');
class Driver extends Account{
public $foto;
public $telefono;
public function __construct($name, $document, $email, $foto, $telefono){
parent::__construct($name, $document, $email);
$this->foto = $foto;
$this->telefono = $telefono;
}
public function showDataDriver(){
echo "<h3>Informacion de Conductor:</h3>";
echo "<br/> Nombres y Apellidos: " . $this->name;
echo "<br/> Documento de Identidad: " . $this->document;
echo "<br/> Correo: " . $this->email;
}
}
?>
CODIGO en indexUser.php
<?php
require_once('Account.php');
require_once('User.php');
require_once('Driver.php');
$user1 = new User("Roberto Melchor", "84324823", "[email protected]", "foto1", "948598555");
$user1->showDataUser();
$user2 = new User("Segunda Torres", "82455553", "[email protected]", "foto2", "985984545");
$user2->showDataUser();
$conductor1 = new Driver("Carlos Dominguez", "85384383", "[email protected]", "fotoc1", "983459385");
$conductor1->showDataDriver();
$conductor2 = new Driver("Christian Oso", "64583758", "[email protected]", "fotoc2", "989379475");
$conductor2->showDataDriver();
?>
AL IMPRIMIR
Informacion de Usuario:
Nombres y Apellidos: Roberto Melchor
Documento de Identidad: 84324823
Correo: [email protected]
Informacion de Usuario:
Nombres y Apellidos: Segunda Torres
Documento de Identidad: 82455553
Correo: [email protected]
Informacion de Conductor:
Nombres y Apellidos: Carlos Dominguez
Documento de Identidad: 85384383
Correo: [email protected]
Informacion de Conductor:
Nombres y Apellidos: Christian Rodriguez
Documento de Identidad: 64583758
Correo: [email protected]
Implementando en PHP:
clase Account:
Clase User:
Clase Card:
Clase Index:
Manejando objetos con herencia (User,Card,Index):
JavaScript
User.js
class User extends Account
{
constructor(id, name, document, email, password)
{
super(name, document)
this.id = id;
this.email = email;
this.password = password;
}
printUserData()
{
console.log(this.name)
console.log(this.id)
console.log(this.email)
}
}
Driver.js
class Driver extends Account
{
constructor(id, name, document, email, password)
{
super(name, document)
this.id = id;
this.email = email;
this.password = password;
}
printDriverData()
{
console.log(this.id)
console.log(this.email)
}
}
index.js
var driver1 = new Driver(10001,"Andrés Herrera", "AND123","[email protected]","passwordand01");
var uberX = new UberX("CVB123", driver1, "Chevrolet", "Spark");
uberX.passengers = 4;
console.log(uberX.brand);
console.log(uberX.model);
uberX.printDataCar();
driver1.printDriverData();
var user1 = new User(20001,"Andrea Ferra", "ANDA876","[email protected]","passworandy20");
user1.printUserData();
Solución de herencia en java
from account import Account
classUser(Account):
def__init__(self, name, document):
super().__init__(name, document)
from account import Account
classDriver(Account):
def__init__(self, name, document):
super().__init__(name, document)```
Clase Padre
public class Account {
Integer id;
String name;
String document;
String email;
String password;
public Account(Integer id, String name, String document, String email, String password) {
this.id = Math.random();
this.name = name;
this.document = document;
this.password = password;
this.email = email;
}
}
Clases Hijas
class User extends Account{
public User(Integer id, String name, String document, String email, String password){
super(id, name, document, password, email);
}
}
class Driver extends Account{
String nroLicencia;
public Driver(Integer id, String name, String document, String email, String password, String nroLicencia){
super(id, name, document, password, email);
this.nroLicencia = nroLicencia;
}
}
Aclaracion: me parecio importante agregar a los datos del conductor su nro de licencia de CONDUCIR, tengo entendido que license de la clase car es algo totalmente distinto.
class Account {
constructor(name, document) {
this.id;
this.name = name;
this.document = document;
this.email;
this.password;
}
}
class User extends Account {
constructor(id, name, document, email, password) {
super(id, name, document, email, password);
}
}
class Driver extends Account {
constructor(id, name, document, email, password) {
super(id, name, document, email, password);
}
}
JavaScript ❤️
Mi solución para Java, JavaScript y Python. Perdón por la mala resolución.
account:
class Account:
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
driver:
from account import Account
class Driver(Account):
def __init__(self,id,name,document,email,password):
super().__init__(id,name,document,email,password)
user:
from account import Account
class User(Account):
def __init__(self,id,name,document,email,password):
super().__init__(id,name,document,email,password)
main:
from account import Account
from car import Car
from UberX import UberX
from driver import Driver
from user import User
if __name__ == "__main__":
print("Hola mundo")
'''car = Car("AMS234", Account("Andres Herrera", "ANDA876"))
print(vars(car))
print(vars(car.driver))
uberX = UberX("AMS234", Account("Andres Herrera", "ANDA876"),"nissan","sentra");
print(vars(uberX))
'''
user1 = User(1,"Chris","AND123","[email protected]","12345678")
driver1 = Driver(1,"Andres Herrera","WOW123","[email protected]","87654321")
print(vars(user1))
print(vars(driver1))
Salida:
Ésta es mi solución en Java:
public class Account
{
Integer id;
String nombre;
String document;
String email;
String password;
public Account(String nombre, String document)
{
this.nombre = nombre;
this.document = document;
}
}
public class User extends Account {
float credito;
public User(String nombre, String document, float credito)
{
super(nombre, document);
this.credito = credito;
}
}
public class Driver extends Account{
float calificacion;
String tipo_auto;
public Driver(String nombre, String document, float calificacion, String tipo_auto)
{
super(nombre, document);
this.calificacion = calificacion;
this.tipo_auto = tipo_auto;
}
}
PHP
Clase Account
<?php
class Account{
public $id;
public $name;
public $document;
public $email;
public $password;
public function __construct($name, $document){
$this->name = $name;
$this->document = $document;
}
public function printDataAccount(){
echo "Nombre: ". $this->name."</br>";
echo "Número Id: ".$this->document."</br>";
echo "Email: ".$this->email."</br>";
}
}
?>
Clase Driver
<?php
require_once('account.php');
class Driver extends Account{
public function __construct($name, $document, $email, $password){
parent::__construct($name, $document);
$this->email = $email;
$this->password = $password;
}
}
?>
Clase User
<?php
require_once('account.php');
class User extends Account{
public function __construct($name, $document, $email, $password){
parent::__construct($name, $document);
$this->email = $email;
$this->password = $password;
}
}
?>
package CursoPOOUber.Java;
class Account {
Integer id;
String name;
String document;
String email;
String password;
public Account (String name,String document){
this.name = name;
this.document = document;
}
void printDataAccount(){
System.out.println("License: " + name + " Name Driver: " + document);
}
}
package CursoPOOUber.Java;
public class Driver extends Account{
public Driver(String name,String document){
super(name,document);
}
}
package CursoPOOUber.Java;
public class User extends Account{
String nameUser;
public User(String name,String document,String nameUser){
super(name,document);
this.nameUser=nameUser;
}
}
**Javascript **
Python
Php
Java
Reto completado!!!
Mi aporte en Java
Java (Clase User)
![](
Comparto mi codigo en Python:
JAVASCRIPT
class Account{
constructor(name, document, email, password){
this.id;
this.name = name;
this.document = document;
this.email = email;
this.password = password;
}
printDataCar(){
console.log(this.name);
console.log(this.document);
console.log(this.email);
}
}```
class User extends Account{
constructor(name, document, email, password){
super(name, document, email, password);
}
}
class Driver extends Account{
constructor(name, document, email, password){
super(name, document, email, password);
}
}```
var car = new Car("ABC123", new Account("Diego Celis", "987987"))
car.printDataCar();
var uberX = new UberX ("MNB654", new Account("Laura", "654321"), "Renault", "Twingo");
uberX.printDataCar();
var user = new User ("Lupe", "1245", "[email protected]", "123");
user.printDataCar();```
Me gustaria que escribieran los atributos de cada subclase para poder añadirlo al reto.
Excelente!
Reto realizado en python:
Account
class Account :
id = int
name = str
document = str
email = str
password = str
def __init__(self, name, document) :
self.name = name
self.document = document
User
from Account import Account
class User(Account):
age = int
address = str
def __init__(self, name, document,age, address):
super().__init__(name, document)
self.age = age
self.address = address
Driver
from Account import Account
class Driver(Account):
age = int
def __init__(self, name, document, age):
super().__init__(name, document)
self.age = age
main
from Car import Car
from User import *
from Driver import *
if __name__ == "__main__":
print("Hola mundo")
car = Car()
car.driver = "Andres Herrera"
car.license = "AMS123"
print(vars(car))
car2 = Car()
car2.license = "AFKA29"
car2.driver = "Toreto"
print(vars(car2))
user1 = User("Romelia Guzman","912834194",45,"Carrera 31 ")
print(vars(user1))
driver1 = Driver("Ernesto Perez", "123125", 15)
print(vars(driver1))
Mi aporte en JS
Account.js
class Account{
constructor(id, name, document, email, password) {
this.id = id;
this.name = name;
this.document = document;
this.email = email;
this.password = password;
}
}
Driver.js
class Driver extends Account{
constructor(id, name, document, email, password){
super(id, name, document, email, password);
}
printDataDriver(){
console.log("Id : " + this.id);
console.log("Name : " + this.name);
console.log("Document : " + this.document);
console.log("Mail : " + this.email);
console.log("Password : " + this.password);
}
}
User.js
class User extends Account{
constructor(id, name, document, email, password){
super(id, name, document, email, password);
}
printDataUser(){
console.log("Id : " + this.id);
console.log("Name : " + this.name);
console.log("Document : " + this.document);
console.log("Mail : " + this.email);
console.log("Password : " + this.password);
}
}
Mi aporte en Java:
Account.java
class Account {
Integer id;
String name;
String document;
String email;
String password;
public Account(Integer id, String name, String document, String email, String password){
this.id = id;
this.name = name;
this.document = document;
this.email = email;
this.password = password;
}
void printDataAccount(){
System.out.println("---User Data--");
System.out.println("id: " + id);
System.out.println("name: " + name);
System.out.println("document: " + document);
System.out.println("email: " + email);
System.out.println("password: " + password);
System.out.println("-------------");
}
}
Driver.Java
class Driver extends Account{
public Driver(Integer id, String name, String document, String email, String password){
super(id, name, document, email, password);
}
}
User.java
class User extends Account {
public User(Integer id, String name, String document, String email, String password){
super(id, name, document, email, password);
}
}
AMO Python ❤️
class Account:
# Constructor de la clase Account
def __init__(self, id, name, document, email, password):
# Inicializamos las propiedades
self.id = id
self.name = name
self.document = document
self.email = email
self.password = password
class User(Account):
# Constructor de la clase User
def __init__(self, id, name, document, email, password):
# Llamamos al constructor de la clase padre para inicializar las propiedades comunes
super().__init__(id, name, document, email, password)
class Driver(Account):
# Constructor de la clase Driver
def __init__(self, id, name, document, email, password):
# Llamamos al constructor de la clase padre para inicializar las propiedades comunes
super().__init__(id, name, document, email, password)
el driver lo hemos ido creando solo con nombre y documento, estos 2 parámetros son obligatorias para la creación del objeto driver, pór eso están dentro del constructor.
Al momento de crear las sub clases User y Driver hay que tener en cuenta que si colocamos en sus constructores todos los parámetros ya no podremos crear una driver solo con nombre y documento, sino que sera obligatorio colocar todos estos datos introduciodos en el constructor. Por otra parte en el super() si deben ir todos los parámetros que queremos que herede del Account
JAVA
class Account():
def __init__(self, id, name, email, password):
self.id = id
self.name = name
self.email = email
self.password = password
class User(Account):
def __init__(self, id, name, email, password, payment_method):
super().__init__(id, name, email, password)
self.payment_method = payment_method
class Drive(Account):
def __init__(self, id, name, email, password, identif_doc, license):
super().__init__(id, name, email, password)
self.identif_doc = identif_doc
self.license = license
Para “Python”:
El código de la instructora no funcionó, para que no arroje errores se requiere () en el super:
Ej. 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
Y su llamado en “main” es:
uberX = UberX(license=“lic01”, driver= Account(“Andrea Herrera”,“ANDA876”),brand=“jaguar”,model=“xc01”)
uberX.passegenger=4
print(vars(uberX))
print(vars(uberX.driver))
PYTHON
user.p
from account import Account
class User(Account):
def __init__(self, name, document):
super().__init__(name, document)
driver
from account mport Account
class User(Account):
def __init__(self, name, document):
super().__init__(name, document)
PHP
user.php
<?php
require_once('account.php');
class User extends Account {
public function __construct($name, $document){ // Método Constructor de la clase
parent::__construct($name, $document); // Aplicación de Herencia
}
}
?>
driver.php
<?php
require_once('account.php');
class Driver extends Account {
public function __construct($name, $document){ // Método Constructor de la clase
parent::__construct($name, $document); // Aplicación de Herencia
}
}
?>
Declaracion de las clases ACCOUNT,USER,DRIVER
ACCOUNT
USER
DRIVER
MAIN
RESULTADO CONSOLA
Reto 4 cumplido en Java: Me costo mucho ya que en algún momento había visto Java, pero no con este tipo de enfoque.
Porfa: Si ven algún error, ayúdenme!!! Deseo aprender mucho más de Java.
![](
En java:
Python, mi primer lenguaje jejeje
Reto cumplido con Javascript:
Python
Java
PHP
JavaScript
from account import Account
class Driver(Account):
def __init__(self, id,name,document,email, password):
super.__init__(id,name,document,email,password)
from account import Account
class User(Account):
def __init__(self, id,name,document,email, password):
super.__init__(id,name,document,email,password)
Python:
Java:
JS:
PHP:
JavaSccript
Account
function Account(name, document) {
this.id;
this.name = name;
this.document = document;
this.email;
this.password;
}
Driver
class Driver extends Account {
constructor(name, document, email, password, yearExperience, address) {
super(name, document)
this.email = email;
this.password= password;
this.yearExperience = yearExperience;
this.address = address;
}
imprimirFicha(){
console.table({
name: this.name,
document: this.document,
email: this.email,
password: this.password,
yearExperience: this.yearExperience,
address: this.address})
}
}
var conductor = new Driver(“Daniel",“12388667”,"[email protected]”,“123”,5,“sas stree av”);
conductor.imprimirFicha();
Información resumida de esta clase
#EstudiantesDePlatzi
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;
}
}
public class driver extends Account{
Integer id;
String name;
String document;
String email;
String password;
public driver(String name,String document,String email, String password)
{
super(name,document,email,password);
}
}
public class User extends Account{
Integer id;
String name;
String document;
String email;
String password;
public User(String name,String document,String email, String password)
{
super(name,document,email,password);
}
}
Es en estos casos que uno dice ¿Qué estoy haciendo?, lo hice en python y aqui esta mi aporte, espero que un experto en el tema me diga si esta bien, esto de POO es muy confuso, no logro entenderlo del todo.
Saludos!!!
if name == “main”:
print(“Hola mundo!!”)
print("info User: ")
user = User(“Maria la del barrio",“555555”,"[email protected]”,“laskmfds”)
print(vars(user))
print("info Uber X: ")
car = UberX("AMS243", Account("Andres Herrera","AKSD123","[email protected]","93eijdf"),"Chevete","123")
print(vars(car))
print(vars(car.driver))
print("Model: " + car.model)
print("Brand: " + car.brand)
print("info Uber pool: ")
car2 = UberPool("QSD133", Account("Oscar","QWWER235","[email protected]","aklfjfr"),"Mazda","92348")
print(vars(car2))
print(vars(car2.driver))
print("Model: " + car.model)
print("Brand: " + car.brand)
JAVA ❤️
Account Class
class Account {
Integer id;
String name;
String document;
String email;
String password;
public Account(String name, String document) {
this.name = name;
this.document = document;
}
}
Driver Class
public class Driver extends Account {
public Driver(String name, String document, String email, String password) {
super(name, document);
super.email = email;
super.password = password;
}
}
User Class
public class User extends Account{
public User(String name, String document, String email, String password) {
super(name, document);
super.email = email;
super.password = password;
}
}
Aquí mi aporte al reto 4:
Java
Js
PHP
Python
Muchas gracias
Vamos por más 😄.
Reto realizado en python:
class Accounts():
id = int
name = str
document = int
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
from Accounts import Accounts
class User(Accounts):
def __init__(id, name, document, email, password):
super().__init__(id, name, document, email, password)
from Accounts import Accounts
class Driver(Accounts):
def __init__(id, name, document, email, password):
super().__init__(id, name, document, email, password)```
Soy un poco nuevo en esto, si tienen algun sugerencia o consejo, los leo compañeros:)
Código Account:
class Account {
constructor(name, document, email, password) {
this.id;
this.name = name;
this.document = document;
this.email = email;
this.password = password;
}
printDataAccount() {
console.log(this.name)
console.log(this.document)
console.log(this.email)
console.log(this.password)
}
}
Código User:
class User extends Account {
constructor(name, document, email, password){
super(name, document, email, password)
}
}
Código Driver:
class Driver extends Account {
constructor(name, document, email, password){
super(name, document, email, password)
}
}
Mi Aporte en PHP
<package JAVA;
public class Driver extends Account{
public Driver(String name, String document) {
super(name, document);
}
}
<code>
package JAVA;
public class User extends Account{
public User(String name, String document) {
super(name, document);
}
}
python
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)
RESUMEN CLASE 30:
RETO 4
JAVASCRIPT
Index 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>POO</title>
</head>
<body>
<h1>RETO 4: Aplicando herencia en JavaScript</h1>
</body>
<script src="Account.js"></script>
<script src="Car.js"></script>
<script src="UberX.js"></script>
<script src="UberPool.js"></script>
<script src="UberBlack.js"></script>
<script src="UberVan.js"></script>
<script src="User.js"></script>
<script src="index.js"></script>
</html>
Index JavaScript
var car = new Car("AW456", new Account("Andres Herrera", "QWE234"))
car.passenger = 4;
car.printDataCar();
var uberX = new UberX("AS678", new Account("Andrea Ferran", "ANDA765"), "Chevrolet", "Spark")
uberX.passenger = 4;
uberX.printDataCar();
var uberPool = new UberPool("REW123", new Account("Andrew Endwer", "LKJG789"), "Aston Martin", "Road")
uberPool.passenger = 4;
uberPool.printDataCar();
var uberBlack = new UberBlack("LKJ5647", new Account("Ruben Visconcy", "FGD835"), "Ford", "Focus")
uberBlack.passenger = 4;
uberBlack.printDataCar();
var uberVan = new UberVan("MDN012", new Account("Jhon Wizdou", "FTR691"), "Toyota", "Cross")
uberVan.passenger = 4;
uberVan.printDataCar();
var user = new User("Pepe Lucho", "123458SC", "[email protected]", "ERUI12345!@#$")
user.printDataUser();
User JavaScript
class User extends Account {
constructor(name, document, email, password){
super(name, document, email, password)
this.email = email;
this.password = password;
}
printDataUser() {
console.log(this.name);
console.log(this.document);
console.log(this.email);
console.log(this.password);
}
}
Drive JavaScript
class Driver extends Account {
constructor(name, document, email, password){
super(name, document)
this.email = email;
this.password = password;
}
printDataDriver() {
console.log(this.name);
console.log(this.document);
console.log(this.email);
console.log(this.password);
}
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?