class Persona { private string _nombre; public Persona(string nombre) { Console.WriteLine("Constructor persona " + nombre); this.Nombre = nombre; } public string Nombre { set { this._nombre = value; } get { return this._nombre; } } public virtual string saludo() { return "Hola "+Nombre+" que tal"; } } class Empleado :Persona { public Empleado(string nombre, int sueldo=0) : base(nombre) { Console.WriteLine("Constructor empleado " + nombre); this.Cargo = "Empleado"; } public int Sueldo { get; set; } private string _cargo; public string Cargo { set { this._cargo = value; } get { return this._cargo; } } public override string saludo() { return "Hola empleado " + Nombre + " ¿Todo bien?"; } public virtual double sueldoNeto() { return Sueldo * .85; } } class Gerente : Empleado { public int Bono { get; set; } public int Dietas { get; set; } public Gerente(string nombre) : base(nombre) { Console.WriteLine("Constructor gerente " + nombre); this.Cargo = "Gerente"; } public Gerente(string nombre, int sueldo) : base(nombre, sueldo) { } public Gerente(string nombre, int sueldo, int dietas) : this(nombre, sueldo) { Dietas = dietas; } public override string saludo() { return "Hola Sr. " + Nombre + " ¿Desea alguna cosa?"; } public override double sueldoNeto() { return base.sueldoNeto()+Dietas; } } sealed class Direccion : Gerente { public int StockOptions { get; set; } public Direccion(string nombre) : base(nombre, 100) { Console.WriteLine("Constructor direccion " + nombre); } public Direccion(string nombre, int sueldo) : base(nombre, sueldo) { } public Direccion(string nombre, int sueldo, int dietas):base(nombre, sueldo, dietas) { } public Direccion(string nombre, int sueldo, int dietas, int stockoptions) : this(nombre, sueldo, dietas) { this.StockOptions = stockoptions; } public override string saludo() { return "Buenos días Sr. " + Nombre + " Estamos a sus órdenes"; } public override double sueldoNeto() { return base.sueldoNeto()+StockOptions*.5; } } class Cliente : Persona { public Cliente(string nombre) : base(nombre) { } }
Uso:
Empleado eva = new Empleado("Eva",1200); Gerente ana = new Gerente("Ana"); ana.Sueldo = 1700; ana.Dietas = 200; Direccion rosa = new Direccion("Rosa"); rosa.Sueldo = 2500; rosa.Dietas = 300; rosa.StockOptions = 100; Console.WriteLine(rosa.sueldoNeto()); Empleado[] plantilla = { eva, ana, rosa }; double total = 0; foreach(Empleado item in plantilla) { total += item.sueldoNeto(); } Console.WriteLine(total);