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

Aplicando Herencia a nuestro proyecto Uber

16/37
Recursos

Aportes 217

Preguntas 67

Ordenar por:

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

o inicia sesi贸n.

Una pregunta y no se deberia crear otra dos clase una que CarBasic y tenga los atributos de brand y model, y otra que sea CarAdvanced que tenga typeCarAceppeted y seatsMaterail, estas dos clases heredarian de Car y las clases Uber* heredarian de CarBasic y CarAdvanced

Estupenda clase instructora Anah铆, por medio de estos diagramas se puede apreciar los atributos que compartir谩n las superclases con las subclases y, adem谩s servir谩n como base para la documentaci贸n de la aplicaci贸n que estemos creando.

Ac谩 realice unos con Draw.io, los compartirlo por si le es 煤til a alguno de los compa帽eros

  1. Clase Account
  2. Clase Payments
  3. Clase Car
  4. Diagrama Uber

![](

Me gusta como queda al final el diagrama, algo importante a resaltar es la parte de pagos, aunque las clases no comparten atributos, por buena pr谩ctica, es bueno que hereden de una clase Payments, porque sabemos que implicitamente esas 3 son pagos, 驴Pasa algo malo si no hacemos esto? No, pero a futuro podremos querer implementar algo que sea com煤n entre esos 3 tipos de pagos, y lo mejor es hacerlo sobre una clase Payment ^^

Para los que no han hecho el curso de bases de datos, con esta herramienta se pueden crear este tipo de diagramas.
https://www.draw.io/

Hice un diagrama UML integrando las propiedades de cada clase, si identifican un error por favor comenta. Les dejo el template y el sitio donde pueden crear el suyo y a帽adir nuevas clases, propiedades y comportamientos.
-Template
-Sitio para editar template (select open existing diagram)

Hacer una clase por cada tipo de veh铆culo me parece poco eficiente porque tendr铆a que crear una nueva clase si es que se agregara un nuevo tipo de carro. No seria mejor crea una clase llamada typeCar y relacionarla a la clase car?




Por si la duda, en Trip hay composici贸n, de ah铆 los rombos oscuros, que quiere decir que tiene una relaci贸n compenetrada, que dependen y que una de estas clases no podr铆a vivir sin la otra. Car, route y Payment depende de trip, y trip depende de ellos.

Referencia: https://platzi.com/clases/1474-oop/17219-uml/

Esta es mi version

con este archivo lo pueden modificar
es un archivo .drawio
en esta pagina se modifica; o pueden hacer el suyo

馃 La abstracci贸n es esencial para aplicar de forma correcta la herencia.

Muy resumido鈥 Increible
.

Muy buena Clase!!!

El rombo negro implica una Composici贸n (Relaci贸n totalmente compenetrada. Una no puede vivir sin la otra.)

Esta muy bien estructurado solo podr铆a agregar que en el caso de la clase account falto el atributo typeaccount porque hace falta un atributo que pueda diferenciar una cuenta de otra, por otro lado en la clase payments faltar铆a la clase paymethod ya que se necesitar铆a especificar en la factura el m茅todo de pago para vincularlo a la transacci贸n, si no es imposible tener una relaci贸n.

En en editor de c贸digo VSC se puede instalar una extensi贸n que permite realizar los diagramas.

Instalar extensi贸n Drawio Integration.

La extensi贸n de este archivo se guarda con 鈥.dio鈥 para el entorno gr谩fico.

Una herramienta para hacer diagramas UML "StarUML"

Recuerden que en la secci贸n de archivos y enlaces encontraran las imagenes adjuntas de esta clase 馃槈
Si quieren hacer un diagrama propio, puede ayudarse con Lucidchart

Hice el UML por si alguien quiere ver como se ve todo en conjunto,

La herramienta que ocupe es: https://app.diagrams.net/

Programa Usado: Star UML

Por fn entend铆 Herencia!

Mis modelos hechos en Draw

Informaci贸n resumida de esta clase
#EstudiantesDePlatzi

  • Importante realizar el diagrama UML de manera visual y organizada

  • Revisamos que atributos en com煤n tenemos dentro de las clases para tener herencia

  • Con esto logramos crear una superclase y los atributos de las subclases se borran y se unen con la flecha de asociaci贸n en sentido de hijo a padre

  • Podemos observar si algunas clases comparten entre s铆 cierta caracter铆stica dentro del modelo de negocio y crear una superclase, as铆 no tengan atributos en com煤n

  • Esta herencia es por l贸gica del negocio

  • Importante entender el modelo de negocio

Ser铆a perfecto que Platzi implementara uno o varios cursos para realizar Diagramas UML ya que por supuesto este tema es muy clave. Buen curso este鈥

hacer todo esto se parece a normalizar una base de datos.

Odiaba la poo que casi la reprobaba, y este curso me esta haciendo amarla.

Ac谩 les dejo este link para realizar sus diagramas UML de forma gratuita.
https://app.diagrams.net/

Tal vez sea mas practico que tanto **User **como Driver, sean solamente User. Y podr铆amos tener un **UserType **para indicar si el usuario es **Driver **o no.

Excelente manera de entender la herencia, si quieren hacer los diagramas UML hay una p谩gina que se llama lucidchart es bastante buena.

muy buena la explicaci贸n, aplicare este paso a paso para mi trabajo de la Uni sobre Diagramas UML

Mi aporte haciendo el diagrama:

Mi diagrama qued贸 asi:
![](

Extension de VSC para crear UML:

  • UMLet
    Solo debes crear un archivo con el siguiente nombre y extension:
    "-filename=someinputfile.uxf"

Ej:

-uber=someinputfile.uxf

Mis apuntes #16

As铆 me quedo el mapa en UML, est谩 bien chido el software que uso XD se llama StarUML

Este es el diagrama que hice, Perd贸n si las flechas no se entienden, A煤n no logro diagramar bien en UML 馃槙 , 驴Alguna Opini贸n?

Comparto mi diagrama de clases:

Tambi茅n podemos crear una clase payments con dos atributos id y forma de pago (aqui escogemos si es por TDC, Paypal y/o efectivo)

Este es mi resumen del ejemplo del curso hasta este punto, tal vez le puede ser 煤til a alguien mas. Si observan alg煤n error o tienen alguna sugerencia por favor brindar la info 馃槈
Resume ejemplo UBER

mi diagrama pretende tener en cuenta los minimos casos en que el cliente no paga por lo que sea.

Las herencias, para la normalizaci贸n de una base de datos.

aplicando herencia a el modelo uber

tambien se podria generar una subclase con los vehiculos uber black y uber van

como sugerencia, veo que en la clase Payments es conveniente agregar tambi茅n un atributo para definir el valor del pago realizado o de la transacci贸n

Mi diagrama UML
![](


Si estas clases quedan vacias: User y Driver no es mejor dejar como general la de Account.
O en todo caso, se les a帽ade el tipo de usuario especifico:

Tengo una pregunta鈥
Cuando se hace herencia las clases hijas pueden ser igual a otra hija? lo digo por el caso de conductor y usuario, ya que creia que no pueden ser iguales, siempre debe haber alguno m谩s que otro.
Gracias

No encuentro en esta clase la secci贸n enlaces para buscar el diagrama, alguien sabe donde est谩?

14. Mis apuntes sobre: 鈥淎plicando Herencia a nuestro proyecto Uber鈥

Les comparto c贸mo me qued贸 el diagrama por el momento:

Y si analizaramos whats app, como quedar铆a ?.

clases :

  • User
  • Chats
  • Estados
    -Contactos
    -Llamadas

Y as铆 es como algo que parec铆a muy complejo se vuelve s煤per entendible!

Hola chicos!!, mi pregunta es:
De acuerdo a lo ya visto hasta esta aplicacion, creen que sea bueno identitificar los atributos de cada objeto para posteriormente comenzar a pensar en una supeclase?

ESTO ES UNA SUPER CLASE!!! ANNCODE

La fiesta viene ahora al programar xD

Es importante destacar que las clases siempre se nombran en singular 馃槂.

Una pregunta. A pesar de que los tipos de auto heredan varios atributos de la superclase CAR, todav铆a hay redundancia entre las clases. Tanto UberX y UberPool, as铆 como UberBlack y UberVan comparten los mismos atributos. 驴Esto es as铆? 驴Deber铆a pensarse en una especie de clase intermedia? 驴o c贸mo se resuelve este problema de redundancia en POO?

Check a herencia.

Para la parte de la herencia, siempre es bueno que alcancemos un maximo numero de comportamientos dentro de una clase, o se prodrian hacer hasta con dos si uno quiciera?

Podr铆a ser que la clase UberX y UberPool, se unieran en una clase llamada UberBasic y agregar una propiedad llamada type.
Ustedes que opinan?

Excelente clase =)

Una duda: 驴no deber铆a quitarse el atributo id de las clases hijas de la clase Payments?

Pienso que el curso podr铆a ser mas eficiente si se utiliza directamente UML.

imagen

@startuml
!theme sketchy
class Account  {
  {field} id 
  {field} name
  {field} document
  {field} email
  {field} password
  {method} Some method
}

class User extends Account {}
class Driver extends Account {}

class Trip {
   {field} user
   {field} route
   {field} car
   {field} payment
}

Trip::user --> User

class Payment {
   {field} id
}

class Card extends Payment{
  {field} number
  {field} cvv
  {field} date
}
class Paypal extends Payment{
  {field} email
}
class Cash extends Payment{}

class Car {
  {field} id
  {field} license
  {field} driver
  {field} passenger
}

Car::driver --> Driver

class UberX extends Car {
  {field} brand
  {field} model
}
class UberPool extends Car {
  {field} brand
  {field} model
}
class UberBlack extends Car {
  {field} typeCardAccepted
  {field} seatMaterial
}
class UberVan extends Car {
  {field} typeCardAccepted
  {field} seatMaterial
}



class Route {}
Route --* Trip::route
Payment --* Trip::payment
Car --* Trip::car
@enduml

Herencia por l贸gica de negocios

Mi aporte 馃槃 :

Hey, aqu铆 hice el diagrama UML, espero que lo vean para ver si tienen algo que corregirme! 馃槃 , con todo les dejo una imagen en donde no se aprecia completamente!

Estoy haciendo un curso en simultaneo de POO con Java, y vine a complementar con este curso, y terminar de entender lo que a煤n no entend铆a, y la verdad Anah铆 explica muy bien y es completo lo que el curso brinda

RESUMEN CLASE 16:
APLICANDO HERENCIA A
NUESTRO PROYECTO UBER

DIAGRAMA DE UBER

Me ha encantado como esta quedando

![](

Yo lo hice con los aportes de una compa帽era en la comunidad:

Hola compa帽eros,
Tambi茅n agregu茅 otra herencia a la clase de vehicluos, una de **EconomicVehicles **y otra de PremiumVehicles.
cualquier aporte u observaci贸n es bien recibida!
![](

La herencia es un pilar importante de OOP (Programaci贸n Orientada a Objetos). Es el mecanismo en Java por el cual una clase permite heredar las caracter铆sticas (atributos y m茅todos) de otra clase. Aprenda m谩s a continuaci贸n.

En el lenguaje de Java, una clase que se hereda se denomina superclase. La clase que hereda se llama subclase. Por lo tanto, una subclase es una versi贸n especializada de una superclase. Hereda todas las variables y m茅todos definidos por la superclase y agrega sus propios elementos 煤nicos.

Terminolog铆a importante

Superclase: la clase cuyas caracter铆sticas se heredan se conoce como superclase (o una clase base o una clase principal).
Subclase: la clase que hereda la otra clase se conoce como subclase (o una clase derivada, clase extendida o clase hija). La subclase puede agregar sus propios campos y m茅todos adem谩s de los campos y m茅todos de la superclase.
Reutilizaci贸n: la herencia respalda el concepto de 芦reutilizaci贸n禄, es decir, cuando queremos crear una clase nueva y ya hay una clase que incluye parte del c贸digo que queremos, podemos derivar nuestra nueva clase de la clase existente. Al hacer esto, estamos reutilizando los campos/atributos y m茅todos de la clase existente.

Adem谩s de Drawio que varias personas han recomendado, yo quiero recomendarles tambi茅n StarUML.

sin embargo recomiendo usar mas drawio porque puedes hacer cualqueir tipo de grafico y para empezar con el tema de bases de datos relacionales es magnifico

Encontr茅 un detalle con respecto al an谩lisis de los ubers para transformar a la superclase car: existe la posibilidad de armar una superclase secundaria de una subclase? a lo que me refiero es que entre uberx y uberpool tienen atributos sobrantes como brand y model, que se sacar铆a otra clase padre para ellos 2; mientras que en uberblack y ubervan derivan otra clase padre donde comparten los atributos typeCarAccepted y seatMaterial;

Herencia m煤ltiple
鈥 Si una clase se puede refinar en varias dimensiones distintas e independientes, se usan las generalizaciones m煤ltiples.
鈥 Las subclases de la generalizaci贸n pueden ser o no disjuntas.
鈥 Una clase puede heredar de forma m煤ltiple desde distintas generalizaciones o desde distintas clases dentro de una relaci贸n de generalizaci贸n solapada, pero nunca desde dos clases en la misma generalizaci贸n disjunta.
鈥 El t茅rmino herencia m煤ltiple se puede referir tanto a la relaci贸n conceptual entre clases (generalizaci贸n) como al mecanismo del lenguaje que implementa esa relaci贸n (herencia).

La herencia no es mala, solo hay que saber cuando usarla y sin abusar de ella ya que estas creando un nivel de dependencia en tu proyecto fuerte, y a la larga puede ser dificil de actualizar o administrar, cuando tengas duda de si usarla o no en su defecto usa composicion. en fin, es el tema durante a帽os. Herencia vs Composici贸n!

#FREEFREDDY

Al analizar las clases, vi que los atributos brand, model, typeCarAccepted y seatsMaterial se repetian, por lo que decid铆 separarlos por interfaces; por lo de Interface Segregation, ya que las clases UberBlack o UberVan pueden implementar ambas interfaces en un futuro, al contrario de que si fueran clases abstractas:

Adem谩s de Draw.io que varias personas han recomendado, yo quiero recomendarles tambi茅n StarUML.

Esta clase utiliz贸 los tres tipos de herencia que se han visto. Los podemos llamar 鈥渃ompleta鈥, 鈥減arcial鈥, 鈥渄e l贸gica distinta鈥.

  1. La completa crea superclases que abarcan la totalidad de los atributos y comportamientos de las clases hijas, por lo que estas son solo variables de la superclase. El ejemplo de la clase es Account.

  2. La parcial crea superclases que cubren factores comunes entre varios objetos pero sin lograr reducirlos a su totalidad. El ejemplo de la clase es Car.

  3. La de l贸gica distinta crea super clases que, aunque no resumen muchas caracter铆sticas, en el funcionamiento mismo del c贸digo, si tienen una raz贸n de estar relacionadas. El ejemplo de la clase es Payment.

La extensi贸n UMLet de VSCode para crear los diagramas de clases es simplemente馃憣馃憣馃憣

Comprendo los elementos que contiene y y hacia donde va, pero la pregunta en cuesti贸n es, 驴porqu茅 utiliza la palabra Trip? 驴Es una palabra ya estipulada con un significado?

Buena clase, esto es super importante para proyectos escalables.

WOOWW EXCELENTE CLASE, A LO QUE ESTOY VIENDO ES QUE NO SE REPITE CODIGO, SI NO DIGAMOS QUE HAY QYE AGRUPARLO PARA QUE TODO ESTE JUNTO, ENTIENDO 馃槃

Este es el mapa que arm茅 al final

Superclase: la clase cuyas caracter铆sticas se heredan se conoce como superclase (o una clase base o una clase principal). Subclase: la clase que hereda la otra clase se conoce como subclase (o una clase derivada, clase extendida o clase hija).

En java una clase hija tambi茅n puede ser padre de otras, esto servir铆a a煤n m谩s para abstraer nuestro c贸digo, desconozco si este funcionamiento es para el resto de los lenguajes, pero supongo que tambi茅n.

Para mi brand y model (marca y modelo) son propiedades de todos los car (automoviles). Que UberBlack y UberVan admintan ciertos tipos de modelos es una regla de negocio (metodo o validacion) pero modelo y marca son caracteristicas de todos los autos. La aplicacion puede una vez confirmado el viaje notificar al cliente (user) cual es el auto que debe esperar para identificarlo (marca, modelo, y puede ser patente y color)