Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Clases en UML y su sintaxis en código

13/37
Recursos

Aportes 244

Preguntas 25

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

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

  • definir una clase en JS:
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)

  1. Identificar el problema.
  2. Identificar los objetos.
  3. Definir las clases.
  4. Plasmarlas en un diagrama.

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:

  • Identificar problema
  • Identificar Objetos
  • Definir clases
  • Plasmarlas en un diagrama

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:

  • Nombre (identidad)
  • Atributos (estado)
  • Operaciones (comportamiento)

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(){}
}

Las zonas que existen en un Diagrama de Clase en UML son:

  • Identidad > Nombre de la Clase
  • Estado > Atributos
  • Comportamiento > Operaciones/Metodos

Por ejemplo:

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.

Excelente clase!
En Python no se usa el punto y coma.

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() { }
}