✅✅ ✅ ✅ ✅ 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. 💥💥💥
Siguiendo adelante con el curso voy paso por paso anotando repasando viendo una y otra vez los videos, parece difícil pero de a poco voy comprendiendo y se hace cada vez mas fácil. Muchas Gracias por compartir tu conocimiento, el saber hace al conocimiento ...
Excelente curso amigo, realmente explicas mejor que muchos profesores. Estoy en el video 44 y estoy aprendiendo mucho de java, gracias por tu trabajo y te felicito.
Hola me llamo Ivan y me gustaria felicitarte por el gran trabajo que has hecho con estos videotutoriales , conozco un poco el lenguaje de java pero repaso viendo tus videos que son los mejores que he encontrado, muy completos, rapidos y de gran utilidad, no me canso de verlos porque aunque uno cree que sabe, cuanto mas veo mas me doy cuenta de que no se nada.. Enhorabuena por tu trabajo, no todo las personas pueden explicar cualquier tema de esta manera aunque lo intenten en sus canales.
estube investigando mucho porque tuve el error que posteriormente explicaste que tubieramos cuidado pero no lo vi hasta que me di por vencido y avance el video, Excelente trabajo te ganaste mi corazon
Es verdad Juan los últimos vídeos cuesta bastante pero he repasado algunos ejercicios anteriores y ya comienzas a tener una sensación de entender lo que esta haciendo creo que con estos temas de la herencia y polimorfismo entre otros lo entenderemos de igual modo.como siempre mis respetos y nos dejes solos.Gracias eres muy bueno..
Respecto del comentario final, si bien Programar y Java es una actividad y un lenguaje respectivamente complejos, afirmo que entendiendolos, lo que se quiera encarar en el futuro, va a resultar mas sencillo. Muchas gracias por compartir.
Hola Juan, muchísimas gracias por todo tu trabajo y dedicación con todos estos videos tutoriales. A mí, personalmente, me estás ayudando mucho. Estoy cursando estudios de programación y el centro que lo imparte deja mucho que desear con su docencia. Ojalá muchos docentes supieran explicar tan bien y de manera tan clara el temario y con las ganas que le pones. ¡Simplemente quería agradecerte y animarte por el esfuerzo que haces! Saludos!
Noviembre de 2024, estudiando un ciclo de desarrollo web y sin entender ni mierda de programación, el profesor ni explica, cree que lo hace bien pero no. Tiene huevos que gracias a este curso esté comprendiéndolo todo poco a poco y que me vayan saliendo las cosas después de llevar más de dos meses de clases. Mi profesor jamás ha hecho un ejercicio, poco a poco y desgranando cada cosa, como este gran docente que ha dedicado su tiempo gratuitamente para el bien de muchos. Gracias a usted voy a poder sacarme la asignatura y llegar a ser un gran programador. Muchísimas gracias!!! Que dios le bendiga y le de mucha salud.
como dijiste tengo que repasar un poco estos ultimos videos, y no me rindo, me dio animo cuando dijistes que la programacion es una de las ramas de la informatica mas complicada y que java es uno de los mas complejos, siendo mi primer lenguaje y empezando dede cero creo que no esta mal, gracias por el curso
El proceso normal para alguien que empieza desde 0 en programación es pelearse mucho con los conceptos, la sintaxis etc. Que cueste esfuerzo entender la programación es lo normal para aquellos que empiezan. Un saludo!!
Se 0 de programación. Ahora voy por acá y me sorprende lo que voy aprendiendo.. y voy a terminar este curso y seguir otro y otro... Y quizás sea mi trabajo ... Exelente... Desde Argentina
Mucho ánimo Rafale. Quién sabe... a lo mejor has dado con tu vocación. No te desanimes cuando las cosas se pongan más difíciles ya que incluso a veces, los más expertos se ven en problemas a la hora de programar. Un saludo!
Hola Juan, primero agradecerte todo tu esfuerzo. La verdad es que es el mejor curso de Java que he encontrado en la red. Ojalá tu metodología y buen hacer se expandieran a todas las áreas del conocimiento, ya que pienso que más del 90% de los docentes de este país aprenderían de tus clases, independientemente de la materia dada. Mis preguntas son las siguientes: 1. Minuto aprox 6:30 - Al hacer el casting "Jefatura jefa_finanzas=(Jefatura) misEmpleados[5];", comentas que se está creando un nuevo objeto jefa_finanzas. Lo que no entiendo es cómo siendo un nuevo objeto, estableciendo un incentivo en el mismo, a quién se le establece es a misEmpleados[5]. ¿Es por qué en realidad están referenciados al haber hecho el casting y si se modifica jefa_finanzas se modificará siempre misEmpleados[5]? 2. Minuto aprox 7:45 - El casting de misEmpleados[5] a Jefatura, ¿es solo posible porque fue creado como un objeto de Jefatura, y después introducido en un array de empleados?. Es decir, de alguna forma al crear un objeto de una subclase, y meterla en un array de su superclase, pierde sus propiedades de subclase, y para recuperarlas se necesita hacer el casting a la subclase de nuevo. ¿Es así?. Muchas gracias y perdona si no me he explicado correctamente.
+Isaac B Hola !! Gracias por el comentario. A ver si podemos aportar un poco de luz a tus dudas: 1. Todo viene por el principio de herencia "es-un" (explicado en algún vídeo del curso, pero no recuerdo en qué vídeo). Si el diseño de la herencia es correcto y en este caso lo es, podemos decir que todo Jefe es necesariamente un empleado. Es por esto por lo que podemos guardar en un objeto de tipo empleado a un jefe, algo que hacemos con Jefatura jefa_finanzas=(Jefatura) misEmpleados[5]. Una vez hecho esto, si modificas jefa_finanzas estarás modificando lo que hay almacenado en misEmpleados[5] ya que es la posición del array donde se almacena el objeto que modifico. No podríamos hacer lo contrario, es decir, almacenar un objeto de tipo Empleado en un array de tipo Jefatura porque un empleado no es necesariamente siempre un Jefe. 2. Al crear un objeto de la subclase y meterlo en un array de la superclase, este no pierde sus propiedades. El array es tan solo un almacén donde guardaremos el objeto jefatura_finanzas y este hecho no hará que pierda sus propiedades. Puedes probar a utilizar dichas propiedades en el código. Por ejemplo, creo recordar (no me hagas mucho caso. hace tiempo que grabé esto) que la clase Jefatura tenía un método propio que era tomar_decisiones() o algo así. Después de almacenar a jefa_finanzas en el array, si utilizas jefa_finanzas.tomar_decisiones() funcionará sin problemas, al igual que si utilizas algunas de sus propiedades. Espero haber aclarado algo. De todas formas, son conceptos complejos para alguien que se enfrenta por primera vez a la POO y se deben de repasar varias veces y practicar para entenderlos bien. No te preocupes si en una primera o segunda lectura no lo terminas de entender. Un saludo
Dios llevo varios videos de este señor y la verdad es que explica como los dioses ni steve jobs o el bill gates explican asi siga asi buen señor saludos
Estupenda la explicación de estos dos temas. Me pareció excelente la forma en la que has enlazado un tema con el otro. Ahí se nota que quien enseña realmente sabe. Saludos, y muchas gracias por este grandioso curso!
Vale... lo del final del video me ha tranquilizado, comentando sobre que este lenguaje es complejo. Ye que es que llegue a pensar que estaba perdiendo facultades cognitivas jeje.
@@pildorasinformaticas Uno de C y C++ profesor estaría muy ansioso de tomarlo me encantaría que hiciera uno de esos, que trate de todo como los árboles binarios, listas pilas colas ficheros etc. Woow usted lo haría interesante.
Maaaaaadre mía, con este video me has respondido la pregunta que te hice en el video anterior.......... ya le tengo una solución, pues voy a crear una condición para que todos los "estudiantes que son personas" se refundan, seguramente ahí podré guardarlos en el otro arreglo de tipo estudiante y manipular sus datos...... gracias profe!! :D
Hola! Me gustaria saber si es posible acceder al codigo fuente de las clases que pertenecen a la api de java. Por ejemplo si quiero ver como esta construida internamente la clase String o la clase math. Saludos!
Buenas tardes juan como estas? primero que nada muchas gracias por tu conocimiento y por tu dedicación. mi duda es la siguiente en el min 16:45 hablas de evitar que otra persona use el método dameSueldo() con la palabra reservada final, de que manera evitas que esa persona navegue por el código busque el método y simplemente quite la palabra "final" aclaro que voy por este video no se si mas adelante hablas sobre eso pero es una duda que me surgió y me gustaría aclararla se que debes estar en mil cosas cuando tengas tiempo me aclaras la dudo o algún compañero que conozca la respuesta se lo agradecería. saludos y bendiciones
Por si alguien se perdió con los codigos aqui están (sin las modificaciones de este video): package poo; import java.util.*; public class Uso_Empleado { public static void main(String[] args) { Jefatura jefe_RRHH=new Jefatura("Juan", 55000, 2006, 9, 25); jefe_RRHH.estableceIncentivo(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; misEmpleados[5] = new Jefatura("Maria", 95000, 1999, 5, 26);
} } class Empleado{ public Empleado(String nom, double sue, int agno, int mes, int dia){ nombre = nom; sueldo = sue; GregorianCalendar calendario = new GregorianCalendar(agno, mes-1, dia); ++IdSiguiente; Id = IdSiguiente; }
public Empleado(String nom){ this(nom, 30000, 2000, 01, 01); }
public String dameNombre(){ return nombre + " Id: " + Id; }
public double dameSueldo(){ //getter return sueldo; }
public Date dameFechaContrato(){ return altaContrato; }
public void subeSueldo(double porcentaje){ double aumento = sueldo*porcentaje/100; sueldo += aumento; } private String nombre; private double sueldo; private Date altaContrato; private static int IdSiguiente; private int Id; } class Jefatura extends Empleado{ public Jefatura(String nom, double sue, int agno, int mes, int dia){ super(nom, sue, agno, mes, dia); } public void estableceIncentivo(double b){ incentivo = b; }
Misma duda que Señor Punki: Entre el 5:407:00 cuando casteas misEmpleados[5] lo que haces realmente es crear una variable NUEVA de tipo Jefatura llamada jefa_finanzas y a esta variable es a la que le creas el incentivo y luego sale reflejado cuando haces el print de misEmpleados[5]. ¿Con esto podríamos decir que la variable creada nueva jefa_finanzas es una variable totalmente nueva y que se comporta distinto a misEmpleados[5] pero que al ser el "mismo objeto" están enlazados y lo que le haces a uno se modifica en el otro?.....entendido perfectamente, que haces el Cast para poder usar el método de clase jefatura. Pero mi duda era que al usar el método de incentivo con el objeto tipo jefatura le ha afectado al objeto de tipo empleado misEnpleados[5] no? Osea que lo que le hagas a esa nueva variable jefatura le afectará a la de tipo empleado. Vamos que si al objeto empleado le cambias el nombre por pepe si haces print de misEmpleados[5] saldrá pepe y no María cómo tenía antes. En definitiva que aunque sean distintas variables el objeto es el mismo y lo que cambies en una cambiará en la otra ¿Lo he entendido bien?..... La respuesta de Ch ch me es vaga (Es un puntero oculto)
Hola Juan. Este es el primer comentario que dejo en tu canal. Muchísimas gracias por tu labor. Estoy aprendiendo mucho y la verdad es que me hace mucha ilusión hacer este curso, y también el que estás haciendo para programar en Android. Una pregunta: En el minuto 6 del vídeo muestras un ejemplo de casting en la línea: Jefatura jefa_Finanzas=(Jefatura) misEmpleados[5]; Entiendo que lo que se almacena en jefa_Finanzas no es el objeto que hay en la posición 5 de misEmpleados, sino la REFERENCIA a ese objeto, porque después usamos jefa_Finanzas para modificar el objeto que hay en el Array. Por tanto la asignación que hacemos, aunque tiene la misma sintaxis que cuando usamos variables de tipos primitivos (como int), no funciona igual con los objetos, no estamos haciendo una copia. Si esto es así, ¿Cómo podríamos hacer una copia real de un objeto?, ¿Cómo obtener un objeto nuevo con el mismo contenido que otro objeto, para poder modificarlo independientemente?. Muchas gracias de nuevo y un saludo!
+Samuel G Hola !! Gracias por tu comentario y por seguir mis vídeos con tanto interés. Efectivamente estás en lo cierto. La forma de clonar/duplicar objetos sería haciendo uso de la interfaz Clonable. Mira este enlace a ver si te sirva de guía: www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clonico/clonico1.htm Un saludo
+pildorasinformaticas Muchas gracias por tu respuesta y por la rapidez. Veo en el enlace que me indicas que para copiar objetos hay que utilizar una interfaz. Sigo con el curso y así aprenderé cómo funcionan. Gracias de nuevo por esta gran labor que haces, que permite que muchas personas como yo podamos disfrutar de estos cursos completamente gratis. Son lo mejor que he encontrado, y te aseguro que he buscado mucho antes de descubrirlos. Espero que puedas seguir haciéndolo como hasta ahora y por mucho tiempo. Ánimo!!
2 роки тому+1
Samuel G Hola, se que este comentario fue hace 6 años pero acabo de empezar este curso y no comprendía bien que pasaba en esa linea. Gracias.
@@pildorasinformaticas Lo acabo de probar. efectivamente, se obtiene una copia, a la q puedes modificar sin alterar la original. Muchas Gracias. Vamos Avanzado. muchas gracias Sensei Juan.
Pregunta, un caso practico en el cual debiéramos usar final para evitar que otras clases hereden de mi clase. pues no me queda muy clara su utilidad. de antemanos muchas gracias y reitero lo excelente profesor que eres y la calidad de curso que haces. muchas gracias.
Hola!! Todo depende de cómo quieres que funcione el diseño de tu herencia. Por ejemplo: imagina que creas un programa que representa la jerarquía de una empresa con 5 clases que heredan unas de otras en el siguiente orden: ConsejeroDelegado - Director - JefeArea - JefeSeccion - Empleado La clase ConsejeroDelegado se encuentra en la cúspide de la jerarquía y Empleado en la parte más baja. En la empresa para la que estamos haciendo el programa no hay nadie por encima del Consejero Delegado ni nadie por debajo del Empleado. La pregunta que surge en este caso es: ¿Tiene sentido que venga un programador detrás de mi a continuar elaborando el programa y que construya una clase que herede de Empleado? La respuesta es no ya que no hay nadie por debajo de un Empleado en esta empresa. Por este motivo, yo como programador que estoy haciendo el programa, declaro la clase Empleado como final y de esta forma impido la herencia directa de ella. Así, si viene otro programador e intenta por error o malintencionadamente crear una clase que herede de Empleado no podrá. Esto es tan solo un ejemplo de los millones que pueden darse a la hora de elaborar un programa. Un saludo
buenas profe, una pregunta, cuando crea el objeto jefa_finanzas y le asigna el empleado[5] de tipo Jefatura, esta no seria una nueva variable, los cambios que haga en ella no deberían quedar reflejados en el objeto empleado[5], quiere decir que cada vez que haga refundicion, todos los cambios que haga en esta variable quedaran reflejados en la variable original?. gracias por su atención Profe
Juan tengo una pregunta, ojala la puedas ver! Pero hasta hace un tiempo me dijeron que si se puede evitar el casting con el polimorfismo, seria muchisimo mejor! Esto por que es asi?
hola Juan buenas Mirando el video 44 del curso Java, cuando haces el casting de misEmpleados[5], tengo una duda: jefatura jefa_Finanzas=(jefatura)misEmpleados[5] -->ok, haces el casting para que el objeto misEmpleados[5] jefa_Finanzas.estableceIncentivo(55000)--> ok, se usa el metodo No obstante en este punto, no sé porque el valor del incentivo llega a misEmpleados[5]... de momento se encontraria en el objeto jefa_Finanzas, ya que no habria una asignación del tipo misEmpleados[5]=jefa_Finanzas; (..) Pero tal como muestras, cuando entramos en el foreach y llegamos a misEmpleados[5], se demuestra que se ha ejecutado el metodo en él No sé si me he explicado Saludos, y gracias por tu gran aportación
No me quedo claro algo,cuando igualas Jefa_Finanzas con tu Objeto de misEmpleados[5],estas diciendo que Jefa_Finanzas es igual que misEmpleados[5],no al revés(o eso entiendo) entonces por que cuando modificas Jefa_Finanzas tambien se modifica misEmpleados[5]?Buenos videos de paso
Disculpa, en el minuto 7:50 hablas de la regla de Escum, me podrías decir como se escribe para consultar documentación en la web. He intentado con Escum, Escun, Scum y no me reporta nada asociado a Casting. Gracias,
Hablo de la regla "es-un". Se trata de una regla que se menciona en algunos libros de Java pero no aparece en ninguna documentación oficial de Oracle ni nada por el estilo. Esta regla ayuda en el diseño de la herencia entre dos clases para ver cuál de las dos es superclase y cuál subclase. Se explica en el curso en varios vídeos. Un saludo!!
Buenos días! En primer lugar me gustaría decirte que eres el mejor profesor que he visto y en segundo intentar despejarme una duda que, si bien ya muchos la hicieron, no logro entender la lógica completamente. En el minuto 6:50 terminas de refundir el objeto almacenado en misEmpleados[5] en Jefatura jefe_finanzas... ¿Por que es que cualquier método que se le aplique a jefe_Finanzas será tomado como que se aplica a misEmpleados[5] si en teoría son dos objetos distintos? ¿Cuando se encuentran dentro de un array el comportamiento cambia? Disculpa por hacerte perder el tiempo y muchas gracias por todo!!! Saludos desde Argentina
+Federico Gimenez Hola !! Esto es debido al polimorfismo y el enlazado dinámico. El polimorfismo consiste en que un objeto adquiere un comportamiento u otro dependiendo del contexto. De ahí la palabra "polimorfismo" (varias formas). Gracias a esta característica de los objetos en Java un objeto se comporta de una forma cuando realmente se esperaba que se comportara de otra diferente. Dicho de otra forma, esperamos un objeto de tipo Jefatura y vemos que se comporta como un objeto de tipo Empleado. El polimorfismo y el enlazado dinámico se explican en este vídeo: ua-cam.com/video/sdJgcMaazmI/v-deo.html Un saludo
+pildorasinformaticas , entonces, cómo haríamos para crear un objeto Jefatura que quisiéramos que fuera copia de mis empleados [5], pero sin que se modificara misEmpleados[5]??? Mi duda no es respecto al polimorfismo, sino al comportamiento de la copia. ¿Por qué si generamos una copia (Jefatura jefa_Finanzas=(Jefatura)misEmpleados[5];) y la modificamos con un método (jefa_Finanzas.establecerIncentivo(1000000000);) acaba modificando también el original (misEmpleados[5]) ????? hay algo que se me escapa....
+Federico Gimenez He encontrado la respuesta un poco mas abajo. La duda que tenía de este vidéo no era de polimorfismos y herencias. Era de tratamiento de arrays. Cuando tratas con arrays y haces esto "v[2]=v[1];" se puede pensar que estás creando un nuevo objeto que inicalizamos con los valores que tiene el objeto llamado v[1]. Pero NO, lo que realmente haces es crear una nueva variable en la posición del arrays v[2] y asignar la misma referencia que tiene el v[3]. Esto es, copias la referencia (y no el contenido) de v[3] en la posición del arrays v[2]. El resultado es que tenemos esas dos posiciones del arrays (v[2] y v[1]) apuntando a una única referencia (espacio en memoria) en lugar de dos variables independientes con sus respectivas y diferentes referencias (espacios de memoria). Así, cuando una de las dos variables cambia, cambian las dos.
Hola estoy comprendiendo la terminología a la perfección (por ahora), y me gustaría saber qué tanto ha variado la información del curso en estos casi 6 años, ¿Sigue siendo viable el contenido?
si amigo hay muchos conceptos que siguen estando vigentes. Solo debes tener presente que cuando llegues al tema de los Applets esos videos los debes saltar por que ya estan en desuso.
Hola, podrias aclararme una duda que tengo de antemano gracias, ... si "jefe_RRHH" es un objeto de la clase "Jefatura" almacenado en un objeto "misEmpleados[4]" de la clase "Empledo"; entonces "new Jefatura("Maria", 95000, 1999, 5, 26)" que vendria a ser ???
Hola !! Casi todo se puede hacer con Java, y un programa con videollamada también. Es una buena idea como práctica en el curso. Gracias por darme ideas... Un saludo!!
Gracias, Desde la republica Dominicana, soy nuevo en lo que es programar pero con su curso estoy aprendiendo bastante, ya tengo un proyecto lo unico que me hace falta es saber programar y dentro de mi proyecto esta la pregunta que le hice ayer mi nombre es Jeffry Almonte telefono 8293021564 desde republica dominicana engame pendiente
Hola, excelentes tutoriales !! tengo una duda: ¿se puede eliminar un método heredado?. Es decir, digamos que no quiero que para la clase jefatura se pueda utilizar el método damesueldo. No hablo de sobrescribirlo si no de eliminarlo para la clase jefatura.
Diego Betancourt Hola !! Una vez heredado no se puede "desheredar" como hacemos las personas en la vida real con los hijos que no se merecen nuestras posesiones. Se puede impedir que una subclase redefina un método que herede de la clase padre. Esto lo hacemos declarando el método en la clase padre como final. Pero ojo, aún lo hereda la subclase. Lo único que ocurre es que no se puede modificar en la subclase. Si no quieres que las subclases hereden un método de la clase padre, declara ese método como private. Un saludo
Efectivamente ya puede hacer lo que quiera. Pero se supone (solo se supone) que cuando varios programadores están trabajando en un proyecto común, no se van borrando ni modificando el código unos a otros. Es decir, uno como programador que forma parte de un equipo de programadores, de repente se da cuenta de que el programa no le deja asignar un valor a una variable. Entonces caes en la cuenta de que es porque algún compañero tuyo del equipo declaró esa variable como final convirtiéndola en constante y que seguramente lo hizo por algo. Entonces se supone que le preguntarás: "Oye compañero por qué has declarado esto como final??" Ese es el objetivo de declararlo como final. Otra situación: Imagina que debes ampliar las capacidades de un programa que no has hecho tú. Pongamos por caso que ese programa tiene miles de líneas de código. Te pones manos a la obra y creas una clase que hereda de otra que hizo el programador en su día y te das cuenta de que no puedes dar valor a lo que se supone es una variable. Y caes en la cuenta de que es porque el que hizo el programa en su día la declaró como final convirtiéndola en constante. Aquí pueden pasar dos cosas: 1. Eres un mal programador y dices "me da igual, le quito el final que puso aquí el otro programador en su día y sigo..." con lo que es probable que te cargues cosas importantes del programa 2. Eres un buen programador y piensas: "si está declarado esto como final debe ser por un motivo importante. Vamos a investigar por qué..." Resumiendo: esto no se hace para "blindar" un programa ante otros programadores que trabajen en el mismo código, sino para proteger el programa de acceso externos y dotarle de lógica y coherencia. Un saludo
Buenas. tengo una dudilla: Entre el 5:407:00 cuando casteas misEmpleados[5] lo que haces realmente es crear una variable NUEVA de tipo Jefatura llamada jefa_finanzas y a esta variable es a la que le creas el incentivo y luego sale reflejado cuando haces el print de misEmpleados[5]. ¿Con esto podríamos decir que la variable creada nueva jefa_finanzas es una variable totalmente nueva y que se comporta distinto a misEmpleados[5] pero que al ser el "mismo objeto" están enlazados y lo que le haces a uno se modifica en el otro? Espero haberme explicado bien. También aprovecho para decirte que eres un puto amo, explicas genial. Yo se programacion PHP, Angular, JavaScript... y a veces es bastante tedioso seguir atento en los momentos que pasas por algo que como tu comentas decimos: "tio pero si eso es de tontos saberlo" pero aun así es lógico que lo hagas y lo haces excelente, en mi opinión explicas para tontos, que cualquiera lo puede entender. PUTO AMO
Gracias por el comentario, me alegro de que te guste el curso. Sí, así es. jefa_Finanzas es una variable totalmente nueva y se comporte diferente a misEmpleados[5] porque son de diferente tipo: uno es de tipo Jefatura y el otro es de tipo Empleados. Lo que hemos hecho es un casting de Empleado a Jefatura para poder almacenar un empleado dentro de un jefe y de esta forma poder utilizar el método establece_incentivo() de la clase Jefatura. Si no hacemos el casting se quedaría como empleado y no podría utilizar establece_incentivo(). Un saludo!
@@pildorasinformaticas si eso lo he entendido perfectamente, que haces el Cast para poder usar el método de clase jefatura. Pero mi duda era que al usar el método de incentivo con el objeto tipo jefatura le ha afectado al objeto de tipo empleado misEnpleados[5] no? Osea que lo que le hagas a esa nueva variable jefatura le afectará a la de tipo empleado. Vamos que si al objeto empleado le cambias el nombre por pepe si haces print de misEmpleados[5] saldrá pepe y no María cómo tenía antes. En definitiva que aunque sean distintas variables el objeto es el mismo y lo que cambies en una cambiará en la otra ¿Lo he entendido bien?
@@pildorasinformaticas acabo de ver un comentario de XAVIER TRIBO de hace un año con la misma duda y que la explica perfectamente pero está sin contestar por si yo no me he explicado bien ;)
profe juan una pregunta, si uno no tiene limite en las clase que puedan heredar de otra porque entonces todas las clases de la api no estan todas unidas o todas heredaran de otra de tal forma que cualquier clase pueda tener los metodos de otras clases no se si me hago entender de ante mano gracias.
Hola Hola, Cordial saludo. Queria consultar una duda, cuando se hace el castin del elemento 5 del vector misEmpleados, se hace creando un nuevo objeto de tipo jefatura, pero puede verse el incremento del incentivo en ese elemento del vector. ¿Cómo es esto posible si el incremento se hace sobre un objeto que no pertenece al vector?, gracias
aldo bustamante Por el principio "Es un" que marca la herencia. Un jefe es siempre un empleado pero no al revés. Y por el enlazado dinámico y el polimorfismo. Se explica en el vídeo anterior o en el siguiente no recuerdo bien, pero se explica. Un saludo
Hola!! Tendría que hacerte el ejemplo entero por aquí y me llevaría un tiempo. Pero no te preocupes, más adelante en el curso se harán programas en clases y ficheros separados para que los veáis. Un saludo!!
PRIMER FICHERO: CLASE EMPLEADO import java.util.Date; import java.util.GregorianCalendar; public class Empleado { //Atributos private String nombre; private double sueldo; private Date altaContrato; private int id; private static int idSiguiente; //Constructor public Empleado(String nom, double sue, int agno, int mes, int día){ nombre=nom; sueldo=sue; GregorianCalendar calendario= new GregorianCalendar(agno,mes-1,día); altaContrato= calendario.getTime(); ++idSiguiente; id=idSiguiente; }// fin Constructor public String getNombre(){ return nombre; }// end getNombre public double dameSueldo(){ return sueldo; }//end dameSueldo public Date getFechaContrato(){ return altaContrato; }// fin getFechaContrato public void subeSueldo(double porcentaje){ double aumento= sueldo*(porcentaje/100); sueldo=sueldo+aumento; } // fin subeSueldo }// fin clase Empleado SEGUNDO FICHERO. CLASE JEFATURA public class Jefatura extends Empleado { //atributos private double incentivo; //constructor public Jefatura(String nom, double sue, int agno, int mes, int dia){ super(nom,sue,agno,mes,dia); }// fin constructor public void estableceIncentivo(double b){ this.incentivo=b; }//fin estableceIncentivo public double dameSueldo(){ double sueldoJefe=super.dameSueldo(); return sueldoJefe+incentivo; }//fin dameSueldo }// fin Jefatura y LA TERCERA QUE ES LA PRINCIPAL ES LA QUE USA EL PROFE EN EL VIDEO PARA EXPLICAR(USO_EMPLEADO)
Hola muy buenas. A ver si alguien me pude resolver la duda. Al principio del video, para poder usar el método de estableceIncentivo, saca la información del objeto Jefatura que está en el Array misEmpleados a un nuevo objeto llamado Jefatura llamado "jefa_Finanzas", pero no entiendo porqué al hacer el recorrido con el bucle "for each" se actualizan los valores de ese objeto que está dentro del Array, cuando se supone que lo que has hecho es introducir los valores en un objeto nuevo que no está dentro del Array. (Entiendo que no es un objeto nuevo ya que no se usa el operador "new" para crearlo, pero es por saber si es así y ya está, o hay algo detrás que no entiendo). Muchas gracias!
Buenas Tardes Profesor. Otra duda: Al hacer el casting: Jefatura jefa_Finanzas= (Jefatura) misEmpleados[5]; Todo cambio que se le aplique a jefa_finanzas se le aplicara tambien a misEmpleados[5]?. De ser esto correcto. Por que al hacer casting con variables no sucede lo mismo? Es decir si hacemos esto: double num1=7.5; int num2=(int) num1; A partir de este casting num1 y num2 son variables diferentes y actuan por separado es decir, si yo hago: num2=9; Entonces num2 seria igual a 9, pero num1 seguiria siendo igual a 7.5. Saludos.
Marcel Elias Porque los ejemplos que planteas son diferentes. En el primer caso estás utilizando un Array y en el segundo no. Para que los ejemplos fueran iguales y ver que el comportamiento en ambos casos es el mismo deberías haber planteado con las variables lo siguiente: double z=7.5; double miArray[]=new double[0]; miArray[0]=z; int mi_variable=(int)miArray[0]; Y ahora si que estamos hablando de lo mismo entre casting a variables y casting a objetos con: Jefatura jefa_Finanzas= (Jefatura) misEmpleados[5]; En ambos casos estamos haciendo lo mismo, es decir, guardar en una posición de un array de un tipo, otro al que previamente le hacemos un casting. Y da igual que sean objetos como jefa_Finanzas o variables como mi_variable. Un saludo
pildorasinformaticas Si profesor creo entender, pero me surge otra duda: si Jefa_finanzas es un objeto nuevo creado partir de lo que estaba almacenado en misEmpleados[5], por que cada cambio que se le realice a uno de estos objetos se le aplica al otro, es decir, si por ejemplo yo le aplico el metodo subeSueldo a cualquiera de estos objetos se le aplica al otro tambien y viceversa. En el ejemplo de las variables que Ud.menciona si "mi_variable" es modificada, el valor de "miArray[0]" permanece igual. Por eso preguntaba el por que se comportaban de diferente forma. Leyendo comentarios anteriores un suscriptor tuvo una duda similar y un usuario(Luis Sanchez) repondio lo siguiente: "Cuando haces esto "staff[6]=staff[3]", el trato a las variables en comparación a los objetos es distinta. Lo que piensas que estas haciendo es "Crear un nuevo objeto del tipo Empleado llamado staff[6] que inicalizamos con los valores que tiene el objeto llamado staff[3]". Lo que realmente la maquina virtual de java interpreta o hace es crear una nueva variable del tipo Empleado en la posición del arrays staff[6] y asignar la misma referencia que tiene el staff[3]“, o simplemente “Copiar la referencia (y no el contenido) de staff[3] en la posición del arrays staff[6]“. El resultado es que tenemos esas dos posiciones del arrays (staff[6] y staff[3]) apuntando a una única referencia (espacio en memoria) en lugar de dos variables independientes con sus respectivas y diferentes referencias (espacios de memoria). Así, cuando una de las dos variables cambia, cambian las dos" Es este comentario correcto?? Una vez mas gracias por su tiempo. Sinceramente se agradecen todos sus tutoriales y el tiempo que emplea en resolver dudas. Saludos!!!
Buenas tardes y gracias por el curso. Estoy un poco confuso con estos últimos temas por lo tanto te pido el favor me recomiendes algunas paginas donde pueda adquirir algunos ejemplos para ir practicando. gracias y perdona la molestia.
+Andrés Felipe Montoya Hurtado Hola !! Gracias por el comentario. La verdad es que no conozco páginas en concreto donde poder buscar ejercicios. Si buscas en google "ejercicios java" o "ejercicios + el tema concreto que desees" estoy seguro de que encontrarás muchas páginas donde te ofrecen ejercicios para practicar. Yo por mi parte intento subir ejercicios a mi página web. El problema es que casi no tengo tiempo para grabar los vídeos, menos aún para hacer y subir ejercicios. Pero estoy en ello. Un saludo
✅✅ ✅ ✅ ✅ 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. 💥💥💥
Gracias Crack por tu esfuerzo y dedicación, jamás te podremos pagar por tanto conocimiento dado a un nivel de calidad alto. Mis respetos.
Pff.. este curso es aún mejor que un curso por el que tuve que pagar... excelente canal amigo. De verdad gracias por tus videos
Me acabo de tomar mi dosis diaria de píldoras informaticas
2020 y aqui aprendiendo con este excelente ser humano ... Gracias
yo tambien!!! Aqui sigo aprendiendo!!!
@@elgatucordon4719 2021 :v
2022!
@@BunnyMofletes 2023!
2024
Año 2023, descubrí tus cursos hace poco tiempo. Ya hice varios. Me encanta como explicas. Muy claro. Muchas Gracias!!!!. Alejandro desde Argentina.
Siguiendo adelante con el curso voy paso por paso anotando repasando viendo una y otra vez los videos, parece difícil pero de a poco voy comprendiendo y se hace cada vez mas fácil. Muchas Gracias por compartir tu conocimiento, el saber hace al conocimiento ...
Este tema es muy complejo, profesor Juan usted lo hace fácil y ameno, muchas gracias por compartir sus conocimientos.
Saludos desde Perú.
El video de 2014 y me esta salvando la vida en 2021, eres un héroe, millones de gracias.
Dando cátedra, Maestro. Excelente.
Usted si que es un buen docente.
Excelente explicacion no tenia el conocimiento de casting o refundicción. Gracias Profesor juan....me faltan 232 vídeos en 108 días esforzándome.
La calidad y metodología de enseñanza de este curso es increíble, si tuviera que pagar pagaría sin problema alguno.
Gracias por explicar lo que el casting de Objetos, ,loe metodos static, sin duda alguna el mejor profesor en linea, Saludos desde Mexico.
sos un groso.. explicas muchisimo mejor qu mi profesor..soy de argentina y es el mejor curso de java que he visto..!!!!
+TAHIEL AHUVIA Gracias !! Me alegro de que te guste el curso. Un saludo
Mi profesor ni explica directamente xD
Sin duda es un excelente profesor
Muchas gracias profe por tu tiempo y por tan EXCELENTES explicaciones en tus videos.
Eres todo un maestro. Tienes una pedagogía envidiable... disfruto mucho tus cursos! Saludos desde Colombia
Muchas gracias Jonatan. Un cordial saludo!
Excelente curso amigo, realmente explicas mejor que muchos profesores. Estoy en el video 44 y estoy aprendiendo mucho de java, gracias por tu trabajo y te felicito.
+jaime villarreal graos Muchas gracias por tu comentario. Un saludo
Me salvaste la vida con esta cuarentena, a mis profesores no se les entiende ni papa ... Buensimo todo, gracias!!!!!!
Hola me llamo Ivan y me gustaria felicitarte por el gran trabajo que has hecho con estos videotutoriales , conozco un poco el lenguaje de java pero repaso viendo tus videos que son los mejores que he encontrado, muy completos, rapidos y de gran utilidad, no me canso de verlos porque aunque uno cree que sabe, cuanto mas veo mas me doy cuenta de que no se nada.. Enhorabuena por tu trabajo, no todo las personas pueden explicar cualquier tema de esta manera aunque lo intenten en sus canales.
+Ivan Carrion Muchas gracias por el comentario. Me alegro de que te gusten los vídeos. Un cordial saludo
estube investigando mucho porque tuve el error que posteriormente explicaste que tubieramos cuidado pero no lo vi hasta que me di por vencido y avance el video, Excelente trabajo te ganaste mi corazon
Excelentes videos, muy buena manera de explicar muy puntual. Excelente curso.
finalmente comprendi mejor que es el casting de objetos en java, Gracias.
Mil gracias por tus vídeos, eres un maquina, mil gracias de verdad.
Gracias !! Un saludo
Es verdad Juan los últimos vídeos cuesta bastante pero he repasado algunos ejercicios anteriores y ya comienzas a tener una sensación de entender lo que esta haciendo creo que con estos temas de la herencia y polimorfismo entre otros lo entenderemos de igual modo.como siempre mis respetos y nos dejes solos.Gracias eres muy bueno..
+Edwin Pimienta Sí, estos conceptos de la POO son complejos de entender. Requiere de varias lecturas y práctica. Un saludo!!
Gracias JUAN DIAZ, Saludos desde Medellín(Antioquia)Colombia, La ciudad de la eterna primavera
Gracias Jorge. Estuve allí en Octubre. Increíble ciudad y sobre todo increíble su gente. ¡Un cordial saludo!
Respecto del comentario final, si bien Programar y Java es una actividad y un lenguaje respectivamente complejos, afirmo que entendiendolos, lo que se quiera encarar en el futuro, va a resultar mas sencillo.
Muchas gracias por compartir.
Gracias por sus vidos. Muy bien explicados y argumentados.
Hola Juan, muchísimas gracias por todo tu trabajo y dedicación con todos estos videos tutoriales.
A mí, personalmente, me estás ayudando mucho. Estoy cursando estudios de programación y el centro que lo imparte deja mucho que desear con su docencia.
Ojalá muchos docentes supieran explicar tan bien y de manera tan clara el temario y con las ganas que le pones.
¡Simplemente quería agradecerte y animarte por el esfuerzo que haces!
Saludos!
Excelente profesor ! Excelente Metodologia
+Daniel Argueta Cabrera Gracias !! Un saludo
excelente vídeo el mejor de youtube Nose como no tienes mas visitas.
Gracias por el comentario. Me alegro de que te guste. Un saludo!!
Noviembre de 2024, estudiando un ciclo de desarrollo web y sin entender ni mierda de programación, el profesor ni explica, cree que lo hace bien pero no. Tiene huevos que gracias a este curso esté comprendiéndolo todo poco a poco y que me vayan saliendo las cosas después de llevar más de dos meses de clases. Mi profesor jamás ha hecho un ejercicio, poco a poco y desgranando cada cosa, como este gran docente que ha dedicado su tiempo gratuitamente para el bien de muchos.
Gracias a usted voy a poder sacarme la asignatura y llegar a ser un gran programador. Muchísimas gracias!!!
Que dios le bendiga y le de mucha salud.
Gracias por tu comentario y ¡mucha suerte!
siempre utilizo el recasting y nunca se me ocurrió utilizarlo de esta forma, me soluciona muchísimo la vida gracias pa'
Magnificos tutoriales, gracias Juan!
Mikel In Gracias !!
Excelente. a ver varias veces... Adelante.. gracias
Juan Carlos Ruiz Gracias !! Un saludo
La primera vez que entiendo lo de polimorfismo
Muy bien explicado
Tus videos son excelentes
Muchísimas gracias por el curso.
Excelente explicación. Me suscribo. Control + F en el navegador para agilizar las búsquedas indexadas
Buen curso te digo nuevamente, cuando tenga un poco de tiempo, los volveré a ver ya que los veo por encima. Gracias
Muchas gracias !!!. Lamentablemente para mi, hasta hoy estoy siguiendo este EXCELENTE tutorial.
como dijiste tengo que repasar un poco estos ultimos videos, y no me rindo, me dio animo cuando dijistes que la programacion es una de las ramas de la informatica mas complicada y que java es uno de los mas complejos, siendo mi primer lenguaje y empezando dede cero creo que no esta mal, gracias por el curso
El proceso normal para alguien que empieza desde 0 en programación es pelearse mucho con los conceptos, la sintaxis etc. Que cueste esfuerzo entender la programación es lo normal para aquellos que empiezan. Un saludo!!
un genio, me faltaron profesores como tu.
Se 0 de programación. Ahora voy por acá y me sorprende lo que voy aprendiendo.. y voy a terminar este curso y seguir otro y otro... Y quizás sea mi trabajo ... Exelente... Desde Argentina
Mucho ánimo Rafale. Quién sabe... a lo mejor has dado con tu vocación. No te desanimes cuando las cosas se pongan más difíciles ya que incluso a veces, los más expertos se ven en problemas a la hora de programar. Un saludo!
Hola Juan, primero agradecerte todo tu esfuerzo. La verdad es que es el mejor curso de Java que he encontrado en la red. Ojalá tu metodología y buen hacer se expandieran a todas las áreas del conocimiento, ya que pienso que más del 90% de los docentes de este país aprenderían de tus clases, independientemente de la materia dada.
Mis preguntas son las siguientes:
1. Minuto aprox 6:30 - Al hacer el casting "Jefatura jefa_finanzas=(Jefatura) misEmpleados[5];", comentas que se está creando un nuevo objeto jefa_finanzas. Lo que no entiendo es cómo siendo un nuevo objeto, estableciendo un incentivo en el mismo, a quién se le establece es a misEmpleados[5]. ¿Es por qué en realidad están referenciados al haber hecho el casting y si se modifica jefa_finanzas se modificará siempre misEmpleados[5]?
2. Minuto aprox 7:45 - El casting de misEmpleados[5] a Jefatura, ¿es solo posible porque fue creado como un objeto de Jefatura, y después introducido en un array de empleados?. Es decir, de alguna forma al crear un objeto de una subclase, y meterla en un array de su superclase, pierde sus propiedades de subclase, y para recuperarlas se necesita hacer el casting a la subclase de nuevo. ¿Es así?.
Muchas gracias y perdona si no me he explicado correctamente.
+Isaac B Hola !! Gracias por el comentario. A ver si podemos aportar un poco de luz a tus dudas:
1. Todo viene por el principio de herencia "es-un" (explicado en algún vídeo del curso, pero no recuerdo en qué vídeo). Si el diseño de la herencia es correcto y en este caso lo es, podemos decir que todo Jefe es necesariamente un empleado. Es por esto por lo que podemos guardar en un objeto de tipo empleado a un jefe, algo que hacemos con Jefatura jefa_finanzas=(Jefatura) misEmpleados[5]. Una vez hecho esto, si modificas jefa_finanzas estarás modificando lo que hay almacenado en misEmpleados[5] ya que es la posición del array donde se almacena el objeto que modifico.
No podríamos hacer lo contrario, es decir, almacenar un objeto de tipo Empleado en un array de tipo Jefatura porque un empleado no es necesariamente siempre un Jefe.
2. Al crear un objeto de la subclase y meterlo en un array de la superclase, este no pierde sus propiedades. El array es tan solo un almacén donde guardaremos el objeto jefatura_finanzas y este hecho no hará que pierda sus propiedades. Puedes probar a utilizar dichas propiedades en el código. Por ejemplo, creo recordar (no me hagas mucho caso. hace tiempo que grabé esto) que la clase Jefatura tenía un método propio que era tomar_decisiones() o algo así.
Después de almacenar a jefa_finanzas en el array, si utilizas jefa_finanzas.tomar_decisiones() funcionará sin problemas, al igual que si utilizas algunas de sus propiedades.
Espero haber aclarado algo. De todas formas, son conceptos complejos para alguien que se enfrenta por primera vez a la POO y se deben de repasar varias veces y practicar para entenderlos bien. No te preocupes si en una primera o segunda lectura no lo terminas de entender.
Un saludo
+pildorasinformaticas Muchas gracias por la respuesta y tu tiempo de nuevo. Todo mucho más claro. :)
Saludos
Gracias por la pregunta de hace siete años. Yo tenía la misma duda
Dios llevo varios videos de este señor y la verdad es que explica como los dioses ni steve jobs o el bill gates explican asi siga asi buen señor saludos
De nuevo muchas gracias Profesor :D. Muy buen vídeo.
Estupenda la explicación de estos dos temas. Me pareció excelente la forma en la que has enlazado un tema con el otro. Ahí se nota que quien enseña realmente sabe.
Saludos, y muchas gracias por este grandioso curso!
Seguimos por aqui :) Mil gracias
Vale... lo del final del video me ha tranquilizado, comentando sobre que este lenguaje es complejo. Ye que es que llegue a pensar que estaba perdiendo facultades cognitivas jeje.
Es por mucho el mejor curso en youtube que he visto. Estaría buenísimo uno de C++ y otro de Python :v
Saludos desde México y muchas gracias.
+Rodrigo Álvarez Herrera Muchas gracias por los comentarios. Es mi intención hacer ambos cursos en un futuro. Un saludo
+pildorasinformaticas Estaria super uno de Python :D
@@pildorasinformaticas Uno de C y C++ profesor estaría muy ansioso de tomarlo me encantaría que hiciera uno de esos, que trate de todo como los árboles binarios, listas pilas colas ficheros etc. Woow usted lo haría interesante.
Maaaaaadre mía, con este video me has respondido la pregunta que te hice en el video anterior.......... ya le tengo una solución, pues voy a crear una condición para que todos los "estudiantes que son personas" se refundan, seguramente ahí podré guardarlos en el otro arreglo de tipo estudiante y manipular sus datos...... gracias profe!! :D
Excelente trabajo :D ya faltan menos que cuando comencé >.
+chava acosta jajajajaja, sí, es verdad ye te queda menos. Gracias por seguir mis vídeos. Un saludo
que belleza mi pana, eres un capo
Hola! Me gustaria saber si es posible acceder al codigo fuente de las clases que pertenecen a la api de java. Por ejemplo si quiero ver como esta construida internamente la clase String o la clase math. Saludos!
Me temo que eso no va a poder ser. Es como pedir a la Coca Cola su receta ingrediente a ingrediente. Un saludo!!
Buenas tardes juan como estas? primero que nada muchas gracias por tu conocimiento y por tu dedicación. mi duda es la siguiente en el min 16:45 hablas de evitar que otra persona use el método dameSueldo() con la palabra reservada final, de que manera evitas que esa persona navegue por el código busque el método y simplemente quite la palabra "final" aclaro que voy por este video no se si mas adelante hablas sobre eso pero es una duda que me surgió y me gustaría aclararla se que debes estar en mil cosas cuando tengas tiempo me aclaras la dudo o algún compañero que conozca la respuesta se lo agradecería. saludos y bendiciones
Por si alguien se perdió con los codigos aqui están (sin las modificaciones de este video):
package poo;
import java.util.*;
public class Uso_Empleado {
public static void main(String[] args) {
Jefatura jefe_RRHH=new Jefatura("Juan", 55000, 2006, 9, 25);
jefe_RRHH.estableceIncentivo(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;
misEmpleados[5] = new Jefatura("Maria", 95000, 1999, 5, 26);
for(Empleado e:misEmpleados){
e.subeSueldo(5);
}
for(Empleado e: misEmpleados){
System.out.println("Nombre: " + e.dameNombre()
+ "Sueldo: " + e.dameSueldo()
+ "Fecha de Alta: " + e.dameFechaContrato());
}
}
}
class Empleado{
public Empleado(String nom, double sue, int agno, int mes, int dia){
nombre = nom;
sueldo = sue;
GregorianCalendar calendario = new GregorianCalendar(agno, mes-1, dia);
++IdSiguiente;
Id = IdSiguiente;
}
public Empleado(String nom){
this(nom, 30000, 2000, 01, 01);
}
public String dameNombre(){
return nombre + " Id: " + Id;
}
public double dameSueldo(){ //getter
return sueldo;
}
public Date dameFechaContrato(){
return altaContrato;
}
public void subeSueldo(double porcentaje){
double aumento = sueldo*porcentaje/100;
sueldo += aumento;
}
private String nombre;
private double sueldo;
private Date altaContrato;
private static int IdSiguiente;
private int Id;
}
class Jefatura extends Empleado{
public Jefatura(String nom, double sue, int agno, int mes, int dia){
super(nom, sue, agno, mes, dia);
}
public void estableceIncentivo(double b){
incentivo = b;
}
public double dameSueldo(){
double sueldoJefe = super.dameSueldo();
return sueldoJefe + incentivo;
}
private double incentivo;
}
eres un santo
Gracias!!!
Misma duda que Señor Punki: Entre el 5:40 7:00 cuando casteas misEmpleados[5] lo que haces realmente es crear una variable NUEVA de tipo Jefatura llamada jefa_finanzas y a esta variable es a la que le creas el incentivo y luego sale reflejado cuando haces el print de misEmpleados[5].
¿Con esto podríamos decir que la variable creada nueva jefa_finanzas es una variable totalmente nueva y que se comporta distinto a misEmpleados[5] pero que al ser el "mismo objeto" están enlazados y lo que le haces a uno se modifica en el otro?.....entendido perfectamente, que haces el Cast para poder usar el método de clase jefatura. Pero mi duda era que al usar el método de incentivo con el objeto tipo jefatura le ha afectado al objeto de tipo empleado misEnpleados[5] no? Osea que lo que le hagas a esa nueva variable jefatura le afectará a la de tipo empleado.
Vamos que si al objeto empleado le cambias el nombre por pepe si haces print de misEmpleados[5] saldrá pepe y no María cómo tenía antes.
En definitiva que aunque sean distintas variables el objeto es el mismo y lo que cambies en una cambiará en la otra
¿Lo he entendido bien?..... La respuesta de Ch ch me es vaga (Es un puntero oculto)
Hola Juan. Este es el primer comentario que dejo en tu canal. Muchísimas gracias por tu labor. Estoy aprendiendo mucho y la verdad es que me hace mucha ilusión hacer este curso, y también el que estás haciendo para programar en Android. Una pregunta: En el minuto 6 del vídeo muestras un ejemplo de casting en la línea:
Jefatura jefa_Finanzas=(Jefatura) misEmpleados[5];
Entiendo que lo que se almacena en jefa_Finanzas no es el objeto que hay en la posición 5 de misEmpleados, sino la REFERENCIA a ese objeto, porque después usamos jefa_Finanzas para modificar el objeto que hay en el Array. Por tanto la asignación que hacemos, aunque tiene la misma sintaxis que cuando usamos variables de tipos primitivos (como int), no funciona igual con los objetos, no estamos haciendo una copia. Si esto es así, ¿Cómo podríamos hacer una copia real de un objeto?, ¿Cómo obtener un objeto nuevo con el mismo contenido que otro objeto, para poder modificarlo independientemente?.
Muchas gracias de nuevo y un saludo!
+Samuel G Hola !! Gracias por tu comentario y por seguir mis vídeos con tanto interés. Efectivamente estás en lo cierto. La forma de clonar/duplicar objetos sería haciendo uso de la interfaz Clonable. Mira este enlace a ver si te sirva de guía: www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clonico/clonico1.htm
Un saludo
+pildorasinformaticas Muchas gracias por tu respuesta y por la rapidez. Veo en el enlace que me indicas que para copiar objetos hay que utilizar una interfaz. Sigo con el curso y así aprenderé cómo funcionan. Gracias de nuevo por esta gran labor que haces, que permite que muchas personas como yo podamos disfrutar de estos cursos completamente gratis. Son lo mejor que he encontrado, y te aseguro que he buscado mucho antes de descubrirlos. Espero que puedas seguir haciéndolo como hasta ahora y por mucho tiempo. Ánimo!!
Samuel G Hola, se que este comentario fue hace 6 años pero acabo de empezar este curso y no comprendía bien que pasaba en esa linea. Gracias.
@@pildorasinformaticas
Lo acabo de probar. efectivamente, se obtiene una copia, a la q puedes modificar sin alterar la original.
Muchas Gracias.
Vamos Avanzado.
muchas gracias Sensei Juan.
Gracias por este video... excelente como todos. Chévere 🍌🍌 2024!!!
Saludos, y si a misEmpleados[1] lo ascienden o promueven a jefe????
:D Se solucionó el incentivo de la Jefa María.
Pregunta, un caso practico en el cual debiéramos usar final para evitar que otras clases hereden de mi clase. pues no me queda muy clara su utilidad. de antemanos muchas gracias y reitero lo excelente profesor que eres y la calidad de curso que haces. muchas gracias.
Hola!! Todo depende de cómo quieres que funcione el diseño de tu herencia. Por ejemplo: imagina que creas un programa que representa la jerarquía de una empresa con 5 clases que heredan unas de otras en el siguiente orden:
ConsejeroDelegado - Director - JefeArea - JefeSeccion - Empleado
La clase ConsejeroDelegado se encuentra en la cúspide de la jerarquía y Empleado en la parte más baja. En la empresa para la que estamos haciendo el programa no hay nadie por encima del Consejero Delegado ni nadie por debajo del Empleado. La pregunta que surge en este caso es: ¿Tiene sentido que venga un programador detrás de mi a continuar elaborando el programa y que construya una clase que herede de Empleado? La respuesta es no ya que no hay nadie por debajo de un Empleado en esta empresa. Por este motivo, yo como programador que estoy haciendo el programa, declaro la clase Empleado como final y de esta forma impido la herencia directa de ella. Así, si viene otro programador e intenta por error o malintencionadamente crear una clase que herede de Empleado no podrá.
Esto es tan solo un ejemplo de los millones que pueden darse a la hora de elaborar un programa. Un saludo
que grande eres Juan
buenas profe, una pregunta, cuando crea el objeto jefa_finanzas y le asigna el empleado[5] de tipo Jefatura, esta no seria una nueva variable, los cambios que haga en ella no deberían quedar reflejados en el objeto empleado[5], quiere decir que cada vez que haga refundicion, todos los cambios que haga en esta variable quedaran reflejados en la variable original?. gracias por su atención Profe
Gracias por el vídeo se entiende el tema.
Juan tengo una pregunta, ojala la puedas ver! Pero hasta hace un tiempo me dijeron que si se puede evitar el casting con el polimorfismo, seria muchisimo mejor! Esto por que es asi?
Interesante pregunta. Espero alguien nos pueda ayudar.
hola Juan buenas
Mirando el video 44 del curso Java, cuando haces el casting de misEmpleados[5], tengo una duda:
jefatura jefa_Finanzas=(jefatura)misEmpleados[5] -->ok, haces el casting para que el objeto misEmpleados[5]
jefa_Finanzas.estableceIncentivo(55000)--> ok, se usa el metodo
No obstante en este punto, no sé porque el valor del incentivo llega a misEmpleados[5]... de momento se encontraria en el objeto jefa_Finanzas, ya que no habria una asignación del tipo misEmpleados[5]=jefa_Finanzas;
(..)
Pero tal como muestras, cuando entramos en el foreach y llegamos a misEmpleados[5], se demuestra que se ha ejecutado el metodo en él
No sé si me he explicado
Saludos, y gracias por tu gran aportación
Tengo la misma duda, porque
AAJJ
me pasa lo mismo
Muy bien explicado te felicito
+Andres Quijano Gracias !! Un saludo
Recorriendo de nuevo
x2
Por lo poquito que he visto... este lenguaje de programación es bastante completo, aunque también mas complejo.
Así es. Lo normal es que alguien que empieza con el lenguaje tenga que oir o leer varias veces algunas cosas. Un saludo!
Excelente video!!!!!!
He aprendido mucho de los 4 anuncios ke me he komido!!!!
No me quedo claro algo,cuando igualas Jefa_Finanzas con tu Objeto de misEmpleados[5],estas diciendo que Jefa_Finanzas es igual que misEmpleados[5],no al revés(o eso entiendo) entonces por que cuando modificas Jefa_Finanzas tambien se modifica misEmpleados[5]?Buenos videos de paso
Genial, ya nos queda menos para los 200 jhejej
ya van 221 XD
Ya van 262 Haha
272 cada vez es mas
273 y subiendo
276 lol
Disculpa, en el minuto 7:50 hablas de la regla de Escum, me podrías decir como se escribe para consultar documentación en la web. He intentado con Escum, Escun, Scum y no me reporta nada asociado a Casting. Gracias,
Hablo de la regla "es-un". Se trata de una regla que se menciona en algunos libros de Java pero no aparece en ninguna documentación oficial de Oracle ni nada por el estilo. Esta regla ayuda en el diseño de la herencia entre dos clases para ver cuál de las dos es superclase y cuál subclase. Se explica en el curso en varios vídeos. Un saludo!!
Buenos días! En primer lugar me gustaría decirte que eres el mejor profesor que he visto y en segundo intentar despejarme una duda que, si bien ya muchos la hicieron, no logro entender la lógica completamente.
En el minuto 6:50 terminas de refundir el objeto almacenado en misEmpleados[5] en Jefatura jefe_finanzas... ¿Por que es que cualquier método que se le aplique a jefe_Finanzas será tomado como que se aplica a misEmpleados[5] si en teoría son dos objetos distintos? ¿Cuando se encuentran dentro de un array el comportamiento cambia?
Disculpa por hacerte perder el tiempo y muchas gracias por todo!!!
Saludos desde Argentina
+Federico Gimenez Hola !! Esto es debido al polimorfismo y el enlazado dinámico. El polimorfismo consiste en que un objeto adquiere un comportamiento u otro dependiendo del contexto. De ahí la palabra "polimorfismo" (varias formas). Gracias a esta característica de los objetos en Java un objeto se comporta de una forma cuando realmente se esperaba que se comportara de otra diferente. Dicho de otra forma, esperamos un objeto de tipo Jefatura y vemos que se comporta como un objeto de tipo Empleado.
El polimorfismo y el enlazado dinámico se explican en este vídeo: ua-cam.com/video/sdJgcMaazmI/v-deo.html
Un saludo
+pildorasinformaticas , entonces, cómo haríamos para crear un objeto Jefatura que quisiéramos que fuera copia de mis empleados [5], pero sin que se modificara misEmpleados[5]??? Mi duda no es respecto al polimorfismo, sino al comportamiento de la copia. ¿Por qué si generamos una copia (Jefatura jefa_Finanzas=(Jefatura)misEmpleados[5];) y la modificamos con un método (jefa_Finanzas.establecerIncentivo(1000000000);) acaba modificando también el original (misEmpleados[5]) ????? hay algo que se me escapa....
+Federico Gimenez He encontrado la respuesta un poco mas abajo.
La duda que tenía de este vidéo no era de polimorfismos y herencias. Era de tratamiento de arrays.
Cuando tratas con arrays y haces esto "v[2]=v[1];" se puede pensar que estás creando un nuevo objeto que inicalizamos con los valores que tiene el objeto llamado v[1].
Pero NO, lo que realmente haces es crear una nueva variable en la posición del arrays v[2] y asignar la misma referencia que tiene el v[3].
Esto es, copias la referencia (y no el contenido) de v[3] en la posición del arrays v[2].
El resultado es que tenemos esas dos posiciones del arrays (v[2] y v[1]) apuntando a una única referencia (espacio en memoria) en lugar de dos variables independientes con sus respectivas y diferentes referencias (espacios de memoria). Así, cuando una de las dos variables cambia, cambian las dos.
Me alegro de que hayas resuelto tu duda. Iba a intentar aclararlo ahora... Un saludo!!
Hay ejercicios para poner en práctica los conceptos ?
04:20 Lo que si se puede hacer es:
((Jefatura)misEmpleados[5]).estableceIncentivo( x );
que me parece más facil y no hace falta crear otra variable...
Gracias por compartir. Trate de hacerlo asi y no me salia.
Hola estoy comprendiendo la terminología a la perfección (por ahora), y me gustaría saber qué tanto ha variado la información del curso en estos casi 6 años, ¿Sigue siendo viable el contenido?
si amigo hay muchos conceptos que siguen estando vigentes. Solo debes tener presente que cuando llegues al tema de los Applets esos videos los debes saltar por que ya estan en desuso.
Hola, podrias aclararme una duda que tengo de antemano gracias, ... si "jefe_RRHH" es un objeto de la clase "Jefatura" almacenado en un objeto "misEmpleados[4]" de la clase "Empledo"; entonces "new Jefatura("Maria", 95000, 1999, 5, 26)" que vendria a ser ???
como esta usted amigo? encantado con su curso, voy por el video 39, mi pregunta es que si se puede hacer un programa con video llamada en java
Hola !! Casi todo se puede hacer con Java, y un programa con videollamada también. Es una buena idea como práctica en el curso. Gracias por darme ideas... Un saludo!!
Gracias, Desde la republica Dominicana, soy nuevo en lo que es programar pero con su curso estoy aprendiendo bastante, ya tengo un proyecto lo unico que me hace falta es saber programar y dentro de mi proyecto esta la pregunta que le hice ayer mi nombre es Jeffry Almonte telefono 8293021564 desde republica dominicana engame pendiente
Explicas genial,
+Diego Hernández Gracias !! Un saludo
Avanzando. Like y compartido.
puede subir todas las clases.java que uso en el curso?
Madre mia la de comentarios que llevan mis programas, gracias que tenemos el bendito Outline... xD
x2
Hola, excelentes tutoriales !!
tengo una duda: ¿se puede eliminar un método heredado?. Es decir, digamos que no quiero que para la clase jefatura se pueda utilizar el método damesueldo. No hablo de sobrescribirlo si no de eliminarlo para la clase jefatura.
Diego Betancourt Hola !! Una vez heredado no se puede "desheredar" como hacemos las personas en la vida real con los hijos que no se merecen nuestras posesiones.
Se puede impedir que una subclase redefina un método que herede de la clase padre. Esto lo hacemos declarando el método en la clase padre como final. Pero ojo, aún lo hereda la subclase. Lo único que ocurre es que no se puede modificar en la subclase.
Si no quieres que las subclases hereden un método de la clase padre, declara ese método como private. Un saludo
Se que es algo estúpido pero, si el otro programador te borra el final ya puede hacer lo que quiera ¿no?
Efectivamente ya puede hacer lo que quiera. Pero se supone (solo se supone) que cuando varios programadores están trabajando en un proyecto común, no se van borrando ni modificando el código unos a otros. Es decir, uno como programador que forma parte de un equipo de programadores, de repente se da cuenta de que el programa no le deja asignar un valor a una variable. Entonces caes en la cuenta de que es porque algún compañero tuyo del equipo declaró esa variable como final convirtiéndola en constante y que seguramente lo hizo por algo. Entonces se supone que le preguntarás: "Oye compañero por qué has declarado esto como final??" Ese es el objetivo de declararlo como final.
Otra situación: Imagina que debes ampliar las capacidades de un programa que no has hecho tú. Pongamos por caso que ese programa tiene miles de líneas de código. Te pones manos a la obra y creas una clase que hereda de otra que hizo el programador en su día y te das cuenta de que no puedes dar valor a lo que se supone es una variable. Y caes en la cuenta de que es porque el que hizo el programa en su día la declaró como final convirtiéndola en constante. Aquí pueden pasar dos cosas:
1. Eres un mal programador y dices "me da igual, le quito el final que puso aquí el otro programador en su día y sigo..." con lo que es probable que te cargues cosas importantes del programa
2. Eres un buen programador y piensas: "si está declarado esto como final debe ser por un motivo importante. Vamos a investigar por qué..."
Resumiendo: esto no se hace para "blindar" un programa ante otros programadores que trabajen en el mismo código, sino para proteger el programa de acceso externos y dotarle de lógica y coherencia.
Un saludo
Muchísimas gracias por la respuesta, seguiré con tus vídeos, la verdad es que estoy aprendiendo mucho.
Buenas. tengo una dudilla:
Entre el 5:40 7:00 cuando casteas misEmpleados[5] lo que haces realmente es crear una variable NUEVA de tipo Jefatura llamada jefa_finanzas y a esta variable es a la que le creas el incentivo y luego sale reflejado cuando haces el print de misEmpleados[5].
¿Con esto podríamos decir que la variable creada nueva jefa_finanzas es una variable totalmente nueva y que se comporta distinto a misEmpleados[5] pero que al ser el "mismo objeto" están enlazados y lo que le haces a uno se modifica en el otro?
Espero haberme explicado bien.
También aprovecho para decirte que eres un puto amo, explicas genial. Yo se programacion PHP, Angular, JavaScript... y a veces es bastante tedioso seguir atento en los momentos que pasas por algo que como tu comentas decimos: "tio pero si eso es de tontos saberlo" pero aun así es lógico que lo hagas y lo haces excelente, en mi opinión explicas para tontos, que cualquiera lo puede entender.
PUTO AMO
Gracias por el comentario, me alegro de que te guste el curso. Sí, así es. jefa_Finanzas es una variable totalmente nueva y se comporte diferente a misEmpleados[5] porque son de diferente tipo: uno es de tipo Jefatura y el otro es de tipo Empleados. Lo que hemos hecho es un casting de Empleado a Jefatura para poder almacenar un empleado dentro de un jefe y de esta forma poder utilizar el método establece_incentivo() de la clase Jefatura. Si no hacemos el casting se quedaría como empleado y no podría utilizar establece_incentivo(). Un saludo!
@@pildorasinformaticas si eso lo he entendido perfectamente, que haces el Cast para poder usar el método de clase jefatura. Pero mi duda era que al usar el método de incentivo con el objeto tipo jefatura le ha afectado al objeto de tipo empleado misEnpleados[5] no? Osea que lo que le hagas a esa nueva variable jefatura le afectará a la de tipo empleado.
Vamos que si al objeto empleado le cambias el nombre por pepe si haces print de misEmpleados[5] saldrá pepe y no María cómo tenía antes.
En definitiva que aunque sean distintas variables el objeto es el mismo y lo que cambies en una cambiará en la otra
¿Lo he entendido bien?
@@pildorasinformaticas acabo de ver un comentario de XAVIER TRIBO de hace un año con la misma duda y que la explica perfectamente pero está sin contestar por si yo no me he explicado bien ;)
@@srpunki115 es un puntero oculto :D
profe juan una pregunta, si uno no tiene limite en las clase que puedan heredar de otra porque entonces todas las clases de la api no estan todas unidas o todas heredaran de otra de tal forma que cualquier clase pueda tener los metodos de otras clases no se si me hago entender de ante mano gracias.
Hola Hola, Cordial saludo. Queria consultar una duda, cuando se hace el castin del elemento 5 del vector misEmpleados, se hace creando un nuevo objeto de tipo jefatura, pero puede verse el incremento del incentivo en ese elemento del vector. ¿Cómo es esto posible si el incremento se hace sobre un objeto que no pertenece al vector?, gracias
aldo bustamante Por el principio "Es un" que marca la herencia. Un jefe es siempre un empleado pero no al revés. Y por el enlazado dinámico y el polimorfismo. Se explica en el vídeo anterior o en el siguiente no recuerdo bien, pero se explica. Un saludo
Llegue a un cuarto del curso!!
Excelente explicacion
Heber solis bravo Gracias !!
mi querido instructor . Estas clases se pueden hacer por separado es decir en diferentes ficheros me gustaría saber como se vería o si se puede
Hola!! Tendría que hacerte el ejemplo entero por aquí y me llevaría un tiempo. Pero no te preocupes, más adelante en el curso se harán programas en clases y ficheros separados para que los veáis. Un saludo!!
+pildorasinformaticas gracias profe . Listo sigo motivado hacia adelante es usted muy amable . Saludos buen dia
PRIMER FICHERO: CLASE EMPLEADO
import java.util.Date;
import java.util.GregorianCalendar;
public class Empleado {
//Atributos
private String nombre;
private double sueldo;
private Date altaContrato;
private int id;
private static int idSiguiente;
//Constructor
public Empleado(String nom, double sue, int agno, int mes, int día){
nombre=nom;
sueldo=sue;
GregorianCalendar calendario= new GregorianCalendar(agno,mes-1,día);
altaContrato= calendario.getTime();
++idSiguiente;
id=idSiguiente;
}// fin Constructor
public String getNombre(){
return nombre;
}// end getNombre
public double dameSueldo(){
return sueldo;
}//end dameSueldo
public Date getFechaContrato(){
return altaContrato;
}// fin getFechaContrato
public void subeSueldo(double porcentaje){
double aumento= sueldo*(porcentaje/100);
sueldo=sueldo+aumento;
} // fin subeSueldo
}// fin clase Empleado
SEGUNDO FICHERO. CLASE JEFATURA
public class Jefatura extends Empleado {
//atributos
private double incentivo;
//constructor
public Jefatura(String nom, double sue, int agno, int mes, int dia){
super(nom,sue,agno,mes,dia);
}// fin constructor
public void estableceIncentivo(double b){
this.incentivo=b;
}//fin estableceIncentivo
public double dameSueldo(){
double sueldoJefe=super.dameSueldo();
return sueldoJefe+incentivo;
}//fin dameSueldo
}// fin Jefatura
y LA TERCERA QUE ES LA PRINCIPAL ES LA QUE USA EL PROFE EN EL VIDEO PARA EXPLICAR(USO_EMPLEADO)
Hola muy buenas. A ver si alguien me pude resolver la duda. Al principio del video, para poder usar el método de estableceIncentivo, saca la información del objeto Jefatura que está en el Array misEmpleados a un nuevo objeto llamado Jefatura llamado "jefa_Finanzas", pero no entiendo porqué al hacer el recorrido con el bucle "for each" se actualizan los valores de ese objeto que está dentro del Array, cuando se supone que lo que has hecho es introducir los valores en un objeto nuevo que no está dentro del Array. (Entiendo que no es un objeto nuevo ya que no se usa el operador "new" para crearlo, pero es por saber si es así y ya está, o hay algo detrás que no entiendo). Muchas gracias!
Explica excelente Maestro, talves tiene un curso de Angular o PHP??
Buenas Tardes Profesor. Otra duda:
Al hacer el casting:
Jefatura jefa_Finanzas= (Jefatura) misEmpleados[5];
Todo cambio que se le aplique a jefa_finanzas se le aplicara tambien a misEmpleados[5]?. De ser esto correcto. Por que al hacer casting con variables no sucede lo mismo? Es decir si hacemos esto:
double num1=7.5;
int num2=(int) num1;
A partir de este casting num1 y num2 son variables diferentes y actuan por separado es decir, si yo hago:
num2=9;
Entonces num2 seria igual a 9, pero num1 seguiria siendo igual a 7.5.
Saludos.
Marcel Elias Porque los ejemplos que planteas son diferentes. En el primer caso estás utilizando un Array y en el segundo no. Para que los ejemplos fueran iguales y ver que el comportamiento en ambos casos es el mismo deberías haber planteado con las variables lo siguiente:
double z=7.5;
double miArray[]=new double[0];
miArray[0]=z;
int mi_variable=(int)miArray[0];
Y ahora si que estamos hablando de lo mismo entre casting a variables y casting a objetos con:
Jefatura jefa_Finanzas= (Jefatura) misEmpleados[5];
En ambos casos estamos haciendo lo mismo, es decir, guardar en una posición de un array de un tipo, otro al que previamente le hacemos un casting. Y da igual que sean objetos como jefa_Finanzas o variables como mi_variable.
Un saludo
pildorasinformaticas Si profesor creo entender, pero me surge otra duda: si Jefa_finanzas es un objeto nuevo creado partir de lo que estaba almacenado en misEmpleados[5], por que cada cambio que se le realice a uno de estos objetos se le aplica al otro, es decir, si por ejemplo yo le aplico el metodo subeSueldo a cualquiera de estos objetos se le aplica al otro tambien y viceversa. En el ejemplo de las variables que Ud.menciona si "mi_variable" es modificada, el valor de "miArray[0]" permanece igual. Por eso preguntaba el por que se comportaban de diferente forma.
Leyendo comentarios anteriores un suscriptor tuvo una duda similar y un usuario(Luis Sanchez) repondio lo siguiente:
"Cuando haces esto "staff[6]=staff[3]", el trato a las variables en comparación a los objetos es distinta. Lo que piensas que estas haciendo es "Crear un nuevo objeto del tipo Empleado llamado staff[6] que inicalizamos con los valores que tiene el objeto llamado staff[3]". Lo que realmente la maquina virtual de java interpreta o hace es crear una nueva variable del tipo Empleado en la posición del arrays staff[6] y asignar la misma referencia que tiene el staff[3]“, o simplemente “Copiar la referencia (y no el contenido) de staff[3] en la posición del arrays staff[6]“. El resultado es que tenemos esas dos posiciones del arrays (staff[6] y staff[3]) apuntando a una única referencia (espacio en memoria) en lugar de dos variables independientes con sus respectivas y diferentes referencias (espacios de memoria). Así, cuando una de las dos variables cambia, cambian las dos"
Es este comentario correcto??
Una vez mas gracias por su tiempo. Sinceramente se agradecen todos sus tutoriales y el tiempo que emplea en resolver dudas.
Saludos!!!
Sí, el comentario descrito es correcto. Espero que haya quedado aclarado. Un saludo
A mi me ha ayudado este link para diferenciar entre tipos primitivos y objetos:
users.dcc.uchile.cl/~lmateu/Java/Apuntes/tiposprim.htm
gracias
una pregunta Juan. Ese programa para señalar con flechas rojas es muy bueno. Puedo saber como se llama?
ZoomIt. Un saludo
¿Tienes los códigos que desarrollas en los tutoriales para descárgarlos?
Saludos.
Buenas tardes y gracias por el curso.
Estoy un poco confuso con estos últimos temas por lo tanto te pido el favor me recomiendes algunas paginas donde pueda adquirir algunos ejemplos para ir practicando.
gracias y perdona la molestia.
+Andrés Felipe Montoya Hurtado Hola !! Gracias por el comentario. La verdad es que no conozco páginas en concreto donde poder buscar ejercicios. Si buscas en google "ejercicios java" o "ejercicios + el tema concreto que desees" estoy seguro de que encontrarás muchas páginas donde te ofrecen ejercicios para practicar. Yo por mi parte intento subir ejercicios a mi página web. El problema es que casi no tengo tiempo para grabar los vídeos, menos aún para hacer y subir ejercicios. Pero estoy en ello. Un saludo