Bienvenida e Introducci贸n

1

驴Por qu茅 aprender Programaci贸n Orientada a Objetos?

2

驴Qu茅 resuelve la Programaci贸n Orientada a Objetos?

3

Paradigma Orientado a Objetos

4

Lenguajes Orientados a Objetos

5

Instalando Visual Studio Code

6

Diagramas de Modelado

7

Qu茅 es UML

Orientaci贸n a Objetos

8

Objetos

9

Abstracci贸n y Clases

10

Modularidad

11

Analizando Uber en Objetos

12

Reto 1: identificando objetos

Programaci贸n Orientada a Objetos. An谩lisis

13

Clases en UML y su sintaxis en c贸digo

14

Modelando nuestros objetos Uber

15

驴Qu茅 es la herencia?

16

Aplicando Herencia a nuestro proyecto Uber

17

Reto 2: analicemos un problema

Clases, Objetos y M茅todo Constructor

18

Creando nuestras carpetas iniciales para el curso

19

Definiendo clases en Java y Python

20

Definiendo Clases en JavaScript

21

Objetos, m茅todo constructor y su sintaxis en c贸digo

22

Objetos. Dando vida a nuestras clases en Java y Python

23

Declarando un M茅todo Constructor en Java y JavaScript

24

JavaScript orientado a objetos, lo m谩s nuevo

25

Declarando un m茅todo constructor en Python

Herencia

26

Aplicando herencia en lenguaje Java y PHP

27

Soluci贸n del reto de herencia en PHP

28

Aplicando herencia en lenguaje Python y JavaScript

29

Otros tipos de Herencia

30

Reto 4

Encapsulamiento

31

Encapsulamiento

32

Encapsulando atributos en Java

Polimorfismo

33

Generando polimorfismo en Java

34

Generando polimorfismo en PHP

Cierre del curso

35

El Diagrama UML de Uber

36

Conclusiones

37

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

Curso de Programaci贸n Orientada a Objetos: POO

Curso de Programaci贸n Orientada a Objetos: POO

Anah铆 Salgado D铆az de la Vega

Anah铆 Salgado D铆az de la Vega

Clases en UML y su sintaxis en c贸digo

13/37
Recursos

Aportes 283

Preguntas 28

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

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 鈥渃lass鈥 y no 鈥淧erson鈥 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 鈥渂rackets鈥, 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 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 鈥淧erson鈥 comienza con may煤scula. Eso es una convenci贸n al momento de definir clases, la primera letra debe ser en may煤scula.

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

驴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 鈥減ublic鈥? (mi estar confundido ahora) [POO]

Mis apuntes #13

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?

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:

  • 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 鈥榗lases鈥 tal cual como otros lenguajes, sin embargo, existe el 鈥楥lass鈥 y los metodos 鈥榗onstructor鈥 y 鈥榮uperconstructor鈥. As铆 como 鈥榚xtends鈥. 驴Saben por que ella utiliza la manera mas 鈥榓ntigua鈥?

se deber铆a de actualizar la sintaxis de los ejemplos de acuerdo a las nuevas especificaciones de los lenguajes

Full JAVA, quien dijo yo

  • En los diagramas UML, cada clase tiene 3 casillas:
    • La primera tiene el nombre de la clase
    • La segunda tiene los atributos o estados de la clase
    • La tercera tiene las funciones o metodos de esta.

Clase en Java

class Person{
	String name = "";
	void walk(){}
}

Clase en Python

class Person: 
	name = ""
	def walk:

Clase en Javascript

function Person(){}
Person.prototype.walk = function(){}

Clase en PHP

class Person{
	$name = "";
	function walk(){}
} 

Al principio tiene un error la profe, entiendo dice 鈥渓a palabra reservada Person鈥 y se refiere a la palabra reservada 鈥渃lass鈥

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

  • Atributos

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

  • Metodos

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 鈥渃lass鈥 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 鈥渄in谩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.

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:
鈥淧erson鈥 no es una palabra reervada. La palabra reservada aqui es 鈥渃lass鈥 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 鈥淐lass鈥 que nos permite crear una clase en java.

Definicion en UML para POO

Nombre Clases (Clase/Identidad)
Atributos (Estados)
Operacion o Metodos (comportamiento)

Ejemplo:

	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

En Python el punto y como no aplica. No hace parte de su sintaxis. Creo que la profe olvido quitar el punto y coma de el atributo name.

muy buena explicacion

aun asi sigo pensando que JS es muy complicado

Mis notas un poco largas y raras =)

Clases en UML y su sintaxis en codigo

UML

Nombrede clase Identidad

Atributo 1
Atributo 2 Estado
Atributo 3
Atributo n

Operacion 1 Comportamineto
Operacion 2
Operacion 3
Operacion n

             Person

             name

             walk ()

Java

class person {}

Python

classPerson:

JavaScript

function Person () o {}

PHP

class Person {}

Java

class Person {}
String name = 鈥溾;
void walk () o {}

Python

classPerson:
name = 鈥溾;
def walk():

JavaScript

Person.prototype.walk = funcion () o {}

PHP

classPerson llave
$name= 鈥溾;
function walk() o {}

Excelente clase orientada a objetos es un tema nuevo para mi y est谩 muy interesante

Esta ser铆a una forma de construir un prototipo en JavaScript:


const caminante = {
    walk: function(km){
        console.log(`Yo puedo caminar ${km}`);
    }
}

const person = {
    patear: function(balon){
        console.log(`Yo solo se patear ${balon}`);
    }
}

Object.setPrototypeOf(person, caminante);

person.walk(10);
<code> 

en python 馃槂

class Person:
    name = '';
    def walk():
        pass

Definir clases en JS

Haciendo el ejercicio en PHP:
.

<?php

namespace MyCompany\Model;

class Persona
{
    public $name;

    public function walk()
    {
        return "Se mueve caminando";
    }

    public function get_name()
    {
        return $this->name;
    }
}

Asi es la sintaxis en Python

class Person:
name = 鈥溾;
def walk():
pass