lunes, 10 de octubre de 2011

Herencias en C#

Definicion: El mecanismo de herencia es uno de los pilares fundamentales en los que se basa la programación  orientada a objetos. Es un mecanismo que permite definir nuevas clases a partir de otras ya definidas de modo que si en la definición de una clase indicamos que ésta deriva de otra, entonces la primera -a la que se le suele llamar clase hija- será tratada por el compilador automáticamente como si su definición incluyese la definición de la segunda –a la que se le suele llamar clase padre o clase base.
Ej:

Clase madre"Clase persona":
namespace Herencia
{
    class Persona {

        protected String nombre;
        protected String ci;
        
        public Persona() {
            nombre = ci = "";
        }
        public Persona(String n,String c) {

            nombre = n;
            ci = c;
        }
        public void SetPersona(String n, String c)
        {
            nombre = n;
            ci = c;
        }

        public String GetPersona() {

            return "Nombre: " + nombre + "\nCI: " + ci;
        }

    }

}
Clases derivadas o hijas
clase Empleado:

 class Empleado:Persona{

        protected String salario;
        protected String cargo;
        protected DateTime fnacimiento;
        protected int edad;
        

        public Empleado():base(){
            cargo = "";
            salario = "";
            fnacimiento = DateTime.MinValue;
            
        }

        public Empleado(String n,String c,String ca,String s,DateTime fn):base(n,c){
            salario = s;
            cargo = ca;
            fnacimiento = fn;
                
        }
        public void SetEmpleado(String n, String c, String ca, String s,DateTime fn){
            base.SetPersona(n,c);
            
            salario = s;
            cargo = ca;
            fnacimiento = fn;
      }
        
        
        public String GetEmpleado() {
            edad = DateTime.Now.Year - fnacimiento.Year;
            return base.GetPersona() + "\nCargo: " + cargo + "\nSalario: " + salario+"\nFecha De Nacimiento:"+fnacimiento.ToLongDateString()+"\nEdad: "+edad;
        
        }
    }
}
Clase Estudiante:
 class Estudiante :Persona{
       
       protected DateTime fnacimiento;
       protected int edad;
       public int ru;
       protected String carrera;
       protected DateTime f_ingreso;
       protected double nparcial;
       protected double npractica;
       protected double nfinal;
       protected double promedio;
       protected int antiguedad; 



       public Estudiante() : base() {

           
           fnacimiento = DateTime.MinValue;
           ru = 0;
           carrera = "";
           f_ingreso = DateTime.MinValue;
           nparcial = npractica = nfinal = 00;
           
           
           
       }

       public Estudiante(String n,String c,DateTime fn,int ru,String car,DateTime fing,double npa,double npr,double nf):base(n,c) {
           base.SetPersona(n,c);
           fnacimiento = fn;
           this.ru = ru;
           carrera = car;
           f_ingreso = fing;
           nparcial = npa;
           npractica = npr;
           nfinal = nf;
       }


       public void SetEstudiante(String n, String c, DateTime fn, int r, String car, DateTime fing, double npa, double npr, double nf)
       {

           base.SetPersona(n,c);
           
           fnacimiento = fn;
           ru = r;
           carrera = car;
           f_ingreso = fing;
           nparcial = npa;
           npractica = npr;
           nfinal = nf;

       }
       public String GetEstudiante() {

           edad = DateTime.Now.Year - fnacimiento.Year;
           antiguedad = DateTime.Now.Year - f_ingreso.Year;    
           return base.GetPersona() +  "\nFecha de Nacimiento: "+fnacimiento.ToLongDateString()+"\nEdad:"+edad
               +"\nRU:"+ru+"\nCarrera: "+carrera+"\nFecha de Ingreso: "+f_ingreso.ToLongDateString()+"\nNota Parcial: "+nparcial
               +"\nNota Practica: "+npractica+"\nNota Final: "+nfinal+"\nAntiguedad: "+antiguedad;
       
       }

       public String getnombre() {
           return nombre;
       }
       public String   getci()
       {
           return ci ;
       }
       public DateTime getfnacimiento()
       {
           return fnacimiento;
       }
       public int getedad()
       {
           return edad;
       }
       public int getru()
       {
           return ru;
       }
       
       public String getcarrera()
       {
           return carrera;
       }
       public DateTime getfingreso()
       {
           return f_ingreso;
       }
       public double getnparcial()
       {
           return nparcial;
       }
       public double getnpractico()
       {
           return npractica;
       }
       public double getnfinal()
       {
           return nfinal;
       }
       public double getnpromedio()
       {
           return promedio;
       }
       public int getantiguedad() {
           return antiguedad;
       }
       
       public double Calcularpromedio() {
           return promedio=(nparcial * 0.35) + (npractica * 0.35) + (nfinal * 0.30);
       
       }
    }
}
Form1:


En este formulario enlazamos los dos formularios que hemos creado el frmEstudiante y frmEmpleado.

FrmEstudiante:

CÓDIGO FUENTE:

public partial class FrmEstudiante : Form
    {


        public void Combocarrera() {
            cbcarrera.Items.Add("Ingenieria de sistemas");
            cbcarrera.Items.Add("Ingenieria Agronoma");
            cbcarrera.Items.Add("Ingenieria Civil");
            cbcarrera.Items.Add("Derecho");
            cbcarrera.Items.Add("Bioquimica");
        
        }

        public void limpiar() {
            txtnombreE.Clear();
            txtciE.Clear();
            txtru.Clear();
            txtnparcial.Clear();
            txtnpractica.Clear();
            txtnfinal.Clear();
         
           
        
        }
        public FrmEstudiante()
        {
            InitializeComponent();
        }

        private void FrmEstudiante_Load(object sender, EventArgs e)
        {
            Combocarrera();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                Estudiante Es = new Estudiante((txtnombreE.Text), (txtciE.Text), DateTime.Parse(dtpfn.Text), int.Parse(txtru.Text), cbcarrera.Text, DateTime.Parse(dtpingreso.Text), double.Parse(txtnparcial.Text), double.Parse(txtnpractica.Text), double.Parse(txtnfinal.Text));
                MessageBox.Show(Es.GetEstudiante()+"\nPromedio: "+Es.Calcularpromedio(), "Datos del Estudiante");
                String[] fila=new String[] {Es.getnombre(),Es.getci(),Es.getru().ToString(),Es.getfnacimiento().ToShortDateString(),Es.getcarrera(),Es.getnparcial().ToString(),Es.getnpractico().ToString(),Es.getnpromedio().ToString(),Es.getnfinal().ToString(),Es.getedad().ToString(),Es.getfingreso().ToShortDateString(),Es.getantiguedad().ToString()};
                dataGridView1.Rows.Add(fila);
                limpiar();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "ERROR");
            }
           
            
            }
            
            }

        }
    
FrmEmpleado:



Codigo fuente:

public partial class FrmEmpleado : Form
    {

        public void Combocargo() {

            cbcargo.Items.Add("Abogado");
            cbcargo.Items.Add("Ingeniero");
            cbcargo.Items.Add("Secretaria");
            cbcargo.Items.Add("Mensajero");
    
        
        }

        public void Combosalario() {
            cbsalario.Items.Add("1000 Bs");
            cbsalario.Items.Add("2000 Bs");
            cbsalario.Items.Add("3000 Bs");
            cbsalario.Items.Add("4000 Bs");
        
        
        }
        public FrmEmpleado()
        {
            InitializeComponent();
        }

        private void FrmEmpleado_Load(object sender, EventArgs e)
        {
            Combocargo();
            Combosalario();
            
        }

        private void cbcargo_SelectedIndexChanged(object sender, EventArgs e)
        {
            
        }

        private void btnsalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnmostrar_Click(object sender, EventArgs e)
        {
            try {

                Empleado Em = new Empleado((txtnombre.Text),(txtci.Text),cbcargo.Text,cbsalario.Text,DateTime.Parse(dtpfecha.Text));
                MessageBox.Show(Em.GetEmpleado(),"Datos del Empleado");
                
             }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "ERROR");
            }
            
        }

    }
}









No hay comentarios:

Publicar un comentario