Herencia y polimorfismo
=====================
1.
1.
public class Person
{
private string name { get; set; }
private string lastname { get; set; }
private int age { get; set; }
public Person(string name, string lastname, int age)
{
this.name = name;
this.lastname = lastname;
this.age = age;
}
public virtual string ShowData()
{
return name + "\n" + lastname + "\n" + age;
}
}
public class Student : Person
{
public int code { get; set; }
public double finalNote { get; set; }
public Student(string name, string lastname, int age, int code, double finalNote) : base(name, lastname, age)
{
this.code = code;
this.finalNote = finalNote;
}
public override string ShowData()
{
return base.showData() + "\n" + code + "\n" + finalNote;
}
}
public class Program
{
static void Main(string[] args)
{
Student obj = new Student("David", "Perez", 23, 666, 18);
Console.WriteLine(obj.showData());
Console.ReadLine();
}
}
2. La empresa ABC, desea implementar una aplicación orientada a objetos, para registrar los trabajadores, los cuales están conformados por: Empleados, Vendedores, Directores y Practicantes.
La clase Trabajador (Padre) cuenta con los siguientes atributos:
DNI, NOMBRE, APELLIDO, FECHA INGRESO y CARGO.
Esta clase se definen los siguientes métodos:
Básico:
cargo es Administrativo, sueldo básico es 4500.
cargo es Auxiliar, sueldo básico es 1800.
cargo es Seguridad, sueldo básico es 2500.
Deducción: el cual representa el 5% de su Sueldo Básico.
Neto que es la diferencia entre básico y Deducción.
____
A partir de la clase Trabajador, creamos la clase heredada Empleado, la cual hereda todos los atributos y métodos del padre.
Para esta clase el método bonificación se calcula:
si el cargo es Administrativo o Seguridad, representa el 5% del básico, si es Auxiliar es el 10% del básico.
La Deducción representara el 10% de la suma de básico y bonificación
El neto es Básico más bonificación menos la Deducción
Defina las clases
Dibuja la GUI para el hijo Director
Programa el botón, instancia la clase, ingresa los datos y visualiza los resultados.
Solucion:
public class Worker
{
public string dni { get; set; }
public string name { get; set; }
public string lastname { get; set; }
public DateTime admissionDate { get; set; }
public string position { get; set; }
public double Basic()
{
double basicSalary = 0.0;
switch (position)
{
case "Administrativo":
basicSalary = 4500;
break;
case "Auxiliar":
basicSalary = 1800;
break;
case "Seguridad":
basicSalary = 2500;
break;
default:
break;
}
return basicSalary;
}
public virtual double Deduction()
{
return 0.05 * Basic();
}
public virtual double Net()
{
return Basic() - Deduction();
}
}
public class Employee : Worker
{
public double Bonus()
{
double bonus = 0;
if (position == "Administrativo" || position == "Seguridad")
{
bonus = 0.05 * Basic();
}
else if (position == "Auxiliar")
{
bonus = 0.1 * Basic();
}
return bonus;
}
public override double Deduction()
{
return 0.1 * (Basic() + Bonus());
}
public override double Net()
{
return (Basic() + Bonus()) - Deduction();
}
}
Button:
Employee obj = new Employee();
obj.dni = txtDni.Text;
obj.name = txtName.Text;
obj.lastname = txtLastname.Text;
obj.admissionDate = dtAdmissionDate.Value;
obj.position = cboPosition.Text;
dgEmployee.Rows.Add(obj.dni, obj.name, obj.lastname, obj.admissionDate, obj.position, obj.Basic(), obj.Deduction(), obj.Net());