Curso C#. Genéricos III. Vídeo 62

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ธ.ค. 2024

ความคิดเห็น • 75

  • @leandropalavecino7179
    @leandropalavecino7179 ปีที่แล้ว +1

    Que potencia tiene esto!! Yo vengo de pascal, donde hay que codear mas!! Esto tienen muchisima utilidad!! Gracias por el curso!! Esta muy bueno

  • @ArrebolDelAlma
    @ArrebolDelAlma 3 ปีที่แล้ว +9

    Al principio me confundí un poco con este tema pero, al ver los tres videos y repasar un poco los ejemplos, ahora me siento bastante seguro. ¡Muchas gracias por tu esfuerzo y un saludo desde Nuevo León, México!

  • @PedroHuesca-d5e
    @PedroHuesca-d5e ปีที่แล้ว

    Lo que tu tan facilmente enseñas con ese talento que tienes, los libros no lo hacen, este tipo de videos nos ayudan ya que de tu propia experiencia si existen casos donde uno tenga que hacer modificaciones al codigo tu lo explicas, eso no lo haria nadie a quien no le apasione algo como la programacion, por eso ademas de ser un excelente maestro, nos enseñas segun tu experiencia propia. Gracias

  • @TonicoBonico
    @TonicoBonico 2 ปีที่แล้ว

    Madre mía, tron, qué curso más salvaje.

  • @edeuryescalante7970
    @edeuryescalante7970 5 ปีที่แล้ว +21

    Saludos!, Juan seria bueno si impartiera un curso de git... Gracias.! Por tus aportes

  • @CamiloHamon
    @CamiloHamon 3 ปีที่แล้ว +2

    Entendí el tema a la perfección, no había escuchado hablar de los genéricos antes, una increíble herramienta. Con mucho ánimo de terminar un curso más con usted, Profe 💪
    Muchas gracias!

  • @davidpiby
    @davidpiby 3 ปีที่แล้ว +1

    Hola Juan, me gradué en una carrera administrativa, aunque actualmente trabajo con proyectos informáticos, y tengo bastante noción, por lo que estoy aprendiendo a desarrollar con tu curso. Muchas gracias por tu aporte.

  • @oscarmartinpico5369
    @oscarmartinpico5369 11 หลายเดือนก่อน

    Yo ya había visto en c++ las templates, es decir, funciones o procedimientos que tanto el parámetro devuelto como el argumento eran de tipo genérico y usaban también la notación , siendo T una convención, porque podrá ser G o guachimolli, por dedir cualquier cosa. No sé si en c# se puede hacer, y es que aún no e visto este capítulo; sólo 5 segundos.

  • @byronhc11
    @byronhc11 5 ปีที่แล้ว +2

    Saludos Juan... muchos te felicitan por tu enorme explicación. Eres como el predicador das todo sin pedir nada a cambio.. Dios te bendiga grandemente...

    • @Sir_Isaac_Newton_
      @Sir_Isaac_Newton_ 3 ปีที่แล้ว

      Gente que no da todo, pidiendo a cambio, gana dinero, fama y estatus. Juan, que da todo y no pide nada a cambio, se lleva un "Dios te bendiga"

  • @luisdavidascenciocuba9425
    @luisdavidascenciocuba9425 2 ปีที่แล้ว

    Muy buen tutorial!! Me sirvieron mucho los 3 videos para poder entender los operadores genéicos. Gracias por el aporte crack!

  • @JohanRobayo10
    @JohanRobayo10 ปีที่แล้ว +3

    Algo curioso es que puedes combinar programación genérica con el polimorfismo o asignación polimórfica. con eso puedes tener objetos de tipo Director, Electricista y Secretaria en la clase AlmacenEmpleados, esto hace que el código sea más legible y sea más facil la escalabilidad de tu programa, algo así:
    using System;
    namespace Genericos
    {
    class Program
    {
    static void Main(string[] args)
    {
    AlmacenEmpleados empleados = new AlmacenEmpleados (5);
    empleados.Agregar(new Director(1000));
    empleados.Agregar(new Director(1500));
    empleados.Agregar(new Director(2000));
    empleados.Agregar(new Electricista(2500));
    empleados.Agregar(new Secretaria(3000));
    //empleados.Agregar(new Estudiante(2500)); //no deja agregar al estudiante porque no hereda o implementa a IEmpleado
    IEmpleados [] array = empleados.Array;
    foreach (var empleado in array)
    {
    Console.WriteLine(empleado.GetSalario());

    }
    }
    }
    class AlmacenEmpleados where T : IEmpleados //restriccion solo para los que tienen salario
    {
    private int i = 0;
    private T[] array;
    public AlmacenEmpleados(int z) {

    Array= new T[z];

    }
    public int I { get => i; set => i = value; }
    public T[] Array { get => array; set => array = value; }
    public void Agregar(T empleado)
    {
    Array[I]= empleado;
    I++;

    }
    public T GetEmpleado(int i) => Array[i];
    }



    }
    interface IEmpleados
    {
    double GetSalario();
    }
    class Estudiante
    {
    private double edad;
    public Estudiante(double edad)
    {
    this.Edad = edad;
    }
    public double Edad { get => edad; set => edad = value; }
    }
    class Director : IEmpleados
    {
    private double salario;
    public Director(double salario) {

    this.salario = salario;

    }
    public double GetSalario() => this.salario;
    }
    class Secretaria : IEmpleados
    {
    private double salario;
    public Secretaria(double salario)
    {
    this.salario = salario;
    }
    public double GetSalario() => this.salario;
    }
    class Electricista : IEmpleados
    {
    private double salario;
    public Electricista(double salario)
    {
    this.salario = salario;
    }
    public double GetSalario() => this.salario;
    }

    • @rasptin
      @rasptin ปีที่แล้ว +1

      Buen aporte, compañere.

  • @tomaslala7879
    @tomaslala7879 5 ปีที่แล้ว +2

    Excelentes vídeos de c#, muchas gracias por la explicación.

  • @Juanda-30
    @Juanda-30 ปีที่แล้ว

    muy bueno aquí vamos

  • @999CANNO
    @999CANNO 3 ปีที่แล้ว

    Gracias amigo, tu sabes explicar muy bien. Tus videos me han ayudan mucho.

  • @ghss5088
    @ghss5088 3 ปีที่แล้ว

    pero que funcionalidad más bonita!!!

  • @Mrleopola
    @Mrleopola 5 ปีที่แล้ว

    Genio!!!! Un abrazo Juan!

  • @alexabc2012
    @alexabc2012 4 ปีที่แล้ว +1

    seria bueno ver estos genéricos con un ejemplo con Base de Datos y los otros videos como los constructores, herencias etc...

  • @Vic-js4gm
    @Vic-js4gm 9 หลายเดือนก่อน

    De este modo se puede almacenar dentro de una clase generica, objetos de diferente clase. Eso esta genial. Lo que veo dificil es despues volverlos a extraer para consultar sus atributos (salario), ya que habria que hacer un casting y no sabes de que clase es el elemento almacenado. ¿Alguna sugerencia?

    • @cesaraugustomendozayanez9552
      @cesaraugustomendozayanez9552 3 หลายเดือนก่อน

      hola amigo, tu si sabes de que clase estas almacenando, al momento de instanciar la clase generica, tu debes pasarle que tipo de objeto recibira, ahi sabes pues que tienes.

  • @Victor123osiris
    @Victor123osiris 5 ปีที่แล้ว

    Muy buenos vídeos, estoy loco que entremos a Form

  • @angelocrospoma3403
    @angelocrospoma3403 5 ปีที่แล้ว

    Viendo el video en medio del trabajo :)

  • @abadcompany5098
    @abadcompany5098 2 ปีที่แล้ว

    Graciaas cx.

  • @nelsonhernandez8654
    @nelsonhernandez8654 4 หลายเดือนก่อน

    profesor buenas noches, saludos desde colombia. profesor estas clases genericas se declaran muy parecido a las list que diferencia hay entre estos dos. gracias

  • @chicho9551
    @chicho9551 5 ปีที่แล้ว +5

    Hola Juan! Que tal? Estoy re-aprendiendo C# con tus videos sobre ese lengüaje y me esta ayudando mucho. Muchas gracias crack por todo el contenido que nos das para todos!
    Quería hacerte una consulta, tenes pensado hacer unos tutoriales sobre Unity o Godot ?
    Muchas gracias,
    Saludos desde Argentina de Buenos Aires!!

    • @estebanf1490
      @estebanf1490 3 ปีที่แล้ว +1

      te aconsejo hacer proyectos con todos los cursos en donde almacenes todo lo que enseñaron, para que después puedas abrirlos y consultarlos rápidamente

  • @alejoservin9362
    @alejoservin9362 5 ปีที่แล้ว +1

    Aprender al mismo tiempo c# y Python 3 al mismo tiempo es un poco confuso a lo primero pero se puede, ¿que diferencias en pocas palabras separan a estos lenguajes? Saludos tus tutoriales se comprenden muy bien sigue sí que está bárbaro esta manera de aprender

    • @ezequielmartinez194
      @ezequielmartinez194 ปีที่แล้ว

      ¿Pudiste aprender ambos lenguajes a la vez? Yo traté de hacer lo mismo pero me era difícil ya que mezclaba los conceptos de los lenguajes y tuve que dejar Python para después.

  • @euclidesperez9682
    @euclidesperez9682 ปีที่แล้ว +1

    Secretaria sueldo = empleados.getDatosEmpleados(1);
    Console.WriteLine((double)sueldo.getSalario());
    para poder imprimir tuve que hacer esto

  • @OsomWay
    @OsomWay 4 ปีที่แล้ว +1

    Dentro de ese Array de genérico no podrían meterse objetos de tipo Secretario y Director a la vez?

    • @1995DCH
      @1995DCH 3 ปีที่แล้ว +1

      AlmacenaEmpleados empleados = new AlmacenaEmpleados(2); //de esta forma se puede

  • @josebenitez9442
    @josebenitez9442 4 ปีที่แล้ว

    muy bueno

  • @thejulinho09
    @thejulinho09 ปีที่แล้ว

    La class Estudiante no ereda el :IParaEmpleados y tambien tendria que tener por polimorfismo getSalario para que valide a Estudiante en la instancia.

  • @forsabarça
    @forsabarça 2 ปีที่แล้ว

    Buenas !!
    Me pregunto si en C# no existe un equivalente al ArrayList de Java.
    Muchas gracias de antemano !!

  • @chotrufa
    @chotrufa 4 ปีที่แล้ว

    hola recien empiezo con el curso y me surge una duda aqui, para aprovechar codigo pudiera haber hecho mi clase generica con el constructor salario y el metodo getsalario y solo poner que hereden de ella??

  • @sergiodavidmm7056
    @sergiodavidmm7056 4 ปีที่แล้ว +1

    Buenas tengo una duda, ¿es necesario que la clase en cuestión implemente explícitamente la interfaz o basta con que cumpla los requisitos de la misma? Es decir que si por ejemplo el estudiante tuviese un método de nombre getSalario() pero su clase no llevara la interfaz : IParaEmpleados podría ser tratada por la clase genérica.

    • @ezequielmartinez194
      @ezequielmartinez194 ปีที่แล้ว

      Llego tarde pero por si alguien tiene la misma pregunta y ve este video ahora, eso no es posible. Debes si o si implementar la interfaz de IParaEmpleados, si no lo implementas en la clase Estudiante y dentro de su bloque creas el método con el mismo nombre, con mismo tipo de parámetros y tipo de dato del método (o sea, un método exactamente igual que la interfaz "IParaEmpleados") C# va a tomar como que ese método creado no tiene nada que ver con la interfaz, si no que, es un método creado de la clase estudiante y no implementado de la interfaz, por lo tanto, no es posible usarlo en la clase genérica.
      La forma para que pueda suceder, es que implementes la interfaz explícitamente: "IParaEmpleados".
      a la hora de declarar la clase Estudiante ya que, de esa manera ahí si estarías implementando la interfaz y estar obligado a crear el método, y será posible utilizarlo en la clase genérica ya que, la restricción de la clase genérica era que solo podía utilizarse con tipos que implementen la interfaz "IParaEmpleados"

  • @odinsm9811
    @odinsm9811 3 ปีที่แล้ว

    Esa restricción funcionaría si en vez de utilizar una interfaz lo hago con clases que hereden de otra? en este caso si tengo una clase empleado y escribo "where T: Empleado"?

    • @odinsm9811
      @odinsm9811 3 ปีที่แล้ว

      ya vi que si :3

  • @georgeestebanrojascastillo6575
    @georgeestebanrojascastillo6575 2 ปีที่แล้ว

    Una cosa INTERESANTE!: POR QUE LOS METODOS DE LA INTERFACE HOY EN DIA PUEDEN SER DESARROLLADOS?

  • @Lucaskpp7
    @Lucaskpp7 4 ปีที่แล้ว

    `Juann!! como se podría recorrer el array por ejemplo cuando creaste director con distintos salarios ??
    Con un foreach ?> porque no he visto como las imprimes de esta manera x consola, cuando lo intento no me da los detalles

    • @RrAztAfaray95
      @RrAztAfaray95 4 ปีที่แล้ว +1

      for (int i=0;i < 3;i=++)
      {
      Console.Writeline(empleados.getEmpleado(i));
      }
      No se si te refieres a eso pero las posiciones cuando las vas a imprimir las tienes que llamar por el lugar en donde están guardadas, para recorrerlas todas haces un barrido.

    • @arielseoane2663
      @arielseoane2663 4 ปีที่แล้ว +1

      @@RrAztAfaray95 hola, has respondido hace tiempo. He llegado a tu respuesta, pero primero he intentado con un foreach. pero no pude ¿Es posible hacerlo con un foreach?

  • @fernandogajew9879
    @fernandogajew9879 5 ปีที่แล้ว

    Como se podria crear un descargador de video

  • @angelocrospoma3403
    @angelocrospoma3403 5 ปีที่แล้ว +1

    Llegué temprano :)

  • @estebanf1490
    @estebanf1490 3 ปีที่แล้ว

    no entendí bien la programación genérica, que diferencia hay si se guardan en un array?, podrías poner situaciones que sean mas reales en un curso? o un curso en donde hagamos un proyecto utilizando todo lo visto.

    • @brianblanco3960
      @brianblanco3960 3 ปีที่แล้ว

      En los videos anteriores explicó que era para evitar el uso excesivo de casting y porque con clases genéricas los errores te los da en tiempo de compilación en lugar de ejecución, lo que te ahorra muchos dolores de cabeza. El guardarlos en el array creo que es solo el ejemplo que dió porque es con el que estamos más familiarizados a esta altura del curso. Pero en sí es el manejo de los tipos de objetos, no solamente en arrays (creo)
      Es difícil que ponga "un caso real" porque hay infinitas opciones y lo que a una persona le serviría quizás los demás no es lo que ande buscando, por eso trata de ser lo mas abarcativo posible. Soy bastante nuevo en este mundo... Y en el curso de Python me sentía igual, pero poco a poco te vas nutriendo de info para hacer tus propios proyectos!

  • @CarlosMGomez
    @CarlosMGomez ปีที่แล้ว

    Entonces los genéricos sólo sirven para hacer colecciones de instancias? 🤔

    • @hernangalvez4887
      @hernangalvez4887 ปีที่แล้ว

      todavia no llegue al video de colecciones, pero esto de los genericos puede hacerse mediante colecciones y simplifcar todo esto ? me está pareciendo muy rebuscado

  • @alphaalfre
    @alphaalfre 2 ปีที่แล้ว

    👀

  • @rominaprograma
    @rominaprograma ปีที่แล้ว

    Se puso dificil la materia *ha salido del grupo*

  • @abelcanizaresgalles5089
    @abelcanizaresgalles5089 5 ปีที่แล้ว

    Únicamente faltaría comentar cómo funcionan estos arrays, ya que te puedes perder en la variable [i] cuando estas aprendiendo de 0. El resto perfecto como siempre!

    • @brianalexandergomez4753
      @brianalexandergomez4753 3 ปีที่แล้ว +3

      Sus videos siguen un patron de aprendizaje progresivo, por lo que el siempre utiliza recursos que ya haya ensenado en videos anteriores. Esta de mas que el explique como funciona un Array cuando ya el lo explico en clases pasadas, el siempre asume de que sabes lo que vez por que ya te lo enseno.

  • @PabloAM50
    @PabloAM50 5 ปีที่แล้ว +3

    Siglo XXI y seguimos diciendo secretarias...

    • @bryanc343
      @bryanc343 5 ปีที่แล้ว

      ¿Cómo se dice entonces? jajaja

    • @PabloAM50
      @PabloAM50 5 ปีที่แล้ว +2

      @@bryanc343 secretarios incluye a las secretarias y secretarios. Secretarias es muy sesgado y bueno, hace 30 años vale, pero ya hemos evolucionado un poquillo ¿No?

    • @bryanc343
      @bryanc343 5 ปีที่แล้ว +1

      @@PabloAM50 pero eso es machismo ¿o es machismo decir solo secretarias?
      Naaa mentira jaja, gracias por la aclaración 😁.

    • @diegolongo6560
      @diegolongo6560 5 ปีที่แล้ว

      @@PabloAM50 ahora se le dice secretaries... pinche lenguaje integral

    • @PabloAM50
      @PabloAM50 5 ปีที่แล้ว

      @@diegolongo6560 evidentemente no se dice así, pinche incultura...

  • @houkoisthebest
    @houkoisthebest 5 ปีที่แล้ว +2

    Con todo respeto, creo que estás llevando a cabo demasiados cursos a la vez. Soy seguidor de tu curso de Spring y es realmente lento el progreso del avance de ese curso.

    • @johanlopez9559
      @johanlopez9559 4 ปีที่แล้ว +1

      Nos esta ofreciendo estos grandiosos cursos de forma gratuita, creo que eso ya vale bastante, pero quejarse por el progreso de tiempo de aquello es algo estúpido, si gustas aprender rápido metete a cursos online de paga, Buena Suerte!

    • @houkoisthebest
      @houkoisthebest 4 ปีที่แล้ว +1

      @@johanlopez9559 Mi comentario tiene casi 2 años de antiguedad.
      Estúpido es contestar ahora xD.
      Que algo sea gratuito no es excusa para que esté mal hecho o no cumpla los estándares de tiempo que el creador indica al comienzo del curso. De hecho es por culpa de gente como tu que los servicios públicos son tan malos sin que a nadie le importe.

    • @johanlopez9559
      @johanlopez9559 4 ปีที่แล้ว +1

      @@houkoisthebest En este caso no importa el tiempo mientras que el servicio cumpla las satisfacciones del usuario, porque puedes volver a repasar, pero quejarte por el progreso de algo ofrecido por propia voluntad es lo máximo, quizás por gente como tu que depende de lo que le pueda ofrecer su gobierno el país no avanza.

    • @houkoisthebest
      @houkoisthebest 4 ปีที่แล้ว +1

      @@johanlopez9559 Si no vas a cumplir las fechas que tu mismo estableces en los videos iniciales, no estás prestando "un buen servicio".
      Más fácil es no prometer fechas.
      Vuelve a la escuela, es obvio que tu comprensión de la realidad es propia de un preadolescente.

    • @riftenguard3653
      @riftenguard3653 3 ปีที่แล้ว

      @@houkoisthebest Este comentario es algo viejo, de todas formas, el nunca estableció una fecha en la que subiría los videos, de hecho en el video inicial dijo que lo haría en sus tiempos libres
      Saludos.

  • @ushiookasaki
    @ushiookasaki 5 ปีที่แล้ว

    Te recomiendo que no mezcles las variables de clase y las variables locales, generas inconsistencia de datos. Por que en el ejemplo usas "this.i " y en otras ocasiones solo usas "i" (no es recomendable hacerlo y en ocasiones genera errores). Solo una recomendación, de lo demás todo bien.

    • @vijingerz5533
      @vijingerz5533 5 ปีที่แล้ว +2

      Se ve que no has visto ninguno de los vídeos anteriores, donde ya explicó claramente lo de la inconsistencia, y el uso del This.
      Un saludo

  • @prohibidoNOmirar
    @prohibidoNOmirar 3 ปีที่แล้ว +1

    muy buena la explicacion pero la verdad lamentable el machismo implícito... por que no directorA y secretariO, no les parece? ay que dejar de naturalizar estas cosas

    • @VCELUIS
      @VCELUIS 2 ปีที่แล้ว

      este no es un canal de progresismo es un canal de programacion

    • @VCELUIS
      @VCELUIS 2 ปีที่แล้ว

      sino te parece el contenido largate a otro lugar

    • @Horneto12
      @Horneto12 2 ปีที่แล้ว

      is incriibli il michismi impliciti
      en todo lado estos progres y defensores de lo moral, hasta en videos de enseñanza de otro asunto totalmente diferente.