Course C #. Heritage VI. Protected access modifier. Video 46

Поделиться
HTML-код
  • Опубликовано: 16 окт 2024

Комментарии • 43

  • @alespre85
    @alespre85 5 лет назад +41

    En serio, no sé cómo lo haces. Estoy haciendo el curso de java para luego seguir con Android, y aunque ahora lo sigo por la web, empecé a seguirte el canal por aquí, y cada día me salen prácticamente dos o tres vídeos nuevos, alucino mucho la verdad. Muchas gracias por el trabajo que te pegas

  • @juanpablocortezmosquera8946
    @juanpablocortezmosquera8946 11 месяцев назад

    Juan, veo este curso por 3 vez y no dejo de sorprenderme! Que bien enseñas y de hecho se me ha pegado mucho de tu metodología de profesor a la forma como enseño a veces cuando doy clases.

  • @danpar7045
    @danpar7045 4 года назад +2

    Te felicito por tu explicación sobre clases. Sos muy claro. Muchas gracias por tu gra aporte.

  • @MegaDanni96
    @MegaDanni96 4 года назад +1

    Tus videos son los mejores de la web, gracias.

  • @alejandrovasquez6751
    @alejandrovasquez6751 5 лет назад +4

    No tardé mucho en realizar el ejercicio, no hubo errores de sintaxis y tanto la herencia como el polimorfismo funcionó a la perfección. Como siempre, un millón de gracias!!

  • @ladyprincs3202
    @ladyprincs3202 4 года назад +2

    Maravilloso el ejercicio practico, Te lo agradecemos enormemente porque nos permite reforzar lo que nos has enseñado. Muchas gracias, de corazón!
    En la cuarentena he aprendido muchísimo gracias a ti! Estoy loca por seguir aprendiendo de este nuevo mundo que se ha abierto ante mis ojos.

  • @francorolon7917
    @francorolon7917 5 лет назад

    Hoy llegue a este video.! Lo empece la semana hace unas semanas. La verdad buenísimo el curso espero con ansias el siguiete video.

  • @skdante100
    @skdante100 5 лет назад +7

    Genial me encantan tus videos, soy fan de muchos de los temas que has mencionado. Me gustaria que agregaras uno de Vue :)

  • @pumpdoriloco915
    @pumpdoriloco915 3 года назад

    Amo este canal

  • @ghuztavorenteria6142
    @ghuztavorenteria6142 5 лет назад +2

    Gracias por todo, espero con ansias el curso de django

  • @Masitx99
    @Masitx99 5 лет назад +1

    Muy bueno el video muchisimaa gracias

  • @Francisco-rh5qg
    @Francisco-rh5qg 5 лет назад +1

    Mil gracias hermano.

  • @georgeestebanrojascastillo6575
    @georgeestebanrojascastillo6575 2 года назад

    LIKE: por un CURSO de EJERCICIOS DE POO.

  • @juliorenemendezsegura1396
    @juliorenemendezsegura1396 4 года назад

    Felicidades por tan buen curso!!! Soy relativamente principiante en esto de la programación y me he involucrado en varias charlas sobre POO con otros programadores (algunos con algo de experiencia), y que básicamente iniciaron y continúan en Visual FoxPro. Me llama mucho la atención que tienen la percepción casi total de que "LA POO ES PORQUE, SGÚN ELLOS, LOS OBJETOS SON LOS BOTONES, LAS VENTANAS, LOS LISTBOX, ETC." Agradecería mucho si pudiera hacer una aclaración a esto pues con un compañero que está muy arraigado a esta idea ESTAMOS SIGUIENDO ESTE CURSO y me gustaría mucho que alguien con tan buena didáctica como Ud. pudiera dejarlo bien claro. Saludos y siga adelante con esta buena causa. Buenísimo!!! (PD Aquéllos que dominan bastante el tema, disculpen la molestia por esta petición de principiantes, abrazos).

  • @francovedia5584
    @francovedia5584 Год назад

    Gracias.

  • @claudiooc1976
    @claudiooc1976 5 лет назад

    Gracias, como siempre muy didactico

  • @txc1033
    @txc1033 5 лет назад

    Te felicito por el curso muy bien explicado

  • @maxi5300
    @maxi5300 5 лет назад

    Muy bueno lo del ejercicio. Saludos

  • @cdv88
    @cdv88 3 года назад +4

    Excelente curso. No se en España, pero por aquí en México piden mucho en los empleos c#, .NET con Angular, mi duda es si tienes pensado en algún momento hacer uno de Angular. Saludos

    • @cristiana8025
      @cristiana8025 3 года назад +1

      Ya se te cumplio, ya lo empezó

  • @mnl1
    @mnl1 4 года назад

    Antes de nada agradecerte mucho tu dedicación y tu compromiso con cada uno de los cursos que haces. Siempre los terminas y son muy completos. Solo quería hacer una pregunta sobre el protected. Si un método en una clase es protected o private ¿No es accesible para los objetos o instancias que se creen de esa clase? Y si esto es así, ¿entonces estoy obligado a hacer estos métodos public para poder usarlos en los obejtos? Muchas gracias Juan y un gran saludo desde Canarias.

  • @uzumakimikey4364
    @uzumakimikey4364 3 года назад

    Buen video

  • @TonicoBonico
    @TonicoBonico 2 года назад

    Like a boss.

  • @ELGOATRD
    @ELGOATRD 5 лет назад +1

    Excelente video fuera bueno que dejaras ejercicio continuamente en los vídeos!!!

    • @pildorasinformaticas
      @pildorasinformaticas  5 лет назад +2

      No me dan las 24 horas del día para eso. Pero en los cursos tutorizados de mi portal www.pildorasinformaticas.es hay ejercicios. Y este curso estará en breve en la zona de tutorizados. Un saludo!

  • @Jusilus
    @Jusilus 3 года назад +1

    Por si alguien tiene dudas. Supongamos que tenemos la clase Mamifero con dos atributos:
    private int patas;
    private bool pelo;
    y tres métodos:
    public virtual void Pensar()
    {
    Console.WriteLine("Toy pensando como mamífero.");
    }
    public int GetPatas()
    {
    return this.patas;
    }
    public bool IsPelo()
    {
    return this.pelo;
    }
    Ahora creamos una clase Humano que herede de Mamifero. Si, desde main, instanciamos Humano:
    Humano david = new Humano();
    veremos que humano ha heredado los campos y los métodos. Si en Mamífero cambiamos un método a private la clase Humano ya no lo hereda. Si en Mamífero damos valores a los campos
    private int patas = 4;
    private bool pelo = true;
    y ejecutamos
    Console.WriteLine(david.GetPatas());
    Console.WriteLine(david.IsPelo());
    veremos que la clase Humano hereda los valores, también. Si queremos que Humano tenga sus propios campos y estos sus propios valores, deberemos otorgarle sus propios campos e inicializarlos:
    private int patas = 2;
    private bool pelo = false;
    Además, habrá que añadir los métodos GetPatas() e IsPelo() para poder acceder a ellos como Humano. Tal y como ha explicado Juan, habrá que usar el operador new o virtual + override (el propio VS ya avisa de que se puede mejorar el código).

  • @Daniel-ks8pe
    @Daniel-ks8pe 5 лет назад +1

    Te planteas hacer tutoriales de unity ( no se si con esta pregunta la cago porq solo se q unity va con un lenguaje q no se si es unico o es conpatible con otros ) gracias

    • @franklinsena2843
      @franklinsena2843 4 года назад

      este curso te sirve para usar c# en Unity ya que unity usa por defecto Visual Studio como IDE para programar tus proyectos.

  • @roylinrodriguez9679
    @roylinrodriguez9679 4 года назад

    No se si más adelante en el curso hablaran de eso pero quiero preguntar si, usando un método de acceso getter se puede acceder a campos de clase private, puedo acceder a métodos privated con métodos de acceso getter??

    • @borrego9022
      @borrego9022 4 года назад

      Tu pregunta es algo confusa... y bueno te responderé con lo que se.
      Creo que las clases prívate no pueden ser accesibles desde ninguna otra clase. Por lo cual tampoco tendrán acceso a sus métodos y a sus variables o constantes.
      O puede que al momento de colocar prívate en tu clase si puedas acceder a ella desde cualquier otra clase, pero siempre y cuando sea una clase de tu mismo proyecto. Ya que podrías tener dos proyectos o más bien dos archivos que compartan cierta información entre ellos... pero si una de tus clases es prívate no podrás acceder a ella más que desde el mismo archivo al que pertenece o en el que está.
      (No estoy muy seguro sobre las clases prívate, aunque creo que pueden ser alguna de esas dos)
      Y sobre los métodos “prívate”, si puedes acceder a ellos,siempre y cuando al menos uno de los métodos de tu clase sea de de tipo “public”
      Ya que el método de acceso “prívate” hace que puedan acceder a ese método pero solo los otros métodos que pertenezcan a la misma clase.
      Aunque... ahorita hablando con el tema de la herencia, no se si eso cambie algo. Supongo que no

    • @El_Facheras
      @El_Facheras Год назад

      //METODO PRIVADO
      private string GetNombre()
      {
      return nombreSerVivo;
      }
      //Propiedad getter publica
      public string getName
      {
      get
      {
      return GetNombre();
      }
      }

  • @memedance3535
    @memedance3535 6 месяцев назад

  • @thebeginner7759
    @thebeginner7759 Год назад

    Tengo una pregunta, como hago que una variable/metodo no se herede pero que en otra clase sí?

  • @jeremiasramos4887
    @jeremiasramos4887 5 лет назад

    Gracias, continue siere de python com curso django

  • @alphaalfre
    @alphaalfre 2 года назад

    👀

  • @kevinhernandezmonzalvo5539
    @kevinhernandezmonzalvo5539 3 года назад +1

    Aquí mi propuesta, sin mucho detalle en instrucciones:
    namespace Ejercicio
    {
    class Program
    {
    static void Main(string[] args)
    {
    Coche Coche = new Coche();
    Avión Avión = new Avión();
    Console.WriteLine(Coche.GetInfoVehículo("coche"));
    Console.WriteLine(Avión.GetInfoVehículo("avión"));
    Coche.Conducir();
    Avión.Conducir();
    }
    }
    class Vehículo
    {
    public Vehículo(string vehículo)
    {
    PuedeTranpsortar = true;
    TieneMotor = true;
    if (vehículo == "coche")
    {
    TieneRuedas = true;
    TieneAlas = false;
    }
    if (vehículo == "avión")
    {
    TieneRuedas = false;
    TieneAlas = true;
    }
    }
    protected void ArrancarMotor()
    {
    Console.WriteLine("El vehículo puede arrancar el motor");
    }
    protected void PararMotor()
    {
    Console.WriteLine("El vehículo puede parar el motor");
    }
    public virtual void Conducir()
    {
    Console.WriteLine("Los vehículos pueden conducirse");
    }
    public string GetInfoVehículo(string vehículo)
    {
    return ($"Información del vehículo: {vehículo}
    "+ "Puede transportar: "+PuedeTranpsortar
    +"
    Tiene Motor: "+ TieneMotor+"
    Tiene Ruedas: "+TieneRuedas+"
    TieneAlas: "+
    TieneAlas);
    }
    private bool PuedeTranpsortar;
    private bool TieneMotor;
    private bool TieneRuedas;
    private bool TieneAlas;
    }
    class Avión : Vehículo
    {
    public Avión():base("avión")
    {
    }
    public override void Conducir()
    {
    Console.WriteLine("El Avión se conduce en el aire");
    }
    }
    class Coche: Vehículo
    {
    public Coche():base("coche")
    {
    }
    public override void Conducir()
    {
    base.Conducir();
    {
    Console.WriteLine("El Coche se conduce en tierra");
    }
    }
    }
    }

  • @pepetv2566
    @pepetv2566 4 месяца назад

    mi codigo:
    using System;
    using System.Drawing;
    using System.Reflection;
    namespace Herencia_5
    {
    internal class Program : Object
    {
    static void Main(string[] args)
    {
    Avion miAvion = new Avion("A-29B Super Tucano", "Verde oscuro");
    Coche miMercedes = new Coche("Mercedes-Benz Clase E (W124)", "Gris");
    Vehiculo[] vehiculos = new Vehiculo[2];
    vehiculos[0] = miAvion;
    vehiculos[1] = miMercedes;
    Console.WriteLine("Avión");
    Console.WriteLine(miAvion.Modelo());
    Console.WriteLine(miAvion.Color());
    miAvion.ArrancarMotor();
    vehiculos[0].Conducir();
    miAvion.Aterrizaje();
    miAvion.PararMotor();
    Console.WriteLine("
    Coche");
    Console.WriteLine(miMercedes.Modelo());
    Console.WriteLine(miMercedes.Color());
    miMercedes.ArrancarMotor();
    vehiculos[1].Conducir();
    miMercedes.Estacionando();
    miMercedes.PararMotor();
    }
    }
    class Vehiculo
    {
    private string modelo;
    private string color;
    public Vehiculo(string modelo, string color)
    {
    this.modelo = modelo;
    this.color = color;
    }
    public void ArrancarMotor()
    {
    Console.WriteLine("El motor esta arrancando");
    }
    public void PararMotor()
    {
    Console.WriteLine("El motor esta parando");
    }
    public virtual void Conducir()
    {
    Console.WriteLine("Voy conduciendo");
    }
    public string Modelo()
    {
    return "Nombre del modelo: " + modelo;
    }
    public string Color()
    {
    return "Color: " + color;
    }

    }
    class Avion : Vehiculo
    {
    public Avion(string modelo, string color) : base(modelo, color)
    {
    }
    public override void Conducir()
    {
    Console.WriteLine("Voy conduciendo por encima de las nubes");
    }
    public void Aterrizaje()
    {
    Console.WriteLine("Estoy aterrizando");
    }
    }
    class Coche : Vehiculo
    {
    public Coche(string modelo, string color):base(modelo, color)
    {
    }
    public override void Conducir()
    {
    Console.WriteLine("Voy conduciendo en la carretera");
    }
    public void Estacionando()
    {
    Console.WriteLine("Me estoy estacionando");
    }
    }
    }

  • @nicolas2008alcubo
    @nicolas2008alcubo 5 лет назад +3

    using System;
    namespace EjercicioHerencia001
    {
    class Program
    {
    static void Main(string[] args)
    {
    Avion miACME = new Avion("ACME");
    Coche miSandero = new Coche("Renault Sandero");
    miACME.arrancarMotor();
    miACME.conducir();
    miACME.pararMotor();
    miSandero.arrancarMotor();
    miSandero.conducir();
    miSandero.pararMotor();
    Console.WriteLine();
    Console.BackgroundColor = ConsoleColor.DarkYellow;
    Console.ForegroundColor = ConsoleColor.DarkBlue;
    Console.Write("PRESIONA CUALQUIER TECLA Y NO VERAs mas este rollo...");
    Console.ReadKey();
    }
    }
    class Vehiculo
    {
    public Vehiculo(String marca)
    {
    this.marca = marca;
    }
    public void arrancarMotor()
    {
    Console.ForegroundColor = ConsoleColor.DarkGreen;
    Console.WriteLine("El vehículo " + marca + " ha arrancado el motor");
    }
    public void pararMotor()
    {
    Console.ForegroundColor = ConsoleColor.DarkRed;
    Console.WriteLine("El vehículo " + marca + " ha parado el motor");
    }
    public virtual void conducir()
    {
    Console.ForegroundColor = ConsoleColor.Magenta;
    Console.WriteLine("Conducción del vehículo");
    }
    private String marca;
    }
    class Avion : Vehiculo
    {
    public Avion(String marcaAvion) : base(marcaAvion)
    {
    }
    public override void conducir()
    {
    Console.ForegroundColor = ConsoleColor.DarkYellow;
    Console.WriteLine("Os digo que conducir un avión es complicado");
    }
    }
    class Coche : Vehiculo
    {
    public Coche(String marcaCoche) : base(marcaCoche)
    {
    }
    public override void conducir()
    {
    Console.ForegroundColor = ConsoleColor.DarkYellow;
    Console.WriteLine("¡Estoy conduciendo a 240 km/h. Jajaja!");
    }
    }
    }
    Ahí funciona todo bien, lo único que me da errores al querer crearme un array de tipo Vehiculo llamado misVehiculos y deseo hacer algo así:
    misVehiculos[0]=miACME;
    misVehiculos[1]=miSandero;
    Me pone error que dice "Vehiculo es tipo, que no es válida en el contexto indicado".
    Si lo puedes explicar en el próximo vídeo, bárbaro.
    Saludos, Juancito.
    Nicolás Matías Funtalas.

    • @francorolon7917
      @francorolon7917 5 лет назад

      Yo lo hice asi
      Vehículo[ ] misVehiculos = new vehículo[2];
      Coche miCoche = new Coche("modelo");
      misVehiculos[0] = miCoche;

  • @johanpalaciose
    @johanpalaciose 3 года назад

    Aquí mi solución al ejercicio
    using System;
    namespace EjHerencia
    {
    class Program
    {
    static void Main(string[] args)
    {
    Coche miCarro = new Coche(false);
    Console.WriteLine("Mi coche objeto en acción");
    Console.WriteLine($"El estado del motor es: {miCarro.getMotorEstado()}");
    miCarro.arrancarMotor();
    miCarro.acelerar();
    miCarro.frenar();
    miCarro.conducir();
    miCarro.pararMotor();
    Avion miAvion = new Avion(false);
    Console.WriteLine("Mi avión objeto en acción");
    Console.WriteLine($"El estado del motor es: {miAvion.getMotorEstado()}");
    miAvion.arrancarMotor();
    miAvion.despegando();
    miAvion.aterrizar();
    miAvion.conducir();
    miAvion.pararMotor();
    }
    }
    class Vehiculo
    {
    public Vehiculo(bool motorEstado)
    {
    this.motorEstado = motorEstado;
    }
    public void arrancarMotor()
    {
    Console.WriteLine("El motor ha sido arrancado");
    motorEstado = true;
    }
    public void pararMotor()
    {
    Console.WriteLine("El motor ha sido detenido");
    motorEstado = false;
    }
    public virtual void conducir()
    {
    Console.WriteLine("Conduciendo el vehiculo");
    }
    public bool getMotorEstado()
    {
    return motorEstado;
    }
    private bool motorEstado;
    }
    class Avion : Vehiculo
    {
    public Avion(bool estadoAvion) : base(estadoAvion)
    {
    }
    public void aterrizar()
    {
    Console.WriteLine("El avion esta aterrizando");
    }
    public void despegando()
    {
    Console.WriteLine("El avion esta despegando");
    }
    public override void conducir()
    {
    if (getMotorEstado() == true) Console.WriteLine("Conduciendo el avión");
    else Console.WriteLine("El motor esta apagado, no puedes volar");
    }
    }
    class Coche : Vehiculo
    {
    public Coche(bool estadoCoche) : base(estadoCoche)
    {
    }
    public void acelerar()
    {
    Console.WriteLine("El coche esta acelerando");
    }
    public void frenar()
    {
    Console.WriteLine("El cohce esta frenando");
    }
    public override void conducir()
    {
    if (getMotorEstado() == true) Console.WriteLine("Conduciendo el carro");
    else Console.WriteLine("El motor esta apagado no puedes manejar");
    }
    }
    }

  • @Lucaskpp7
    @Lucaskpp7 4 года назад +3

    Le agregue unas pavadas:
    class Program
    {
    static void Main(string[] args)
    {
    Vehiculo myAuto = new Coche();
    Avion myAvion = new Avion();
    Vehiculo myavion2 = new Avion();
    myAuto.PrenderMotor();
    myAuto.conducir();
    myAuto.ApagarMotor();
    myAuto.infoDetalles();
    Console.WriteLine("*-*-*-*-*-*-*-*");
    myAvion.PrenderMotor();
    myAvion.conducir();
    myAvion.ApagarMotor();
    myAvion.detallesAvion();


    Console.WriteLine("*-*-*-*-*-*-*-*");



    }
    }

    class Vehiculo
    {
    protected string detalles = "Precisan de un motor";
    protected string detalles3 = "Distintas dificultades para pilotar";
    public virtual void PrenderMotor()
    {
    Console.WriteLine("Se ha encendido el motor");
    }
    public virtual void ApagarMotor()
    {
    Console.WriteLine("Se ha apagado el motor");
    }
    public virtual void conducir()
    {
    Console.WriteLine("Conduciendo");
    }
    public void infoDetalles()
    {
    Console.WriteLine(detalles + "|||" + detalles3);
    }
    }
    class Coche:Vehiculo
    {
    public override void PrenderMotor()
    {
    Console.WriteLine("Se ha encendido el motor del auto");
    }
    public override void ApagarMotor()
    {
    Console.WriteLine("Se ha apago el motor del auto");
    }
    public override void conducir()
    {
    Console.WriteLine("Conduciendo el Auto");
    }
    }
    class Avion:Vehiculo
    {
    public void detallesAvion()
    {
    detalles = "Precisan de un motor mas importante";
    detalles3 = "Entrenamiento profesional para pilotar";
    Console.WriteLine(detalles+"|||"+detalles3);
    }
    public override void conducir()
    {
    Console.WriteLine("Conduciendo el Avion");
    }
    }