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
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.
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!!
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.
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).
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
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.
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!
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).
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
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??
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
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.
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"); } } }
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"); } }
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
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.
Te felicito por tu explicación sobre clases. Sos muy claro. Muchas gracias por tu gra aporte.
Tus videos son los mejores de la web, gracias.
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!!
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.
Hoy llegue a este video.! Lo empece la semana hace unas semanas. La verdad buenísimo el curso espero con ansias el siguiete video.
Genial me encantan tus videos, soy fan de muchos de los temas que has mencionado. Me gustaria que agregaras uno de Vue :)
Amo este canal
Gracias por todo, espero con ansias el curso de django
Muy bueno el video muchisimaa gracias
Mil gracias hermano.
LIKE: por un CURSO de EJERCICIOS DE POO.
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).
Gracias.
Gracias, como siempre muy didactico
Te felicito por el curso muy bien explicado
Muy bueno lo del ejercicio. Saludos
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
Ya se te cumplio, ya lo empezó
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.
Buen video
Like a boss.
Excelente video fuera bueno que dejaras ejercicio continuamente en los vídeos!!!
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!
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).
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
este curso te sirve para usar c# en Unity ya que unity usa por defecto Visual Studio como IDE para programar tus proyectos.
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??
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
//METODO PRIVADO
private string GetNombre()
{
return nombreSerVivo;
}
//Propiedad getter publica
public string getName
{
get
{
return GetNombre();
}
}
Tengo una pregunta, como hago que una variable/metodo no se herede pero que en otra clase sí?
Gracias, continue siere de python com curso django
👀
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");
}
}
}
}
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");
}
}
}
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.
Yo lo hice asi
Vehículo[ ] misVehiculos = new vehículo[2];
Coche miCoche = new Coche("modelo");
misVehiculos[0] = miCoche;
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");
}
}
}
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");
}
}