En javascript también podemos crear una clase de esta manera
class Person {
constructor() {
this.name = '';
}
walk() {...}
}
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
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
Aportes 244
Preguntas 25
En javascript también podemos crear una clase de esta manera
class Person {
constructor() {
this.name = '';
}
walk() {...}
}
En python después de name=’’ no es necesario colocar punto y coma (’;’).
Clases en UML y su sintaxis en código
.
Recuerda que el proceso es:
• Identificar el problema, y objetos
• Definir las clases
• Plasmarlas en un diagrama
Se lo puede plasmar en UML :
• Identidad, que será el nombre de la clase.
• Estado, que serán los atributos de la clase.
• Comportamiento, que serán las operaciones de la clase.
.
Un pequeño aporte de un ejemplo en UML
La informacion sobre JavaScript esta desactualizada. JS tiene soporte completo de OOP desde que se actualizo a ECMAScript 6 en el 2015.
Clases en JS: Classes - JavaScript | MDN
Perdón profe pero no quiso decir que la palabra reservada es “class” y no “Person” en el min 2:10?
ACTUALIZACION: 01-2021
class Rectangulo {
constructor(alto, ancho) {
this.alto = alto;
this.ancho = ancho;
}
}
La palabra reservada para ello es Class
La profe menciona las llaves como “brackets”, asi que corrijo:
{ } llaves ( curly braces ó braces)
[ ] corchetes ( brackets ó square brackets)
( ) paréntesis (parentheses)
A partir del estándar ES6, en javascript permite el uso de class, para definir las clases y trabajar la programación orientada a objetos, pero class no es más que azúcar sintáctica de los prototipos, lo que quiere decir que lass clases en js solo son una manera más sencilla de trabajar con los objetos.
ref: https://javascript.info/class, https://dmitripavlutin.com/javascript-classes-complete-guide/
Hay otra manera de hacer la declaracion en JavaScript
const Persona = function(){
let name = "";
this.walk = function(){
}
}
C# muy parecido a Java.
class Persona
{
private string nombre;
public void Caminar()
{
...
}
}
💙 Definición de la clase en el lenguaje de programación Dart.
class Person {
String name = ' ';
void walk() {}
}
¿A que se refiere con que en JavaScript todo lo maneja a través de prototipos? o mejor dicho ¿que son los prototipos?
En el 2:10 dice con la palabra reservada Person pero en realidad es class
En versiones más recientes de Js ya podemos usar la palabra reservada class
JavaScript:
class Person
{
constructor(name)
{
this.name = name;
}
walk()
{
whatever
}
}
en PHP no es que en una declaración (sencilla) de propiedades y métodos se debe indicar el “public”? (mi estar confundido ahora) [POO]
En el caso de Go sería
type Person struct{}
Como pequeño aporte de mi parte noten que la clase “Person” comienza con mayúscula. Eso es una convención al momento de definir clases, la primera letra debe ser en mayúscula.
las instrucciones en python no finalizan con ; (punto y coma)
Por alguna razón, pasa el tiempo y transcurre el video, pero para nada me aburro. Es muy agradable la forma en que Anahí enseña. ¿ Soy el único que se le va el tiempo y no te pesa?
Hago un inciso en JavaScript ya se puede declarar una clase usando la palabra reservada class
JS ya tiene soporte OOP.
En JS si se puede definir como class Person {}
Muy buena clase, para aclarar JS ahora mismo ya tiene soporte para POO y la palabra reservada también es class.
Typescript.
class Person {
name : string;
walk: () => {}
}
En python suele ser buena idea hacer esto:
class Person:
name = ""
def walk():
pass
Poner ahí un pass para decirle de momento que ahí será el final. después puedes quitárselo y no volvérselo a poner
Proceso:
Estructura de un diagrama de clase UML:
Nombre clase -> Identidad
Atributos -> Estado
Operaciones -> Comportamiento
Excelente explicación
La inferencia a partir de la versión 10 en java ha suavizado su lo de fuertemente tipado a la hora de definir variables.
Sé que JS no acepta ‘clases’ tal cual como otros lenguajes, sin embargo, existe el ‘Class’ y los metodos ‘constructor’ y ‘superconstructor’. Así como ‘extends’. ¿Saben por que ella utiliza la manera mas ‘antigua’?
jaja pesitos para php
Es bastante útil tener un procedimiento para analizar un objeto para después pasarlo a código.
Yo creo q los diagramas UML nunca van a pasar de moda, aun q se ve muy tradicional, es la mejor forma de plasmar tus ideas.
In ruby!
class Person
attr_accessor :name
def walk; end
end
En resumen tenemos una clase (la palabra “class” existen en los 4 lenguajes), los atributos son variables y los métodos son funciones.
Aunque la forma usada por la profesora respecto a JavaScript funciona y es más moderna por decirlo así ajajaja también se puede hacer con class como los otros lenguajes y definir dentro los atributos y métodos.
¿Qué significa “dinámicamente tipado”?
En python es realmente facil.
Una pequeña corrección del video: En JAVA la palabra reservada es CLASS y person es el nombre. Lo comento porque ella dice que la palabra reservada es person, y esta claro que es un pequeño desliz.
Falta C# T.T Y.Y
<?php
class Person
{
// property declaration
public $name = 'Julio';
// method declaration
public function walk() {
echo "my name is $name and I'm walking";
}
}
?>```
buu me confunde al decir lo de javascript
4 lenguajes que han avanzado mucho en el tiempo y son la potencia mundial en la cual se tiene dominio de ellos
Desde que estudié con Sacha los fundamentos de JavaScript me pareció un lenguaje medio rebelde pero divertido. Su ejemplo me lo recordó XD
¿Pero en JS no se declaran clases con la palabra reservada class?
class Persona
{
}```
Está bueno que nos muestren como funcionan los objetos en cada tipo de lenguage. Pero lo mejor para uno es aprender y manejar UML en un solo lenguage (en mi caso Java) y una vez dominado pasar a los otros.
En el caso de Ruby seria:
class Person
attr_accessor :name
def initialize(name)
@name = name
end
def walk
puts "my name is #{@name} and I'm walking"
end
end
En Python, la sangria o tabulacion me lo enseñaron con el nombre de Identado, son los espacios delante de las lineas de código para indicar que estan contenidos dentro de una funcion, un bucle, un condicional u otra estructura.
El identado es una buena practica de programacion en otros lenguajes también, para identificar más facilmente qué lineas de codigo están contenidas dentro de las estructuras mencionadas.
Y Cómo se define el atributo name para javascript?
exelente.
Python no usa el punto y coma ( ; ).
En JavaScript a partir de ES6 ya podemos escribir clases al igual que en otros lenguajes mencionados en esta clase, claro está que cambiaran algunas cosas, sin embargo sera un poco más fácil implementarlas.
.
class Person {}
.
Fuente: Clases - JavaScript | MDN
me parece que esta clase es algo vieja… desde hace algún timpo en JavaScript también se pueden declarar clases con la palabra reservada class.
https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Classes
Podríamos resumir todo este proceso como parte del Diseño de datos en Ingeniería de Software.
En python no se usa el punto y coma para definir las variables 😃
La sintaxis se me hizo más compleja en JavaScript
Ya se pueden utilizar clases en javascript, para echarle un vistazo y actualizarse un poco, podéis ver esta url:
https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Classes
en java la palabra reservada Class{}
en php la palabra reservada Class{}
en python la palabra reservada Class:
en javascript la palabra reservada function nombre(){}
ejemplo:
java
class Person{
string name ="";
void walk(){}
}
python
class Person:
name = ""
def walk():
javascript
Person.prototype.walk = function(){
}
php
class Person{
$name = “”;
function walk(){}
}
**Nota: En python no se usan los ; para definir variables
La palabra reservada Person? La palabra reservada: Class El nombre del objeto: Person
Waaao, esa definicion de funcion en JavaScript… Hahhaha
wtf con js!
el punto y coma de python! no va… XD
les comparto un ejemplo…
class mesa:
def __init__(self, color, madera):
self. color=color
self. madera=madera
def mostrar(self):
print ("Es de color: ",self. color)
print ("Su madera es: ",self. madera)
mesita=mesa("rojo", "pino") #declaro el objeto de tipo mesa
resultado=mesita. mostrar() #invoco el método mostrar
print(resultado) #imprimo el resultado
// In Php
class Person {
$name = "";
function walk() {}
}
Punto y coma en Python? Vaya, eso es nuevo.
Excelente! lo voy a usar en python.
Definir clases en JavaScript:
class ClassName {
constructor() { ... }
}
Recordatorio: primero identificamos el problema, luego identificamos los objetos, definimos las clases, y con ello realizamos el diagrama UML
en el atributo de la clase de python no lleva ; al final
class Person{
int Id;
string Name;
string Phone;
void Adopt(){}
}
class Pet{
int Id;
string Type;
string Name;
string Breed;
float Height;
int Age;
void Barks(){}
void Eat(){}
void Walk(){}
}
Desactualizado… en javascript ya tenemos clases.
Un lenguaje de programación es dinámicamente tipado si una variable puede tomar valores de distintos tipos…
pense que en javascript las clases se representaban con class…
Clase en UML
Lo representyamos por emdio de un rectángulo dividido en secciones de arriba a abajo:
Ejemplos en código
Java: (fuertemente tipado por lo que hay que declarar el tipo de variable antes)
class Person{
String name = "";
void walk(){}
}
Python:
class Person:
name = ""
def walk:
JavaScript (basado en prototipos)
function Person() {}
Person,prototype.walk = function (){}
PHP (se parace a JAVA pero no est[a tan fuertemente tipado)
class Person{
$name = "";
function walk() {}
}
Todos estos lenguajes de programación son dinámicos y tiene una buena sintaxis, aunque PHP Server, no lo conozco aun, pero en mi concepto en definitiva me quedo con Python, es mucho mas fácil y menos complicado en su sintaxis, su interfaz la puedes poner a tu gusto al igual que el editor, Python te hace la vida más fácil a la hora de escribir código
que buen curso … de verdad que si…
Por eso amo Java… más limpio todo.
Es palabra reservada class no Person.
UML
nombre clase
atributos
operaciones
como definir:
java
class Person {
string name = “”;
void walk() {}
}
Python
class Person:
name = “”;
def walk():
Javascript
class Person() {}
person.prototype.walk = function(){}
PHP
class Person{
$name = “”;
function walk(){}
}
Person |
---|
Atributo1 |
Atributo2 |
Operacion1() |
Operacion2() |
Espero les sirva! 😃
En la clase persona del ejemplo de La profe no es necesario el punto y coma (😉 después de las comillas en el atributo name.
Perdón. Pero en Python el “;” despues de "name = “” " es un error. No va el mismo.
¿O estoy equivocado?
¿Soy raro? en sentir que es mas facil pensar de manera ORDENADA como JAVA y sentir TERROR por JS, a pesar de ser “facil” es demasiado diverso y caotico.
Para definir un objeto, se utiliza la palabra reservada Class, recordemos que la clase es el modelo del objeto, es como un molde para poder instanciar objetos, los cuales vivirán en la memoria hasta el final de ejecución del programa, a menos que el programador libera la memoria.
Identificar el problema -> Identificar los objetos -> Definir las clases -> Plasmarlas en un diagrama
Volver a python de manera tipada:
class Person:
def __init__(name: str):
self.name = name
def walk(distance: float) -> str:
...
y con mypy o pylint puede verificar si verdaderamente se cumple los tipos de datos que recibe los metodos. 😃
Class Person:
name: str = ""
def walk():
...
class Person {
String name = "";
void walk(){ }
}
Person.prototype.walk = function(){
}
class Person {
$name = "";
function walk(){}
}
Sí quieren Tipado estático en Python
Class Person:
name: str = ""
def walk():
...
a ver entonces, si aprendi bien es:
ATRIBUTOS
Java: Tipado, ejemplo: int numero = 0;
Python: Sin tipar, ejemplo: numero = 0;
PHP: Sin tipar, ejemplo: $numero = 0;
JavaScript: No lo mencionan pero me parece que es: var numero = 0;
MÉTODOS
Java: void comer(){}
Python: def comer():
PHP: function comer(){}
JavaScript: Person.prototype.comer = function (){}
Actualización JS de la sintaxis a la hora de crear una clase y un metodo definida en ella
class Cliente
{
constructor(cuenta_cliente,banco_remisor, banco_emisor,saldo_total,cuenta_recep,bono)
{
this.cuenta =cuenta_cliente;
this.banco_cliente = banco_emisor;
this.banco_destino = banco_remisor;
this.saldo = saldo_total;
this.cuenta_destino = cuenta_recep;
this.dinero_bono =bono;
}
monto()
{
var monto= 0;
if(this.banco_cliente == this.banco_destino)
{
monto=0;
}else
{
monto=100;
}
return monto;
}
}
Me parece interesante hacer todo el curso con JS utilizando prototipos y no nuestra azúcar sintáctica Class 👀
Me supongo que fue un error, pero tengo entendido que en Python no se utiliza ; .
Motivo:
<class Person:
name = ""; <--
def walk():>
Así quedaría si lo hacemos en C#.
Java
Class Person {}
String name = " ";
void walk() {}
}
Python
Class Person:
name = "";
def walk():
Javascript
Person.prototype.walk = function () {}
PHP
class Person {
$name = "";
function walk() { }
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.