✅✅ ✅ ✅ ✅ 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. 💥💥💥
Yo inicie viendo de 5 a 7 vídeos por día, a un ritmo increíble, sin embargo cuando pase del vídeo 40 lo tome con calma, 1 o 2 vídeos al día con calma, inventar cualquier programa y practicar en el eclipse, soy de los que digo que la programación la practica hace al maestro. Actualmente voy por este vídeo, tengo como meta convertirme en un programador profesional, y créanme este curso es de lo mejor que pueden conseguir. Cuando viaje a España me tocara al menos invitarle una cena a Juan por su EXCELENTE aporte. Mas profesionales como tu en el mundo por favor !!!
Muchas gracias por tu comentario y por seguir mis vídeos. Java es una materia compleja y a medida que avances por el curso irá costando un poco más. Haces bien en tomarlo con calma. Tomo nota de la cena ;) Un cordial saludo!!
De hecho llevo toda esta semana sin ver mas vídeos, me invente varios retos donde pusiese en practica todo lo visto hasta el momento, como un inicio de sesión (agregar, consultar, eliminar, mostrar info) con todo validado como debe ser. Allí estoy usando arrays, herencia, getters, setters, while, if, refundiciones y otras cosas mas. Creo es importante DETENERSE al llegar al vídeo 50 y dedicar 1 o 2 semanas a desarrollar pequeños programas en los cuales sientas estas preparado para seguir adelante, no se que contenido venga, pero estoy casi seguro que ahora si viene lo bueno. Saludos desde Santiago de Chile, un Venezolano muy agradecido con tu transferencia de conocimientos.
Ya somos varios bastante agradecidos por tus conocimientos. Y lo transmites a todos. Eres una excelente persona, y tienes mucha metodología explicando. Simplemente me encanta y cada dia, quiero aprender más. Haces que la programación Java se vea algo medianamente manejable, me gusta tu motivación con nosotros. Gracias totales
Para ser profesional es importante ir a la facultad. La universidad te va a dar un marco, un nivel de comprensión tal que te va a permitir aprender cualquier cosa de manera sencilla. No por nada la gente invierte 5 años o mas en una carrera universitaria.
un consejo para todos los que ven el curso, llevenlo con calma me paso que como ya casi llegaba a swing me dio ansiedad vi los videos del 50 al 55 con ansias y sin tomar apuntes y haciendo las practicas en netabeans de forma casi automatica sin estar consiente de lo que hacia y me vi obligado a devolverme, ahora voy con calma y tomando apuntes de los mas importamte y haciendo el codigo paso a paso para entenderlo y ya veo la luz
Año 2020 y seguis haciendo ver la luz a futuros programadores como yo, estudio la carrera de java developer, y no tengo dudas de que mis profesores son grandes programadores, y muy exitosos y apasionados, pero creo que no tienen el don que tenes vos, y el don de la enseñanza y transmitir esas ganas e inspiracion, desde Argentina te envio un abrazo, y muchas gracias por este excelente curso
@@TheMaverickjc29 soy de Argentina, y estudiaba en un instituto llamado Educación It, no es una carrera que se dé en facultad. Si no mas bien, que está conformada por multiples cursos. Entre los que estaban: Java de 0 a avanzado, java web, java spring, webservices, html, css, javascript, react js, angular, bases de datos, hibernate, spring, git, docker, y herramientas de automatizacion entre otros.
@@guillermorivadeneira385 Que bien, aunque no sea de universidad, se escucha mejor que una - ya que al fin y al cabo la U va a estar siempre atrasada, esa carrera esta excelente xq es tope de linea, algo que en una U muy difícil se vea.
Excelente.... Juan eres un mago, lei esto en un libro.... ( y quede ???#$%@##), el mismo tema lo explicas y se entiende, claro tiene su grado de dificultad.... Gracias
Muchas gracias, maestro, no hay manera de pagarle todo ese gran regalo al mundo que usted ha brindado. Sus habilidades de enseñanza, tiempo y dedicación. Mil Gracias y más.
Por lo que veo con el número de visualizaciones que baja mucho parece que muchas personas no fueron capaces de continuar. Daros ánimos a todos los que como yo han llegado aquí y a confiar en pildorasinformaticas para seguir aprendiendo.
Recibe un afectuoso saludo, y muchas felicitaciones por este tutorial . Yo veo a esto de las interfaces como cuando aprendes a manejar un auto, no se ve para que 5 velocidades si al principio no se usa nada mas que hasta la segunda velocidad. Después de tener experiencia en manejar te das cuenta que el auto devería de tener mas de 5 velocidades, eso lo da la experiencia y el tiempo
Gracias y saludos desde Mexico profesor Juan, agradezco el interes que pone en cada video y como hace ver tan facil el codigo, retomando el curso ya que lo habia dejado. Ahora con mas paciencia y dedicacion, muchas gracias.
Desde Colombia, Un saludo a Juan Diaz, tanto tiempo esperando aprender a programar y aparecio mi angel de la guarda en la programacion orientada a objetos, que me dio toda la logica de programacion, que necesitaba, cuando pase por España espero conocerlo en personal. Un abrazo.
Excelente curso muy bien maestro muchas gracias. Me extraña que apenas en el video 51 de 276 sólo haya 83 mil vistas en este momento, cuando en el primer video hay ya cerca de 2 millones de vistas, ánimos no se rindan peor sería que no estuviera este curso. Saludos maestro Juan.
Muchísimas gracias Juan, me quito el sombrero por todo el trabajo que haces y lo bien que lo explicas y aplicas. He aprendido bastante más en 2 semanas de videos que en 6 meses en clases jaja Un saludo!
Cada vez mas complicao (!sigo con las herencias¡), cada vez mas interesante.....voy a necesitar todo el mes de Agosto y repasarlo todo para septiembre como en el colegio. (Me quedo sin playa ja,ja) Un saludo Juan
Hola, muy buenos videos. La clase Jefatura al heredar de Empleado (que ya implementa Trabajadores), no necesitaria implementar Trabajadores, tambien solo podria sobreescribir el metodo.
Seria interesante una lista de vídeos con retos de programación propuesto por usted, en los cuales utilicemos los temas dados, esto para fijar conocimientos, GRACIAS DE ANTEMANO
Sí, es mi intención ir planteando ejercicios para este curso. Es algo que ya me habéis dicho muchos de vosotros, el problema es que casi no tengo tiempo para subir vídeos y menos aún ejercicios. Pero lo haré. Un saludo!!
Esto de las interfaces y herencias me encanta, me recuerda a cuando configuraba plugins para servidores de minecraft y no tenia ni idea de programación, lo hacia gracias al documento que dejaban los programadores de cómo configurarlas jajajaj
Profe muchisimas gracias por su valiosa enseñanza he aprendido un monton.. las clases son demasiado comprensibles tanto en los ejemplos teoricos como en la practica. Tengo una pregunta es validasr si puede tener un metodo en el que uds nos pueda generar el codigo.. un saludo desde Medellin Colombia y gracias por su valioso tiempo.
Disculpen la palabra. Pero que clase de "animales" son estas 4 personas que le dieron dislike a este vídeo? Esta explicación es lo más cercano a la perfección, en cuanto a explicar estos conceptos complejos de entender.
Excelente curso! Una pregunta estaba buscando la forma de tener desplegadas las pestañas de mi paquete en el Outline pero solo me muestra la pestaña que tengo visualizada actualmente, como hago para poder visualizar en el Outline las clases o interfaces que yo desee?
profe que buenos videos gracias ledoy portomarse el tiempo para realizar esto megustaria que subiera los video tutoriales para programar en c ,dado que conosco un poco pero se que con sugui y forma de enseñar los vacios que tengo se diciparan gracias
En un video mencionó que hay que llamar a super(). para que el método "realice su trabajo", además de lo que estableceremos en su momento ¿Qué trabajo realizaría si solo hemos declarado el prototipo, sin cuerpo y sin acciones? Gracias por compartir su conocimiento.
No se si entiendo del todo tu pregunta. Super() se utiliza para llamar al método de la clase padre. En el curso lo hemos utilizado numerosas ocasiones para llamar a métodos definidos en la API, así que habría que preguntar a los programadores de dichas clases de la API por el código de dichos métodos. Por ejemplo, el método paintComponents. Este método se encarga de dibujar en un frame y debemos llarmarlo con super() si queremos que nuestras clases dibujen en un Frame. El "cómo" está implementado el método paintComponents en la API habría que preguntárselo a quién lo hizo
Maestro, una pregunta: ¿Qué ventaja o qué razón hay para usar interfaces para definir el bono y la toma decisiones, en lugar de simplemente definir un método abstracto establece_bonus en la clase empleados (lo cual la convertiría en una clase abstracta) y sobreescribirlo en las clases empleados y jefatura como corresponda, y otro método (no abstracto) toma_decisiones en la clase jefatura para la toma decisiones? ¿Funcionaría igual?
Hola !! Si, funcionaría igual. Todo depende de lo que necesites porque si lo creas como me´todo abstracto en la clase Empleados ya estarías obligando a sobreescribirlo en todas las clases que hereden de Empleado. Tal vez es lo que necesite tu programa o tal vez no. Si no quieres tener la obligatoriedad de sobreescribir el método en todas las clases que hereden de Empleado entonces mejor una interfaz que puedes implementar a voluntad. Un saludo!!
disculpa, una pregunta al interfaces al implementarse en una clase no es heredada por la siguiente? hay veces que parece que si y otras que no o es opcional?
Asombroso diseño de interfaces. Esta demasiado cool. Deberias hacer un curso de diseno de programacion o algo asi. Bueno como se llama eso de Diseno de programacion. Osea que todo quede tan perfecto en el codigo..? Gracias.
Hola Profe! Disculpe que le haga otra consulta. En este ejemplo, hemos implementado la interfaz Trabajadores a la clase Empleados, lo cual me obliga a que la clase Empleado desarrolle el método de establece_bonus de la interfaz Trabajadores. Todo perfecto hasta ahí. Como la clase Jefatura hereda de Empleados, me obliga también a establecer el método de la interfaz trabajadores a la clase Jefatura? Mi pregunta se debe a que si una superclase hereda de una interfaz, es obligatorio que todas las subclases hereden si o si los métodos de la interfaz aplicada a la superclase? Muchas gracias como siempre y saludos desde Nueva Zelanda (del otro lado del planeta) ajaja
Hola !! No, no es necesario que la subclase implemente los métodos de la interfaz. Gran envidia la que me das. Siempre he querido visitar Nueva Zelanda. La magia de Internet hace que de alguna forma parte de mi haya llegado hasta allí. Un saludo!!
Hola Profe!! Muchas gracias por su respuesta! Su canal es un verdadero sentimiento, pues nadie ha sido nunca tan claro en explicar todo este mundo nuevo, al menos para mi. En verdad que hace un tiempo estoy en Nueva Zelanda, y por supuesto vivir acá es un verdadero placer! Su profesión (programador) es MUY buen paga aquí! Si le gusta el señor de los anillos aquí esta hobbiton y todos los grandes lugares donde se filmaron dichos sets, así que bienvenido cuando usted lo desee o cualquier info que necesite, a sus órdenes! Saludos grande
Hola Juan!! Primero felicitarte por tus videos, está todo muy bien explicado y nos sirve a muchos de gran ayuda. Segundo, te quería preguntar si podrías facilitar algún sitio donde se pueda acceder a este tipo de ejercicios para practicar, ya que yo voy haciendo lo mismo que tú en los videos pero me gustaría ponerme a prueba, a ver si soy capaz de hacer programas sencillos como este de los Empleados, por mi mismo, y saber en que cosas fallaría. Un saludo y muchas gracias por todo!!
Hola !! Gracias por el comentario. No sabría decirte ahora mismo páginas donde acceder a ejercicios. Ni siquiera las he buscado. Pero estoy seguro de que si preguntas a google y buceas un poco por los resultados, encontrarás alguna página con ejercicios interesantes. Yo estoy trabajando para ir subiendo más ejercicios a mi web. Un saludo!!
@Javi conseguistes el sitio con lo que indicabas ? Si no propongo un grupo de Facebook en el cual como reto cada uno proponga un programa usando lo aprendido en X video (sencillo inicialmente) y todos compartir su código y asi ayudarnos mutuamente.
Hola, ¿tienes actualmente los ejercicios que te planteaste? Quisiera también lo mismo, ponerme a prueba, pero no se me ocurre nada para ponerme a resolver o problemas que pueda resolver hasta este vídeo. Me ayudarías mucho. Un saludo.
Hola Juan te hago una pregunta concreta, al implementar una interface en una clase tengo que sobreescribir todos los métodos de la interface, la pregunta es ¿ Tengo que hacerlo al igual con las constantes, tengo que implementarlas también si o si, o eso si lo puedo omitir al sobreescribir?
Pregunta rápida para pildoras o cualquier otro usuario que sepa la respuesta. Has dicho que usando una Interface solo es posible generar variables constantes. ¿ Pero si deseas obligar a una clase a definir una variable concreta (por ejemplo una variable que almacene el valor de la gratificación para ser usada mas tarde), no hay forma de hacerlo ?
No le veo el sentido tener que crear una variable en una clase que implemente la interfaz. Simplemente lo que puedes hacer es un metodo en la interfaz del tipo y nombre de la variable y posteriormente ponerla en la clase que herede. Así, tendrás que definir la dicha variable. Saludos, puede que me esté equivocando puesto que estoy empezando e intento leer y aprender. Gracias a este canal sinceramente estoy resolviendo mis dudas asi que agradezco a este maestro por sus ganas y su paciencia. Saludos desde Valencia
Buenas profe. Pregunta que me ha surgido. Hemos visto que si Jefes hereda de Trabajadores, aquella clase que implemente Jefes se verá obligado a definir los métodos de ambas interfaces. Si Empleados implementa también Trabajadores se da la circunstancia de que si en esta clase defino el método de Trabajadores, en la clase Jefatura, a pesar de que implementa de la interfaz Jefes, ya no me obliga como lo hacía antes a definir el método setBonus. ¿Por qué se da esta situación? ¿Es porque Jefatura hereda de Empleados y por lo tanto hereda el método? Si esto es así, y yo quiero que sea obligatorio definir un método setBonus distinto en Jefatura, ¿cómo se podría hacer? Porque en este caso entiendo que puedo utilizar el método setBonus heredado de Empleados y sí, puedo sobreescribirlo pero no estoy obligado a hacerlo. Un saludo.
"Si Empleados implementa también Trabajadores se da la circunstancia de que si en esta clase defino el método de Trabajadores, en la clase Jefatura, a pesar de que implementa de la interfaz Jefes, ya no me obliga como lo hacía antes a definir el método setBonus. ¿Por qué se da esta situación? " Respuesta: porque ya está definido. Lo has heredado de Empleados (Jefatura hereda de Empleados) "¿Es porque Jefatura hereda de Empleados y por lo tanto hereda el método? " Respuesta: Correcto "Si esto es así, y yo quiero que sea obligatorio definir un método setBonus distinto en Jefatura, ¿cómo se podría hacer?" Respuesta: En ese caso no queda más remedio que definir una tercer interfaz con el método setBonus y que Jefatura implemente esa nueva interfaz. Un saludo!
pero solo estaría obligado a q de implemente en jefatura y que pasaría con empleado? y si primero lo implemento en empleado y no en jefatura? no abría error en la subclase jefatura. no se si se entiende
Hola, ¿cómo os va? Me estoy encontrando con que, tras definir todo el árbol de interfaces y clases, o sea, haciendo que la interfaz Jefes herede de la interfaz Trabajadores y luego implementando la interfaz Trabajadores en la clase Empleado y la interfaz Jefes en la clase Jefatura, que a su vez hereda de la clase Empleado, de esta manera el IDE no me obliga a sobrescribir el método "establece_bonus" en la clase Jefatura, si no que simplemente lo hereda directamente de la super clase (Empleados). Que luego se puede sobrescribir, por supuesto, pero sería una opción hacerlo y no una imposición. ¿Qué se me está escapando? Agradezco cualquier tipo de ayuda. :D
Puede que en el futuro, cuando tenga más conocimientos y experiencia llegue a otras conclusiones. Pero a día de hoy, bajo mi inexperiencia y desconocimiento actual, he llegado a la conclusión de que, mediante esta jerarquía, no podemos obligar a sobrescribir el método en la clase Jefatura porque lo va a a heredar directamente de la superclase. Como alternativa se me ocurre comentar el método dejando constancia de que ha de ser sobrescrito en la subclase. También creo que se podría hacer, siempre que la subclase Jefatura ya esté creada, sobrescribir en ella el método indicando en un comentario que debe ser desarrollado en la subclase y lanzando una excepción que haga que no se pueda utilizar el método de la clase Empleado: @Override public double establece_bonus(double gratificacion) { // Este método debe ser sobrescrito throw new UnsupportedOperationException("Este método debe ser sobrescrito y desarrollado específicamente para los jefes"); }
por que cuando pongo bonus_base en la clase jefatura funciona igual sin poner trabajadores.bonus_base?? hay que poner igual la clase interna por mas que funciones sin ponerlo en el return public double establece_bonus(double gratificaciones) { double prima= 2000; return bonus_base+prima+gratificaciones; }
Tengo la misma duda justo ahora. ¿Llegaste a alguna conclusión? La mía, desde el desconocimiento, es que con el paso de los años desde que se desarrolló el video, tal vez se haya desarrollado algo en las nuevas versiones de java que permita utilizar la constante definida e inicializada en la interfaz, sin necesidad de referenciar dicha interfaz. Será capaz de sobreentender que proviene de ahí. Pero no sé, tal como digo, es una conclusión hecha desde la ignorancia, por lo que seguramente esté equivocada.
Yo estoy usando el IDE de NetBens y siempre me pide que use el @Override para sobrescribir los métodos que se implementan o que se heredan ya sea de una interfaz o de una clase abstracta, mi pregunta es ¿No es necesario usar esa palabra reservada?, ya que pienso que me pide por la sintaxis, o ¿Porqué no pide eclipse que sea añadido el @Override?. Disculpen resién estoy aprendiendo y quisiera saber si es importante o no esa palabra. Gracias y saludos del 2019.
he seguido todo el curso con el netbeans 8, y lo de override aparece como el mensajito de alerta para agregar dicho comando que lo único que hace es resaltar más el método que esta sobrescribiendo perteneciente a una interface, una clase padre, o una clase abstracta de la cual esta heredando. Con eso es más resaltable para el programador encontrar dichos métodos en el código de la clase y además te cambia el símbolo de alerta por un pequeño circulito vede con una (i) en la cual te da un acceso directo a la clase que contiene al método que se esta sobrescribiendo. Si lo dejas tal y como esta en este video sin usar override igual funciona, si aceptas la sugerencia de netbeans tampoco altera el funcionamiento. No se si alguien mas conoce alguna otra diferencia que pueda ocasionar agregar el codigo @override sugererido por netbeans.
yo en lo personal prefiero aceptar la sugerencia del netbeans y permitirle que me agregue el override para asi tener ese acceso directo a la clase que contiene el metodo que estoy sobrescribiendo y viceversa
Si Empleado ya implementa la interfaz Trabajadores y Jefatura hereda de Empleado, ¿no debería heredar también el método establece_bonus y no ser obligatorio desarrollarlo en Jefatura?
Hola !! Claro que si. Y de hecho lo hereda. Pero si te fijas, lo que hacemos en la clase Jefatura es sobreescribirlo. ¿Por qué? Porque en este programa no es lo mismo el bonus que se la da a un Empleado que el bonus a un Jefe. Método establece_bonus de Empleado: public double establece_bonus(double gratificacion){ return Trabajadores.bonus_base+gratificacion; } Método establece_bonus de Jefatura: public double establece_bonus(double gratificacion){ double prima=2000; return Trabajadores.bonus_base+gratificacion+prima;
} Si te fijas son diferentes y el método de Jefatura sobreescribe al que hereda de Empleado y además así lo indica Eclipse en el margen izquierdo con el correspondiente icono del triángulo verde. Esto es precisamente lo que ya vimos en el curso de sobreescritura de métodos. Además precisamente este hecho que tu comentas marca el diseño de la herencia y el uso de interfaces que explicábamos en estos vídeos, ya que la clase Empleado implementa la interfaz propia creada por nosotros "Trabajadores" cuyo cometido es marcar el diseño de la herencia. package poo; public interface Trabajadores { double establece_bonus(double gratificacion); double bonus_base=1500; } Un saludo
+pildorasinformaticas buenas, una duda con respecto a lo que dice francisco: yo veo que de alguna manera Jefatura tiene dos formas de heredar el metodo establece_bonus: primero porque hereda los me;todos de la superclase, pero tambie;n porque hereda de la interface Trabajadores por implementar la interface Jefes que hereda de esta. la diferencia sería que en el primer caso Jefatura no se ve obligada a desarrollar el metodo , y en el segundo si. estoy muy errado?? saludos!!
Ya casi no recuerdo lo que hice en este vídeo, pero creo que si, que estás en lo correcto. Si Jefatura no implementa interfaz alguna, no está obligada a implementar ningún método. Un saludo
una pregunta profe , es necesario poner el "Trabajadores.bonus_base" ? por q yo lo puse directamente asi "return bonus_base+gratificacion+prima; " y me funciona normal sin el "Trabajadores" ,quisiera saber si afectar en algo o si es necesario el por que , la funcionabilidad de poner o no poner el nombre de la interfaz primero antes de la variable
Yo hice igual, por lo que leí en Google es que así la estas usando como variable en lugar de constante. Aunque sí tiene valor de la constante creada....¿que más da?
Entonces... Si la clase empleado implemena una interfaz con un metodo, la subclase jefatura, no tiene que sobrescribirlo, sino que lo hereda de empleado, a no ser que Jefatura tambien implemente la misma interfaz?
Muy buenas, lo primero quiero agradecer a pildorasinformaticas por su gran trabajo. Y ahora queria preguntar porque te aparece el ID del empleado ademas del nombre en las lineas de consola donde se muestra la sentencia de la interfaz Trabajadores al darle a los empleados el incentivo? A mi no me aparece y he seguido tus videos desde el principio al 100%. Eres un crack te agradezco el curro que te pegas ojala hubieses sido mi profesor de programacion este año jaja.
Gracias por el comentario, me alegro de que te gusten los vídeos. Tengo más de 1.000 vídeos en el canal y no recuerdo que hice en este. Tendría que verlo de nuevo para recordar. Pero habrá diferente entre tu código y el mío si no nos sale lo mismo. Tal vez son instrucciones de un vídeo anterior... Te hablo de memoria pero creo que la impresión del ID, el nombre etc viene de vídeos anteriores. Mira a ver por ahí. Un saludo!
@@pildorasinformaticas Nada tranquilo era simple curiosidad por si me he perdido algo de todas formas como tengo que echarle un vistazo para ir apuntandome la teoria me fijare bien :)
no es obligatorio por que empleados ya sobre escribio la funcion que heredo y se la hereda de nuevo a jefatura pero le puedes sobre escribir de nuevo en jefatura si le quieres cambiar algo :)
yo quiero desarrollar app para android no se si ya puedo ir tomando el curso de android studio por que aveces siento que no se como aplicar todo esto que eh aprendido hasta ahora ??
Te recomiendo que avances un poco más. Muchas veces me preguntan hasta que vídeo de este curso de Java recomiendo ver a los alumnos. Suelo recomendarles ver hasta el 200. Un saludo!
una consulta, porque creamos una interface y no simplemente se crea un método getter en la clase donde quiere que "empiece" esa cadena donde todas las clases que hereden una de otras
Porque si no creas una interface no obligas a que se use el método. Si el método lo creamos en la clase padre, en las clases hijas tenemos la opción de no utilizarlo si no queremos. Al crear el método en una interface "obligamos" a que el método se use en las clases que implementen la interface. Habrá veces que tu programa requiera esa obligatoriedad y otras veces no, depende de las necesidades del programa que estés creando. Un saludo!!
+Fermin Gomez Hola!! Sí, si que lo tengo contemplado y lo voy a hacer. Lo que no se es cuándo lo podré comenzar pero es seguro que lo habrá. Un saludo!!
Tengo un problema hasta aquí. Tengo un importe de 105000 para el jefe Juan y 95000 para la jefa María. Cuando se ejecuta, no ordena correctamente el array, además no incrementa el 5% al incentivo asignado a María a pesar de estar declarado después de la asignación del incentivo. ¿Cuál es el error?
Es este: package poo; import java.util.*; public class Uso_Empleado { public static void main(String[] args) { Jefatura jefeRRHH = new Jefatura ("EL JEFE SOY YO",105000, 2010, 04, 14); jefeRRHH.estableceIncentivo(2570); Empleado[] misEmpleados = new Empleado[6]; misEmpleados[0] = new Empleado ("Paco Gómez",30000, 1990, 12, 17); misEmpleados[1] = new Empleado ("Ana López",50000, 1995, 6, 2); misEmpleados[2] = new Empleado ("María Martín",25000, 2002, 3, 15); misEmpleados[3] = new Empleado ("Antonio Fernández"); misEmpleados[4] = jefeRRHH; // POLIMORFISMO EN ACCION. PRINCIPIO DE SUSTITUCION misEmpleados[5] = new Jefatura ("Dolores",95000, 2015, 11, 12); Jefatura jefaFinanzas = (Jefatura) misEmpleados[5]; jefaFinanzas.estableceIncentivo(25000); System.out.println(jefaFinanzas.tomarDecisiones("Dar más días de vacaciones a los empleados")); for (Empleado e: misEmpleados) { e.subeSueldo(5); } Arrays.sort(misEmpleados); for (Empleado p: misEmpleados){ System.out.println("Nombre: " + p.dameMombre() + " Sueldo: " + p.dameSueldo() + " Fecha de alta: " + p.dameFechaContrato()); } } } class Empleado implements Comparable { 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; IdSiguiente++; } public Empleado(String nom) { this(nom,28000, 2000, 01, 01); } public String dameMombre() { // METODO GETTER return nombre + " Id=" + Id; } public double dameSueldo() { // METODO GETTER return sueldo; }
public Date dameFechaContrato() { // METODO GETTER return altaContrato; } public void subeSueldo(double porcentaje) { // setter double aumento = sueldo * porcentaje / 100; sueldo += aumento; } public static String dameIdSiguiente() { return "El IdSiguiente es=" + IdSiguiente; } public int compareTo(Object miObjeto) { Empleado otroEmpleado = (Empleado) miObjeto; if ( this.sueldo < otroEmpleado.sueldo) { return -1; } if ( this.sueldo > otroEmpleado.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 implements Jefes { public Jefatura(String nom, double sue, int agno, int mes, int dia){ super(nom, sue, agno, mes, dia); } public String tomarDecisiones(String decision) { return "Un miembro de la direccion ha tomado la decisión de: " + decision; } public void estableceIncentivo(double b) { incentivo = b; } public double dameSueldo() { double sueldoJefe = super.dameSueldo(); return sueldoJefe + incentivo; }
private double incentivo; } Cuando lo ejecuto con los mismos datos que tú, si se ordena correctamente, pero con estos datos, Dolores se ordena con más importe que el Jefe Soy yo como si no tuviera en cuenta el incentivo de 25000.
He copiado os datos de tus empleados en mi programa y ordena por sueldo bien. Como no tengo mucho tiempo para mirar línea a línea a ver suál es la diferencia entre tu código y el mío, te dejo este enlace para que descargues un archivo con mi código y lo mires tú: www.pildorasinformaticas.com/archivos/java/codigo.zip Un saludo
Tengo una duda, a mi me en el resultado de establece_bonus del empleado me da 3700, es decir en vez de coger el de empleado, coge el de jefe, y me indica que establece_bonus de jefe sobreescribe al de empleado, alguna solucion?
vale ya lo he solucionado, era porque tenia la ordenacion por salario del array antes del bonus y entonces en la posicion que estaba poniendo el bonus era un jefe XD sorry, pd: muy buen trabajo me estas ayudando mucho :P
hola a todos, una pregunta para elprofesor o para lso compañeros de clase: cuando creas la interfaz Jefes,l y la pasas a la clase empleado, eso te obliga a crear el metodo tomar_decisiones. pero mi pregunta es: luego, como Jefes hereda de empleado, tambien hereda ese mismo metodo? o al ser una interfaz me obliga a crear el suyo propio con el mismo nombre? porquerecuerdo que hemos dicho que al hacer una interfaz lo que hace es que obligas a esa clase y a todas las que hereden de ella, ( todas las subclases futuras), tendran que tener a la fuerza el metodo Tomar_decisiones. pero cada una tendra un metodo diferente? o al hacerlo en la clase "padre", ya los hijos la heredan de forma normal? porque entonces no tieen mucho sentido, ya que eso es lo normal, no? todos los hijos heredan los metodos del padre., del abuelo.... y si resulta que cada uno debe tener su propio metodo, siguiendo el ejemplo del profesor, cuando pones que la clase EMPLEADO implementa Jefes, hace un copy/pego del metodo que habiamos hecho, pero despues , siguiendo ese ejemplo, deberiamos crear otro metodo llamado Tomar_decisiones en la clase jefatura no? ( ya sea un metodo igual o diferente al de empleado) es algo asi??? mil gracias y a estudiar!!!!
Hola !! Vamos a ello: "cuando creas la interfaz Jefes,l y la pasas a la clase empleado, eso te obliga a crear el metodo tomar_decisiones." Respuesta: Correcto!! "pero mi pregunta es: luego, como Jefes hereda de empleado, tambien hereda ese mismo metodo?" Respuesta: Correcto. "o al ser una interfaz me obliga a crear el suyo propio con el mismo nombre?" Respuesta: Si Jefes implementa la interfaz sí. Si no la implementa, no. "porquerecuerdo que hemos dicho que al hacer una interfaz lo que hace es que obligas a esa clase y a todas las que hereden de ella, ( todas las subclases futuras), tendran que tener a la fuerza el metodo Tomar_decisiones. " Respuesta: La que implementa la interfaz estrá obligada a sobreescribir el método. Las que hereden de esta última lo tendrán por herencia pero no estarán obligadas a sobreescribir. " o al hacerlo en la clase "padre", ya los hijos la heredan de forma normal?" Respuesta: Correcto " porque entonces no tieen mucho sentido, ya que eso es lo normal, no? todos los hijos heredan los metodos del padre., del abuelo...." Respuesta: Aquí me pierdo con tu razonamiento. Lo siento "y si resulta que cada uno debe tener su propio metodo, ..." Respuesta: Incorrecto. Solo la que implementa la interfaz. El resto lo heredan. Resumiendo: El uso de interfaces se utiliza para marcar el diseño de la herencia. Una interfaz te OBLIGA a implementar un método (o varios, según sea la interfaz). La herencia sin interfaces no te obliga a implementar métodos. Recomiendo repasar cuidadosamente los vídeos dedicados a las interfaces y las clases abstractas. Se que es peor que una maldición gitana tener que ver de nuevo estos vídeos, pero es fundamental para entender estos temas tan importantes. Un saludo!!
muchas gracias proffesor. poco a poco voy viendo la luz..... maestro jedi. me voy a repasar otra vez los videos ( aunque ya los he visto un par de veces) a ver si me aclaro. yo pensaba que si a una clase, le ponias lo de: implements interfaz1; eso obligaba a todas las subclases a tambien implementar esa interfaz del mismo modo. Vamos, como que se "arrastraba" esa obligacion a las subclases, pero veo que no. segun tu me explicas, yo puedo tener clase1 implementa interfaz1 y luego uns subclase de esa clase1: clase2 pero resulta que clase2 NO ESTA OBLIGADA A NADA CON ESA INTERFAZ ?? yo pensaba que por webs, en clase2 debes poner tambien inplements interfaz1, pero veo que no. simplemente heredará los metodos correspondientes y punto. de todos modos, me voy a ver los videos de clases abstractas de nuevo. mil gracias
Alguien sabe por qué con los elementos del array misEmpleados[4] y misEmpleados[5] que sí son de la clase Jefatura (se puede comprobar haciendo: for(int i = 0; i < misEmpleados.length; i++) { System.out.println(i + ": " + misEmpleados[i].getClass()); }) no se puede hacer: misEmpleados[4].tomar_decisiones("una decisión"); misEmpleados[5].tomar_decisiones("una decisión"); (ni con ningún método de la clase Jefatura) pero en cambio sí funciona: jefe_RRHH.tomar_decisiones("una decisión"); jefa_Finanzas.tomar_decisiones("una decisión"); Recuerdo que se había declarado (en este orden): Jefatura jefe_RRHH = new Jefatura("Juan", 55000, 2006, 9, 25); misEmpleados[4] = jefe_RRHH; misEmpleados[5] = new Jefatura("María", 95000, 1999, 5, 26); Jefatura jefa_Finanzas = (Jefatura) misEmpleados[5];
Tienes que devolver al video de refundicion de un objeto. recuerda que el vector o arreglo misEmpleados era del tipo Empleado y no del tipo Jefatura. Por lo que una vez que el objeto de tipo jefatura esta en el vector de objetos de tipo empleado no podrá usar un metodo de tipo jefatura a no ser que se utilice la refundicion para guardarlo en un objeto de tipo Jefatura (Doy la respuesta por si alguien mas tiene la misma duda, dado que esta pregunta tenia que haber sido respondida hace 2 años)
Gracias por el curso, tengo una duda. Las interfaces por convenio en proyectos grandes donde suelen definirse? A) En un .java aparte dentro del paquete donde este la clase que lo implemente B) En un .java dentro de otro paquete C) En el mismo .java de la clase que implementa dicha interfaz D) Todas las interfaces dentro de un mismo .java E) Otro Cuando veo que tienes la interfaz Jefes y la clase Jefatura se me antoja que la cantidad de .java que se muestran en el Package Explorer de eclipse, dentro del paquete donde nos encontramos crece muy rapido el número de archivos. Viniendo de MEAN.JS que todo estaba superestructurado se me hace raro ver tantos archivos en una misma carpeta/paquete
Hola !! Yo casi siempre los he visto en el mismo archivo java de la clase que implementa la interfaz. El código de las interfaces no suele ser extenso (aún en proyectos grandes) y suele encontrarse al principio del archivo java de la clase. También he visto las interfaces en archivos independientes, pero menos. De todas formas la experiencia que tengo yo en java con aplicaciones grandes siempre han sido un desastre. He trabajado en aplicaciones de la administración pública donde han metido mano muchas empresas-consultoras diferentes creando al final un código que era muy difícil de leer e interpretar. Le dan el contrato del proyecto a una empresa (ganado por concurso público), hace lo que le viene en gana con el código y que lo arregle el que venga después. Te quiero decir con todo esto que a lo mejor no soy el más indicado para deciros cómo organizar a la perfección el código en aplicaciones grandes. Haré cursos en el futuro (pronto) sobre frameworks, donde hablaré de este tema. Un saludo!!
No entiendo el como se implementa el "establecer_bonus" en la clase jefaturas, ¿por que la clase Jefatura se ve obligada a usar el metodo definido en la inteface trabajadores? si solo esta usando la interface Jefe y esta hereda de la interface Trabajadores ya me volvi loco xD
Buenas tardes desde Venezuela, le escribo porque siguiendo el ejemplo a la hora de imprimir en consola, me imprime Carlos en vez de Antonio..... Le envío mi código para ver si me puede llevar al error que estoy cometiendo. 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); jefe_RRHH.establece_incentivo(2570); Empleado[] misEmpleados=new Empleado[6]; misEmpleados[0]=new Empleado("Ana", 30000, 2000, 07, 07); misEmpleados[1]=new Empleado("Carlos", 50000, 1995, 06, 15); misEmpleados[2]=new Empleado("Paco", 25000, 2005, 9, 25); misEmpleados[3]=new Empleado("Antonio", 47500, 2009, 11, 9); misEmpleados[4]=jefe_RRHH;// POLIMORFISMO EN ACCION. PRINCIPIO DE SUSTITUCION misEmpleados[5]=new Jefatura("Maria", 95000, 1999, 05, 26); Jefatura jefa_Finanzas=(Jefatura) misEmpleados[5];// CASTING jefa_Finanzas.establece_incentivo(55000);// CASTING Arrays.sort(misEmpleados); System.out.println(jefa_Finanzas.tomar_Decisiones ("Dar más dias de vacaciones a los empleados")); jefa_Finanzas.establece_Bonus(500); System.out.println("El jefe " + jefa_Finanzas.dame_Nombre() + " tiene un bonus de: " + jefa_Finanzas.establece_Bonus(500)); System.out.println(misEmpleados[3].dame_Nombre() + " tiene un bonus de: " + misEmpleados[3].establece_Bonus(200)); y la salida es: El miembro de la dirección ha tomado la decisión de: Dar más dias de vacaciones a los empleados El jefe Maria Id:6 tiene un bonus de: 4000.0 Carlos Id:3 tiene un bonus de: 1700.0 Nombre: Paco Id:4. Sueldo 26250.0 Fecha de Alta: Sun Sep 25 00:00:00 AST 2005 Nombre: Ana Id:2. Sueldo 31500.0 Fecha de Alta: Fri Jul 07 00:00:00 AST 2000 Nombre: Antonio Id:5. Sueldo 49875.0 Fecha de Alta: Mon Nov 09 00:00:00 AST 2009 Nombre: Carlos Id:3. Sueldo 52500.0 Fecha de Alta: Thu Jun 15 00:00:00 AST 1995 Nombre: Juan Id:1. Sueldo 60320.0 Fecha de Alta: Mon Sep 25 00:00:00 AST 2006 Nombre: Maria Id:6. Sueldo 154750.0 Fecha de Alta: Wed May 26 00:00:00 AST 1999
Buenos días profesor, revisando el código note que al comentar la linea Arrays.sort(misempleados) el código funcionó debidamente, pero note que la salida de los id de empleados no sale ordenada de menor a mayor. De antemano muchas gracias por la ayuda. 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); jefe_RRHH.establece_incentivo(2570); Empleado[] misEmpleados=new Empleado[6]; misEmpleados[0]=new Empleado("Ana", 30000, 2000, 07, 07); misEmpleados[1]=new Empleado("Carlos", 50000, 1995, 06, 15); misEmpleados[2]=new Empleado("Paco", 25000, 2005, 9, 25); misEmpleados[3]=new Empleado("Antonio", 47500, 2009, 11, 9); misEmpleados[4]=jefe_RRHH;// POLIMORFISMO EN ACCION. PRINCIPIO DE SUSTITUCION misEmpleados[5]=new Jefatura("Maria", 95000, 1999, 05, 26); Jefatura jefa_Finanzas=(Jefatura) misEmpleados[5];// CASTING jefa_Finanzas.establece_incentivo(55000);// CASTING System.out.println(jefa_Finanzas.tomar_Decisiones ("Dar más dias de vacaciones a los empleados")); jefa_Finanzas.establece_Bonus(500); System.out.println("El jefe " + jefa_Finanzas.dame_Nombre() + " tiene un bonus de: " + jefa_Finanzas.establece_Bonus(500)); System.out.println(misEmpleados[3].dame_Nombre() + " tiene un bonus de: " + misEmpleados[3].establece_Bonus(200));
for(Empleado e:misEmpleados){ e.Sube_Sueldo(5); } for(Empleado e:misEmpleados){ System.out.println("Nombre: " + e.dame_Nombre() + ". Sueldo " + e.dame_Sueldo() + " Fecha de Alta: " + e.dame_Fecha_Contrato()); } }// CIERRA METODO main }// CIERRA CLASE Uso_Empleado class Empleado implements Comparable, Trabajadores { public Empleado(String nom, double sue, int agno, int mes, int dia){// CONSTRUCTOR nombre=nom; sueldo=sue; GregorianCalendar calendario=new GregorianCalendar(agno, mes-1, dia); alta_Contrato=calendario.getTime(); ++idSiguiente; id=idSiguiente;
}// CIERRA CONSTRUCTOR Empleado public double establece_Bonus(double gratificaciones){ return Trabajadores.bonus_Base+gratificaciones; } public Empleado(String nom){// SEGUNDO CONSTRUCTOR (SOBRECARGA DE CONSTRUCTORES DENTRO DE UNA MISMA CLASE this(nom, 30000, 2000, 01, 01); } public String dame_Nombre(){// GETTER return nombre + " Id:" + id; } public double dame_Sueldo(){// GETTER return sueldo; } public Date dame_Fecha_Contrato(){// GETTER return alta_Contrato; } public void Sube_Sueldo(double porcentaje){// SETTER double aumento=sueldo*porcentaje/100; sueldo+=aumento; } public int compareTo(Object miObjeto){ Empleado otroEmpleado=(Empleado) miObjeto; if(this.sueldootroEmpleado.sueldo){ return 1; } return 0; } private String nombre; private double sueldo; private Date alta_Contrato; private static int idSiguiente; private int id; }// CIERRA CLASE Empleado class Jefatura extends Empleado implements Jefes{ public Jefatura(String nom, double sue, int agno, int mes, int dia){ // CONSTRUCTOR super(nom, sue, agno, mes, dia); } public String tomar_Decisiones(String decision){ return "El miembro de la dirección ha tomado la decisión de: " + decision; } public double establece_Bonus(double gratificaciones){ double prima=2000; return Trabajadores.bonus_Base+gratificaciones+prima; } public void establece_incentivo(double b){ // SETTER incentivo=b; } public double dame_Sueldo(){ double sueldo_Jefe=super.dame_Sueldo(); return sueldo_Jefe+incentivo; } private double incentivo; }// CIERRA CLASE Jefatura
A mi me tira eso en la clase Jefatura pero funciona todo bien digamos the type jefatura must implement the inherited abstract method jefe.tomar_decisiones
✅✅ ✅ ✅ ✅ 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. 💥💥💥
Yo inicie viendo de 5 a 7 vídeos por día, a un ritmo increíble, sin embargo cuando pase del vídeo 40 lo tome con calma, 1 o 2 vídeos al día con calma, inventar cualquier programa y practicar en el eclipse, soy de los que digo que la programación la practica hace al maestro.
Actualmente voy por este vídeo, tengo como meta convertirme en un programador profesional, y créanme este curso es de lo mejor que pueden conseguir. Cuando viaje a España me tocara al menos invitarle una cena a Juan por su EXCELENTE aporte.
Mas profesionales como tu en el mundo por favor !!!
Muchas gracias por tu comentario y por seguir mis vídeos. Java es una materia compleja y a medida que avances por el curso irá costando un poco más. Haces bien en tomarlo con calma. Tomo nota de la cena ;) Un cordial saludo!!
De hecho llevo toda esta semana sin ver mas vídeos, me invente varios retos donde pusiese en practica todo lo visto hasta el momento, como un inicio de sesión (agregar, consultar, eliminar, mostrar info) con todo validado como debe ser. Allí estoy usando arrays, herencia, getters, setters, while, if, refundiciones y otras cosas mas. Creo es importante DETENERSE al llegar al vídeo 50 y dedicar 1 o 2 semanas a desarrollar pequeños programas en los cuales sientas estas preparado para seguir adelante, no se que contenido venga, pero estoy casi seguro que ahora si viene lo bueno. Saludos desde Santiago de Chile, un Venezolano muy agradecido con tu transferencia de conocimientos.
Buena idea, me la tomare prestada :).
Ya somos varios bastante agradecidos por tus conocimientos. Y lo transmites a todos. Eres una excelente persona, y tienes mucha metodología explicando. Simplemente me encanta y cada dia, quiero aprender más. Haces que la programación Java se vea algo medianamente manejable, me gusta tu motivación con nosotros. Gracias totales
Para ser profesional es importante ir a la facultad. La universidad te va a dar un marco, un nivel de comprensión tal que te va a permitir aprender cualquier cosa de manera sencilla. No por nada la gente invierte 5 años o mas en una carrera universitaria.
un consejo para todos los que ven el curso, llevenlo con calma me paso que como ya casi llegaba a swing me dio ansiedad vi los videos del 50 al 55 con ansias y sin tomar apuntes y haciendo las practicas en netabeans de forma casi automatica sin estar consiente de lo que hacia y me vi obligado a devolverme, ahora voy con calma y tomando apuntes de los mas importamte y haciendo el codigo paso a paso para entenderlo y ya veo la luz
Las prisas nunca son buenas. Y menos aún para aprender a programar. Buen consejo. Un saludo!!
Ja ja me paso igual
x2
justo lo que tu escribiste, asi ando ahorita jajaja :c
Eres un excelente profesor!. Como dijo alguien por ahi, ahora miro a Java con otros ojos!
Año 2020 y seguis haciendo ver la luz a futuros programadores como yo, estudio la carrera de java developer, y no tengo dudas de que mis profesores son grandes programadores, y muy exitosos y apasionados, pero creo que no tienen el don que tenes vos, y el don de la enseñanza y transmitir esas ganas e inspiracion, desde Argentina te envio un abrazo, y muchas gracias por este excelente curso
¿En que país y que lugar dan carrera de Java developer? - Se las certificaciones de Oracle pero nunca he escuchado una carrera.
@@TheMaverickjc29 soy de Argentina, y estudiaba en un instituto llamado Educación It, no es una carrera que se dé en facultad. Si no mas bien, que está conformada por multiples cursos. Entre los que estaban: Java de 0 a avanzado, java web, java spring, webservices, html, css, javascript, react js, angular, bases de datos, hibernate, spring, git, docker, y herramientas de automatizacion entre otros.
@@guillermorivadeneira385 Que bien, aunque no sea de universidad, se escucha mejor que una - ya que al fin y al cabo la U va a estar siempre atrasada, esa carrera esta excelente xq es tope de linea, algo que en una U muy difícil se vea.
Excelente.... Juan eres un mago, lei esto en un libro.... ( y quede ???#$%@##), el mismo tema lo explicas y se entiende, claro tiene su grado de dificultad....
Gracias
Muchas gracias, maestro, no hay manera de pagarle todo ese gran regalo al mundo que usted ha brindado. Sus habilidades de enseñanza, tiempo y dedicación. Mil Gracias y más.
Por lo que veo con el número de visualizaciones que baja mucho parece que muchas personas no fueron capaces de continuar. Daros ánimos a todos los que como yo han llegado aquí y a confiar en pildorasinformaticas para seguir aprendiendo.
Explicación nivel leyenda. Gracias!
Gracias a ti por el comentario. Un saludo!!
Recibe un afectuoso saludo, y muchas felicitaciones por este tutorial .
Yo veo a esto de las interfaces como cuando aprendes a manejar un auto, no se ve para que 5 velocidades si al principio no se usa
nada mas que hasta la segunda velocidad. Después de tener experiencia en manejar te das cuenta que el auto devería de tener mas de 5 velocidades, eso lo da la experiencia y el tiempo
Un gran maestro. Ojala Dios te dé muchos años mas de vida
Gracias y saludos desde Mexico profesor Juan, agradezco el interes que pone en cada video y como hace ver tan facil el codigo, retomando el curso ya que lo habia dejado. Ahora con mas paciencia y dedicacion, muchas gracias.
Desde Colombia, Un saludo a Juan Diaz, tanto tiempo esperando aprender a programar y aparecio mi angel de la guarda en la programacion orientada a objetos, que me dio toda la logica de programacion, que necesitaba, cuando pase por España espero conocerlo en personal. Un abrazo.
Grandes explicaciones Pildorasinformaticas !!!.
Aqui seguimos avanzando poco a poco.
Excelente curso muy bien maestro muchas gracias. Me extraña que apenas en el video 51 de 276 sólo haya 83 mil vistas en este momento, cuando en el primer video hay ya cerca de 2 millones de vistas, ánimos no se rindan peor sería que no estuviera este curso. Saludos maestro Juan.
Fenomenal vídeo y explicación.
Felicidades por el gran trabajo.
Muchísimas gracias Juan, me quito el sombrero por todo el trabajo que haces y lo bien que lo explicas y aplicas.
He aprendido bastante más en 2 semanas de videos que en 6 meses en clases jaja
Un saludo!
muy buen tutorial, este curso de java es el mejor
Cada vez mas complicao (!sigo con las herencias¡), cada vez mas interesante.....voy a necesitar todo el mes de Agosto y repasarlo todo para septiembre como en el colegio. (Me quedo sin playa ja,ja)
Un saludo Juan
Un saludo !! Pero tómate un descanso hombre!!
#gracias pildorasinformaticas, estamos avanzando...
+Anonymous Afrojack Avanti!!!
Genial , vamos avanzando a paso firme y con el libro de java, hago ejercicio por tema!
Hola compañero +Phil lip disculpa una pregunta ¿de que libro estas repasando los ejercicios? saludos
como programar en java del libro de Deitel... no recuerdo que edicion es, hay uno en la red, revisa, asi te ayudas un monton
Gracias por la información. Salu2
Buenas (tardes, noches, días) saludos desde la República Dominicana
Hola Juan gracias por el vídeo excelente explicación.
Hola, muy buenos videos. La clase Jefatura al heredar de Empleado (que ya implementa Trabajadores), no necesitaria implementar Trabajadores, tambien solo podria sobreescribir el metodo.
Excelente curso. Aunque ahora mismo atascada en el error Jefes cannot be resolt to a type. Estoy utilizando Elicpse Kepler. Confio en resolverlo.
Seria interesante una lista de vídeos con retos de programación propuesto por usted, en los cuales utilicemos los temas dados, esto para fijar conocimientos, GRACIAS DE ANTEMANO
Sí, es mi intención ir planteando ejercicios para este curso. Es algo que ya me habéis dicho muchos de vosotros, el problema es que casi no tengo tiempo para subir vídeos y menos aún ejercicios. Pero lo haré. Un saludo!!
Me gustaria que hubieran ejercicios para poner en practica lo aprendido. Yo pagaria por ellos!
Buen ejemplo, gracias.
Esto de las interfaces y herencias me encanta, me recuerda a cuando configuraba plugins para servidores de minecraft y no tenia ni idea de programación, lo hacia gracias al documento que dejaban los programadores de cómo configurarlas jajajaj
Yo también soy configurador y ahora estoy estudiando para ser dev en el futuro jajaj
Profe muchisimas gracias por su valiosa enseñanza he aprendido un monton.. las clases son demasiado comprensibles tanto en los ejemplos teoricos como en la practica. Tengo una pregunta es validasr si puede tener un metodo en el que uds nos pueda generar el codigo.. un saludo desde Medellin Colombia y gracias por su valioso tiempo.
mostruo!!! mostruo!!! hoy 2021-feb-26 los modificadores public, abstract en JRE System Library Jdk-11.0.7 para la interfas obliga a ponerlos.
Disculpen la palabra. Pero que clase de "animales" son estas 4 personas que le dieron dislike a este vídeo? Esta explicación es lo más cercano a la perfección, en cuanto a explicar estos conceptos complejos de entender.
Excelente curso! Una pregunta estaba buscando la forma de tener desplegadas las pestañas de mi paquete en el Outline pero solo me muestra la pestaña que tengo visualizada actualmente, como hago para poder visualizar en el Outline las clases o interfaces que yo desee?
Gracias.
Buen video gracias profe
A mi me gustaría un curso de algoritmos en java :P
profe que buenos videos gracias ledoy portomarse el tiempo para realizar esto megustaria que subiera los video tutoriales para programar en c ,dado que conosco un poco pero se que con sugui y forma de enseñar los vacios que tengo se diciparan gracias
En un video mencionó que hay que llamar a super(). para que el método "realice su trabajo", además de lo que estableceremos en su momento ¿Qué trabajo realizaría si solo hemos declarado el prototipo, sin cuerpo y sin acciones? Gracias por compartir su conocimiento.
No se si entiendo del todo tu pregunta. Super() se utiliza para llamar al método de la clase padre. En el curso lo hemos utilizado numerosas ocasiones para llamar a métodos definidos en la API, así que habría que preguntar a los programadores de dichas clases de la API por el código de dichos métodos. Por ejemplo, el método paintComponents. Este método se encarga de dibujar en un frame y debemos llarmarlo con super() si queremos que nuestras clases dibujen en un Frame. El "cómo" está implementado el método paintComponents en la API habría que preguntárselo a quién lo hizo
Maestro, una pregunta: ¿Qué ventaja o qué razón hay para usar interfaces
para definir el bono y la toma decisiones, en lugar de simplemente
definir un método abstracto establece_bonus en la clase empleados (lo
cual la convertiría en una clase abstracta) y sobreescribirlo en las
clases empleados y jefatura como corresponda, y otro método (no
abstracto) toma_decisiones en la clase jefatura para la toma decisiones? ¿Funcionaría
igual?
Hola !! Si, funcionaría igual. Todo depende de lo que necesites porque si lo creas como me´todo abstracto en la clase Empleados ya estarías obligando a sobreescribirlo en todas las clases que hereden de Empleado. Tal vez es lo que necesite tu programa o tal vez no. Si no quieres tener la obligatoriedad de sobreescribir el método en todas las clases que hereden de Empleado entonces mejor una interfaz que puedes implementar a voluntad. Un saludo!!
pildorasinformaticas Muchas gracias.
disculpa, una pregunta al interfaces al implementarse en una clase no es heredada por la siguiente?
hay veces que parece que si y otras que no
o es opcional?
tio,, eres un crack! si tuvieras uno de programacion mathlab tambien me los viera todos como he hecho con java
Asombroso diseño de interfaces. Esta demasiado cool. Deberias hacer un curso de diseno de programacion o algo asi. Bueno como se llama eso de Diseno de programacion. Osea que todo quede tan perfecto en el codigo..? Gracias.
Creo que entiendo lo que dices pero yo tampoco se comos e llama. ¿Diseño optimizado? ¿Programación optimizada? No se...Un saludo!!
Perfecto...Gracias :)
Interfaces para no estar combinando mis metodos abstractos y constantes con mis clases?
Juan por que mi eclipse me marca error con el bonus_base. Esta todo bien y no se que pasará
Sin verlo es complicado que te pueda ayudar con este tipo de problemas....¿Qué error da concretamente?
Hola Profe! Disculpe que le haga otra consulta. En este ejemplo, hemos implementado la interfaz Trabajadores a la clase Empleados, lo cual me obliga a que la clase Empleado desarrolle el método de establece_bonus de la interfaz Trabajadores. Todo perfecto hasta ahí.
Como la clase Jefatura hereda de Empleados, me obliga también a establecer el método de la interfaz trabajadores a la clase Jefatura?
Mi pregunta se debe a que si una superclase hereda de una interfaz, es obligatorio que todas las subclases hereden si o si los métodos de la interfaz aplicada a la superclase?
Muchas gracias como siempre y saludos desde Nueva Zelanda (del otro lado del planeta) ajaja
Hola !! No, no es necesario que la subclase implemente los métodos de la interfaz. Gran envidia la que me das. Siempre he querido visitar Nueva Zelanda. La magia de Internet hace que de alguna forma parte de mi haya llegado hasta allí. Un saludo!!
Hola Profe!! Muchas gracias por su respuesta! Su canal es un verdadero sentimiento, pues nadie ha sido nunca tan claro en explicar todo este mundo nuevo, al menos para mi.
En verdad que hace un tiempo estoy en Nueva Zelanda, y por supuesto vivir acá es un verdadero placer! Su profesión (programador) es MUY buen paga aquí! Si le gusta el señor de los anillos aquí esta hobbiton y todos los grandes lugares donde se filmaron dichos sets, así que bienvenido cuando usted lo desee o cualquier info que necesite, a sus órdenes! Saludos grande
Hola Juan!! Primero felicitarte por tus videos, está todo muy bien explicado y nos sirve a muchos de gran ayuda. Segundo, te quería preguntar si podrías facilitar algún sitio donde se pueda acceder a este tipo de ejercicios para practicar, ya que yo voy haciendo lo mismo que tú en los videos pero me gustaría ponerme a prueba, a ver si soy capaz de hacer programas sencillos como este de los Empleados, por mi mismo, y saber en que cosas fallaría.
Un saludo y muchas gracias por todo!!
Hola !! Gracias por el comentario. No sabría decirte ahora mismo páginas donde acceder a ejercicios. Ni siquiera las he buscado. Pero estoy seguro de que si preguntas a google y buceas un poco por los resultados, encontrarás alguna página con ejercicios interesantes. Yo estoy trabajando para ir subiendo más ejercicios a mi web. Un saludo!!
@Javi conseguistes el sitio con lo que indicabas ? Si no propongo un grupo de Facebook en el cual como reto cada uno proponga un programa usando lo aprendido en X video (sencillo inicialmente) y todos compartir su código y asi ayudarnos mutuamente.
Hola, ¿tienes actualmente los ejercicios que te planteaste? Quisiera también lo mismo, ponerme a prueba, pero no se me ocurre nada para ponerme a resolver o problemas que pueda resolver hasta este vídeo. Me ayudarías mucho. Un saludo.
Hola Juan te hago una pregunta concreta, al implementar una interface en una clase tengo que sobreescribir todos los métodos de la interface, la pregunta es ¿ Tengo que hacerlo al igual con las constantes, tengo que implementarlas también si o si, o eso si lo puedo omitir al sobreescribir?
Pregunta rápida para pildoras o cualquier otro usuario que sepa la respuesta.
Has dicho que usando una Interface solo es posible generar variables constantes. ¿ Pero si deseas obligar a una clase a definir una variable concreta (por ejemplo una variable que almacene el valor de la gratificación para ser usada mas tarde), no hay forma de hacerlo ?
No le veo el sentido tener que crear una variable en una clase que implemente la interfaz. Simplemente lo que puedes hacer es un metodo en la interfaz del tipo y nombre de la variable y posteriormente ponerla en la clase que herede. Así, tendrás que definir la dicha variable.
Saludos, puede que me esté equivocando puesto que estoy empezando e intento leer y aprender. Gracias a este canal sinceramente estoy resolviendo mis dudas asi que agradezco a este maestro por sus ganas y su paciencia. Saludos desde Valencia
Buenas profe. Pregunta que me ha surgido. Hemos visto que si Jefes hereda de Trabajadores, aquella clase que implemente Jefes se verá obligado a definir los métodos de ambas interfaces. Si Empleados implementa también Trabajadores se da la circunstancia de que si en esta clase defino el método de Trabajadores, en la clase Jefatura, a pesar de que implementa de la interfaz Jefes, ya no me obliga como lo hacía antes a definir el método setBonus. ¿Por qué se da esta situación? ¿Es porque Jefatura hereda de Empleados y por lo tanto hereda el método?
Si esto es así, y yo quiero que sea obligatorio definir un método setBonus distinto en Jefatura, ¿cómo se podría hacer? Porque en este caso entiendo que puedo utilizar el método setBonus heredado de Empleados y sí, puedo sobreescribirlo pero no estoy obligado a hacerlo.
Un saludo.
"Si Empleados implementa también Trabajadores se da la circunstancia de que si en esta clase defino el método de Trabajadores, en la clase Jefatura, a pesar de que implementa de la interfaz Jefes, ya no me obliga como lo hacía antes a definir el método setBonus. ¿Por qué se da esta situación? "
Respuesta: porque ya está definido. Lo has heredado de Empleados (Jefatura hereda de Empleados)
"¿Es porque Jefatura hereda de Empleados y por lo tanto hereda el método? "
Respuesta: Correcto
"Si esto es así, y yo quiero que sea obligatorio definir un método setBonus distinto en Jefatura, ¿cómo se podría hacer?"
Respuesta: En ese caso no queda más remedio que definir una tercer interfaz con el método setBonus y que Jefatura implemente esa nueva interfaz.
Un saludo!
Perfecto. Todo aclarado. ¡Muchas gracias!
pero solo estaría obligado a q de implemente en jefatura y que pasaría con empleado? y si primero lo implemento en empleado y no en jefatura? no abría error en la subclase jefatura. no se si se entiende
Ey PildorasInformaticas como ves usar IntelliJ IDEA 2017??
Hola, ¿cómo os va?
Me estoy encontrando con que, tras definir todo el árbol de interfaces y clases, o sea, haciendo que la interfaz Jefes herede de la interfaz Trabajadores y luego implementando la interfaz Trabajadores en la clase Empleado y la interfaz Jefes en la clase Jefatura, que a su vez hereda de la clase Empleado, de esta manera el IDE no me obliga a sobrescribir el método "establece_bonus" en la clase Jefatura, si no que simplemente lo hereda directamente de la super clase (Empleados). Que luego se puede sobrescribir, por supuesto, pero sería una opción hacerlo y no una imposición.
¿Qué se me está escapando? Agradezco cualquier tipo de ayuda. :D
Puede que en el futuro, cuando tenga más conocimientos y experiencia llegue a otras conclusiones. Pero a día de hoy, bajo mi inexperiencia y desconocimiento actual, he llegado a la conclusión de que, mediante esta jerarquía, no podemos obligar a sobrescribir el método en la clase Jefatura porque lo va a a heredar directamente de la superclase. Como alternativa se me ocurre comentar el método dejando constancia de que ha de ser sobrescrito en la subclase. También creo que se podría hacer, siempre que la subclase Jefatura ya esté creada, sobrescribir en ella el método indicando en un comentario que debe ser desarrollado en la subclase y lanzando una excepción que haga que no se pueda utilizar el método de la clase Empleado:
@Override
public double establece_bonus(double gratificacion) {
// Este método debe ser sobrescrito
throw new UnsupportedOperationException("Este método debe ser sobrescrito y desarrollado específicamente para los jefes");
}
por que cuando pongo bonus_base en la clase jefatura funciona igual sin poner trabajadores.bonus_base?? hay que poner igual la clase interna por mas que funciones sin ponerlo en el return
public double establece_bonus(double gratificaciones) {
double prima= 2000;
return bonus_base+prima+gratificaciones;
}
Tengo la misma duda justo ahora. ¿Llegaste a alguna conclusión? La mía, desde el desconocimiento, es que con el paso de los años desde que se desarrolló el video, tal vez se haya desarrollado algo en las nuevas versiones de java que permita utilizar la constante definida e inicializada en la interfaz, sin necesidad de referenciar dicha interfaz. Será capaz de sobreentender que proviene de ahí. Pero no sé, tal como digo, es una conclusión hecha desde la ignorancia, por lo que seguramente esté equivocada.
Yo estoy usando el IDE de NetBens y siempre me pide que use el @Override para sobrescribir los métodos que se implementan o que se heredan ya sea de una interfaz o de una clase abstracta, mi pregunta es ¿No es necesario usar esa palabra reservada?, ya que pienso que me pide por la sintaxis, o ¿Porqué no pide eclipse que sea añadido el @Override?. Disculpen resién estoy aprendiendo y quisiera saber si es importante o no esa palabra. Gracias y saludos del 2019.
he seguido todo el curso con el netbeans 8, y lo de override aparece como el mensajito de alerta para agregar dicho comando que lo único que hace es resaltar más el método que esta sobrescribiendo perteneciente a una interface, una clase padre, o una clase abstracta de la cual esta heredando. Con eso es más resaltable para el programador encontrar dichos métodos en el código de la clase y además te cambia el símbolo de alerta por un pequeño circulito vede con una (i) en la cual te da un acceso directo a la clase que contiene al método que se esta sobrescribiendo. Si lo dejas tal y como esta en este video sin usar override igual funciona, si aceptas la sugerencia de netbeans tampoco altera el funcionamiento. No se si alguien mas conoce alguna otra diferencia que pueda ocasionar agregar el codigo @override sugererido por netbeans.
yo en lo personal prefiero aceptar la sugerencia del netbeans y permitirle que me agregue el override para asi tener ese acceso directo a la clase que contiene el metodo que estoy sobrescribiendo y viceversa
Si Empleado ya implementa la interfaz Trabajadores y Jefatura hereda de Empleado, ¿no debería heredar también el método establece_bonus y no ser obligatorio desarrollarlo en Jefatura?
Hola !! Claro que si. Y de hecho lo hereda. Pero si te fijas, lo que hacemos en la clase Jefatura es sobreescribirlo. ¿Por qué? Porque en este programa no es lo mismo el bonus que se la da a un Empleado que el bonus a un Jefe.
Método establece_bonus de Empleado:
public double establece_bonus(double gratificacion){
return Trabajadores.bonus_base+gratificacion;
}
Método establece_bonus de Jefatura:
public double establece_bonus(double gratificacion){
double prima=2000;
return Trabajadores.bonus_base+gratificacion+prima;
}
Si te fijas son diferentes y el método de Jefatura sobreescribe al que hereda de Empleado y además así lo indica Eclipse en el margen izquierdo con el correspondiente icono del triángulo verde.
Esto es precisamente lo que ya vimos en el curso de sobreescritura de métodos.
Además precisamente este hecho que tu comentas marca el diseño de la herencia y el uso de interfaces que explicábamos en estos vídeos, ya que la clase Empleado implementa la interfaz propia creada por nosotros "Trabajadores" cuyo cometido es marcar el diseño de la herencia.
package poo;
public interface Trabajadores {
double establece_bonus(double gratificacion);
double bonus_base=1500;
}
Un saludo
+pildorasinformaticas buenas, una duda con respecto a lo que dice francisco: yo veo que de alguna manera Jefatura tiene dos formas de heredar el metodo establece_bonus: primero porque hereda los me;todos de la superclase, pero tambie;n porque hereda de la interface Trabajadores por implementar la interface Jefes que hereda de esta. la diferencia sería que en el primer caso Jefatura no se ve obligada a desarrollar el metodo , y en el segundo si. estoy muy errado?? saludos!!
Ya casi no recuerdo lo que hice en este vídeo, pero creo que si, que estás en lo correcto. Si Jefatura no implementa interfaz alguna, no está obligada a implementar ningún método. Un saludo
una pregunta profe , es necesario poner el "Trabajadores.bonus_base" ? por q yo lo puse directamente asi
"return bonus_base+gratificacion+prima;
" y me funciona normal sin el "Trabajadores" ,quisiera saber si afectar en algo o si es necesario el por que , la funcionabilidad de poner o no poner el nombre de la interfaz primero antes de la variable
Yo hice igual, por lo que leí en Google es que así la estas usando como variable en lugar de constante. Aunque sí tiene valor de la constante creada....¿que más da?
Entonces... Si la clase empleado implemena una interfaz con un metodo, la subclase jefatura, no tiene que sobrescribirlo, sino que lo hereda de empleado, a no ser que Jefatura tambien implemente la misma interfaz?
Exacto. Nada más que decir. Saludos
exacto
Muy buenas, lo primero quiero agradecer a pildorasinformaticas por su gran trabajo. Y ahora queria preguntar porque te aparece el ID del empleado ademas del nombre en las lineas de consola donde se muestra la sentencia de la interfaz Trabajadores al darle a los empleados el incentivo? A mi no me aparece y he seguido tus videos desde el principio al 100%.
Eres un crack te agradezco el curro que te pegas ojala hubieses sido mi profesor de programacion este año jaja.
Gracias por el comentario, me alegro de que te gusten los vídeos. Tengo más de 1.000 vídeos en el canal y no recuerdo que hice en este. Tendría que verlo de nuevo para recordar. Pero habrá diferente entre tu código y el mío si no nos sale lo mismo. Tal vez son instrucciones de un vídeo anterior... Te hablo de memoria pero creo que la impresión del ID, el nombre etc viene de vídeos anteriores. Mira a ver por ahí. Un saludo!
@@pildorasinformaticas Nada tranquilo era simple curiosidad por si me he perdido algo de todas formas como tengo que echarle un vistazo para ir apuntandome la teoria me fijare bien :)
Como la clase Jefatura hereda de empleados. Si ponemos la interzas en Empleado también debo correr el método de la interfaz en Jefatura?
no es obligatorio por que empleados ya sobre escribio la funcion que heredo y se la hereda de nuevo a jefatura pero le puedes sobre escribir de nuevo en jefatura si le quieres cambiar algo :)
@@jego3189 muchisimas gracias hermano
yo quiero desarrollar app para android no se si ya puedo ir tomando el curso de android studio por que aveces siento que no se como aplicar todo esto que eh aprendido hasta ahora ??
Te recomiendo que avances un poco más. Muchas veces me preguntan hasta que vídeo de este curso de Java recomiendo ver a los alumnos. Suelo recomendarles ver hasta el 200. Un saludo!
a por los 149 restantes
una consulta, porque creamos una interface y no simplemente se crea un método getter en la clase donde quiere que "empiece" esa cadena donde todas las clases que hereden una de otras
Porque si no creas una interface no obligas a que se use el método. Si el método lo creamos en la clase padre, en las clases hijas tenemos la opción de no utilizarlo si no queremos. Al crear el método en una interface "obligamos" a que el método se use en las clases que implementen la interface. Habrá veces que tu programa requiera esa obligatoriedad y otras veces no, depende de las necesidades del programa que estés creando. Un saludo!!
MUCHAS GRACIAS PROFESOR
tengo un problema cuando intento usar por ejemplo la funcion de tomar desicion no me aparece para usarla
Lo veoooooooooooooooo...jajajaj BUahhhh. Graciasssss
Ingeniero disculpe, no tiene usted contemplado hacer un curso de HTML desde 0, a como lo esta haciendo con java, ciento que seria muy demanadado
+Fermin Gomez Hola!! Sí, si que lo tengo contemplado y lo voy a hacer. Lo que no se es cuándo lo podré comenzar pero es seguro que lo habrá. Un saludo!!
PUEDE PASAR EL CODIGO PORFAVOR ya que no se ve el id y algo anda mal en el codigo
Tengo un problema hasta aquí. Tengo un importe de 105000 para el jefe Juan y 95000 para la jefa María. Cuando se ejecuta, no ordena correctamente el array, además no incrementa el 5% al incentivo asignado a María a pesar de estar declarado después de la asignación del incentivo. ¿Cuál es el error?
+Francisco José Lillo López Hola !! Copia y pega por aquí tu código y te podré ayudar mejor con esta duda. Un saludo
Es este:
package poo;
import java.util.*;
public class Uso_Empleado {
public static void main(String[] args) {
Jefatura jefeRRHH = new Jefatura ("EL JEFE SOY YO",105000, 2010, 04, 14);
jefeRRHH.estableceIncentivo(2570);
Empleado[] misEmpleados = new Empleado[6];
misEmpleados[0] = new Empleado ("Paco Gómez",30000, 1990, 12, 17);
misEmpleados[1] = new Empleado ("Ana López",50000, 1995, 6, 2);
misEmpleados[2] = new Empleado ("María Martín",25000, 2002, 3, 15);
misEmpleados[3] = new Empleado ("Antonio Fernández");
misEmpleados[4] = jefeRRHH; // POLIMORFISMO EN ACCION. PRINCIPIO DE SUSTITUCION
misEmpleados[5] = new Jefatura ("Dolores",95000, 2015, 11, 12);
Jefatura jefaFinanzas = (Jefatura) misEmpleados[5];
jefaFinanzas.estableceIncentivo(25000);
System.out.println(jefaFinanzas.tomarDecisiones("Dar más días de vacaciones a los empleados"));
for (Empleado e: misEmpleados) {
e.subeSueldo(5);
}
Arrays.sort(misEmpleados);
for (Empleado p: misEmpleados){
System.out.println("Nombre: " + p.dameMombre() +
" Sueldo: " + p.dameSueldo() + " Fecha de alta: " +
p.dameFechaContrato());
}
}
}
class Empleado implements Comparable {
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;
IdSiguiente++;
}
public Empleado(String nom) {
this(nom,28000, 2000, 01, 01);
}
public String dameMombre() { // METODO GETTER
return nombre + " Id=" + Id;
}
public double dameSueldo() { // METODO GETTER
return sueldo;
}
public Date dameFechaContrato() { // METODO GETTER
return altaContrato;
}
public void subeSueldo(double porcentaje) { // setter
double aumento = sueldo * porcentaje / 100;
sueldo += aumento;
}
public static String dameIdSiguiente() {
return "El IdSiguiente es=" + IdSiguiente;
}
public int compareTo(Object miObjeto) {
Empleado otroEmpleado = (Empleado) miObjeto;
if ( this.sueldo < otroEmpleado.sueldo) {
return -1;
}
if ( this.sueldo > otroEmpleado.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 implements Jefes {
public Jefatura(String nom, double sue, int agno, int mes, int dia){
super(nom, sue, agno, mes, dia);
}
public String tomarDecisiones(String decision) {
return "Un miembro de la direccion ha tomado la decisión de: " + decision;
}
public void estableceIncentivo(double b) {
incentivo = b;
}
public double dameSueldo() {
double sueldoJefe = super.dameSueldo();
return sueldoJefe + incentivo;
}
private double incentivo;
}
Cuando lo ejecuto con los mismos datos que tú, si se ordena correctamente, pero con estos datos, Dolores se ordena con más importe que el Jefe Soy yo como si no tuviera en cuenta el incentivo de 25000.
He copiado os datos de tus empleados en mi programa y ordena por sueldo bien. Como no tengo mucho tiempo para mirar línea a línea a ver suál es la diferencia entre tu código y el mío, te dejo este enlace para que descargues un archivo con mi código y lo mires tú: www.pildorasinformaticas.com/archivos/java/codigo.zip
Un saludo
Tengo una duda, a mi me en el resultado de establece_bonus del empleado me da 3700, es decir en vez de coger el de empleado, coge el de jefe, y me indica que establece_bonus de jefe sobreescribe al de empleado, alguna solucion?
vale ya lo he solucionado, era porque tenia la ordenacion por salario del array antes del bonus y entonces en la posicion que estaba poniendo el bonus era un jefe XD sorry, pd: muy buen trabajo me estas ayudando mucho :P
fijate en clase Empelado que interfas colocaste
No entendi mucho esta parte de que enseguida se lo agrega a sueldo, no se como se le agrega el bonus alguien que me diga Gracias
hola a todos,
una pregunta para elprofesor o para lso compañeros de clase:
cuando creas la interfaz Jefes,l y la pasas a la clase empleado, eso te obliga a crear el metodo tomar_decisiones. pero mi pregunta es: luego, como Jefes hereda de empleado, tambien hereda ese mismo metodo? o al ser una interfaz me obliga a crear el suyo propio con el mismo nombre?
porquerecuerdo que hemos dicho que al hacer una interfaz lo que hace es que obligas a esa clase y a todas las que hereden de ella, ( todas las subclases futuras), tendran que tener a la fuerza el metodo Tomar_decisiones. pero cada una tendra un metodo diferente? o al hacerlo en la clase "padre", ya los hijos la heredan de forma normal? porque entonces no tieen mucho sentido, ya que eso es lo normal, no? todos los hijos heredan los metodos del padre., del abuelo....
y si resulta que cada uno debe tener su propio metodo, siguiendo el ejemplo del profesor, cuando pones que la clase EMPLEADO implementa Jefes, hace un copy/pego del metodo que habiamos hecho, pero despues , siguiendo ese ejemplo, deberiamos crear otro metodo llamado Tomar_decisiones en la clase jefatura no? ( ya sea un metodo igual o diferente al de empleado)
es algo asi???
mil gracias y a estudiar!!!!
Hola !! Vamos a ello: "cuando creas la interfaz Jefes,l y la pasas a la clase empleado, eso te obliga a crear el metodo tomar_decisiones." Respuesta: Correcto!!
"pero mi pregunta es: luego, como Jefes hereda de empleado, tambien hereda ese mismo metodo?" Respuesta: Correcto.
"o al ser una interfaz me obliga a crear el suyo propio con el mismo nombre?" Respuesta: Si Jefes implementa la interfaz sí. Si no la implementa, no.
"porquerecuerdo que hemos dicho que al hacer una interfaz lo que hace es que obligas a esa clase y a todas las que hereden de ella, ( todas las subclases futuras), tendran que tener a la fuerza el metodo Tomar_decisiones. " Respuesta: La que implementa la interfaz estrá obligada a sobreescribir el método. Las que hereden de esta última lo tendrán por herencia pero no estarán obligadas a sobreescribir.
" o al hacerlo en la clase "padre", ya los hijos la heredan de forma normal?" Respuesta: Correcto
" porque entonces no tieen mucho sentido, ya que eso es lo normal, no? todos los hijos heredan los metodos del padre., del abuelo...." Respuesta: Aquí me pierdo con tu razonamiento. Lo siento
"y si resulta que cada uno debe tener su propio metodo, ..." Respuesta: Incorrecto. Solo la que implementa la interfaz. El resto lo heredan.
Resumiendo: El uso de interfaces se utiliza para marcar el diseño de la herencia. Una interfaz te OBLIGA a implementar un método (o varios, según sea la interfaz). La herencia sin interfaces no te obliga a implementar métodos. Recomiendo repasar cuidadosamente los vídeos dedicados a las interfaces y las clases abstractas. Se que es peor que una maldición gitana tener que ver de nuevo estos vídeos, pero es fundamental para entender estos temas tan importantes.
Un saludo!!
muchas gracias proffesor.
poco a poco voy viendo la luz..... maestro jedi.
me voy a repasar otra vez los videos ( aunque ya los he visto un par de veces) a ver si me aclaro.
yo pensaba que si a una clase, le ponias lo de: implements interfaz1;
eso obligaba a todas las subclases a tambien implementar esa interfaz del mismo modo. Vamos, como que se "arrastraba" esa obligacion a las subclases, pero veo que no.
segun tu me explicas, yo puedo tener
clase1 implementa interfaz1
y luego uns subclase de esa clase1:
clase2
pero resulta que clase2 NO ESTA OBLIGADA A NADA CON ESA INTERFAZ ??
yo pensaba que por webs, en clase2 debes poner tambien inplements interfaz1, pero veo que no. simplemente heredará los metodos correspondientes y punto.
de todos modos, me voy a ver los videos de clases abstractas de nuevo.
mil gracias
Alguien sabe por qué con los elementos del array misEmpleados[4] y misEmpleados[5] que sí son de la clase Jefatura (se puede comprobar haciendo:
for(int i = 0; i < misEmpleados.length; i++) {
System.out.println(i + ": " + misEmpleados[i].getClass());
})
no se puede hacer:
misEmpleados[4].tomar_decisiones("una decisión");
misEmpleados[5].tomar_decisiones("una decisión");
(ni con ningún método de la clase Jefatura)
pero en cambio sí funciona:
jefe_RRHH.tomar_decisiones("una decisión");
jefa_Finanzas.tomar_decisiones("una decisión");
Recuerdo que se había declarado (en este orden):
Jefatura jefe_RRHH = new Jefatura("Juan", 55000, 2006, 9, 25);
misEmpleados[4] = jefe_RRHH;
misEmpleados[5] = new Jefatura("María", 95000, 1999, 5, 26);
Jefatura jefa_Finanzas = (Jefatura) misEmpleados[5];
Rosa Mø hola no será que misempleados es de la clase empleados ? capaz por eso no sale nada de jefatura y solo con el nombreobjeto de jefatura sale
Tienes que devolver al video de refundicion de un objeto. recuerda que el vector o arreglo misEmpleados era del tipo Empleado y no del tipo Jefatura. Por lo que una vez que el objeto de tipo jefatura esta en el vector de objetos de tipo empleado no podrá usar un metodo de tipo jefatura a no ser que se utilice la refundicion para guardarlo en un objeto de tipo Jefatura (Doy la respuesta por si alguien mas tiene la misma duda, dado que esta pregunta tenia que haber sido respondida hace 2 años)
28/04/2020
una de 1500
que facil
PD: deberíamos usar la MODULARIZACIÓN, ¿VERDAD?
👀
Juan es a Java lo que Java a las plataformas: quien traduciría sin Java?, quien sin Juan?
Honestamente si me cuesta bastante, quizás sea falta de ver bien el video y tomarlo con calma pero si me cuesta bastante.. Saludos
Gracias por el curso, tengo una duda.
Las interfaces por convenio en proyectos grandes donde suelen definirse?
A) En un .java aparte dentro del paquete donde este la clase que lo implemente
B) En un .java dentro de otro paquete
C) En el mismo .java de la clase que implementa dicha interfaz
D) Todas las interfaces dentro de un mismo .java
E) Otro
Cuando veo que tienes la interfaz Jefes y la clase Jefatura se me antoja que la cantidad de .java que se muestran en el Package Explorer de eclipse, dentro del paquete donde nos encontramos crece muy rapido el número de archivos.
Viniendo de MEAN.JS que todo estaba superestructurado se me hace raro ver tantos archivos en una misma carpeta/paquete
Hola !! Yo casi siempre los he visto en el mismo archivo java de la clase que implementa la interfaz. El código de las interfaces no suele ser extenso (aún en proyectos grandes) y suele encontrarse al principio del archivo java de la clase. También he visto las interfaces en archivos independientes, pero menos.
De todas formas la experiencia que tengo yo en java con aplicaciones grandes siempre han sido un desastre. He trabajado en aplicaciones de la administración pública donde han metido mano muchas empresas-consultoras diferentes creando al final un código que era muy difícil de leer e interpretar. Le dan el contrato del proyecto a una empresa (ganado por concurso público), hace lo que le viene en gana con el código y que lo arregle el que venga después. Te quiero decir con todo esto que a lo mejor no soy el más indicado para deciros cómo organizar a la perfección el código en aplicaciones grandes.
Haré cursos en el futuro (pronto) sobre frameworks, donde hablaré de este tema. Un saludo!!
pildorasinformaticas Gracias de nuevo :)
No entiendo el como se implementa el "establecer_bonus" en la clase jefaturas, ¿por que la clase Jefatura se ve obligada a usar el metodo definido en la inteface trabajadores?
si solo esta usando la interface Jefe y esta hereda de la interface Trabajadores
ya me volvi loco xD
ahi dejo el uml, prntscr.com/ezbchx
Hola según lo que entendi precisamente como jefes hereda de trabajadores jefatura está obligada a usar el método de trabajadores
Buenas tardes desde Venezuela, le escribo porque siguiendo el ejemplo a la hora de imprimir en consola, me imprime Carlos en vez de Antonio..... Le envío mi código para ver si me puede llevar al error que estoy cometiendo. 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);
jefe_RRHH.establece_incentivo(2570);
Empleado[] misEmpleados=new Empleado[6];
misEmpleados[0]=new Empleado("Ana", 30000, 2000, 07, 07);
misEmpleados[1]=new Empleado("Carlos", 50000, 1995, 06, 15);
misEmpleados[2]=new Empleado("Paco", 25000, 2005, 9, 25);
misEmpleados[3]=new Empleado("Antonio", 47500, 2009, 11, 9);
misEmpleados[4]=jefe_RRHH;// POLIMORFISMO EN ACCION. PRINCIPIO DE SUSTITUCION
misEmpleados[5]=new Jefatura("Maria", 95000, 1999, 05, 26);
Jefatura jefa_Finanzas=(Jefatura) misEmpleados[5];// CASTING
jefa_Finanzas.establece_incentivo(55000);// CASTING
Arrays.sort(misEmpleados);
System.out.println(jefa_Finanzas.tomar_Decisiones
("Dar más dias de vacaciones a los empleados"));
jefa_Finanzas.establece_Bonus(500);
System.out.println("El jefe " + jefa_Finanzas.dame_Nombre() +
" tiene un bonus de: " + jefa_Finanzas.establece_Bonus(500));
System.out.println(misEmpleados[3].dame_Nombre() + " tiene un bonus de: " +
misEmpleados[3].establece_Bonus(200));
y la salida es:
El miembro de la dirección ha tomado la decisión de: Dar más dias de vacaciones a los empleados
El jefe Maria Id:6 tiene un bonus de: 4000.0
Carlos Id:3 tiene un bonus de: 1700.0
Nombre: Paco Id:4. Sueldo 26250.0 Fecha de Alta: Sun Sep 25 00:00:00 AST 2005
Nombre: Ana Id:2. Sueldo 31500.0 Fecha de Alta: Fri Jul 07 00:00:00 AST 2000
Nombre: Antonio Id:5. Sueldo 49875.0 Fecha de Alta: Mon Nov 09 00:00:00 AST 2009
Nombre: Carlos Id:3. Sueldo 52500.0 Fecha de Alta: Thu Jun 15 00:00:00 AST 1995
Nombre: Juan Id:1. Sueldo 60320.0 Fecha de Alta: Mon Sep 25 00:00:00 AST 2006
Nombre: Maria Id:6. Sueldo 154750.0 Fecha de Alta: Wed May 26 00:00:00 AST 1999
Hola !! Necesito ver también el resto del código. Copia y pega todo el código del programa (todas las clases) para que te pueda ayudar. Un saludo!!
Buenos días profesor, revisando el código note que al comentar la linea Arrays.sort(misempleados) el código funcionó debidamente, pero note que la salida de los id de empleados no sale ordenada de menor a mayor. De antemano muchas gracias por la ayuda.
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);
jefe_RRHH.establece_incentivo(2570);
Empleado[] misEmpleados=new Empleado[6];
misEmpleados[0]=new Empleado("Ana", 30000, 2000, 07, 07);
misEmpleados[1]=new Empleado("Carlos", 50000, 1995, 06, 15);
misEmpleados[2]=new Empleado("Paco", 25000, 2005, 9, 25);
misEmpleados[3]=new Empleado("Antonio", 47500, 2009, 11, 9);
misEmpleados[4]=jefe_RRHH;// POLIMORFISMO EN ACCION. PRINCIPIO DE SUSTITUCION
misEmpleados[5]=new Jefatura("Maria", 95000, 1999, 05, 26);
Jefatura jefa_Finanzas=(Jefatura) misEmpleados[5];// CASTING
jefa_Finanzas.establece_incentivo(55000);// CASTING
System.out.println(jefa_Finanzas.tomar_Decisiones
("Dar más dias de vacaciones a los empleados"));
jefa_Finanzas.establece_Bonus(500);
System.out.println("El jefe " + jefa_Finanzas.dame_Nombre() +
" tiene un bonus de: " + jefa_Finanzas.establece_Bonus(500));
System.out.println(misEmpleados[3].dame_Nombre() + " tiene un bonus de: " +
misEmpleados[3].establece_Bonus(200));
for(Empleado e:misEmpleados){
e.Sube_Sueldo(5);
}
for(Empleado e:misEmpleados){
System.out.println("Nombre: " + e.dame_Nombre() + ". Sueldo " +
e.dame_Sueldo() + " Fecha de Alta: " + e.dame_Fecha_Contrato());
}
}// CIERRA METODO main
}// CIERRA CLASE Uso_Empleado
class Empleado implements Comparable, Trabajadores {
public Empleado(String nom, double sue, int agno, int mes, int dia){// CONSTRUCTOR
nombre=nom;
sueldo=sue;
GregorianCalendar calendario=new GregorianCalendar(agno, mes-1, dia);
alta_Contrato=calendario.getTime();
++idSiguiente;
id=idSiguiente;
}// CIERRA CONSTRUCTOR Empleado
public double establece_Bonus(double gratificaciones){
return Trabajadores.bonus_Base+gratificaciones;
}
public Empleado(String nom){// SEGUNDO CONSTRUCTOR (SOBRECARGA DE CONSTRUCTORES DENTRO DE UNA MISMA CLASE
this(nom, 30000, 2000, 01, 01);
}
public String dame_Nombre(){// GETTER
return nombre + " Id:" + id;
}
public double dame_Sueldo(){// GETTER
return sueldo;
}
public Date dame_Fecha_Contrato(){// GETTER
return alta_Contrato;
}
public void Sube_Sueldo(double porcentaje){// SETTER
double aumento=sueldo*porcentaje/100;
sueldo+=aumento;
}
public int compareTo(Object miObjeto){
Empleado otroEmpleado=(Empleado) miObjeto;
if(this.sueldootroEmpleado.sueldo){
return 1;
}
return 0;
}
private String nombre;
private double sueldo;
private Date alta_Contrato;
private static int idSiguiente;
private int id;
}// CIERRA CLASE Empleado
class Jefatura extends Empleado implements Jefes{
public Jefatura(String nom, double sue, int agno, int mes, int dia){ // CONSTRUCTOR
super(nom, sue, agno, mes, dia);
}
public String tomar_Decisiones(String decision){
return "El miembro de la dirección ha tomado la decisión de: " + decision;
}
public double establece_Bonus(double gratificaciones){
double prima=2000;
return Trabajadores.bonus_Base+gratificaciones+prima;
}
public void establece_incentivo(double b){ // SETTER
incentivo=b;
}
public double dame_Sueldo(){
double sueldo_Jefe=super.dame_Sueldo();
return sueldo_Jefe+incentivo;
}
private double incentivo;
}// CIERRA CLASE Jefatura
Joder, los jefes repartiéndose la pasa, así hay que bajar los sueldos a los trabajadores.
A mi me tira eso en la clase Jefatura pero funciona todo bien digamos
the type jefatura must implement the inherited abstract method jefe.tomar_decisiones
24/10/2020