Se me hizo algo denso y difícil el ejercicio pero justo esta clase de ejercicios son los que necesito, necesito practicar mas y necesito resolver mas ejercicios de POO, excelente, muchas gracias
Este ejercicio si esta a otro nivel, me perdí literal, pero son los que mas hay que estudiar y entender. Voy a verlo en partes para entender, gracias amigo, mas ejercicios así porfavor, que aunque te exploten la cabeza son los que mas enseñanza brindan.
Profe muchas gracias, yo estudio DAM ( Desarrollo de Aplicaciones Multiplataforma) primer año, para mi lo normal era crear todos los getter y setter de las clases que se crearían objetos, pero me has aclarado que no todos se usan, y respecto a los métodos has sido bastante claro en la utilización de if() y de ciclos while() y for(), de verdad que muchas, muchas gracias por su labor.
Charly es básicamente para decirte que sos un enfermo jeje, qué manera de regalar talento a través de TH-cam, te súper, mega agradezco.Hoy no tengo dinero pero apenas pueda te compro 10 cafés, solo tengo palabras de agradecimiento por todo el contenido que nos facilitas, despues de messi pegadito estas vos jeje
Buen ejercicio, aun que algo largo y se va complicando al ir avanzando!!!! Gracias por enseñarnos profe. Espero que mas adelante puedas enseñar de bases de datos y como integrarlo con un programa como este para que los datos sean persistentes. También seria interesante si pudieras enseñar sobre las interfaces gráficas (se que las aplicaciones de escritorio poco a poco van en desuso y lo web va ganando mas terreno pero algo que me causa curiosidad es si independientemente del lenguaje java podemos utilizar una interfaz gráfica que no sea la que tiene el netbeans por ejemplo, ¿Se podría utilizar la que tienen un windows 10 o alguna distro de linux?). Saludos!!!!!
Charly gracias por compartir tu conocimiento me ayudan mucho tus videos. Puede ser que haya un error en la resolucion del punto D) ? Si tuvieras mas de un instrumento por tipo en la misma sucursal, con el algoritmo planteado el % no te da. Gracias.
Hola. No veo por qué no funcionaría. En la línea 43 de Sucursal hago un '++' en la posición que corresponda a ese tipo de instrumento, por lo tanto, si antes había 1, ahora habrá 2, y así sucesivamente, estoy contando.
Muy interesante tu manera de analizar el problema y en base a esto ir creando el diagrama UML. Tndre que ver varias veces este video para comprenderlo mejor, por cierto. ¿De donde sacas tus ejercicios?, si los cacas de algun libro o eso seria genial si pudieras compartirlos con todos para ir practicando.
Para la prueba, estamos colocando directamente los datos de las sucursales en el código pero, ¿También se podrían obtener de un formulario? por ejemplo, si la fabrica quisiera abrir una nueva sucursal y registráramos sus datos en un formulario desde una aplicación de escritorio.
Hola Charly, consulta. Entre el punto 2A y 2B, cambias la resolución del código. En el punto A, directamente usas el método para mostrar los instrumentos de todas las sucursales desde Fábrica sin crear una nueva lista. Sin embargo en el punto B, luego de buscar los instrumentos por Tipo, para listarlos desde Fabrica usas una nueva lista, eso por qué sería???, es por la diferencia con la consigna del punto B, que dice ¨...Que devuelva una lista...¨, y el punto A solo mostrar??? , la diferencia sería que podría modificar esa nueva lista en fábrica, o sea tengo los objetos? y en el punto A solo veo las referencias a los objetos de la sucursal para imprimirlos por pantalla? , disculpa pero ahí me hice una mezcla. Desde ya gracias.
Hola, lo hice para que haya diferentes variantes de resolución. Lo que me lleva a una cosa o la otra es el enunciado, hecho adrede: uno pide mostrar los elementos por consola, el otro pide que se retornen los elementos. Siempre es mejor retornar la lista, porque eso te da más margen de maniobra, no siempre todo tiene que mostrarse y mucho menos por la consola. Saludos
Hola! en el inciso C) el método borrar instrumento en Fabrica lo hice de la siguiente manera. Lo probé y parece estar bien. Lo considera adecuado o debería cambiarlo? public Instrumento borrarInstrumento(String idInstrumento){ Instrumento borrado=null; Iterator suc=this.sucursales.iterator(); while (suc.hasNext() && borrado == null){ borrado = suc.next().borrarInstrumento(idInstrumento); } return borrado; } del mismo modo en Sucursal hice lo siguiente: public Instrumento borrarInstrumento(String idInstrumento){ Instrumento instrumentoDevolver=buscarInstrumento(idInstrumento); if (instrumentoDevolver!=null){ this.instrumentos.remove(instrumentoDevolver); } return instrumentoDevolver; } private Instrumento buscarInstrumento(String idInstrumento){ Instrumento instrumentoDevolver=null; Iterator it=this.instrumentos.iterator(); while (it.hasNext() && instrumentoDevolver==null ){ Instrumento instrumento=it.next(); if (instrumento.getID().equalsIgnoreCase(idInstrumento)){ instrumentoDevolver=instrumento; } } return instrumentoDevolver; }
Hola, Charly! en el minuto 32.04 a la hora de realizar el punto 2. B me cuesta entender porque usaste como tipo de dato ArrayList y no un void como hiciste para el punto 2.A si es para listar una lista, me podrías explicar la diferencia y cuando se deberia de usar como tipo de dato el ArrayList. Gracias.
Porque en un caso estoy mostrando cada elemento en la consola, por eso el método no retorna nada (void). En cambio, el punto 2B requiere DEVOLVER/RETORNAR los elementos, y como son seguramente más de uno, será en una nueva lista
Muy bien explicado, paso a paso, pero tengo una duda puedo crear el instrumento dentro de fabrica, osea usaria un metodo desde main diciendole a fabrica que fabrique un instrumento(poniedole id de forma automatica por ejemplo) y luego otro metodo asignar instrumento a sucursal ? si un objeto crea un objeto, el nombre de la variable no la pudo conocer ? el instrumento quedaria como propiedad de fabrica?
Cualquier objeto puede crear otro o bien que ya le llegue creado por parámetro en alguno de sus métodos. Es la diferencia entre agregación y composición.
Hola Charly! Hice un parate con tus videos de Java y ya me arrepiento! Puede ser que Java no te permite imprimir por pantalla el array escribiendo en el System el nombre de la variable que lo define? Sale un identificador y vi que para que lo permita hay que importar y usar toString.
Hola Pablo. toString es un método que devuelve una cadena que representa al objeto en cuestión. Los ArrayList lo tienen sobrescrito y por eso al hacer un System.out.println(elArrayList) se pueden visualizar sus elementos. En cambio, los arrays no, por eso al hacer System.out.println(elArray) verás una dirección de memoria en la consola. Para ver los elementos de un array podes usar System.out.println(Arrays.toString(elArray)), debés importar para ello la clase Arrays del paquete java.util Saludos
No entendí muy bien la parte de instEncontrados.addAll( sucursal.instrumentoPorTipo(tipo) ); ¿Podríamos decir que con esa linea de código es como si tubieramos una lista de listas? es decir, instEncontrados es un ArrayList de tipo Instrumento y con el metodo addAll() agregamos de cada sucursal una lista de instrumentos pero filtrada por tipo en instEncontrados. No se si me explique bien.
profe cuando hace el metodo cargar fabrica y quiero imprimir por ejemplo s1( sucursal 1) como esta dentro del metodo no me deja acceder hay alguna manera de imprimir tipo de intrumento pero que separe por sucursal por ejemplo?
@@CharlyCimino creo que lo que está preguntando es que en el método “mostrarInstrumentoPorTipo” vos buscas en todas las sucursales y devolves todos los instrumentos por tipo que hay, el quiere saber si hay alguna forma de que te los muestre listado por sucursal, por ejemplo sucursal1 con su lista de instrumentos por tipo, aucursal2 igual, etc.
@@AtaTheKin Claro, que cada sucursal devolverá una lista de instrumentos por tipo. Desde la clase Fábrica solo basta con recorrer cada sucursal y pedirle que muestre su nombre y su listado
🙌 ¡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 🌏
Hace meses andaba buscando clases de java bien explicadas y al fin encontré este canal que es una mina de oro
Se me hizo algo denso y difícil el ejercicio pero justo esta clase de ejercicios son los que necesito, necesito practicar mas y necesito resolver mas ejercicios de POO, excelente, muchas gracias
Este ejercicio si esta a otro nivel, me perdí literal, pero son los que mas hay que estudiar y entender. Voy a verlo en partes para entender, gracias amigo, mas ejercicios así porfavor, que aunque te exploten la cabeza son los que mas enseñanza brindan.
Tuve que verlo 3 veces para poder comprenderlo todo bien y si que valió la pena.
Tienes una facilidad de explicar las cosas que no sentí ni lo largo que fué el video, mil gracias por compartir tus conocimientos.
Profe muchas gracias, yo estudio DAM ( Desarrollo de Aplicaciones Multiplataforma) primer año, para mi lo normal era crear todos los getter y setter de las clases que se crearían objetos, pero me has aclarado que no todos se usan, y respecto a los métodos has sido bastante claro en la utilización de if() y de ciclos while() y for(), de verdad que muchas, muchas gracias por su labor.
TREMENDO video, me volo la cabeza pero poco a poco lo fui analizarlo hasta poder hacerlo solo, genial!
Excelente Video super recomendado para todos. aguante el profe.
Woah, todos los dias desarrollo mas mi logica en poo, espero pronto estar listo para darle a spring e hibernate.
Me ayudas a entender los temas con claridad, gracias por todo amigo.
tremenda clase! muchas gracias
Esperando el estreno. Muchas gracias.
Que crack, gracias por tomarte el timpo de explicar!!!
Muy buenos los videos de POO. Lo mejor que encontrado ,felicidades !.
Wao! Este hombre es tremendo. Buenísimo ejercicio.
Impecable, un lujo!!! Muchas gracias!!
Estuvo muy bueno, muy integrador con buenas técnicas, muy buenos los videos, lo volveré a hacer para practicarlo, GRACIASSSSSSSSSS!
Excelente, me llevo varios cosas nuevas que no conocía. Muchas gracias por estas perlitas que compartís.
Gracias por compartir tu conocimiento. Abrazo
Charly es básicamente para decirte que sos un enfermo jeje, qué manera de regalar talento a través de TH-cam, te súper, mega agradezco.Hoy no tengo dinero pero apenas pueda te compro 10 cafés, solo tengo palabras de agradecimiento por todo el contenido que nos facilitas, despues de messi pegadito estas vos jeje
excelentemente bien explicado, gracias, sos un gran profesor
muy bueno el ejercicio👋👋👋👋
Gracias!!! Me ayudan mucho tus videos. Un saludo.
Uno mas al canal. Felicitaciones por tu trabajo!!
Excelente ejercicio complejo sii para paracticar,
Que bien que me viene esto Charly!
Llego a aprobar Programación Orientada a Objetos en al facu por este video te mando una caja con salames, saludos desde Chajarí, Entre Ríos.
Quedamos así :P suerte !
Y aprobaste?
@@AtaTheKin Si, queremos saber si sos un tipo de palabra. jajaja
y aprobaste bro mandale los salames a charly o se pudre jajajaj
Impecable papaa
Gracias, excelente explicación.
Cheeee!!!! Pero quien sos? Increible material, gracias 🇦🇷🇪🇦
un crack !!, muchas gracias
Buen ejercicio, aun que algo largo y se va complicando al ir avanzando!!!! Gracias por enseñarnos profe. Espero que mas adelante puedas enseñar de bases de datos y como integrarlo con un programa como este para que los datos sean persistentes. También seria interesante si pudieras enseñar sobre las interfaces gráficas (se que las aplicaciones de escritorio poco a poco van en desuso y lo web va ganando mas terreno pero algo que me causa curiosidad es si independientemente del lenguaje java podemos utilizar una interfaz gráfica que no sea la que tiene el netbeans por ejemplo, ¿Se podría utilizar la que tienen un windows 10 o alguna distro de linux?). Saludos!!!!!
Excelente
Gracias
Charly gracias por compartir tu conocimiento me ayudan mucho tus videos. Puede ser que haya un error en la resolucion del punto D) ? Si tuvieras mas de un instrumento por tipo en la misma sucursal, con el algoritmo planteado el % no te da. Gracias.
Hola. No veo por qué no funcionaría. En la línea 43 de Sucursal hago un '++' en la posición que corresponda a ese tipo de instrumento, por lo tanto, si antes había 1, ahora habrá 2, y así sucesivamente, estoy contando.
Genial!!! Para el recuperatorio :'v
Muy interesante tu manera de analizar el problema y en base a esto ir creando el diagrama UML. Tndre que ver varias veces este video para comprenderlo mejor, por cierto. ¿De donde sacas tus ejercicios?, si los cacas de algun libro o eso seria genial si pudieras compartirlos con todos para ir practicando.
Muchos los he inventado yo
Charly Crack!
Para la prueba, estamos colocando directamente los datos de las sucursales en el código pero, ¿También se podrían obtener de un formulario? por ejemplo, si la fabrica quisiera abrir una nueva sucursal y registráramos sus datos en un formulario desde una aplicación de escritorio.
Se podría perfectamente, claro
Hola Charly, consulta.
Entre el punto 2A y 2B, cambias la resolución del código. En el punto A, directamente usas el método para mostrar los instrumentos de todas las sucursales desde Fábrica sin crear una nueva lista.
Sin embargo en el punto B, luego de buscar los instrumentos por Tipo, para listarlos desde Fabrica usas una nueva lista, eso por qué sería???, es por la diferencia con la consigna del punto B, que dice ¨...Que devuelva una lista...¨, y el punto A solo mostrar??? , la diferencia sería que podría modificar esa nueva lista en fábrica, o sea tengo los objetos? y en el punto A solo veo las referencias a los objetos de la sucursal para imprimirlos por pantalla? , disculpa pero ahí me hice una mezcla. Desde ya gracias.
Hola, lo hice para que haya diferentes variantes de resolución. Lo que me lleva a una cosa o la otra es el enunciado, hecho adrede: uno pide mostrar los elementos por consola, el otro pide que se retornen los elementos. Siempre es mejor retornar la lista, porque eso te da más margen de maniobra, no siempre todo tiene que mostrarse y mucho menos por la consola. Saludos
Hola! en el inciso C) el método borrar instrumento en Fabrica lo hice de la siguiente manera. Lo probé y parece estar bien. Lo considera adecuado o debería cambiarlo?
public Instrumento borrarInstrumento(String idInstrumento){
Instrumento borrado=null;
Iterator suc=this.sucursales.iterator();
while (suc.hasNext() && borrado == null){
borrado = suc.next().borrarInstrumento(idInstrumento);
}
return borrado;
}
del mismo modo en Sucursal hice lo siguiente:
public Instrumento borrarInstrumento(String idInstrumento){
Instrumento instrumentoDevolver=buscarInstrumento(idInstrumento);
if (instrumentoDevolver!=null){
this.instrumentos.remove(instrumentoDevolver);
}
return instrumentoDevolver;
}
private Instrumento buscarInstrumento(String idInstrumento){
Instrumento instrumentoDevolver=null;
Iterator it=this.instrumentos.iterator();
while (it.hasNext() && instrumentoDevolver==null ){
Instrumento instrumento=it.next();
if (instrumento.getID().equalsIgnoreCase(idInstrumento)){
instrumentoDevolver=instrumento;
}
}
return instrumentoDevolver;
}
¡Una belleza! Usaste iteradores, lo que hace que tu algoritmo sea universal, más allá de usar como colección Un ArrayList u otro tipo. Te felicito !
@@CharlyCimino muchísimas gracias! Lo aprendí en uno de tus videos! 😊
Hola, Charly! en el minuto 32.04 a la hora de realizar el punto 2. B me cuesta entender porque usaste como tipo de dato ArrayList y no un void como hiciste para el punto 2.A si es para listar una lista, me podrías explicar la diferencia y cuando se deberia de usar como tipo de dato el ArrayList. Gracias.
Porque en un caso estoy mostrando cada elemento en la consola, por eso el método no retorna nada (void). En cambio, el punto 2B requiere DEVOLVER/RETORNAR los elementos, y como son seguramente más de uno, será en una nueva lista
Buenas, el ejercicio se podría considerar que está hecho con la metodología SOLID? Gracias!!!🙌
Si, trata de usar esos principios a pesar de aún no haberlos enseñado
@@CharlyCimino Perfecto. Gracias!!!
Muy bien explicado, paso a paso, pero tengo una duda puedo crear el instrumento dentro de fabrica, osea usaria un metodo desde main diciendole a fabrica que fabrique un instrumento(poniedole id de forma automatica por ejemplo) y luego otro metodo asignar instrumento a sucursal ? si un objeto crea un objeto, el nombre de la variable no la pudo conocer ? el instrumento quedaria como propiedad de fabrica?
Cualquier objeto puede crear otro o bien que ya le llegue creado por parámetro en alguno de sus métodos. Es la diferencia entre agregación y composición.
@@CharlyCimino muchas Gracias!
Hola Charly! Hice un parate con tus videos de Java y ya me arrepiento! Puede ser que Java no te permite imprimir por pantalla el array escribiendo en el System el nombre de la variable que lo define? Sale un identificador y vi que para que lo permita hay que importar y usar toString.
Hola Pablo. toString es un método que devuelve una cadena que representa al objeto en cuestión. Los ArrayList lo tienen sobrescrito y por eso al hacer un System.out.println(elArrayList) se pueden visualizar sus elementos. En cambio, los arrays no, por eso al hacer System.out.println(elArray) verás una dirección de memoria en la consola. Para ver los elementos de un array podes usar System.out.println(Arrays.toString(elArray)), debés importar para ello la clase Arrays del paquete java.util
Saludos
@@CharlyCimino gracias por existir! Ja
Excelente ;D
pregunta no se puede crear el instrumento y despues agregarlo...porque ahi como que haces todo el una linea no?
Sí, se puede. Pero como mí objetivo es llenar la lista, lo hago en una linea
No entendí muy bien la parte de instEncontrados.addAll( sucursal.instrumentoPorTipo(tipo) ); ¿Podríamos decir que con esa linea de código es como si tubieramos una lista de listas? es decir, instEncontrados es un ArrayList de tipo Instrumento y con el metodo addAll() agregamos de cada sucursal una lista de instrumentos pero filtrada por tipo en instEncontrados. No se si me explique bien.
addAll permite agregar cada elemento de la lista enviada como argumento a la lista de destino. Sigue siendo una sola lista de instrumentos
profe cuando hace el metodo cargar fabrica y quiero imprimir por ejemplo s1( sucursal 1) como esta dentro del metodo no me deja acceder hay alguna manera de imprimir tipo de intrumento pero que separe por sucursal por ejemplo?
Hola, sin ver tu código no te puedo ayudar 🤷🏻
@@CharlyCimino creo que lo que está preguntando es que en el método “mostrarInstrumentoPorTipo” vos buscas en todas las sucursales y devolves todos los instrumentos por tipo que hay, el quiere saber si hay alguna forma de que te los muestre listado por sucursal, por ejemplo sucursal1 con su lista de instrumentos por tipo, aucursal2 igual, etc.
@@AtaTheKin Claro, que cada sucursal devolverá una lista de instrumentos por tipo. Desde la clase Fábrica solo basta con recorrer cada sucursal y pedirle que muestre su nombre y su listado
@@CharlyCimino si si buenísimos, muchas gracias por el video y la explicación
a lo mejor me equivoco pero esto no es factory de arqitectura de diseño
Mmmm, no. Factory requiere herencia y aquí no se aplica tal concepto
jaja saludos