EJERCICIO de POO en Java ☕ 02: RESUELTO Paso a Paso ✅

Поділитися
Вставка
  • Опубліковано 12 вер 2024

КОМЕНТАРІ • 83

  • @CharlyCimino
    @CharlyCimino  Рік тому +3

    🙌 ¡APOYÁ AL CANAL! Si te gusta mi contenido, invitame un cafecito 😁
    ➡ Desde Argentina: cafecito.app/charlycimino
    ➡ Fuera de Argentina: paypal.me/charlycimino
    📌 Dejá tu comentario 📝, dale 'like' 👍, suscribite al canal 👥 y activá la campanita 🔔 ¡GRACIAS!
    🤳 ¡Seguime!
    🌏WEB PERSONAL: charlycimino.com 🌏
    🌎INSTAGRAM: instagram.com/charlycimino 🌏
    🌍FACEBOOK: facebook.com/charlyycimino 🌏
    🌏LINKEDIN: linkedin.com/in/charlycimino 🌏
    🌏GITHUB: github.com/CharlyCimino 🌏
    🌏TWITCH: www.twitch.tv/charlycimino 🌏
    🌏PATREON: patreon.com/charlycimino 🌏

  • @matiasmolina8015
    @matiasmolina8015 20 днів тому

    El mejor planteo de POO que vi en youtube hasta ahora(tanto el ejercicio como la resolucion).
    Desde ya muchas gracias maestro

  • @junma321
    @junma321 10 місяців тому +4

    Me volaste la cabeza maestro, arranqué con Java hace poco y me introdujiste hacia la verdadera lógica y esencia de POO que no me terminaba de cerrar, así es como debería resolver todos los ejercicios integradores y hacia eso voy. Impecable, nada más que decir.

  • @ALaGrandeLePuseCuca023
    @ALaGrandeLePuseCuca023 Рік тому +2

    Hola, recién comienzo con POO pero solo encontraba ejercicios muy fáciles hasta que me tope con esto y hay me di cuenta que me falta mucho por aprender. Todavía, no tuve la oportunidad de ver tus anteriores videos pero si estas dando este tipo de ejercicio supongo que ya lo enseñaste, me motiva mucho en ver cada uno para poder tener este conocimiento que tienen al realizar este ejercicio. Muchas gracias

    • @CharlyCimino
      @CharlyCimino  Рік тому +1

      Me alegro que te guste. Te dejo el link de.la.playlist para arrancar desde -10: ua-cam.com/play/PLOw7b-NX043aSC7ZNtEuVfY8xZoNzVqdJ.html

  • @MarcosHernandez-ie4xd
    @MarcosHernandez-ie4xd Рік тому +1

    Esto es oro puro, gran video!, nada parecido por lo que vi en youtube.

  • @jesusdanielsanchezalarcon7718
    @jesusdanielsanchezalarcon7718 Рік тому +1

    Me encantan estos cursos, las explicaciones son a lujo de detalle, no falta nada, muchísimas gracias 👍

  • @enjoythelive337
    @enjoythelive337 6 днів тому

    Muchas gracias por tu aporte. Me parto de risa cuando después de varias estalladas de cabeza para intentar asimilar la complejidad de todas las relaciones del planteamiento dices " para los más avanzados ... saldo = saldo - monto es lo mismo que : saldo -= monto".

  • @yamilmedina248
    @yamilmedina248 Рік тому

    Charly gracias por tus clases, vi y practique todos los videos anteriores sin embargo en este me voló la cabeza al pensar que había aprendido todo , hice el ejercicio por mi cuenta antes de ver el video sin embargo lo que hiciste fue muy superior a mis espectativas.
    Un abrazo enorme profe.

    • @CharlyCimino
      @CharlyCimino  Рік тому

      Suele pasar en este paradigma. Seguí adelante. Abrazo y gracias

  • @sabrinatecherasosa
    @sabrinatecherasosa Рік тому +1

    Sabes que ando necesitando , mas ejercicios de este tipo pero implementando clases servicios por cada entidad.

  • @johnnyrosero1672
    @johnnyrosero1672 2 роки тому +1

    excelentes videos, con este curso he aprendido mas que en clases presenciales... muchas gracias...

  • @claudioa.fuentes7674
    @claudioa.fuentes7674 3 роки тому

    Gracias Charly, y cómo decís mas allá del proyecto me quedaron varias cosas válidas de cómo ir encarando el desarrollo de un programa.

  • @yayimqz9858
    @yayimqz9858 9 місяців тому

    Excelente video!!!
    De los mejores
    Yo trate de hacerlo sin mirar la solución, y parece que me salió muy similar, con excepción de que personalice las cuotas de cada entidad financiera.

  • @leonardoherrera1474
    @leonardoherrera1474 2 роки тому +1

    Que excelente explicando! Te has ganado un humilde aprendiz.. Saludos

  • @camilo1017
    @camilo1017 4 місяці тому

    Tremenda explicación y desarrollo del ejercicio. Gracias por estos vídeos

  • @juanjoselanza
    @juanjoselanza 2 роки тому

    Buenísimo el video!!👏 Me quemó el cerebro de la mitad del video en adelante🤯, pero mañana lo reveo para fijar un poco más todo el proceso. Muchas gracias por el contenido!!🙏

  • @gabrielalejandroorellana5366
    @gabrielalejandroorellana5366 7 місяців тому

    INCREIBLE ESTA PRACTICA! HERMOSISIMO. GRACIAS.

  • @leodee3214
    @leodee3214 2 роки тому

    Implecable! Para ver un par de veces! Muchas Gracias

  • @matiloki
    @matiloki 3 роки тому +2

    Buenísimo para practicar!

  • @egaguirre
    @egaguirre Рік тому

    Super bien explicado, muy util. Muchisimas gracias.

  • @samuelgutierrez5704
    @samuelgutierrez5704 2 роки тому

    Excelente como explicaste el ejercicio, es como un ejercicio tipo parcial.

  • @missakire3623
    @missakire3623 2 роки тому

    Excelente, muchisimas gracias.Tus videos me han sido muy valiosos.

  • @TDanisa
    @TDanisa 3 роки тому

    Uy, que bien viene un ejercicio modelo!!!!! Gracias 😊

  • @jessramos3862
    @jessramos3862 Рік тому

    muy bien, en un video anterior te decia que un video asi como este, gracias

  • @leofabioFAC
    @leofabioFAC 2 роки тому

    Excelente explicación, gracias por compartir!

  • @bettyretana3950
    @bettyretana3950 6 місяців тому

    Hola @CharlyCirnino tienes un talento maravilloso para explicar, hasta haces que parezca fácil programar, gracias por eso . Tengo una consulta, en uno de tus videos dices que no siempre es necesario agregar Setter y Getter, incluso mostraste que desde source se puede insertar en el código, casi automático si es que uno así lo requiere. Pero haciendo esto sin los setter y Getter mi programa no compilaba, y compilo hasta que se lo hice a todos los atributos. Sabes qué pudo haber pasado?

    • @CharlyCimino
      @CharlyCimino  6 місяців тому +1

      Hola. Gracias por tus palabras. Si tu código no compilaba sin getters/setters es porque en algún lado se estaban llamando seguramente. Habría que fijarse dónde. También, a nivel avanzado, algunos frameworks acceden de manera implícita a las propiedades de los objetos mediante getters/setters, siendo necesarios, pero no creo que sea tu caso, pues estos videos y ejercicios son introductorios, sin usar librerías externas ni frameworks. Saludos

  • @dianapineda3196
    @dianapineda3196 2 роки тому

    mil gracias por tu explicacion tan valiosa

  • @Carlosdev123
    @Carlosdev123 2 роки тому

    Genial y muy didáctico este ejercicio modelo!

  • @Kun.89
    @Kun.89 Рік тому +1

    Muy bueno la verdad, no se como aun no te conocía 🙄😑😑

  • @rockechan152
    @rockechan152 3 роки тому

    Gracias, por tu dedicación!

  • @joseacosta-yp4xs
    @joseacosta-yp4xs 4 місяці тому

    Hola Charly tomé el enunciado e hice el ejercicio por mi cuenta para luego compararlo con el tuyo y noté algo. A la hora de descontar el saldo, no debería descontar el monto de la cuota en lugar del monto total? es decir, en la vida real se pagaría en el resumen de la tarjeta el monto de la cuota y no el total de la compra. A lo mejor yo lo malinterpreté o lo estoy sobrepensando mucho jeje, igualmente entiendo que el objetivo del vídeo es enseñarnos como trabajar con objetos y que por cierto me ayudó un montón, felicitaciones por el buen trabajo!

    • @CharlyCimino
      @CharlyCimino  3 місяці тому +1

      Hola. El saldo de la tarjeta es el monto que todavia podes gastar, no el valor que te vendría en el resumen. Si mi saldo es 1000 , solo puedo comprar algo de 1000 o menos. Luego, cuantas más cuotas, más tiempo tengo para pagar pero también más tardaré en recuperar el saldo completo para gastar en otra cosa 😉 Saludos

  • @cxncerr
    @cxncerr Рік тому

    sos un maquina

  • @HackZ2266
    @HackZ2266 Рік тому

    excelente video !!

  • @jimmyxxx1981
    @jimmyxxx1981 Рік тому

    Genial.

  • @christiand.1795
    @christiand.1795 Рік тому

    Como siempre, gran explicación y ayuda para cristalizar los conocimientos. Una duda, todo los valores de los atributos son ingresados por el programador, para fines del ejemplo y enseñanza, pero si fuera el usuario el que ingresa los valores, ¿dónde se solicitan los inputs, en la clase Principal a través de variables?

    • @CharlyCimino
      @CharlyCimino  Рік тому

      En un caso real, los datos llegan de una base de datos, una petición HTTP, etc... Java se usa en el backend, por ende, el usuario no va a usar la consola

    • @christiand.1795
      @christiand.1795 Рік тому

      Gracias.@@CharlyCimino

  • @xgnim91
    @xgnim91 Рік тому

    Hola Charly! Estoy siguiendo la lista de reproducción en el orden en que se presenta, y me doy cuenta que en este video utilizas enums y antes de este video no los habias mencionado. Hay que ver los vídeos de enums que tienes después de este?
    Saludos y gracias por todo 😊

    • @CharlyCimino
      @CharlyCimino  Рік тому +1

      Hola Jesús, es cierto, no quedó bien ordenada la playlist. Te sugiero veas solo el primer video de enums (son 3), con ese te basta para entender este ejercicio. Saludos

  • @lionelchoque3281
    @lionelchoque3281 3 роки тому

    Messirvee! seguí subiendo videos!

  • @el_yisusT
    @el_yisusT Рік тому

    Ahora con Lombok, todas las clases con @Data y tu tan cuidadoso con los Getters y Setters, jajaja. Se me rompe la cabeza. Y tiene sentido, el otro día en una prueba técnica, me hicieron manipular una lista creando métodos add y remove porque la lista no tenía un Getter.

    • @CharlyCimino
      @CharlyCimino  Рік тому +4

      No hay que ser dogmático, los JavaBeans por ejemplo son un estándar que define que tiene que haber getters y setters para cada atributo... Acá lo que trato es de no abusar de que todo lo haga una sola clase que les pida a los demás siempre sus datos sino delegar responsabilidades. Todos los objetos hacen parte de la lógica para llegar al resultado final, se distribuye, no se centraliza. Pero bueno, a medida que vas aprendiendo notás que hay patrones que se contradicen con otros y, al fin y al cabo, tenemos que decidir qué usar en cada circunstancia. No hay verdades absolutas :)

    • @el_yisusT
      @el_yisusT Рік тому

      @@CharlyCimino Gracias por tu respuesta!

  • @elcoya1294
    @elcoya1294 Рік тому

    👏👏👏👏

  • @alvarog.999
    @alvarog.999 3 роки тому

    Gracias Charly ;)

  • @ezequielstom6745
    @ezequielstom6745 2 роки тому

    uff tremendo!

  • @celinagoday1382
    @celinagoday1382 Рік тому

    Hola Charly 😃 vengo siguiendo la lista de reproducion desde el principio y queria saber si para hacer este ejercicio tendria que ver los videos de arraylist y enums primero

    • @CharlyCimino
      @CharlyCimino  Рік тому +1

      Hola, no hace falta, este ejercicios está pensado para integrar los primeros conceptos y a partir de aquí sí ver ArrayList. El orden de la playlist es consistente. Saludos y gracias por ver 😊

  • @S4MBENTZ
    @S4MBENTZ 2 роки тому

    genial

  • @Alfrericotero
    @Alfrericotero Рік тому

    maestro geniales tus videos pero me surgió algo.
    cuando yo tengo un saldo de tarjeta inferior al monto y por ende busco que el objeto ticket me retorne nulo no lo hace, me genera en el main un nullpointerexception, es decir me da un error y no me muestra como a vos el null en consola.

    • @CharlyCimino
      @CharlyCimino  Рік тому +1

      Evidentemente estás queriendo acceder a una referencia nula. Debes fijarte qué línea te marca que está fallando y revisar si no hay un null ahí.

    • @Alfrericotero
      @Alfrericotero Рік тому

      @@CharlyCimino Maestro muchas gracias por responder, efectivamente era ese el error.
      yo en vez de mostrar por consola el objeto ticket que retornaba de efectuarPago()(con el valor nulo) trataba de mostrar el toString de Ticket.

    • @CharlyCimino
      @CharlyCimino  Рік тому

      @@Alfrericotero claro, si ticket es null, lanza la excepción. Otra cosa es intentar mostrar una variable con println(). Ya tiene previsto que pueda haber nulos ese método. Lo develó en el vídeo de 'toString es polimorfismo'

  • @maximilianosantucho4593
    @maximilianosantucho4593 Місяць тому

    Hola profe, como esta? pregunta: Por que en Ticket ticketGenerado lo instancia con posnet.efectuarPago( ) en lugar de
    Ticket ticketGenerado = new Ticket(nombreApellido, montoTotal, montoPorCuota); ?? no logro darme cuenta

    • @CharlyCimino
      @CharlyCimino  Місяць тому

      El objeto Ticket lo genera el Posnet y lo retorna cuando se efectúa un pago. ¿Por qué generarías un Ticket fuera del Posnet y además qué valores le pondrías a cada atributo?

    • @maximilianosantucho4593
      @maximilianosantucho4593 Місяць тому

      @@CharlyCimino ahh, es verdad ! efectuarPago( ) retorna un Ticket, jamas lo hubiera pensado así jaja menos teniendo en mente que cada vez que se instancia una clase creí que obligatoriamente había que hacer new Ticket( ); pero viendolo de esa manera tiene sentido
      Muchas gracias Charly !! Sos el mejor, cada vez disfruto más de aprender Java por tus videos, saludos

    • @CharlyCimino
      @CharlyCimino  Місяць тому +1

      @@maximilianosantucho4593 exacto, para instanciar hay que usar new. Creo que tu confusión radica en que estás acostumbrado a que siempre asignas a una variable una instancia construida en el momento. Este caso te demuestra que no necesariamente: en una variable se puede guardar una referencia a un objeto que por ahí está en otra variable o que retornó un método. Recordá que la POO es muy diversa, no se aprende de memoria ! Abrazo 🫂

    • @maximilianosantucho4593
      @maximilianosantucho4593 Місяць тому

      @@CharlyCimino Perfecto, mas claro imposible sos un excelente profesor, te re agradezco

  • @victorevangelista8656
    @victorevangelista8656 2 роки тому

    Volvi a ver este video y tengo una pregunta que tal vez no tenga que ver con el ejercicio que se presenta de forma sencilla para que la explicación se entienda: aqui muestras que desde un enunciado pasas a uml y luego lo traduces a código java pero, ¿En que parte iria el pseudocódigo o ya no seria necesario? por ejemplo yo entiendo que despues de analizar el enunciado y generar el diagrama uml se tendria que escribir pseudocodigo (que no depende de ningun lenguaje de programación) para todos los objetos, atributos y metodos de cada clase, hacer pruebas de escritorio y finalmente traducirlo al lenguaje que vayamos a utilizar (que en este caso seria java pero podría ser otro).

    • @CharlyCimino
      @CharlyCimino  2 роки тому +2

      En ese caso el vídeo duraría más de una hora y no tendría tantas vistas. Además el pseudocódigo es solo un proceso intermedio pero cuando ya se tiene experiencia se puede saltear

    • @victorevangelista8656
      @victorevangelista8656 2 роки тому

      @@CharlyCimino es decir que pasariamos a escribir código directamente ¿verdad? muchas graxias por aclararme la duda ya uqe he estado ahciendo pseudocódigo y como recien voy aprendiendo UML no estaba seguro basandome en el ejemplo en que parte iria el pseudocódigo y si seria necesario incluirlo o no.

    • @Francisco-me1um
      @Francisco-me1um 2 роки тому +2

      @@victorevangelista8656 hacer el pseudo solo haría que te demores más, al hacer el UML ya tienes una guía e idea de como programarlo

  • @zx6699
    @zx6699 2 роки тому

    Se que no es el tema del video pero, comencé con programación estructurada y venía a pedirte recomendación sobre libros, cursos o cualquier otra cosa que me pudiera ayudar a entender éste paradigma, de antemano te agradezco tu colaboración

    • @zx6699
      @zx6699 2 роки тому

      Ah... Ya mismo me suscribo a tu canal...

    • @CeratiGilmour
      @CeratiGilmour 2 роки тому +1

      El libro Deitel Deitel.

  • @victorevangelista8656
    @victorevangelista8656 11 місяців тому

    Tengo una duda, ¿Que pasaría si en el constructor del objeto persona no se escribieran valores en sus parámetros?, ¿O que se pasara por parámetro algo como esto: "" ?, ¿No se tendría que validar también que no se pueden dejar datos en blanco igual para el objeto tarjeta de crédito?. Tal vez suene tonto ya que una tarjeta de crédito siempre tiene que tener un titular (persona) indicando todos sus datos y que no puede existir una tarjeta de crédito sin titular. Tal vez yo no analice bien este ejercicio y dado el mismo para esta situación no se necesario validar los datos del objeto persona que esta como titular de una tarjeta de crédito. Lo mismo con la tarjeta de crédito que seria ilógico que no tuviera una entidad bancaria o un numero de tarjeta. Lo del saldo si lo entendí ya que para poder pagar algo desde el posnet, este debe de verificar que la tarjeta tenga el saldo suficiente para cubrir el costo.

    • @CharlyCimino
      @CharlyCimino  11 місяців тому +1

      Todos los datos que llegan por parámetro en un constructor o método público deben ser validados. No se hizo tanto énfasis en eso en este ejercicio para no hacer muy largo el video. Saludos

    • @victorevangelista8656
      @victorevangelista8656 11 місяців тому

      @@CharlyCimino ya veo, es decir que ademas de un método, ¿También se pueden validar datos en el constructor?, por ejemplo, dentro del constructor se podría validar que los parámetros no estén en blanco.

    • @CharlyCimino
      @CharlyCimino  11 місяців тому +1

      @@victorevangelista8656 exacto, de hecho el constructor es también un método. Lo ideal sería que llame a los setters y que éstos sean los que tiene validación

    • @victorevangelista8656
      @victorevangelista8656 11 місяців тому

      @@CharlyCimino ya veo, que interesante, pensé que solo en el constructor se usaba para inicializar los valores de los atributos de la clase. No sabía que también se podía llamar a métodos en el. Gracias por responder a mi duda!!!! Veo que aún me falta mucho por aprender.

    • @victorevangelista8656
      @victorevangelista8656 11 місяців тому

      @@CharlyCimino una pregunta más, mencionas lis setters para validar al ingresar datos en el constructor. Si los datos que se pasan no son datos en blanco, entonces se asignan, pero si están en blanco, tal vez se tendría que dar un valor por defecto o en su caso indicar mediante un mensaje que lis datos no son válidos pero también se tendría que validar antes de asignar el objeto persona a la tarjeta??? Es decir si los datos del objeto persona son válidos se asignar y se pasa el objeto persona al objeto tarjeta pero en caso contrario si los datos del objeto persona no son válidos entonces no se podrá pasar al objeto tarjeta. No sé si esto esté bien.

  • @victorevangelista8656
    @victorevangelista8656 2 роки тому

    ¿Por que en el código colocaste el constructor en la clase TarjetaDeCredito pero no lo colocaste en el diagrama UML?

    • @CharlyCimino
      @CharlyCimino  2 роки тому +1

      Porque no lo consideré relevante en la explicación

    • @victorevangelista8656
      @victorevangelista8656 2 роки тому

      @@CharlyCimino okpero aun asi, ¿Para este ejemplo si seria correcto el colocarlo en el diagrama o al hacerlo estariamos agregando información que no aportaria nada relevante?

    • @CharlyCimino
      @CharlyCimino  2 роки тому +3

      @@victorevangelista8656 los diagramas UML son para los humanos, no para las máquinas. Se pone o se saca info a discreción, de acuerdo a si ayuda a entender mejor o no

    • @victorevangelista8656
      @victorevangelista8656 2 роки тому

      @@CharlyCimino ok ya entiendo, muchas gracias por la respuesta amigo!!

  • @jessramos3862
    @jessramos3862 Рік тому

    cuate que es el DNI??