✅✅ ✅ ✅ ✅ Todos mis cursos gratuitos 👉 www.pildorasinformaticas.es ✅✅ ✅ ✅ ✅ 🚀 ¿Quieres ejercicios? ¿Quieres más temario? 👉 www.pildorasinformaticas.es/course/java-tutorizado/🚀 🚀 ¿Quieres que te resuelva las dudas de Java? 👉 www.pildorasinformaticas.es/course/java-tutorizado/ 🚀 💥💥💥 Siempre seguiré subiendo cursos gratuitos por aquí. Gracias a todos por seguirme. 💥💥💥
Hola, aquí hay una mejora que se le puede hacer al programa... El programa ordena a los empleados teniendo en cuanta solo el sueldo y no el incentivo de los jefes. Es por eso que puede que en la consola salgan cosas como que un empleado con menor sueldo este por encima de otro con mayor, al no tomar el incentivo(el incentivo se tiene en cuanta a la hora de dar los datos de los empleados pero no al ordenarlos). Esto se puede arreglar modificando el método "compareTo()" haciendo que en vez de tomar la variable sueldo, tome el resultado del método "dameSueldo()". Gracias, y muy buenos tutoriales tienes PíldorasInformáticas, me están sirviendo mucho para aprender y se me hacen bastante claros. Saludos desde Argentina!!!
Hola Emilio Reato ¿Qué tal? Gracias por tu amable aporte, estaba pensando lo mismo ¿Por qué está utilizando variables de clase en vez de métodos (miObjeto.Método()) en vez de (miObjeto.sueldo)? No me dió ningún problema al ejecutar, pero la pregunta estaba en mi mente. Gracias nuevamente, caballero. Atentamente, KindlyChat.
Para los que veis este vídeo muy complicado, deciros que lo que lo hace tan complejo es el tipo de interfaz que usamos. En el siguiente vídeo lo veréis todo con mucha más claridad cuando creemos nuestra propia interfaz.
Es increíble la capacidad que tiene para explicar todo de una forma tan clara. GRACIAS. Es el mejor curso con el que me he encontrado. saludos desde México
Saludos desde Colombia, el mejor curso de Java en español que he encontrado en la red y he buscado mucho. Difícil encontrar donde expliquen tan detallada y profundamente cada uno de los temas que se han abordado.
Gracias Profesor por este Curso, es verdaderamente INCREÍBLE, cuando me inicié (soy contador imaginen lo que me cuesta )me recomendaron el libro "Java como programar" de DEITEL, me dijeron que es una eminencia en la materia. Ahora entiendo lo que me dijo una profesora en la facultad. Hay muchos que son muy buenos técnicos y pocos que son muy buenos Profesores. Saludos desde Buenos Aires, Argentina.
Siempre que oía hablar de interfaces pensaba que era las de GUI, ahora me doy cuenta que no es así. Había utilizado interfaces para los Threads con Runnable y no sabía lo que hacía, es primera vez que escucho una explicación del tema y tomo me quedo muy claro, quisiera ver más de un vídeo por día, pero me parece más efectivo uno diario donde pongo en práctica lo aprendido. Gracias profe.
Ante todo como siempre muchas gracias por este, el mejor curso de Java en habla hispana según mi opinión. Esperando como agua de mayo el manual en pdf de este curso.
Bart Clavero Ibarra Muchas gracias por el comentario. Habrá manual PDF del curso, eso es seguro. Lo que no se es cuándo y me temo que aún tardará un poco. Dispongo de poco tiempo libre y este se me va subiendo vídeos y poco más. Un saludo
Hola Juan. En primero permitame agradecerle y felicitarle por este gran trabajo que está haciendo. Es usted un excelente profesor, explica muy bien. Soy de Haití. y estoy aprendiendo a programar viendo todos sus video. Muy buen trabajo. Saludos desde Tehuacán, Puebla. México. +pildorasinformaticas
Nuevamente impresionado por la clase la dividí en dos partes para anotar algunas cosas importantes que bien todos los días Visualizo que eres Excelente Profesor.
Saludos Juan, ya me he regresado varias veces hasta que finalmente logro entender cada cosa que explicas en el curso (hasta ahora). En principio no le vi el uso "útil" a las interfaces ya que estas no tienen prácticamente nada en su interior (solo constantes y métodos vacíos que reciben parámetros) Pero luego me doy cuenta que las interfaces se usan para que el programador sepa que hacer para usar ciertos métodos. En el caso del arrays.sort( ) dice que se tiene que implementar la interfaz Comparable pero realmente lo que nos está tratando decir esta implementación es: necesito un método que se llame CompareTo, que reciba estos parámetros(Un objeto comparador) y que devuelva estos valores (-1,0 y 1). Con el fin de utilizar esa información ya que el método por sí solo no es capaz de ordenar el array sino que necesita de un método extra que brinde la información. Esto me parece que es extremadamente útil para el uso de ciertas clases de la API de Java que requiera la implementación de interfaces. Saludos desde Venezuela y gracias
cuando empecé el video y escuche toda la teoría quede "madre mía, por fin se me ha explotado el cerebro, no entiendo nada"... luego paso al eclipse y es como si me tradujeras chino mandarin!... que talento tiene usted profe!... muchas gracias por todo nuevamente!
Primer vídeo visto y me parece excelente la didáctica que se aplica para explicar los conceptos de Java de una forma tan simple y a la vez concisa. Un saludo.
Excelente todos los videos. La verdad muchas gracias por compartir tus conocimientos! Ayudas a mucha gente y eso seguro debe ser lo gratificante para vos. El mejor curso de Java que vi..
Bueno llegué hasta aquí y me dí cuanta que debo rever algunos vídeos...en fin, eso voy hacer, mismo estando súper ansiosa para seguir adelante.... pero prefiero esta segura que no me va a ser tan difícil seguir desde aquí, ya que creo que ahora empeza a complicar um poco más... Vamos que se puede! Me encanta ese curso! Gracias Píldora!!!! Eres muy bacán! Excelente trabajo.
+Virginia .Faustino Hola !! Vas bien. Es normal que a estas alturas del curso (vídeo 49) empieces a encontrar dificultad. Java es complejo y a medida que se avanza en el curso se va complicando. Haces bien en revisar vídeos anteriores. Te recomiendo incluso que para aquellas cosas que no terminas de entender del todo, busques otras fuentes de información, por ejemplo google. Cuando algo no se entiende, si te lo explican diferentes personas, casi siempre terminas entendiéndolo. Un saludo
Hola!! He entendido todo, y si no entendiera con su explicación no entendería con nadie más, solo que los conceptos me olvidan y así que ahora más que hacer los ejercicios junto contigo, tomo nota de lo más importante y cuando me olvidar o confundirme solo tendré que leer mis notas. Saludos desde Chile :) .
Me agrada mucho que lleve sus explicaciones de la mano de la API de Java, así uno aprende acerca del tema que está ilustrando y se aprende a usa la API, una vez todo entendido, uno será capaz de usar la API por cuenta propia, que aprecio su curso la verdad, es un muy buen maestro, estará un día dispuesto a subir algo sobre hibernate, sería muy apreciado.
Muchas gracias Juan por el trabajo que estas haciendo en este canal. estoy aprendiendo java y consegui tu canal por casualidad. Se nota el mimo que le pones a cada video con su respectiva diapositiva y la parte teorica y practica muy bien explicada y diseñada. Genial la aplicacion que utilizas para apuntar. de verdad gracias infinitas por tu trabajo. Saludos desde Venezuela!!
Hola Profe, nuevamente estudiando este video, las cosas se olvidan, y en esta ocasión me surgió la duda porque para mostrar el orden del array ordenado usamos el método sort y no compareTo, si finalmente este último es quien lo ordena. Muchas gracias por su dedicación que después de años de haber publicado estos videos nos sigue ayudando.
Excelente canal, estimado amigo Conozco un poco ya que llevo java en la universidad pero siempre es bueno revisar los videos desde el inicio porque siempre hay algun detalle que no captaste, pero aqui lo puedo revisar a gusto. De hecho ya voy por el Video 50 Muchas gracias por tu excelente trabajo y tu dedicación Saludos desde Peru
Uffff... personalmente se complica la cosa. Pero del mismo modo que los vídeos están explicados de un modo excelente me volcaré en asimilarlo todo para continuar y seguir aprendiendo. Gracias Profesor!!!! Un saludo.
Por si a alguien le interesa, yo he simplificado un poco el código. A la hora de implementar Comparable si pones implements Comparable te ahorras tener que hacer el casting a Empleado luego y entonces el método .compareTo quedaría así usando el ternary operator: public int compareTo(Empleado e){ return this.sueldoe.sueldo?1:0; } Saludos a todos.
Particularmente lo que hice fue repasar todos los videos visto hasta ahora y colocar en que cada archivo creado comentarios que explican que hace, de esa manera lo logro entender
Se está empezando a complicar un poco el curso pero es lógico si se quiere profundizar como en cualquier idioma. Muy útil el método sort de la clase Arrays. Y muy claras las explicaciones como siempre. Gracias.
Si sienten que es complicado de entender este video déjenme decirles que en mis clases de universidad lo es aun mas, ahí parece que los maestros compiten para ver quien te confunde mas, tengan paciencia en los videos y entenderán el tema. PildorasInformaticas hace un excelente trabajo
Hola Juan: A partir de mi juego de datos encontré una inconsistencia que puede ser útil analizar para el curso. Al imprimir los resultados no me aparecía el lote ordenado como era de esperar y probando lotes de datos determiné de qué se trataba. El método "subeSueldo" se aplica a todo el vector de una vez actualizando el dato y luego se realiza el "Arrays.sort(misEmpleados)" pero el método "dameSueldo()" se ejecuta durante la impresión por lo que al sumar el incentivo después de ordenar el array, éste queda ordenado por los sueldos originales aumentados pero no contemplando los incentivos ya que ese método no afecta el dato sueldo del vector.
Hola, una pregunta amigo , en el minuto 25:38 si el primer if es correcto, es decir si me retorna -1,¿ya no verifica el siguiente if ni el return 0? Gracias.
+sergio chavez Hola !! Si que los verifica ya que son if individuales. Si fueran else-if no los evaluaría al ser el primer if correcto, pero no es el caso de este ejemplo. Un saludo!!
+pildorasinformaticas. Impecable el curso Juan, me surge una duda con la respuesta que le diste a +sergio chavez. Creo que aunque sean if individuales al estar todos dentro un mismo método con algún tipo de retorno( en este caso el método retorna un int) cuando el programa se encuentra con el primer return se sale del método y no evalúa ninguna otra sentencia posterior. Puede ser asi? Gracias.
Excelente curso. Mil gracias!! Una pregunta: ¿Por qué, cuando se implementa el método compareTo, como argumento se debe declarar una variable tipo Object (Object miObjeto) que luego obliga a hacer un casting (Empleado otroEmpleado = (Empleado) miObjeto;), cuando se podría declarar directamente de esta manera: public int compareTo(Empleado otroEmpleado) {.....}. Lo que evidentemente ahorraría tener que hacer la refundición. Pildorasinformaticas, ¿Acaso, el código como tú lo propones, conlleva una ventaja que no es evidente? Gracias de antemano por la respuesta.
@@luisalbertobazalarbullon4529 No es así, cuando implementas comparable lo tipificas como "Empleado" al igual que cuando vas a sobrescribir el método y de esta forma ya no es necesario la refundición.
Muchisimas gracias por tus videos y por este curso Java, me encanta tu manera de explicar. Un saludo, sigue así ;) PD: una pena que las excepciones esten en el video 142 ahahha tendre que pegar ahora un salto para verlo y después volver al tema de Swing, muchisimas gracias por todos los temas ;-)
Las interfaces que tienen un solo método se denominan Interfaces Funcionales (SAM). No entiendo algo (Metodología): Camino 1: Leo la documentación de la API de Java SE. Camino 2: Busco en internet, stackoverflow o ChatGPT para entender lo que se hace, copio y pego. El profesor de forma recurrente emplea el Camino 1 y es admirable. 10 / 10
puedes intentar averiguarlo colocando esta instrucción en cada sentencia de control de flujo (if, else) : System.out.println( this.sueldo + " - " + otroEmpleado.sueldo ) ; le agregas al _println_ un string igual al valor que retorna en cada caso.
Hola juan se que has hecho tu mejor esfuerzo por explicar esto de las interfaces , no obstante es un tema bastante complejo que no se aprende a la primera ....! Yo he visto este video dos veces ya !..... y aunque comprendo la sintaxis y la dinamica para implementarla, incluso comprendo que hay que reescribir el metodo ... me cuesta entender la parte del "casting" al final ....creo que me regresare al video del casting...Ja ja ja ja.
El código de la interfaz implementada es de un tipo, de ese tipo y no de otro. Es decir, cuando creamos una clase, estamos creando un tipo de dato. No se puede coger un método que espera un tipo de dato( en este caso el que fuera el nombre que le pusiera el programador que hizo el método, creo que "T", y pasarle un objeto de tipo "Empleado". Uno es T y otro Empleado. No son iguales. Hay que entender que Java va compilando sobre la marcha, es decir, mientras tu haces el programa y escribes el método, antes de que le des a ejecutar, Java ya está comparando si los objetos son del mismo tipo e incluso antes de que le des a ejecutar Java ya sabe que te va a mandar a freir esparragos. La conversión es un detalle necesario y lógico. En realidad bajo esto subyace la idea de la compilación sobre la marcha. Teniendo en cuenta que Java es un traductor adicional (precisamente para llegar a todas las plataformas), tardaría mucho tiempo en compilar los programas si no lo hiciera sobre la marcha. De ahí que sea de "tipos fuerte". Es como decirnos : ordenarme las cosas que me deis pa traducírselo a la computadora que lo que no encaje ni lo miro. Por eso es necesaria la conversión
Hola Juan, muchas gracias por tus videos, explicas muy bien! Tengo una duda, me puse a jugar con los sueldos de los empleados (incluido lo de los jefes) y me dí cuenta que no me los acomoda en orden a los sueldos cuando agrego incentivos. No se bien porque será, tengo mis ideas de porque, pero en vez de decir cualquier pavada prefería acudir a la fuente del conocimiento. Desde ya muchas gracias por tu ayuda.
en este caso no entiendo el THIS para que sirve. dice para referenciar a la instancia de objeto implicita pero al ser el sort() un método estatico no veo que haya una instancia implícita. solo un parametro que se recibe el cual es comparado con el this que no se de donde sale.
Hola Profe! Una vez, muchas gracias por las clases tan interactivas. Tengo una duda, y seria particularmente en esta linea de codigo: public int compareTo(Object miObjeto){ Porque ingresamos Object en vez del objeto Empleado en este caso? Que seria Object? Se refiere a la clase cosmica? Muchas gracias y saludos!!!
Hola !! Gracias por el comentario. Efectivamente se refiere a la clase cósmica. Esto nos permite pasar un objeto de cualquier tipo al método compareTo por parámetro. Puede ser Empleado u otro objeto. Un saludo!!
Perfecto Profe, es decir que en estos casos siempre es conveniente referirnos a la clase cosmica para luego realizar la refundicion hacia nuestra propia clase. Muchas gracias y saludos!!
Juan. Me confundí en el uso del this, que uso tiene en esa línea de código? si no se usa el programa funciona igual. No entendí bien a que se refiere "Para hacer referencia a un parámetro implícito".
El this hace referencia al objeto donde te encuentras (parámetro implícito), es decir, si esta´s dentro de una clase llamada "persona" y utilizas la instrucción "this.nombre", estás haciendo referencia con el this a la propia clase Persona. Es como si pusieras "Persona.nombre". Si el "this" va solo en el código, hace referencia a la clase donde te encuentras. Todo esto lo explico en los videos de POO (pero no recuerdo ya en cuál de ellos). Si el código funciona igual sin poner el this, no sabría decirte ahora mismo por qué. En ocasiones el código de programación resulta redundante. Un saludo!
@@pildorasinformaticas Disculpa Juan, no lo acabo de entender. Tenemos que comparar dos objetos empleados, pero al método sólo le pasamos un parámetro empleado. Cuando usamos el this en los videos de POO simplemente era para diferenciar el parametro de la variable privada de la clase porque tenían el mismo nombre. En ese momento instanciabamos el objeto.
@@pildorasinformaticas Entonces de acuerdo a ésta explicación si yo en éste código pongo: this.sueldo sería lo mismo a Empleado.sueldo. El problema es que al hacer esto ecplipse me marca el siguiente error: Cannot make a static reference to the non-static field Empleado.sueldo. ¿ Por qué da error si this es lo mismo que Empleado en este caso?
Muy buena didactica de verdad. Lo unico que echo en falta es que propongas ejercicios en tus videos, como tarea, y que luego los resuelvas en posteriores videos. Solo como consejo. Lo dem'as increible
excelente estimado. tengo uina pregunta. como podria hacer si necesito ordenar por Id o por Nombre o por sueldo segun la necesidada en base a un diferentes esenarios
4 роки тому+2
Buenos días, ante todo decir que tus cursos son estupendo y agradecerte la labor y la paciencia con los que los hace. ahora bien mi duda es: Después de implementar la interface Comparable y de poner el método en la clase Empleado, me aparece un aviso de error en la clase Jefatura diciéndome que la herencia es inconsciente y no se como hacer para solucionarlo , alguna idea?. Un saludo y mil gracias por compartir tus conocimientos... A los 5 min de escribirte volví a escribir el código y desapareció el error, pero bueno aproveché para felicitarte por el curso.
yaaaa esta ya soluciona el problema.. era solo una mayuscula.. que idiota..ejejje... con este hermoso curso no puedo desaprobar el examen... mejor explicacion que esta no creo que aya..!!! saludos
Excelente explicación. Quiero saber si lo entendí correctamente, una Interfaz vendría a ser como un contrato que establece los métodos que deben utilizarse obligatoriamente en la clase que lo implemente. En una situación en la que tenemos que crear nuestra super clase e interfaces propias (para luego heredarlas e implementarlas en una subclase), los métodos que queremos que estén obligatoriamente en nuestra subclase, pero que no podemos heredar de nuestra super clase porque sería lógico que estén definidos ahí, deberían ir en las interfaces, no?
hola, me gusto mucho la explicacion me podrias ayudar a implementar el sort pero en un arraylist, veo que tiene un metodo similar pero no entiendo como se puede implementar, agradeceria mucho tu respuesta
Hola! Muchas gracias por haber creado este curso. A mis compañeros de Sistemas y a mi nos resulta muy util para comprender Java y OOP. Una consulta: siguiendo el ejemplo del video, si quisiera poder elegir entre varios tipos de ordenamiento ej: por id o por sueldo, ¿cómo deberia proceder? gracias.
Pero que pasa para los lenguajes de programación que tienen herencias multiples por ejemplo PHP o C++ y además tienen las interfaces, para esos casos aun no logro ver la utilidad de usar interfaces cuando simplemente puedo crear mis metodos tal como yo quiero tener en cada una de mis clases sin tener que implementarlos de una interfaz.
@@pildorasinformaticas Son como políticas que se crean para estandarizar clases o para forzarla a cumplir determinados métodos así cuidamos que el código contenga esos métodos?
Hi Guys! Cacharreando me di cuenta de algo: Poniéndolo de esta forma: class Empleado extends Persona implements Comparable { ... } //public int compareTo(Object aObject) { #1: Se puede declarar directo public int compareTo(Empleado aEmpleado) { //Empleado aEmpleado = (Empleado) aObject; #2:No hay q hacer un type cast if (this.Sueldo < aEmpleado.Sueldo) { return -1; } else if (this.Sueldo > aEmpleado.Sueldo) { return 1; } return 0; } Saludos y suerte. Bye
osea q si se pone entre etiquetas el tipo de dato en la declaracion de la interfaz,se convierte automáticamente , es asi o cual es la explicacion hermano.
Me lo he mirado varias veces y no logro entender como funciona el método compareTo. Devido a que no acabo de comprender porque ponemos "this.sueldo" y como escoge al objeto para compararlo. Alguien me puede ayudar?
la clase mas dificil hasta ahora.... cuando creas el metodo compareTo; el parametro que recibe ese metodo al cual lo llaaste miObjeto, la recibe de la interface predefinida?
Profe, de antemano gracias por su trabajo, en public int compareTo(Objetc miObjeto){ Eclipse muestra un bombillo de error diciendo Objetc cannot be resolved to a type, cual podria ser el problema?
Muy bueno el tutorial, una consulta, como se llama la aplicación que usas para subrayar, hacer flechas, recuadrar, etc..., mientras vas hablando ?. Saludos.
Cómo es que funcionan las interfaces predefinidas en Java como serializable o queue porque por ejemplo si implementamos una clase con serializable . Automáticamente los atributos de la clase se serializan sin sobreescribir ningún método y supuestamente en las interfaces no hay métodos desarrollados ?
Hola profe me aparece este error alguna ayuda at java.util.ComparableTimSort.countRunAndMakeAscending(Unknown Source) at java.util.ComparableTimSort.sort(Unknown Source) at java.util.ComparableTimSort.sort(Unknown Source) at java.util.Arrays.sort(Unknown Source) at poo.Uso_Empleado.main(Uso_Empleado.java:27)
Me ha costado pillarlo y hay que darle alguna que otra vuelta pero tampoco es tan complicado. A ver que es complicado pero he tardado en modificar 10 minutos cosas que no había hecho en videos anteriores y hace tiempo que tenía estos videos mirados. Bueno en fin que con paciencia y constancia pues sale. Saludos.
Por que cuando implemento la interfaz para utilizar el metodo Array.Sort tengo que. Sobre escribir un metodo CompareTo para que realize la misma funcion en mi clase empleados?
Porque las interfaces obligan a que sobre escribas sus métodos en tus clases tal y como hemos visto en el curso cuando explicamos las interfaces. En este caso la interfaz Comparable tiene un único método: compareTo() que estás obligado a sobre escribir en tu clase siempre que implementes dicha interfaz. El por qué Java nos obliga a sobre escribir los métodos de las interfaces ya está comentado y explicado anteriormente en el curso. Qué sentido tiene que esto sea así en este caso concreto, es porque si implementas la interfaz Comparable es porque vas a comprar dos o mas objetos entre sí (en este caso empleados si no recuerdo mal). Y Java quiere asegurarse de que incluyes en tu código el método que hace este trabajo. Ese método es compareTo(). UN saludo!!
+pildorasinformaticas comprendo todo, lo que me queda de duda es. El metodo compareTo no trae implicito el codigo del cual esta comprendido (los ciclos if que realizaste para comparar) entonces cuando ingresemos alguna interfaz t dara la pauta de lo que debe realizar y nosotros hacemos el codigo entonces? esa es mi duda espero haberme explicado
Tuve que regresar otra vez a este tema, debido a ciertas dudas que estoy teniendo en cursos más avanzados. No sé si mi forma de ver este tema sea la más correcta, pero yo lo veo así: Las interfaces, pre-hechas de la API por programadores, solo tienen definiciones de sus métodos y las pautas de cómo deberían implementarse esos métodos, dentro de las clases que los implementan, para realizar un cierto trabajo (podría ser ordenar objetos, manejar eventos, etc). Pero en ningún momento, tú como programador, haces el trabajo duro. Sino las clases predefinidas dentro de las API (que no podemos ver cómo karajo lo hacen xD) son las que realmente utilizan tus clases, ya con las implementaciones de las interfaces que te ordenaron hacer previamente, para poder realizar el trabajo duro.
Hola! Excelente! Muy buenos vídeos, inmensamente gracias, lo que no aprendí en 1 semestre, lo he aprendido todo en menos de 1 mes... Respecto al tema del vídeo, cuando se ejecuta la linea: this.sueldo>otroEmpleado.sueldo Ese this, a que esta apuntando?
Carlos Barrios Hola !! Gracias por el comentario. El this apunta al objeto que se encuentra evaluando en este momento. El método compareTo de la interfaz comparable lo que hace es comparar dos objetos, es decir "este" objeto con "otro" objeto. El objeto "este" le denominamos "this" con lo que le estamos diciendo "oye mira a ver si el sueldo de "este" objeto (this objeto sueldo) es mayor o menor que el de "otro" objeto del array. Es el funcionamiento interno del método que alquien programó en su día. Espero haber aclarado algo. Un saludo
Perdón si mi pregunta es una barbaridad. Tenía entendido que gracias al polimorfismo, se puede usar una subclase cuando se espera la superclase. Si es así, en el método compareTo (minuto 23), en vez de poner (Object miObjeto), ¿no se podría poner (Empleado otroEmpleado) y evitar tener que cambiar la clase de miObjeto a continuación?
No, el método "sort" es el que invoca al método "compareTo", y lo invoca así: e1.compareTo(e2) donde e1 es el primer objeto del arreglo y e2 es el segundo. Pero el método "compareTo" no sabe a priori qué tipo de objeto se trata, si miras en la API de Java se indica que recibe un objeto de cualquier tipo, pero como no se sabe cuál es, se recibe como un objeto general (Object) y es posible gracias al polimorfismo, porque Object es la superclase de todas las clases. Es por eso que dentro del método "compareTo" se procede a convertir el objeto del parámetro a tipo Empleado. El this en el condicional hace referencia al primer objeto del arreglo (e1) pero como no es pasado como argumento al método "compareTo" por eso se dice que es el parámetro implícito, o sea que es reconocible de todas formas. Como puedes ver, e1 es un objeto de tipo Object y e2 se convierte a Empleado dentro del método, algo así yo entiendo, pero como dice el maestro, el funcionamiento interno exacto del método "sort" para ordenar los elementos pues no lo sabemos sólo lo sabrá el programador. Espero haberme dado a explicar, está confuso y difícil explicarlo.
Hola, buena noche. Gran video, hasta el momento no he usado las interfaces en los proyectos que he hecho, apenas las estoy estudiando, me gustaria saber lo siguiente, cual es la ventaja de usar una interfaz ? Se supone que estas define que se se debe hacer mas no como se hara, contiene metodos sin implementacion, no seria mas facil y se evitaria codigo al escribir esos metodos en las clases de forma directa y con el codigo por ahi derecho ?
✅✅ ✅ ✅ ✅ Todos mis cursos gratuitos 👉 www.pildorasinformaticas.es ✅✅ ✅ ✅ ✅
🚀 ¿Quieres ejercicios? ¿Quieres más temario? 👉 www.pildorasinformaticas.es/course/java-tutorizado/🚀
🚀 ¿Quieres que te resuelva las dudas de Java? 👉 www.pildorasinformaticas.es/course/java-tutorizado/ 🚀
💥💥💥 Siempre seguiré subiendo cursos gratuitos por aquí. Gracias a todos por seguirme. 💥💥💥
PERO QUE GRANDE ERES. estoy sacandome un curso de java y van adelantadísimos y tu, tu amigo mio me estas salvando la vida XD
Hola, aquí hay una mejora que se le puede hacer al programa...
El programa ordena a los empleados teniendo en cuanta solo el sueldo y no el incentivo de los jefes. Es por eso que puede que en la consola salgan cosas como que un empleado con menor sueldo este por encima de otro con mayor, al no tomar el incentivo(el incentivo se tiene en cuanta a la hora de dar los datos de los empleados pero no al ordenarlos).
Esto se puede arreglar modificando el método "compareTo()" haciendo que en vez de tomar la variable sueldo, tome el resultado del método "dameSueldo()".
Gracias, y muy buenos tutoriales tienes PíldorasInformáticas, me están sirviendo mucho para aprender y se me hacen bastante claros.
Saludos desde Argentina!!!
Gracias!! Me estaba rascando la cabeza justamente porque no entendía por qué no me lo ordenaba bien!
@@LUITEN1 De nada! esta muy bueno que lo que uno comenta pueda ayudar a más personas. Saludos!!!
Hola Emilio Reato ¿Qué tal? Gracias por tu amable aporte, estaba pensando lo mismo ¿Por qué está utilizando variables de clase en vez de métodos (miObjeto.Método()) en vez de (miObjeto.sueldo)? No me dió ningún problema al ejecutar, pero la pregunta estaba en mi mente. Gracias nuevamente, caballero.
Atentamente,
KindlyChat.
@@LUITEN1 jajajajajajajaja , a mí me pasaba igual.
Para los que veis este vídeo muy complicado, deciros que lo que lo hace tan complejo es el tipo de interfaz que usamos. En el siguiente vídeo lo veréis todo con mucha más claridad cuando creemos nuestra propia interfaz.
@Leandro Kamari Calla bot
@@bigotes20random86 CALLA IMBESIL
Es increíble la capacidad que tiene para explicar todo de una forma tan clara. GRACIAS. Es el mejor curso con el que me he encontrado. saludos desde México
Muchas gracias por tu comentario. Me alegro de que te guste el curso. Un saludo!
Saludos desde Colombia, el mejor curso de Java en español que he encontrado en la red y he buscado mucho. Difícil encontrar donde expliquen tan detallada y profundamente cada uno de los temas que se han abordado.
Elvis Espinoza Muchas gracias !! Me alegro de que te guste el curso. Un saludo
Volví a llegar a este vídeo y ahora si que no tengo intención de interrumpir el curso. Un saludo Profe, usted es grande. Muchas gracias,
aqui seguimos
Pero que calidad de explicación. Este canal esta muy infravalorado definitivamente
Es imposible no entender ...!!! Estoy fascinado con el cada vídeo ... gracias Profesor Juan por hacer fácil la programación
Muchas gracias por el comentario. Me alegro de que te guste el curso. Un saludo!!
Uno de los videos mas potentes, uno de los videos mas ricos en cuanto a implementacion de lo aprendido hasta este video 49 !! Uff !! 10 de 10 !
Gracias Profesor por este Curso, es verdaderamente INCREÍBLE, cuando me inicié (soy contador imaginen lo que me cuesta )me recomendaron el libro "Java como programar" de DEITEL, me dijeron que es una eminencia en la materia. Ahora entiendo lo que me dijo una profesora en la facultad. Hay muchos que son muy buenos técnicos y pocos que son muy buenos Profesores. Saludos desde Buenos Aires, Argentina.
Siempre que oía hablar de interfaces pensaba que era las de GUI, ahora me doy cuenta que no es así. Había utilizado interfaces para los Threads con Runnable y no sabía lo que hacía, es primera vez que escucho una explicación del tema y tomo me quedo muy claro, quisiera ver más de un vídeo por día, pero me parece más efectivo uno diario donde pongo en práctica lo aprendido.
Gracias profe.
Ante todo como siempre muchas gracias por este, el mejor curso de Java en habla hispana según mi opinión.
Esperando como agua de mayo el manual en pdf de este curso.
Bart Clavero Ibarra Muchas gracias por el comentario. Habrá manual PDF del curso, eso es seguro. Lo que no se es cuándo y me temo que aún tardará un poco. Dispongo de poco tiempo libre y este se me va subiendo vídeos y poco más. Un saludo
@@pildorasinformaticas Juan!! Estoy llevando el curso, al final salió aquel PDF? Las mejores clases bro, sigue así
Hola Juan. En primero permitame agradecerle y felicitarle por este gran trabajo que está haciendo. Es usted un excelente profesor, explica muy bien. Soy de Haití. y estoy aprendiendo a programar viendo todos sus video. Muy buen trabajo. Saludos desde Tehuacán, Puebla. México.
+pildorasinformaticas
+Nick Lubin Hola !! Muchas gracias por tu comentario. Me alegro de que te gusten los vídeos. Un cordial saludo desde el otro lado del charco
Nuevamente impresionado por la clase la dividí en dos partes para anotar algunas cosas importantes que bien todos los días Visualizo que eres Excelente Profesor.
Voy siguiendo el curso. Primer video que se me complicó bastante entender. Espero que sea el único...
Muy buen curso, mi primer curso de programación y me esta gustando! Con los apuntes que tengo, voy asombroso! Gracias Juan!!
Saludos Juan, ya me he regresado varias veces hasta que finalmente logro entender cada cosa que explicas en el curso (hasta ahora).
En principio no le vi el uso "útil" a las interfaces ya que estas no tienen prácticamente nada en su interior (solo constantes y métodos vacíos que reciben parámetros)
Pero luego me doy cuenta que las interfaces se usan para que el programador sepa que hacer para usar ciertos métodos.
En el caso del arrays.sort( ) dice que se tiene que implementar la interfaz Comparable pero realmente lo que nos está tratando decir esta implementación es: necesito un método que se llame CompareTo, que reciba estos parámetros(Un objeto comparador) y que devuelva estos valores (-1,0 y 1). Con el fin de utilizar esa información ya que el método por sí solo no es capaz de ordenar el array sino que necesita de un método extra que brinde la información.
Esto me parece que es extremadamente útil para el uso de ciertas clases de la API de Java que requiera la implementación de interfaces.
Saludos desde Venezuela y gracias
multi herencia esa es su importancia
Muchas gracias !! me ayudó mucho leer esto
Tremendo aporte Mikel
@@francosql En Java no existe la herencia múltiple.
@@ElTitoFry no hay. Pero cubre esa necesidad. Creo que a eso se refirió mr.Chutte.
cuando empecé el video y escuche toda la teoría quede "madre mía, por fin se me ha explotado el cerebro, no entiendo nada"... luego paso al eclipse y es como si me tradujeras chino mandarin!... que talento tiene usted profe!... muchas gracias por todo nuevamente!
:)) Gracias por el comentario y por seguir mis vídeos. Un saludo!!
Tengo que decirlo me dejo "LOCO" este video y la magistral explicación de mismo, gracias!!!! Que potente es el uso de las interfaces.
Primer vídeo visto y me parece excelente la didáctica que se aplica para explicar los conceptos de Java de una forma tan simple y a la vez concisa.
Un saludo.
Gracias por tu comentario. Me alegro de que te gusten los vídeos. Un saludo!!
Genial Explicación , digna de libro.
Gracias por su trabajo y dedicación.
+Sinno mbre Gracias como siempre por tu comentario. Un saludo
Excelente todos los videos. La verdad muchas gracias por compartir tus conocimientos! Ayudas a mucha gente y eso seguro debe ser lo gratificante para vos. El mejor curso de Java que vi..
Muchas gracias por la calidad de tus cursos y tu constancia.
Saludos.
Gracias a ti por seguir mis vídeos. Un saludo
Bueno llegué hasta aquí y me dí cuanta que debo rever algunos vídeos...en fin, eso voy hacer, mismo estando súper ansiosa para seguir adelante.... pero prefiero esta segura que no me va a ser tan difícil seguir desde aquí, ya que creo que ahora empeza a complicar um poco más... Vamos que se puede! Me encanta ese curso! Gracias Píldora!!!! Eres muy bacán! Excelente trabajo.
+Virginia .Faustino Hola !! Vas bien. Es normal que a estas alturas del curso (vídeo 49) empieces a encontrar dificultad. Java es complejo y a medida que se avanza en el curso se va complicando. Haces bien en revisar vídeos anteriores. Te recomiendo incluso que para aquellas cosas que no terminas de entender del todo, busques otras fuentes de información, por ejemplo google.
Cuando algo no se entiende, si te lo explican diferentes personas, casi siempre terminas entendiéndolo. Un saludo
Hola!! He entendido todo, y si no entendiera con su explicación no entendería con nadie más, solo que los conceptos me olvidan y así que ahora más que hacer los ejercicios junto contigo, tomo nota de lo más importante y cuando me olvidar o confundirme solo tendré que leer mis notas. Saludos desde Chile :) .
Dia 7 de curso, 20/03/2019. Ayer no pude avanzar mucho, hoy si lo hare.
Me agrada mucho que lleve sus explicaciones de la mano de la API de Java, así uno aprende acerca del tema que está ilustrando y se aprende a usa la API, una vez todo entendido, uno será capaz de usar la API por cuenta propia, que aprecio su curso la verdad, es un muy buen maestro, estará un día dispuesto a subir algo sobre hibernate, sería muy apreciado.
Muchas gracias. Hasta ahora no había visto la utilidad de las interfaces. Pero ahora con este video y este ejemplo me quedo todo muy claro.
Gracias profe Juan, por compartir estos conocimientos hasta que comprendi como funciona la interfaz, muchas gracias.
Ordena sobre el sueldo base. Gracias por el curso Juan! Estoy aprendiendo mucho!
Madre que complejo todo ! espero que a la segunda vuelta me quede todo mas claro.
Muchas gracias por tu trabajo Juan!
muchas, muchas gracias, es usted muy bueno explicando. Saludos.
Muchas gracias. Un saludo!!
Muchas gracias Juan por el trabajo que estas haciendo en este canal. estoy aprendiendo java y consegui tu canal por casualidad. Se nota el mimo que le pones a cada video con su respectiva diapositiva y la parte teorica y practica muy bien explicada y diseñada. Genial la aplicacion que utilizas para apuntar. de verdad gracias infinitas por tu trabajo. Saludos desde Venezuela!!
Muchas gracias por tu comentario. Me alegro de que te gusten los vídeos. Un saludo!!
Hola Profe, nuevamente estudiando este video, las cosas se olvidan, y en esta ocasión me surgió la duda porque para mostrar el orden del array ordenado usamos el método sort y no compareTo, si finalmente este último es quien lo ordena. Muchas gracias por su dedicación que después de años de haber publicado estos videos nos sigue ayudando.
Excelente canal, estimado amigo
Conozco un poco ya que llevo java en la universidad pero siempre es bueno revisar los videos desde el inicio porque siempre hay algun detalle que no captaste, pero aqui lo puedo revisar a gusto. De hecho ya voy por el Video 50
Muchas gracias por tu excelente trabajo y tu dedicación
Saludos desde Peru
Muchas gracias por el comentario. Me alegro de que los vídeos te ayuden. Un saludo!!
Esto se va complicando por momentos... y cuando ves la cantidad de conceptos que quedan aún por ver te da un poco de vértigo. Pero me encanta!!!
Gracias por sus clases profe, saludos desde Argentina.
Uffff... personalmente se complica la cosa. Pero del mismo modo que los vídeos están explicados de un modo excelente me volcaré en asimilarlo todo para continuar y seguir aprendiendo. Gracias Profesor!!!! Un saludo.
+Jesús ChocoBike Gracias a ti por el esfuerzo y por seguir mis vídeos. Un saludo
La metodología que utilizas para explicar es buenísima. Muchas gracias!!!!!
Retomando las clases. Gracias profesor.
+Ignacio Antonio Jeria Garrido Ánimo !! Un saludo
Por si a alguien le interesa, yo he simplificado un poco el código. A la hora de implementar Comparable si pones implements Comparable te ahorras tener que hacer el casting a Empleado luego y entonces el método .compareTo quedaría así usando el ternary operator:
public int compareTo(Empleado e){
return this.sueldoe.sueldo?1:0;
}
Saludos a todos.
Particularmente lo que hice fue repasar todos los videos visto hasta ahora y colocar en que cada archivo creado comentarios que explican que hace, de esa manera lo logro entender
Se está empezando a complicar un poco el curso pero es lógico si se quiere profundizar como en cualquier idioma. Muy útil el método sort de la clase Arrays. Y muy claras las explicaciones como siempre. Gracias.
Gracias por el comentario. Efectivamente es ley de vida que se complica a medida que se avanza. Un saludo!!
era uuna broma , mil respectos para usted, usted es chingon. nadie le llega.
Gustavo Alejandro Pérez Flores Gracias !! Un saludo
Si sienten que es complicado de entender este video déjenme decirles que en mis clases de universidad lo es aun mas, ahí parece que los maestros compiten para ver quien te confunde mas, tengan paciencia en los videos y entenderán el tema. PildorasInformaticas hace un excelente trabajo
gracias Juan... retomando el curso......
Hola Juan: A partir de mi juego de datos encontré una inconsistencia que puede ser útil analizar para el curso. Al imprimir los resultados no me aparecía el lote ordenado como era de esperar y probando lotes de datos determiné de qué se trataba. El método "subeSueldo" se aplica a todo el vector de una vez actualizando el dato y luego se realiza el "Arrays.sort(misEmpleados)" pero el método "dameSueldo()" se ejecuta durante la impresión por lo que al sumar el incentivo después de ordenar el array, éste queda ordenado por los sueldos originales aumentados pero no contemplando los incentivos ya que ese método no afecta el dato sueldo del vector.
La misma conclusión llegué. A la fecha, ya aquí todos son programadores profesionales?? =)
@@pauloayala4317 No, habemos porfiados que le seguimos sin entender del todo aun
¡Que bacana la clase! jaja me gustó cómo se implementa la interfaz de ejemplo.
Hola, una pregunta amigo , en el minuto 25:38 si el primer if es correcto, es decir si me retorna -1,¿ya no verifica el siguiente if ni el return 0? Gracias.
+sergio chavez Hola !! Si que los verifica ya que son if individuales. Si fueran else-if no los evaluaría al ser el primer if correcto, pero no es el caso de este ejemplo. Un saludo!!
+pildorasinformaticas. Impecable el curso Juan, me surge una duda con la respuesta que le diste a +sergio chavez. Creo que aunque sean if individuales al estar todos dentro un mismo método con algún tipo de retorno( en este caso el método retorna un int) cuando el programa se encuentra con el primer return se sale del método y no evalúa ninguna otra sentencia posterior. Puede ser asi? Gracias.
Yo también creo lo mismo, ya que sino siempre retornaría 0.
Que clara tu explicación!!! Muy buen vídeo!
Gracias !! Un saludo
Gracias por el video, mejor explicado no puede ser.
Excelente curso. Mil gracias!! Una pregunta: ¿Por qué, cuando se implementa el método compareTo, como argumento se debe declarar una variable tipo Object (Object miObjeto) que luego obliga a hacer un casting (Empleado otroEmpleado = (Empleado) miObjeto;), cuando se podría declarar directamente de esta manera: public int compareTo(Empleado otroEmpleado) {.....}. Lo que evidentemente ahorraría tener que hacer la refundición. Pildorasinformaticas, ¿Acaso, el código como tú lo propones, conlleva una ventaja que no es evidente? Gracias de antemano por la respuesta.
porque al ponerlo pasarle el parámetro como empleado no reconoce que es el método abstracto de la interfaz, ya lo intenté y me tiró ese error.
@@luisalbertobazalarbullon4529 No es así, cuando implementas comparable lo tipificas como "Empleado" al igual que cuando vas a sobrescribir el método y de esta forma ya no es necesario la refundición.
Muchisimas gracias por tus videos y por este curso Java, me encanta tu manera de explicar.
Un saludo, sigue así ;)
PD: una pena que las excepciones esten en el video 142 ahahha tendre que pegar ahora un salto para verlo y después volver al tema de Swing, muchisimas gracias por todos los temas ;-)
Gracias por tu comentario. Me alegro de que te gusten los vídeos. Puedes saltar sin problemas (si tienes conocimientos previos). UN saludo!!
24:48 Joder que susto xDDD
tmre tambien me asuste
Logre pasar mi clase de programming II en mi universidad por tus videos.. muchas gracias Tío! Saludos desde Chicago
Las interfaces que tienen un solo método se denominan Interfaces Funcionales (SAM).
No entiendo algo (Metodología):
Camino 1: Leo la documentación de la API de Java SE.
Camino 2: Busco en internet, stackoverflow o ChatGPT para entender lo que se hace, copio y pego.
El profesor de forma recurrente emplea el Camino 1 y es admirable. 10 / 10
excelente video profesor, pero una consulta, el this.sueldo en el minuto 23:51,a que sueldo del array Empleado esta apuntando?o es al azar?
hola , me quedo una duda en la instruccion: if (this.Id
puedes intentar averiguarlo colocando esta instrucción en cada sentencia de control de flujo (if, else) :
System.out.println( this.sueldo + " - " + otroEmpleado.sueldo ) ;
le agregas al _println_ un string igual al valor que retorna en cada caso.
este ha sido el video mas complejo hasta ahora... espero verlo mas claro en un futuro.
Sua didática é muito boa, obrigado por compartilhar o seu conhecimento!
En Java SE 8 tb existen los métodos de tipo default, que sí pueden ser implementados en la interfaz...
Hola juan se que has hecho tu mejor esfuerzo por explicar esto de las interfaces , no obstante es un tema bastante complejo que no se aprende a la primera ....! Yo he visto este video dos veces ya !..... y aunque comprendo la sintaxis y la dinamica para implementarla, incluso comprendo que hay que reescribir el metodo ... me cuesta entender la parte del "casting" al final ....creo que me regresare al video del casting...Ja ja ja ja.
El código de la interfaz implementada es de un tipo, de ese tipo y no de otro. Es decir, cuando creamos una clase, estamos creando un tipo de dato. No se puede coger un método que espera un tipo de dato( en este caso el que fuera el nombre que le pusiera el programador que hizo el método, creo que "T", y pasarle un objeto de tipo "Empleado". Uno es T y otro Empleado. No son iguales. Hay que entender que Java va compilando sobre la marcha, es decir, mientras tu haces el programa y escribes el método, antes de que le des a ejecutar, Java ya está comparando si los objetos son del mismo tipo e incluso antes de que le des a ejecutar Java ya sabe que te va a mandar a freir esparragos. La conversión es un detalle necesario y lógico. En realidad bajo esto subyace la idea de la compilación sobre la marcha. Teniendo en cuenta que Java es un traductor adicional (precisamente para llegar a todas las plataformas), tardaría mucho tiempo en compilar los programas si no lo hiciera sobre la marcha. De ahí que sea de "tipos fuerte". Es como decirnos : ordenarme las cosas que me deis pa traducírselo a la computadora que lo que no encaje ni lo miro. Por eso es necesaria la conversión
Hola Juan, muchas gracias por tus videos, explicas muy bien!
Tengo una duda, me puse a jugar con los sueldos de los empleados (incluido lo de los jefes) y me dí cuenta que no me los acomoda en orden a los sueldos cuando agrego incentivos. No se bien porque será, tengo mis ideas de porque, pero en vez de decir cualquier pavada prefería acudir a la fuente del conocimiento.
Desde ya muchas gracias por tu ayuda.
Su teoría de java es la mejor : )
en este caso no entiendo el THIS para que sirve. dice para referenciar a la instancia de objeto implicita pero al ser el sort() un método estatico no veo que haya una instancia implícita. solo un parametro que se recibe el cual es comparado con el this que no se de donde sale.
Excelente video y una explicación muy clara!!
Hola Profe! Una vez, muchas gracias por las clases tan interactivas. Tengo una duda, y seria particularmente en esta linea de codigo:
public int compareTo(Object miObjeto){
Porque ingresamos Object en vez del objeto Empleado en este caso? Que seria Object? Se refiere a la clase cosmica?
Muchas gracias y saludos!!!
Hola !! Gracias por el comentario. Efectivamente se refiere a la clase cósmica. Esto nos permite pasar un objeto de cualquier tipo al método compareTo por parámetro. Puede ser Empleado u otro objeto. Un saludo!!
Perfecto Profe, es decir que en estos casos siempre es conveniente referirnos a la clase cosmica para luego realizar la refundicion hacia nuestra propia clase. Muchas gracias y saludos!!
Juan.
Me confundí en el uso del this, que uso tiene en esa línea de código? si no se usa el programa funciona igual. No entendí bien a que se refiere "Para hacer referencia a un parámetro implícito".
El this hace referencia al objeto donde te encuentras (parámetro implícito), es decir, si esta´s dentro de una clase llamada "persona" y utilizas la instrucción "this.nombre", estás haciendo referencia con el this a la propia clase Persona. Es como si pusieras "Persona.nombre".
Si el "this" va solo en el código, hace referencia a la clase donde te encuentras. Todo esto lo explico en los videos de POO (pero no recuerdo ya en cuál de ellos).
Si el código funciona igual sin poner el this, no sabría decirte ahora mismo por qué. En ocasiones el código de programación resulta redundante. Un saludo!
@@pildorasinformaticas Disculpa Juan, no lo acabo de entender. Tenemos que comparar dos objetos empleados, pero al método sólo le pasamos un parámetro empleado.
Cuando usamos el this en los videos de POO simplemente era para diferenciar el parametro de la variable privada de la clase porque tenían el mismo nombre. En ese momento instanciabamos el objeto.
@@pildorasinformaticas Entonces de acuerdo a ésta explicación si yo en éste código pongo: this.sueldo sería lo mismo a Empleado.sueldo. El problema es que al hacer esto ecplipse me marca el siguiente error: Cannot make a static reference to the non-static field Empleado.sueldo. ¿ Por qué da error si this es lo mismo que Empleado en este caso?
Muy buena didactica de verdad.
Lo unico que echo en falta es que propongas ejercicios en tus videos, como tarea, y que luego los resuelvas en posteriores videos. Solo como consejo. Lo dem'as increible
excelente estimado. tengo uina pregunta. como podria hacer si necesito ordenar por Id o por Nombre o por sueldo segun la necesidada en base a un diferentes esenarios
Buenos días, ante todo decir que tus cursos son estupendo y agradecerte la labor y la paciencia con los que los hace. ahora bien mi duda es:
Después de implementar la interface Comparable y de poner el método en la clase Empleado, me aparece un aviso de error en la clase Jefatura diciéndome que la herencia es inconsciente y no se como hacer para solucionarlo , alguna idea?.
Un saludo y mil gracias por compartir tus conocimientos...
A los 5 min de escribirte volví a escribir el código y desapareció el error, pero bueno aproveché para felicitarte por el curso.
Donde puedo descargar el código de los ejemplos realizados en los videos???
yaaaa esta ya soluciona el problema.. era solo una mayuscula.. que idiota..ejejje... con este hermoso curso no puedo desaprobar el examen... mejor explicacion que esta no creo que aya..!!! saludos
Excelente explicación. Quiero saber si lo entendí correctamente, una Interfaz vendría a ser como un contrato que establece los métodos que deben utilizarse obligatoriamente en la clase que lo implemente.
En una situación en la que tenemos que crear nuestra super clase e interfaces propias (para luego heredarlas e implementarlas en una subclase), los métodos que queremos que estén obligatoriamente en nuestra subclase, pero que no podemos heredar de nuestra super clase porque sería lógico que estén definidos ahí, deberían ir en las interfaces, no?
hola, me gusto mucho la explicacion me podrias ayudar a implementar el sort pero en un arraylist, veo que tiene un metodo similar pero no entiendo como se puede implementar, agradeceria mucho tu respuesta
gracias por la clase
Hola! Muchas gracias por haber creado este curso. A mis compañeros de Sistemas y a mi nos resulta muy util para comprender Java y OOP. Una consulta: siguiendo el ejemplo del video, si quisiera poder elegir entre varios tipos de ordenamiento ej: por id o por sueldo, ¿cómo deberia proceder? gracias.
Hola, habría alguna posibilidad de que pusieras el código de este video? Tengo algún error, y así podria ver donde esta. Gracias
mi cerebro ha alcanzado un nivel alto de estres gracias profe!!
Es hora de descansar entonces.... Un saludo
Buena explicación pero este tema se me ha hecho bastante complicado XD. Gracias profesor!!
Pero que pasa para los lenguajes de programación que tienen herencias multiples por ejemplo PHP o C++ y además tienen las interfaces, para esos casos aun no logro ver la utilidad de usar interfaces cuando simplemente puedo crear mis metodos tal como yo quiero tener en cada una de mis clases sin tener que implementarlos de una interfaz.
La clave está en que la herencia no te "OBLIGA" a desarrollar el método. Una interfaz sí. Un saludo!
@@pildorasinformaticas Son como políticas que se crean para estandarizar clases o para forzarla a cumplir determinados métodos así cuidamos que el código contenga esos métodos?
@@pildorasinformaticasPero la Herencia de una clase Abstracta sí te obligaba a desarrollar el método en una subclase. No???
Hi Guys!
Cacharreando me di cuenta de algo:
Poniéndolo de esta forma:
class Empleado extends Persona implements Comparable {
...
}
//public int compareTo(Object aObject) { #1: Se puede declarar directo
public int compareTo(Empleado aEmpleado) {
//Empleado aEmpleado = (Empleado) aObject; #2:No hay q hacer un type cast
if (this.Sueldo < aEmpleado.Sueldo) {
return -1;
} else if (this.Sueldo > aEmpleado.Sueldo) {
return 1;
}
return 0;
}
Saludos y suerte.
Bye
that is correct!
Reinier Garcia de
osea q si se pone entre etiquetas el tipo de dato en la declaracion de la interfaz,se convierte automáticamente , es asi o cual es la explicacion hermano.
entiendo de tu codigo que al momento de la implements comparable
gracias Reinier Garcia, es mas sencillo de esta forma, y lo entiendo un poco mejor asi.
Me lo he mirado varias veces y no logro entender como funciona el método compareTo. Devido a que no acabo de comprender porque ponemos "this.sueldo" y como escoge al objeto para compararlo. Alguien me puede ayudar?
la clase mas dificil hasta ahora.... cuando creas el metodo compareTo; el parametro que recibe ese metodo al cual lo llaaste miObjeto, la recibe de la interface predefinida?
Profe, de antemano gracias por su trabajo, en public int compareTo(Objetc miObjeto){ Eclipse muestra un bombillo de error diciendo Objetc cannot be resolved to a type, cual podria ser el problema?
Porque es Object y no Objetc. Un saludo
Muy bueno el tutorial, una consulta, como se llama la aplicación que usas para subrayar, hacer flechas, recuadrar, etc..., mientras vas hablando ?. Saludos.
Cómo es que funcionan las interfaces predefinidas en Java como serializable o queue porque por ejemplo si implementamos una clase con serializable . Automáticamente los atributos de la clase se serializan sin sobreescribir ningún método y supuestamente en las interfaces no hay métodos desarrollados ?
en la clase public int compareTo devuelve -1 , 1 o 0 mmm esos valores donde se reflejan o de que me sirven? en que colabora a ordenarlos?
buenas, gracias por tus videos son lo mas, veo que en todos tus videos solo usas un archivo. o en la mayoria, lo haces simplente por comodidad?
una pregunta, cuando no ponemos modificador de acceso a las clases ¿cuál se nos crea por defecto?
Hola profe me aparece este error alguna ayuda
at java.util.ComparableTimSort.countRunAndMakeAscending(Unknown Source)
at java.util.ComparableTimSort.sort(Unknown Source)
at java.util.ComparableTimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at poo.Uso_Empleado.main(Uso_Empleado.java:27)
+Andres Quijano Si copias y pegas tu código por aquí podré ayudarte mejor. Parece ser que hay un error al ordenar arrays.
saben si el código esta publicado, por favor.
Es obligatorio sobre-escribir todos los métodos de una interfaz?
Si
Me ha costado pillarlo y hay que darle alguna que otra vuelta pero tampoco es tan complicado. A ver que es complicado pero he tardado en modificar 10 minutos cosas que no había hecho en videos anteriores y hace tiempo que tenía estos videos mirados. Bueno en fin que con paciencia y constancia pues sale.
Saludos.
Por que cuando implemento la interfaz para utilizar el metodo Array.Sort tengo que. Sobre escribir un metodo CompareTo para que realize la misma funcion en mi clase empleados?
Porque las interfaces obligan a que sobre escribas sus métodos en tus clases tal y como hemos visto en el curso cuando explicamos las interfaces. En este caso la interfaz Comparable tiene un único método: compareTo() que estás obligado a sobre escribir en tu clase siempre que implementes dicha interfaz. El por qué Java nos obliga a sobre escribir los métodos de las interfaces ya está comentado y explicado anteriormente en el curso. Qué sentido tiene que esto sea así en este caso concreto, es porque si implementas la interfaz Comparable es porque vas a comprar dos o mas objetos entre sí (en este caso empleados si no recuerdo mal). Y Java quiere asegurarse de que incluyes en tu código el método que hace este trabajo. Ese método es compareTo(). UN saludo!!
+pildorasinformaticas comprendo todo, lo que me queda de duda es. El metodo compareTo no trae implicito el codigo del cual esta comprendido (los ciclos if que realizaste para comparar) entonces cuando ingresemos alguna interfaz t dara la pauta de lo que debe realizar y nosotros hacemos el codigo entonces? esa es mi duda espero haberme explicado
Tuve que regresar otra vez a este tema, debido a ciertas dudas que estoy teniendo en cursos más avanzados. No sé si mi forma de ver este tema sea la más correcta, pero yo lo veo así: Las interfaces, pre-hechas de la API por programadores, solo tienen definiciones de sus métodos y las pautas de cómo deberían implementarse esos métodos, dentro de las clases que los implementan, para realizar un cierto trabajo (podría ser ordenar objetos, manejar eventos, etc). Pero en ningún momento, tú como programador, haces el trabajo duro. Sino las clases predefinidas dentro de las API (que no podemos ver cómo karajo lo hacen xD) son las que realmente utilizan tus clases, ya con las implementaciones de las interfaces que te ordenaron hacer previamente, para poder realizar el trabajo duro.
Hola! Excelente! Muy buenos vídeos, inmensamente gracias, lo que no aprendí en 1 semestre, lo he aprendido todo en menos de 1 mes... Respecto al tema del vídeo, cuando se ejecuta la linea:
this.sueldo>otroEmpleado.sueldo
Ese this, a que esta apuntando?
Carlos Barrios Hola !! Gracias por el comentario. El this apunta al objeto que se encuentra evaluando en este momento. El método compareTo de la interfaz comparable lo que hace es comparar dos objetos, es decir "este" objeto con "otro" objeto. El objeto "este" le denominamos "this" con lo que le estamos diciendo "oye mira a ver si el sueldo de "este" objeto (this objeto sueldo) es mayor o menor que el de "otro" objeto del array.
Es el funcionamiento interno del método que alquien programó en su día. Espero haber aclarado algo.
Un saludo
Si, gracias! ahora veo, no entendía como hacia el ordenamiento, pero viendo el código y la Api de Java entendí que era por el arrays.sort :D
Porfavor alguien que me diga que software usa el profesor para poner sus flechitas
Perdón si mi pregunta es una barbaridad. Tenía entendido que gracias al polimorfismo, se puede usar una subclase cuando se espera la superclase. Si es así, en el método compareTo (minuto 23), en vez de poner (Object miObjeto), ¿no se podría poner (Empleado otroEmpleado) y evitar tener que cambiar la clase de miObjeto a continuación?
No, el método "sort" es el que invoca al método "compareTo", y lo invoca así: e1.compareTo(e2) donde e1 es el primer objeto del arreglo y e2 es el segundo. Pero el método "compareTo" no sabe a priori qué tipo de objeto se trata, si miras en la API de Java se indica que recibe un objeto de cualquier tipo, pero como no se sabe cuál es, se recibe como un objeto general (Object) y es posible gracias al polimorfismo, porque Object es la superclase de todas las clases. Es por eso que dentro del método "compareTo" se procede a convertir el objeto del parámetro a tipo Empleado. El this en el condicional hace referencia al primer objeto del arreglo (e1) pero como no es pasado como argumento al método "compareTo" por eso se dice que es el parámetro implícito, o sea que es reconocible de todas formas. Como puedes ver, e1 es un objeto de tipo Object y e2 se convierte a Empleado dentro del método, algo así yo entiendo, pero como dice el maestro, el funcionamiento interno exacto del método "sort" para ordenar los elementos pues no lo sabemos sólo lo sabrá el programador. Espero haberme dado a explicar, está confuso y difícil explicarlo.
Hola, buena noche.
Gran video, hasta el momento no he usado las interfaces en los proyectos que he hecho, apenas las estoy estudiando, me gustaria saber lo siguiente, cual es la ventaja de usar una interfaz ? Se supone que estas define que se se debe hacer mas no como se hara, contiene metodos sin implementacion, no seria mas facil y se evitaria codigo al escribir esos metodos en las clases de forma directa y con el codigo por ahi derecho ?
tambien se hace lo mismo para las clases abstractas? y si tengo un arraylist