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
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Anahí Salgado Díaz de la Vega
Aportes 289
Preguntas 29
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/
C# muy parecido a Java.
class Persona
{
private string nombre;
public void Caminar()
{
...
}
}
Hay otra manera de hacer la declaracion en JavaScript
const Persona = function(){
let name = "";
this.walk = function(){
}
}
💙 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 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
En versiones más recientes de Js ya podemos usar la palabra reservada class
En el 2:10 dice con la palabra reservada Person pero en realidad es class
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.
¿Palabra reservada Person?
Disculpen pero a este punto ya no es un error mínimo, ya son varias clases cometiendo errores mínimos al explicar conceptos y esto ya es preocupante, Platzi debería, por lo menos, haber corregido cada uno de los videos donde se han detectado errores, pero no lo han hecho.
Quizás los que ya conocemos el tema podamos tomarlo como un error mínimo pero para los que son nuevos esto puede ser muy grave ya que los confunde.
Errar es de humanos, todos nos podemos equivocar, pero no corregir el error y dejarlo suelto ya es irresponsabilidad por parte de Platzi.
Por favor corregir los videos rápidamente.
En el caso de Go sería
type Person struct{}
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]
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?
Por si alguien esta interesado la sintaxis de una clase en C++ seria:
class Person{
//atributo
string nombre;
//método
void caminar(){}
};
Typescript.
class Person {
name : string;
walk: () => {}
}
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.
Me gustaría decir que como buenas prácticas siempre es bueno colocar el nombre de las clases con la primera letra en mayúscula 😊
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
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’?
RESUMEN CLASE 13:
CLASES EN UML Y SU
SINTAXIS EN CODIGO
I.- UML
Nombre Clase
Identidad
Atributo 1
Atributo 2
Atributo 3
Atributo n
Estado
Operación 1
Operación 2
Operación 3
Operación n
Comportamiento
Ejemplo:
Person
name
walk ()
II.- SITAXIS EN CODIGO
Java
class Person {}
Python
class Person:
JavaScript
function Person(){}
PHP
class Person {}
III.- DEFINIENDO ATRIBUTOS Y METODOS
Java
class Person {
String name = “”;
void walk() { }
}
Python
class Person:
name = “”;
def walk():
JavaScript
Person.prototype.walk = function (){
}
PHP
class Person {
$name = “”;
function walk() { }
}
se debería de actualizar la sintaxis de los ejemplos de acuerdo a las nuevas especificaciones de los lenguajes
Full JAVA, quien dijo yo
class Person{
String name = "";
void walk(){}
}
class Person:
name = ""
def walk:
function Person(){}
Person.prototype.walk = function(){}
class Person{
$name = "";
function walk(){}
}
Al principio tiene un error la profe, entiendo dice “la palabra reservada Person” y se refiere a la palabra reservada “class”
En C++ las clases de declaran prácticamente igual que en Java
Qué suerte que el curso se manejara con lenguajes que manejo o al menos conozco en el caso de Java
Se presentó con un error, ya que en Python no se coloca el punto y coma en ningún momento
class Person:
name = "Anahí"
def walk():
pass
Que veo 👀, un punto y coma en python XD
Perdón. Pero en Python el “;” despues de "name = “” " es un error. No va el mismo.
¿O estoy equivocado?
theres an error in 5:03:
Python does not use this symbol -> ;
She wrote:
name = “”;
But the right is:
name = “”
whithout the ; symbol
Para hablar de buenas practicas:
.
Debemos evitar escribir clases que estan cargadas con muchisimas propiedades y no tienen metodos.
.
Eso quiere decir que debemos seguir analizando el caso para lograr una mejor abstraccion:
.
para que tengan en cuenta ahora se puede hacer clases en JS de una forma mas legible, quizas por la fecha del curso aun no estaba disponible asi que traten de mirar las clases de JS dde la forma mas nueva
Información importante en el diseño de diagrama UML
Modificadores de acceso
(-)
private
(+)
public
si el atributo tiene llaves []
quiere decir que es una variable de tipo objeto (Array)
si el atributo esta subrayado es de tipo static
si el atributo esta en MAYUS
y subrayado es de tipo final static
si queremos instanciar una variable de otra clase nombre_variable : NombreClase : void
por buenas practicas la variable lowerCamelCase or snake_case
y la clase UperCamelCase
y tipo de retorno por ultimo
Información resumida de esta clase
#EstudiantesDePlatzi
Una clase en UML será representada por un rectángulo
Este rectángulo lo podemos dividir en 3 partes horizontalmente
en la parte superior ponemos el nombre de la clase
En el espacio de la mitad definimos los atributos y en la parte inferior definimos los comportamientos
Debemos definir nuestro objeto en código siguiendo la estructura
Para Java, Python y PHP definimos la clase con la palabra reservada class
JavaScript lo maneja de una manera diferente, ya que todo lo maneja a través de prototipos
En JavaScript utilizaremos la palabra reservada function
JavaScript es exigente con el tipado, en cambio, Python no tanto
Las llaves indican que viene un bloque de código
En python es importante que el codigo este indentado.
Desactualizado… en javascript ya tenemos clases.
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 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.
No explico Js no?
Asi se veria la clase de Python corregido…
.
Si vi raro esa declaration en JS, pero bueno o importante es que se entiende.
uml
#clase --> identidad
#atributos/propiedades --> estado
#operacion --> comportamiento
clase --> funcion
Tarde me vengo a dar cuenta en que me he metido🤦♂️, yo tengo la culpa por meterme a aprender JavaScript 🤪
Clases en UML y su sintaxis en código para Java, Python, JavaScript y PHP, para la clase “Persona” con los atributos “name” y “walk”:
public class Persona {
// Atributos
private String name;
private boolean walk;
// Constructor
public Persona(String name, boolean walk) {
this.name = name;
this.walk = walk;
}
// Métodos
public void setName(String name) {
this.name = name;
}
public void setWalk(boolean walk) {
this.walk = walk;
}
public String getName() {
return name;
}
public boolean isWalk() {
return walk;
}
}
class Persona:
# Atributos
def __init__(self, name, walk):
self.name = name
self.walk = walk
# Métodos
def set_name(self, name):
self.name = name
def set_walk(self, walk):
self.walk = walk
def get_name(self):
return self.name
def is_walk(self):
return self.walk
class Persona {
// Constructor
constructor(name, walk) {
this.name = name;
this.walk = walk;
}
// Métodos
set name(name) {
this.name = name;
}
set walk(walk) {
this.walk = walk;
}
get name() {
return this.name;
}
get walk() {
return this.walk;
}
}
class Persona {
// Atributos
private $name;
private $walk;
// Constructor
public function __construct($name, $walk) {
$this->name = $name;
$this->walk = $walk;
}
// Métodos
public function setName($name) {
$this->name = $name;
}
public function setWalk($walk) {
$this->walk = $walk;
}
public function getName() {
return $this->name;
}
public function isWalk() {
return $this->walk;
}
}
bueeeeeenoi pues...
para mi, solo se escribe la palabra reservada
**class** (con su nombre claro)
variable = (propiedades)
function funName(){}
y con JS no me ago bolas por ahora jojo
function funName(){}
funName.prototype.walk = function(){
}
Hola:
“Person” no es una palabra reervada. La palabra reservada aqui es “class” en el caso de java: keywords = son aquellas palabras que estan incluidas dentro del core de java, es decir pertenencen al lenguaje, y no pueden ser utilizadas para dar nombre a clases, atributos o metodos. En esta caso, hubo un eror por parte de Anahi, ella queria decir la palabra reservada “Class” que nos permite crear una clase en java.
Nombre Clases (Clase/Identidad)
Atributos (Estados)
Operacion o Metodos (comportamiento)
Persona (Clase/Identidad)
name (Estado)
walk (comportamiento)
<h5>Definir en los 4 lenguajes:</h5>
JAVA
class Person{
String name = "";
void walk() {}
}
PYTHON
class Person:
name = "";
def walk():
JAVASCRIPT
function Person() {}
Person.prototype.walk = function() {
}
PHP
class Person {
$name = "";
function walk() {}
Este curso es increible, y la informacion no cambia, pero en JS si han cambiado algunas cosas
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?