Curso Java. Interfaces y clases internas. Interfaces I. Vídeo 49

  Рет қаралды 273,525

pildorasinformaticas

pildorasinformaticas

Күн бұрын

Comenzamos el bloque dedicado a las interfaces y las clases internas. En este vídeo vemos en qué consiste una interfaz, las características de una interfaz y desarrollamos un sencillo ejemplo con la interfaz predefinida "Comparable".
Para más cursos, ejercicios y manuales visita: www.pildorasinf...

Пікірлер: 440
@pildorasinformaticas
@pildorasinformaticas 3 жыл бұрын
✅✅ ✅ ✅ ✅ 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. 💥💥💥
@Jose-ub1yp
@Jose-ub1yp 3 жыл бұрын
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
@AugusteLovecraft
@AugusteLovecraft 5 жыл бұрын
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.
@bigotes20random86
@bigotes20random86 3 жыл бұрын
@Leandro Kamari Calla bot
@elpibe6453
@elpibe6453 Жыл бұрын
@@bigotes20random86 CALLA IMBESIL
@Hdilon
@Hdilon 4 жыл бұрын
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!!!
@LUITEN1
@LUITEN1 4 жыл бұрын
Gracias!! Me estaba rascando la cabeza justamente porque no entendía por qué no me lo ordenaba bien!
@Hdilon
@Hdilon 4 жыл бұрын
@@LUITEN1 De nada! esta muy bueno que lo que uno comenta pueda ayudar a más personas. Saludos!!!
@kindlychat9493
@kindlychat9493 3 жыл бұрын
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.
@JoseManuel-lo2ed
@JoseManuel-lo2ed Жыл бұрын
@@LUITEN1 jajajajajajajaja , a mí me pasaba igual.
@mikeljauregui679
@mikeljauregui679 7 жыл бұрын
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
@francosql
@francosql 6 жыл бұрын
multi herencia esa es su importancia
@unloved9554
@unloved9554 5 жыл бұрын
Muchas gracias !! me ayudó mucho leer esto
@rafaelbalestrini6530
@rafaelbalestrini6530 5 жыл бұрын
Tremendo aporte Mikel
@ElTitoFry
@ElTitoFry 5 жыл бұрын
@@francosql En Java no existe la herencia múltiple.
@ignaciosb8779
@ignaciosb8779 5 жыл бұрын
@@ElTitoFry no hay. Pero cubre esa necesidad. Creo que a eso se refirió mr.Chutte.
@marcobernaus1742
@marcobernaus1742 4 жыл бұрын
Muy buen curso, mi primer curso de programación y me esta gustando! Con los apuntes que tengo, voy asombroso! Gracias Juan!!
@alansalinas4311
@alansalinas4311 3 жыл бұрын
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
@MrDAROGAUNA
@MrDAROGAUNA 7 жыл бұрын
Ordena sobre el sueldo base. Gracias por el curso Juan! Estoy aprendiendo mucho!
@Hardwell88
@Hardwell88 2 жыл бұрын
Madre que complejo todo ! espero que a la segunda vuelta me quede todo mas claro. Muchas gracias por tu trabajo Juan!
@rubenviejomartin
@rubenviejomartin 4 жыл бұрын
24:48 Joder que susto xDDD
@germanalpascuadros3927
@germanalpascuadros3927 4 жыл бұрын
tmre tambien me asuste
@ggaass1
@ggaass1 5 жыл бұрын
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.
@astro3179
@astro3179 4 жыл бұрын
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?
@raulaponte6536
@raulaponte6536 4 жыл бұрын
No entendí lo del this. This.sueldo, agarra un sueldo cualquiera?
@wg3771
@wg3771 4 жыл бұрын
Logre pasar mi clase de programming II en mi universidad por tus videos.. muchas gracias Tío! Saludos desde Chicago
@joseespin84
@joseespin84 9 жыл бұрын
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.
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
Elvis Espinoza Muchas gracias !! Me alegro de que te guste el curso. Un saludo
@franchescocastaneda7592
@franchescocastaneda7592 4 жыл бұрын
Su teoría de java es la mejor : )
@philipfansworth
@philipfansworth 6 жыл бұрын
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
@luisalbertobazalarbullon4529 3 жыл бұрын
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.
@wilmermedina5956
@wilmermedina5956 2 жыл бұрын
@@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.
@gonzalojos
@gonzalojos 6 жыл бұрын
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.
@pauloayala4317
@pauloayala4317 2 жыл бұрын
La misma conclusión llegué. A la fecha, ya aquí todos son programadores profesionales?? =)
@LibertCharrua
@LibertCharrua 2 жыл бұрын
@@pauloayala4317 No, habemos porfiados que le seguimos sin entender del todo aun
@cristhianalexander6805
@cristhianalexander6805 8 жыл бұрын
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!
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
:)) Gracias por el comentario y por seguir mis vídeos. Un saludo!!
@pedroidrogo9179
@pedroidrogo9179 5 жыл бұрын
Dia 7 de curso, 20/03/2019. Ayer no pude avanzar mucho, hoy si lo hare.
@marcelotaborda8817
@marcelotaborda8817 6 жыл бұрын
hola , me quedo una duda en la instruccion: if (this.Id
@chronos_rs8568
@chronos_rs8568 7 ай бұрын
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.
@jmansanetperez
@jmansanetperez 6 жыл бұрын
Muchas gracias.
@fernandoluz615
@fernandoluz615 5 жыл бұрын
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
@pildorasinformaticas
@pildorasinformaticas 5 жыл бұрын
Muchas gracias por tu comentario. Me alegro de que te guste el curso. Un saludo!
@reiniergarcia
@reiniergarcia 9 жыл бұрын
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
@paolosandoval1222
@paolosandoval1222 8 жыл бұрын
that is correct!
@xaxoro
@xaxoro 7 жыл бұрын
Reinier Garcia de
@brunoalexissantillansantil4637
@brunoalexissantillansantil4637 7 жыл бұрын
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.
@carlosgodoy9554
@carlosgodoy9554 7 жыл бұрын
entiendo de tu codigo que al momento de la implements comparable
@cappy367
@cappy367 6 жыл бұрын
gracias Reinier Garcia, es mas sencillo de esta forma, y lo entiendo un poco mejor asi.
@jlsdesarrolloweb2014
@jlsdesarrolloweb2014 5 жыл бұрын
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
@bartclavero4548
@bartclavero4548 9 жыл бұрын
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.
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
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
@analyticsperu
@analyticsperu 5 жыл бұрын
@@pildorasinformaticas Juan!! Estoy llevando el curso, al final salió aquel PDF? Las mejores clases bro, sigue así
@David_VS
@David_VS 2 жыл бұрын
Buena explicación pero este tema se me ha hecho bastante complicado XD. Gracias profesor!!
@rocastone1349
@rocastone1349 3 жыл бұрын
Mostruo!!!! Juan!
@marioperez5804
@marioperez5804 5 жыл бұрын
gracias crack
@alexanderchacchi9084
@alexanderchacchi9084 6 жыл бұрын
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.
@pildorasinformaticas
@pildorasinformaticas 6 жыл бұрын
Gracias por tu comentario. Me alegro de que te gusten los vídeos. Un saludo!!
@orlas135
@orlas135 5 жыл бұрын
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,
@cesarsandoval8655
@cesarsandoval8655 6 жыл бұрын
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".
@pildorasinformaticas
@pildorasinformaticas 6 жыл бұрын
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!
@joanmartinezcalpe566
@joanmartinezcalpe566 4 жыл бұрын
@@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.
@dsc_dsc
@dsc_dsc 3 жыл бұрын
​@@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?
@manuelelpro7646
@manuelelpro7646 5 жыл бұрын
yo pauseando el video tratando de deducir como funciona el metodo compareTo antes de que lo digas en el video para luego escuchar que solo dios y el programador que lo creo sabrá como funciona XD.
@AugusteLovecraft
@AugusteLovecraft 5 жыл бұрын
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!!!
@melchiah6603
@melchiah6603 7 жыл бұрын
muchas, muchas gracias, es usted muy bueno explicando. Saludos.
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
Muchas gracias. Un saludo!!
@josegabrielcaychovillalobo6235
@josegabrielcaychovillalobo6235 4 жыл бұрын
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?
@lilianaortiz2156
@lilianaortiz2156 6 жыл бұрын
Excelente explicación!
@paolosandoval1222
@paolosandoval1222 8 жыл бұрын
Es imposible no entender ...!!! Estoy fascinado con el cada vídeo ... gracias Profesor Juan por hacer fácil la programación
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
Muchas gracias por el comentario. Me alegro de que te guste el curso. Un saludo!!
@designanimation
@designanimation 8 жыл бұрын
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!!!
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
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!!
@designanimation
@designanimation 8 жыл бұрын
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!!
@Acedrok
@Acedrok 8 жыл бұрын
Buenas. Estoy siguiendo poco a poco sus tutoriales y aprendiendo mucho. Pero los dos ultimos videos ya hay un nivel de abstración enorme con los objetos y metodos y me pierdo. Primero quería saber si aunque no sabiendo nada de nada. Podemos llegar a programar algo en el futuro por nosotros solos. Lo segundo. Es que en este video de ordenacion. Me ordena perfectamente los sueldos. Pero al incluir un método de subir sueldo, por incentivo, que hicimos a Jefatura. Es como si obviara ese sueldo a la hora de ordenar. Pero despues si muestra el valor con ese incremento. Nombre: Antonio Fernandez Sueldo: 31500.0 Fecha de Alta: Sat Jan 01 00:00:00 CET 2000 Nombre: David Sueldo: 62750.0 Fecha de Alta: Sat Nov 25 00:00:00 CET 2006 Nombre: Paco Gómez Sueldo: 89250.0 Fecha de Alta: Mon Dec 17 00:00:00 CET 1990 Nombre: Ana López Sueldo: 99750.0 Fecha de Alta: Fri Jun 02 00:00:00 CEST 1995 Nombre: María Sueldo: 149750.0 Fecha de Alta: Wed May 26 00:00:00 CEST 1999 Nombre: Maria Martín Sueldo: 110250.0 Fecha de Alta: Fri Mar 15 00:00:00 CET 2002
@gustavomondalgo8893
@gustavomondalgo8893 Жыл бұрын
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?
@SinNombre101
@SinNombre101 8 жыл бұрын
Genial Explicación , digna de libro. Gracias por su trabajo y dedicación.
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+Sinno mbre Gracias como siempre por tu comentario. Un saludo
@mohtadibakali1557
@mohtadibakali1557 5 жыл бұрын
tambien tengo entendido que las interfaces pueden heredar unas de otras
@pildorasinformaticas
@pildorasinformaticas 5 жыл бұрын
Así es. Y creo recordar (no estoy seguro) que se ve algún ejemplo de esto en el curso. Un saludo!
7 жыл бұрын
¡Muy interesante! Pero ahora entiendo por qué en la universidad nos obligan a usar C++, porque ahí entiendes el por qué de las cosas y en Java no, o sea... es mejor en ciertas ocasiones ya que es más rápido, pero nos enseñan a hacerlo desde cero y a pensar en cómo hacerlo, como un coche estándar y un coche automático.
4 жыл бұрын
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.
@tusseriesfavoritas9978
@tusseriesfavoritas9978 7 жыл бұрын
Buenas, no se si solo les pasa a pocos, pero de verdad si hay que tener cuidado con mayúsculas y minúsculas por la normativa del case sentive, tenia el código casi igual al del profe pero por una mayúscula que tenia mala en un método no podía ejecutar el programa, a pesar de que todo aparentaba estar bien xD.
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
Sí, efectivamente hay que tener cuidado con el case sensitive en java. Un saludo!!
@rosa_mo
@rosa_mo 7 жыл бұрын
Para comparar por el nombre: public int compareTo(Object miObjeto) { Empleado otroEmpleado = (Empleado) miObjeto; if(this.nombre.compareToIgnoreCase(otroEmpleado.nombre) < 0) return -1; else if(this.nombre.compareToIgnoreCase(otroEmpleado.nombre) > 0) return 1; else return 0; }
@1688amg
@1688amg 6 жыл бұрын
Rosa Mø muchas gracias
@666zulett
@666zulett 8 жыл бұрын
wow mi cerebro exploto jajaja por cierto donde puedo ver esa api de java?
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
Aquí: docs.oracle.com/javase/7/docs/api/ Se recomienda no saltarse vídeos si no se tienen conocimientos previos de Java. Un saludo!!
@666zulett
@666zulett 8 жыл бұрын
muchas gracias me pongo a ello
@XwxMIKAxwX
@XwxMIKAxwX 4 жыл бұрын
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.
@designanimation
@designanimation 8 жыл бұрын
Hola Profe! La verdad que segui al pie de la letra el ejercicio, y el codigo siempre me muestra el orden del ID, no el del sueldo. Le paso el codigo para ver donde me confundi. Gracias!! package poo; import java.util.*; public class Uso_empleado { public static void main(String[] args) { // TODO Auto-generated method stub Jefatura jefe_RRHH=new Jefatura("Juan",55000,2006,9,25); // Aqui estamos instanciando la clase Jefatura jefe_RRHH.estableceIncentivo(2570); Empleado[] misEmpleados=new Empleado[6]; // En este array estamos creando todos los objetos misEmpleados[0]=new Empleado("Ana",30000,1990,12,17); misEmpleados[1]=new Empleado("Carlos",50000,1995,06,02); misEmpleados[2]=new Empleado("Paco",25000,2002,03,15); misEmpleados[3]=new Empleado("Fernando"); misEmpleados[4]=jefe_RRHH; // POLIMORFISMO EN ACCION misEmpleados[5]=new Jefatura("Maria",95000,1999,05,26); // De esta manera tambien estamos realizando POLIMORFISMO, creandolo desde el ARRAY Jefatura jefaFinanzas=(Jefatura) misEmpleados[5]; // Refundicion o Casting en la variable de la posicion 5 de la matriz jefaFinanzas.estableceIncentivo(55000); // Ahora le damos valor al Objeto, la propiedad estableceIncentivo for(Empleado e: misEmpleados){ e.subeSueldo(5); } // AQUI EMPEZAMOS CON ORDENAR LOS SUELDOS DEL EMPLEADO CON LA CLASE ARRAYS (METODO SORT) /* UTILIZAMOS EL METODO SORT (OBJECT) PUES ME PERMITE UTILIZAR COMO OBJETO, EL NOMBRE DEL ARRAY , ES DECIR "MISEMPLEADOS" */ Arrays.sort(misEmpleados); for(Empleado e: misEmpleados){ System.out.println("Nombre: " + e.dameNombre() + " Sueldo: " + e.dameSueldo() + " Fecha de alta: " + e.dameFechaContrato() + " Id: " + e.Id()); } } } /* No pueden haber 2 public class, por ello, solo declaramos una sola clase En segundo lugar, ahora que hemos llamado al metodo SORT en el metodo main (para ordenar de manera ascendente los salarios, deberemos interfacear o heredar la interfaz COMPARABLE (donde esta el metodo sort) */ class Empleado implements Comparable { // CONSTRUCTOR I public Empleado(String nom, double sue, int agno, int mes, int dia){ nombre=nom; sueldo=sue; GregorianCalendar calendario=new GregorianCalendar(agno,mes-1,dia); altaContrato=calendario.getTime(); Id=Idsiguiente; } // SOBRECARGA DE CONSTRUCTORES - CONSTRUCTOR II public Empleado(String nom){ this(nom,30000,2000,01,01); } public int dameidSiguiente(){ // GETTER return Id; } public String dameNombre(){ // GETTER return nombre; } public double dameSueldo(){ // GETTER return sueldo; } public Date dameFechaContrato(){// GETTER return altaContrato; } public static String dameIdsiguiente(){ // GETTER - EL METODO SE LLAMA dameIdsiguiente return "El Id Siguiente es " + Idsiguiente; } public static int Id(){ // GETTER return Idsiguiente++; } public void subeSueldo(double porcentaje){ // SETTER double aumento=sueldo*porcentaje/100; sueldo+=aumento; } // CAMPOS DE CLASE /* AHORA, DENTRO DE LOS CAMPOS DE CLASE, INCLUIMOS EL ERROR QUE NOS ESTABA DANDO LA CLASE AL * AÑADIR IMPLEMENTS COMPARABLE. PARA ELLO, SEGUN LA API DE JAVA, DEBEREMOS AÑADIR EL SIGUIENTE * CODIGO POR ARRIBA DE LOS CAMPOS DE CLASE, COMO UN NUEVO METODO: */ public int compareTo(Object miObjeto){ // GETTER Empleado otroEmpleado=(Empleado) miObjeto; // REFUNDICION PARA CONVERTIR EL OBJETO miObjeto al Array Emplado if(this.sueldootroEmpleado.sueldo){ return 1; } return 0; } private String nombre; private double sueldo; private Date altaContrato; private int Id; private static int Idsiguiente=1; } class Jefatura extends Empleado{ // NUEVA CLASE LLAMADA JEFATURA public Jefatura(String nom, double sue, int agno, int mes, int dia){ super(nom,sue,agno,mes,dia); } public void estableceIncentivo (double b){ // SETTER incentivo=b; } // CAMPOS DE CLASE 2 private double incentivo; public double dameSueldo(){ // El triangulo verde indica que estamos PISANDO el metodo dameSueldo de la clase Empleado, por este nuevo metodo dameSueldo, que este ultimo, es propio de la clase Jefatura double sueldoJefe=super.dameSueldo(); // Lo que hacemos aqui con SUPER es decirle al metodo, que estamos llamando a la clase empleado, y no a la clase jefatura return sueldoJefe + incentivo; } } class Director extends Jefatura{ public Director(String nom, double sue, int agno, int mes, int dia){ super(nom,sue,agno,mes,dia); } }
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
Acabo de ejecutar tu programa y me ordena por sueldo perfectamente. Copia y pega por aquí lo que te sale a ti en la consola. Un saludo!!
@designanimation
@designanimation 8 жыл бұрын
Ahi me funciono! Gracias profe! Le hago una pregunta, para consultarle su disponibilidad, si es que esta interesa. Cual seria el valor para que usted yo podamos tener una sesión por Skype? Muchas gracias y saludos!
@zeusclash1475
@zeusclash1475 6 жыл бұрын
pana gracias por replicar el codigo aqui tenia un error que casi casi estaba dejando esto xd son errores que te vuelven loco y no sabes como solucionarlo wao la curva de aprendizaje es un poco dificil en esto de programacion xd pero aqui darle lo mas que se pueda con Dios por delante
@GustavoQuast
@GustavoQuast 8 жыл бұрын
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!!
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
Muchas gracias por tu comentario. Me alegro de que te gusten los vídeos. Un saludo!!
@pablogasco3321
@pablogasco3321 6 жыл бұрын
Buenas. Mi duda es: como sabes que hay que poner this.Id y otroEmpleado.Id. Además, otroEmpleado es un array, no entiendo como llegas a esa comparación. Tampoco entiendo el porque del this, cuando en otros casos lo usábamos para referirnos a la clase. Gracias. Un saludo.
@alvargarcia1350
@alvargarcia1350 10 жыл бұрын
Muchas gracias por la calidad de tus cursos y tu constancia. Saludos.
@pildorasinformaticas
@pildorasinformaticas 10 жыл бұрын
Gracias a ti por seguir mis vídeos. Un saludo
@migueleduardofernandezsevi3538
@migueleduardofernandezsevi3538 3 жыл бұрын
Pero que calidad de explicación. Este canal esta muy infravalorado definitivamente
@nicklubin4499
@nicklubin4499 8 жыл бұрын
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
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+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
@sergiochavez181
@sergiochavez181 9 жыл бұрын
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.
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
+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!!
@nielsam478
@nielsam478 8 жыл бұрын
+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.
@edwarcastillo4659
@edwarcastillo4659 7 жыл бұрын
Yo también creo lo mismo, ya que sino siempre retornaría 0.
@cristinar.670
@cristinar.670 8 жыл бұрын
GRACIAS!
@rosa_mo
@rosa_mo 7 жыл бұрын
Para comparar por fechas: public int compareTo(Object miObjeto) { Empleado otroEmpleado = (Empleado) miObjeto; if(this.dameFechaContrato().compareTo(otroEmpleado.dameFechaContrato()) < 0) return -1; else if(this.dameFechaContrato().compareTo(otroEmpleado.dameFechaContrato()) > 0) return 1; else return 0; }
@1688amg
@1688amg 6 жыл бұрын
Rosa Mø muchas gracias
@andresquijano6210
@andresquijano6210 8 жыл бұрын
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)
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+Andres Quijano Si copias y pegas tu código por aquí podré ayudarte mejor. Parece ser que hay un error al ordenar arrays.
@gerimp1
@gerimp1 6 жыл бұрын
Sua didática é muito boa, obrigado por compartilhar o seu conhecimento!
@jego3189
@jego3189 4 жыл бұрын
Hubiera estado bueno que hagas de nuevo esto pero con un metodo de ordenamiento como el burbuja
@kando1988
@kando1988 7 жыл бұрын
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
@favio100
@favio100 3 жыл бұрын
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.
@kikemon3455
@kikemon3455 3 жыл бұрын
ante de castear (Empleado)miObjeto a Empleado, se podría usar if(miObjecto instanceof Empleado)
@estivenmartinez576
@estivenmartinez576 5 жыл бұрын
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.
@sindyisaza1785
@sindyisaza1785 4 жыл бұрын
Qué genial :D
@mtycoder
@mtycoder 6 жыл бұрын
discupen, alguien sabe en parte explica lo de .CLASS?
@ramirojanco3670
@ramirojanco3670 6 жыл бұрын
Donde puedo descargar el código de los ejemplos realizados en los videos???
@luisromeroreyes9810
@luisromeroreyes9810 6 жыл бұрын
UNA CONSULTA PARA CUALQUIERA POR QUE CUANDO HACE EL IF DENTRO DEL METODO COMPARETO NO HACE UNA COMPARACION DE LA POSICION DEL SUELDO CON OTRA POSICION DEL SUELDO +1, OSEA POR QUE LE SALE CORRECTO ESA PARTE, YO UNA VEZ HIZE UNA COMPARACION IGUAL Y SIEMPRE ME COMPARABA EL MISMO VALOR TUVE QUE PONERLE ID > ID +1 POR EJEMPLO... O COMO ES LA LOGICA EN ESTE PUNTO
@luisromeroreyes9810
@luisromeroreyes9810 6 жыл бұрын
nadie me responde???
@ruif3r
@ruif3r 5 жыл бұрын
lo implemente en un ejercicio, sin embargo no me ordena nada, es como si no hiciera nada
@Israel.Pastor
@Israel.Pastor 3 жыл бұрын
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?
@adriancordova1618
@adriancordova1618 3 жыл бұрын
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.
@lserranoit
@lserranoit 5 жыл бұрын
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
@pildorasinformaticas 5 жыл бұрын
La clave está en que la herencia no te "OBLIGA" a desarrollar el método. Una interfaz sí. Un saludo!
@lserranoit
@lserranoit 5 жыл бұрын
@@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?
@AugusteLovecraft
@AugusteLovecraft 5 жыл бұрын
@@pildorasinformaticasPero la Herencia de una clase Abstracta sí te obligaba a desarrollar el método en una subclase. No???
@williamslionheart
@williamslionheart 7 жыл бұрын
me enrede en este vídeo pero seguiré adelante y ver e que tal
@Jimmy-ym2fg
@Jimmy-ym2fg 2 жыл бұрын
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
@carlosbarrios9045
@carlosbarrios9045 9 жыл бұрын
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?
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
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
@carlosbarrios9045
@carlosbarrios9045 9 жыл бұрын
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
@mlargue1
@mlargue1 9 жыл бұрын
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
@rosa_mo
@rosa_mo 7 жыл бұрын
En Java SE 8 tb existen los métodos de tipo default, que sí pueden ser implementados en la interfaz...
@sebastianolarte8353
@sebastianolarte8353 8 жыл бұрын
Hola Profesor, estoy siguiendo el curso al pie de la letra y la verdad he aprendido mucho. Tengo una duda, apartiri del minuto 23 ud hace un casting, pasando un objeto Object a un objeto Empleado: Empleado otroEmpleado = (Empleado) miObjeto. siendo miObjeto de tipo Object. Mi pregunta es ¿ por que es esto posible, si teniamos que una clase mas general no puede refundirse a una clase más especifica. es decir, un Empleado es siempre un Object, pero un Object no siempre es un Empleado. quisiera que me ayudara con eso, espero haber sido claro.
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+Sebastian Olarte Hola !! ¿Quién dijo esto? " si teniamos que una clase mas general no puede refundirse a una clase más especifica."
@nicolasticonavaldivia6509
@nicolasticonavaldivia6509 7 жыл бұрын
Necesito Ayuda ! Porfavor urgente que se me explota la cabeza...
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
Instrucciones a seguir: 1 ) Apagar el ordenador. 2 ) Ir a pasear por parque cercano a casa. Mínimo 30 minutos. Respirar profundo. Observar la naturaleza. 3 ) Volver a casa. 4 ) Plantear aquí mismo la duda. Un saludo!!
@nicolasticonavaldivia6509
@nicolasticonavaldivia6509 7 жыл бұрын
Gracias por Responder! bueno tengo una duda y quiero saber si es error Mio o simplemente java no me lo permite: Hice un ejercicio Practico acerca de Interfaces usando el Metodo Sort. Es muy Simple y solo lo hice para Practicar. Clase Personaje package Interfaces; import java.util.*; public class Personaje implements Comparable{ Random rand = new Random(System.nanoTime()); private int salud; private String nombre; //Constructor public Personaje(int salud, String nombre){ this.salud = salud; this.nombre = nombre; } //Getters public int getSalud() { return salud; } public String getNombre() { return nombre; } //Metodo Restar Vida public void Restar_Vida(){ int valor = 10; int random = rand.nextInt(4) + 1; this.salud -= valor*random; } //Metodo Descipcion public String Descripcion(){ return nombre+" tiene una vida de "+salud; } //Sobreescribit ComparableTo public int compareTo(Object miobjeto) { Personaje ordeno = (Personaje) miobjeto; if(this.salud < ordeno.salud){ return -1; } if(this.salud > ordeno.salud){ return 1; } else{ return 0; } } } Clase Main package Interfaces; import java.util.*; import javax.swing.*; public class Main { public static void main(String[] arg){ Scanner s = new Scanner(System.in); Personaje[] personajes = new Personaje[2]; String nombre; int salud; //Recorro Vector for(int i = 0; i < personajes.length; i++){ nombre = JOptionPane.showInputDialog("Personaje ["+(i+1)+"] - Nombre : "); salud = Integer.parseInt(JOptionPane.showInputDialog("Personaje ["+(i+1)+"] - salud : ")); personajes[i] = new Personaje(salud,nombre); } //Bucle For Each for(Personaje e: personajes){ e.Restar_Vida(); }//Resto vida para luego ordenar for(Personaje r: personajes){ System.out.println("La vida Restante "+r.getNombre()+" es "+r.getSalud()); } //Ordena por vida Arrays.sort(personajes); System.out.println("Descripcion Personajes"); for(Personaje e: personajes){ System.out.println(e.Descripcion()); } } } Si Copia estas dos Clases no habra Problema porque en vez de pedir con el Scanner la Salud y el Nombre lo hice con el JOptionPane. Realice ese cambio porque si lo hago de esta manera: ---------------------------------------------------------------------------------------------------- for(int i = 0; i < personajes.length; i++){ nombre = s.nextLine(); salud = s.nextInt(); personajes[i] = new Personaje(salud,nombre); } ----------------------------------------------------------------------------------------------------------- a la hora de Ejecutar el Programa Se me salta el pedir el Nombre! Se lo salta y no lo llega a almacenar! Esa es mi duda, quiero saber porque no puedo Introducir el Nombre con el Scanner.
@estharlinabreu7593
@estharlinabreu7593 7 жыл бұрын
no se si habras resuelto pero me paso una vez y fue tedioso y buscando y buscando encontre una solucion dure dias buscando, haha. en fin antes del bucle for ponele s.nextLine(); y listo
@migueldefx
@migueldefx 7 жыл бұрын
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?
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
Porque es Object y no Objetc. Un saludo
@giomarsalazar7547
@giomarsalazar7547 6 жыл бұрын
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.
@juanjoselanza
@juanjoselanza 9 ай бұрын
Voy siguiendo el curso. Primer video que se me complicó bastante entender. Espero que sea el único...
@angelicaluna5810
@angelicaluna5810 6 жыл бұрын
Hola Juan, tengo una duda, al sobreescribir el metodo compareTo de la interfaz Comparable : int compareTo(T o) por qué tomas "T" como Object?. Gracias por tus tutoriales :)
@tahielahuvia936
@tahielahuvia936 9 жыл бұрын
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
@tahielahuvia936
@tahielahuvia936 9 жыл бұрын
hola ami me da error cuando implemento el metodo compareTo.. me podrian ayudar por favor..!!!pero el error me lo marca en la clase empleados cuando implemento la interfaz comparable..!!!
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
+TAHIEL AHUVIA Copia y pega tu código para que te podamos ayudar. Un saludo
@carlosortiz7759
@carlosortiz7759 8 жыл бұрын
Hola juan, muchas gracias por estas excelentes clases!! queria preguntarte si en un futuro, tienes pensado dar como trabajar con EJB, con JBoss y con SVN y ese tipo de cosas!! Gracias
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+Carlos Ortiz Hola !! En este curso no, porque si no se me iría a los 500 vídeos. Pero como he recibido bastantes peticiones al respecto, me estoy planteando hacer un curso en el futuro con JBoss, Framewroks etc. Un saludo
@carlosortiz7759
@carlosortiz7759 8 жыл бұрын
Ah perfecto esta bien, muchas gracias por todo Juan!!
@nicolasespinosa3181
@nicolasespinosa3181 7 жыл бұрын
mi cerebro ha alcanzado un nivel alto de estres gracias profe!!
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
Es hora de descansar entonces.... Un saludo
@sare61
@sare61 7 жыл бұрын
me sale este error : at java.util.ComparableTimSort.sort(Unknown Source) at java.util.Arrays.sort(Unknown Source)
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
Si copias y pegas por aquí ti código podré decirte la cusa del error. Un saludo!!
@sare61
@sare61 7 жыл бұрын
jefatura jefe=new jefatura("marc",2000,2011,5,20); jefe.estable_incentivo(2570); Empleado trabajador[]=new Empleado[6]; trabajador[0]=new Empleado("boureima",1500,2013,06,12); trabajador[1]=new Empleado("dramane",2000,2015,9,05); trabajador[2]=new Empleado("papa",4000,2008,12,8); trabajador[3]=new Empleado("maria ",40000,2006,9,2); trabajador[4]=jefe;//polimorfismo en accion trabajador[5]=new jefatura("diego",1200,2010,9,21); for(Empleado e:trabajador) { e.subesueldo(5); } Arrays.sort(trabajador); for(Empleado e:trabajador) { System.out.println("nombre: "+e.dame_nombre()+ " sueldo "+e.dame_sueldo()+" dame_fecha_alta: "+ e.dame_fecha_contrato()); } class Empleado implements Comparable{ ///primera constructor public Empleado(String nom,double sue,int agno,int mes,int dia){ nombre=nom; sueldo=sue; GregorianCalendar calendario=new GregorianCalendar(agno,mes-1,dia); altacontrato=calendario.getTime(); } public int comparaTo(Object miobjecto){ Empleado otroempleado=(Empleado) miobjecto; if(this.sueldootroempleado.sueldo){ return 1; } return 0; }
@gustavoherrera6281
@gustavoherrera6281 7 жыл бұрын
el metodo no es comparaTo es compareTo
@STarSTeal
@STarSTeal 9 жыл бұрын
Hola, me entran un par de dudas generadas por la práctica de este vídeo. Duda1: En mi programa no me ordenaba correctamente el sueldo ya que he visto que se basa en el sueldo base y luego de aplicar incentivos en algún caso pues me saldría que realmente estaban mal ordenados. Si los ordenaba por ID en cambio me salía correctamente. Imagino que esto es cosa del funcionamiento del método compareTo pero me gustaría saber si habría alguna forma de comparar el valor final de la variable sueldo y no el inicial que es que está comparando. De forma manual imagino que si se podría hacer pero no se si ya habrá algun método predefinido que lo haga. Duda2: Al principio de la teoría en el vídeo hablas de que las interfaces no se pueden instanciar (y lo entiendo) y las comparas con el funcionamiento similar en las clases abstractas que ya habíamos visto. En cambio, yo recuerdo que la clase abstracta persona que utilizamos en un ejemplo anterior si la instanciábamos con el uso del new. Podría explicarme esto?. Gracias. Aquí paso copy&paste para que lo vea directamente: public class Uso_Persona { public static void main(String[] args) { // TODO Auto-generated method stub Persona lasPersonas[]=new Persona[2]; lasPersonas[0]=new Empleado2("Luis Conde", 50000, 2009, 2, 25); lasPersonas[1]=new Alumno("Ana López","Biológicas"); for(Persona e: lasPersonas){ System.out.println(e.getNombre() + ". " + e.getDescripcion()); } } } abstract class Persona{ public Persona(String nom){ nombre = nom; } Por lo que veo nosotros estamos instanciando objetos de tipo Persona que es una clase abstracta y es una contradicción a lo que explica en este vídeo. Muchas gracias por su tiempo.
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
+Mario Meitín Álvarez Hola !! Duda 2: No estamos instanciando la clase abstracta Persona. Lo que estamos haciendo es crear un Array de Personas con el operador new al igual que con cualquier otro Array. Por ejemplo: int []miarray= new int[5]; creamos un Array de enteros y no estamos instanciando nada. Lo mismo ocurre si lo quiero hacer de Personas en vez de enteros. Duda 1: Pues no conozco método de la API que haga tal cosa. Y efectivamente de forma manual lo podríamos hacer aunque tendría que pensar cómo durante un momento... El que no conozca yo el método de la API, no quiere decir que no exista. ya sabemos que la API tienes miles de métodos. Imposible conocer ni la mitad de ellos. Un saludo
@reiniergarcia
@reiniergarcia 9 жыл бұрын
+Mario Meitín Álvarez. Hola. Si comparas en un compareTo (sin usar un getter) todos los elementos dentro de un arreglo de Empleados, dentro del cual hay tanto Empleados (propiamente dichos), como Jefes (que también son empleados) pues obviamente solo podrás compararlos por un parámetro que sea común para todos ellos, y uno de ellos es el sueldo base. No puedes comparar el salario final de un simple empleado (que es el sueldo base a secas, que se puede incrementar un %) con el del jefe (sueldo base que se puede incrementar un %, + un incentivo adicional). Para ello podrías hacer una diferenciación dentro de la implementación del compareTo, para que a medida que vayan pasando por él los elementos del array, sepa cuando se grata de un empleado y cuando se trata de un Jefe. O sino, más facil aun, no compares directamente por el atributo Sueldo Base, sino emplea el getter apropiado, y dentro del getter tú implementas la manera exacta en que quieres calcular el mencionado "Salario Final", para cada caso. O sea, para el caso de un simple Empleado a secas, el "Salario Final" sería su salario base (ya sea incrementado previamente un % o no, no importa) y en el caso de un Jefe el "Salario Final" sería el Salario Base (ya sea incrementado previamente un % o no, no importa tampoco) + Incremento. Para ello entonces tú debes hacer las siguientes 3 cosas: // # 1 Declaras la Clase Empleado de esta forma: class Empleado extends Persona implements Comparable {.... } // # 2. Implementas el compareTo así (sin tener que hacer un type cast) public int compareTo(Empleado aEmpleado) { // # 3 Usa el getter, en lugar de acceder al atributo directamente if (this.getSueldo() < aEmpleado.getSueldo()) { return -1; } else if (this.getSueldo() > aEmpleado.getSueldo()) { return 1; } return 0; } Saludos y suerte. bye. PD: Muy importante, antes de hacer lo anterior, en las Clases Empleado y Jefe debes tener implementados lo siguientes métodos getters: // Getter para el Sueldo Final del Empleado public double getSueldo() { return this.Sueldo; } // Getter para el Sueldo Final del Jefe public double getSueldo() { return super.getSueldo() + this.Incentivo; } Consejo: *** Siempre usa get[Atributo] en la notación, para los métodos getters. *** Siempre usa set[Atributo] en la notación, para los métodos setters. Eso le da un orden y un patrón muy bueno a las implementaciones y te sirve para hacerte la vida más fácil además. ¿Tu quieres un getter en un momento determinado? Pues empiezas tecleando "get..." y al darle complete code te sale el listado de todos tus getters. : ) Bye
@bigotes20random86
@bigotes20random86 3 жыл бұрын
TE AMOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
@iloveclassicalmusic1683
@iloveclassicalmusic1683 4 жыл бұрын
Hay un detalle importante y creo que es relevante: el array tiene que ser completo es decir si tengo Empleado [0] a [5] y declare ...=new Emplado [7] no te funciona. ( pase 3 horas revisando para darme cuenta)
@bienvenidomartinez-d8s
@bienvenidomartinez-d8s Жыл бұрын
Pense que solo me paso a mi!. Epico!!!
@SepiaBike
@SepiaBike 9 жыл бұрын
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.
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
+Jesús ChocoBike Gracias a ti por el esfuerzo y por seguir mis vídeos. Un saludo
@DcAGame
@DcAGame 7 жыл бұрын
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 ;-)
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
Gracias por tu comentario. Me alegro de que te gusten los vídeos. Puedes saltar sin problemas (si tienes conocimientos previos). UN saludo!!
@felicis936
@felicis936 8 жыл бұрын
Juan! y si quisiera ordenar un array mediante un menu ejemplo: opc 1: ordenar por sueldos opc2: ordenar por nombres mi problema está en que sobrescribo el método compareTo para sueldos y me ordena para sueldo hasta allí no hay problema pero y si quiero también ordenar por nombres el mismo array? ¿qué debería de hacer?
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
Hola !! No estoy seguro de entender del todo la pregunta, pero si quieres ordenar por nombre, hazlo igual que por Id o por sueldos. Lo ordenará alfabéticamente. Lo que no podrás hacer es ordenar por sueldos y por nombre a la vez. Un saludo!!
@gohanarturo
@gohanarturo 8 жыл бұрын
yo tampoco pude hacerlo comparandolos como el sueldo o el id, lo que hice fue usar el metodo compareTo del objeto String que es el mismo y retorne el valor de ese metodo al metodo del compareTo de la clase Empleado... @Override public int compareTo(Object o) { Empleado e= (Empleado)o; return nombre.compareToIgnoreCase(e.nombre); }
@gohanarturo
@gohanarturo 8 жыл бұрын
y con respecto al menú, te diré lo que hice yo. Agregue una variable static de tipo String llamada order: pirvate static String order; y un metodo public static que recibe un String: y asigna ese string a la variable static order. public static void orderBy(String ord){ order=ord; } y luego, modifique el metodo compareTo de la interface comparable, con un switch, con los casos que podian ocurrir con respecto al menu "Sueldos,Nombre, Id" @Override public int compareTo(Object o) { Empleado e= (Empleado)o; switch (order) { case "s": if(this.sueldoe.sueldo)return 1; else return 0; case "n": return nombre.compareToIgnoreCase(e.nombre); case "i": if(this.ide.id)return 1; else return 0; default: return 0; } } y por ultimo mande llamar al metodo orderBy, pasando el parametro con un JOptionPane.showInputDialog Empleado.orderBy(JOptionPane.showInputDialog("Como quieres ordenar? i : id n : nombre s : sueldo")); y pues al final solo se hace el ordenamiento con Arrays.sort() con respecto a lo que le dijimos que ordenara orderBy... no creo que sea la mejor forma, pero funciona :v jajaja
@gohanarturo
@gohanarturo 8 жыл бұрын
y con respecto al menú, te diré lo que hice yo. Agregue una variable static de tipo String llamada order: pirvate static String order; y un metodo public static que recibe un String: y asigna ese string a la variable static order. public static void orderBy(String ord){ order=ord; } y luego, modifique el metodo compareTo de la interface comparable, con un switch, con los casos que podian ocurrir con respecto al menu "Sueldos,Nombre, Id" @Override public int compareTo(Object o) { Empleado e= (Empleado)o; switch (order) { case "s": if(this.sueldoe.sueldo)return 1; else return 0; case "n": return nombre.compareToIgnoreCase(e.nombre); case "i": if(this.ide.id)return 1; else return 0; default: return 0; } } y por ultimo mande llamar al metodo orderBy, pasando el parametro con un JOptionPane.showInputDialog Empleado.orderBy(JOptionPane.showInputDialog("Como quieres ordenar? i : id n : nombre s : sueldo")); y pues al final solo se hace el ordenamiento con Arrays.sort() con respecto a lo que le dijimos que ordenara orderBy... no creo que sea la mejor forma, pero funciona :v jajaja
@felicis936
@felicis936 8 жыл бұрын
Gracias buena idea
@brianramirez3746
@brianramirez3746 5 жыл бұрын
buenas, cordial saludo, pero entonces se me genera una duda, por que si una clase implementa una interfáz y esta clase a su vez tiene una clase hija entonces la clase hija ¿tambien heredará estos metodos implementados? muchas gracias por sus respuestas.
@gustavotorres941
@gustavotorres941 7 жыл бұрын
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
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
Muchas gracias por el comentario. Me alegro de que los vídeos te ayuden. Un saludo!!
@virginia.faustino4935
@virginia.faustino4935 9 жыл бұрын
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.
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
+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
@virginia.faustino4935
@virginia.faustino4935 9 жыл бұрын
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 :) .
@YhoswarPerez
@YhoswarPerez 7 жыл бұрын
Puedes aclararme esta duda!! Cual es la diferencia entre eclipse neon y eclipse oxygen
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
Ni idea. Cada actualización del programa Eclipse le cambian el nombre y no estoy atento a mirar cuáles son las novedades incluidas en cada versión. Ten en cuenta que este programa se actualiza cada dos meses o menos y uno no tiene tiempo de mirar qué novedades incluye cada versión. Para este curso puedes utilizar la versión que quieras. Un saludo!!
@YhoswarPerez
@YhoswarPerez 7 жыл бұрын
Ok Gracias!!!! aprendo mucho de tus videos
@Oracles93
@Oracles93 5 жыл бұрын
No me queda claro, lo vi varias veces, en la parte donde implementa el metodo compareTo. Este metodo recibe un parametro de tipo objeto, entonces pones (Object miObjeto), y aca me mareo. Estas declarando una variable de tipo objeto (miObjeto) dentro de los parentesis de metodo compareTo? No me queda claro de donde sale "miObjeto" sin antes declararlo, como por ejemplo el sueldo o el nombre, que si esta declarado antes como "private int sueldo" o "private String nombre". Ahora bien, supongamos que es asi como dije, miObjeto se declara dentro de "()" del metodo compareTo. Luego se hace la refundicion, y se le dice a miObjeto que sea de tipo "empleado", voy bien? Pero a miObjeto se lo mete en otra variable (de tipo empleado) que se llama "otroempleado". Finalmente se hace el if, comparando los sueldos de this.empleado (entiendo que son cada uno de los empleados almacenados en el array??) con el sueldo de "otroempleado". Pero yo lo veo como que siempre compara el empleado con el mismo "otroempelado", en que momento la comparacion se hace entre dos miembros del array "empleado"??? Acaso esto es un mecanismo interno del metodo compareTo que no lo vemos? Ademas, cual es el sueldo de "otroempleado"?? Min 22:00 Espero haber sido claro con la duda. Gracias de antemano me encanta el curso.
@claudiomendieta
@claudiomendieta 6 жыл бұрын
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.
@aminebouita7185
@aminebouita7185 5 жыл бұрын
Gracias por el video, mejor explicado no puede ser.
Curso Java. Interfaces y clases internas  Interfaces II. Vídeo 50
19:54
pildorasinformaticas
Рет қаралды 150 М.
Curso Java. Interfaces y clases internas  Interfaces IV. Vídeo 52
29:31
pildorasinformaticas
Рет қаралды 109 М.
Win This Dodgeball Game or DIE…
00:36
Alan Chikin Chow
Рет қаралды 40 МЛН
Please Help This Poor Boy 🙏
00:40
Alan Chikin Chow
Рет қаралды 23 МЛН
Players vs Corner Flags 🤯
00:28
LE FOOT EN VIDÉO
Рет қаралды 80 МЛН
Curso Java. Tipos enumerados. Vídeo 48
21:35
pildorasinformaticas
Рет қаралды 162 М.
Curso Java. Aplicaciones gráficas  Swing I. Vídeo 55
26:15
pildorasinformaticas
Рет қаралды 260 М.
Curso Java. Interfaces y clases internas. Clases internas I. Vídeo 53
25:16
pildorasinformaticas
Рет қаралды 109 М.
Win This Dodgeball Game or DIE…
00:36
Alan Chikin Chow
Рет қаралды 40 МЛН