Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/05/2009, 06:37
Grothias
 
Fecha de Ingreso: marzo-2007
Mensajes: 129
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Problema con herencia en C#

Persona.cs
Código:
using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsApplication1
{
    class Persona
    {

        static Random rand = new Random();
        private DateTime fnac;
        private string nombre, apellidos, telf;

        /// <summary>
        /// creamos la persona
        /// </summary>
        public Persona(string nombre, string apellidos, string telf, DateTime fnac)
        {
            int dia, mes, año;

            this.nombre = nombre;
            this.apellidos = apellidos;
            this.telf = telf;
            this.fnac = fnac;

            Fecha_aleatoria(1950, 2000, out dia, out mes, out año);

            this.fnac = new DateTime(año, mes, dia);

        }
        /// <summary>
        /// constructor, crea una persona con los campos vacíos
        /// </summary>
        public Persona()
        {
            nombre = "";
            apellidos = "";
            telf = "";
            fnac = DateTime.MinValue;
        }
        /// <summary>
        /// Asignamos los datos
        /// </summary>
        public void ModificarPersona(string nombre, string apellidos, string telf, DateTime fnac)
        {
            this.nombre = nombre;
            this.apellidos = apellidos;
            this.telf = telf;
            this.fnac = fnac;
        }

        /// <summary>
        /// Devuelve el nombre de la persona 
        /// </summary>
        /// <returns></returns>
        public string Nombre()
        {
            return nombre;
        }

        /// <summary>
        /// Devuelve los apellidos de la persona 
        /// </summary>
        /// <returns></returns>
        public string Apellidos()
        {
            return apellidos;
        }

        /// <summary>
        /// Devuelve el teléfono de la persona 
        /// </summary>
        /// <returns></returns>
        public string Telf()
        {
            return telf;
        }

        /// <summary>
        /// Devuelve la fecha de nacimiento de la persona 
        /// </summary>
        /// <returns></returns>
        public DateTime Fecha_Nacimiento()
        {
            return fnac;
        }

        // muestra los datos de la persona de forma lineal
        public string Resumido()
        {
            return nombre + "    " + apellidos + "    " + telf;
        }






        // ---------------- fecha aleatoria -------------------------------------------------------------




        /// <summary>
        /// genera una fecha aleatoria entre los años introducidos
        /// </summary>
        /// <param name="anyoMin">año menor para generar fecha</param>
        /// <param name="anyoMax">año mayor para generar fecha</param>
        /// <param name="dia">día generado aleatoriamente</param>
        /// <param name="mes">mes generado aleatoriamente</param>
        /// <param name="anyo">año generado aleatoriamente dentro del rango (anyoMin-anyoMax)</param>
        public static void Fecha_aleatoria(int anyoMin, int anyoMax, out int dia, out int mes, out int anyo)
        {
            if (anyoMin > anyoMax)
            {   // Error en los parámetros
                dia = mes = anyo = 0;
                return;
            }

            // generamos un año aleatoriamente comprendido entre el año menor y el mayor
            anyo = rand.Next(anyoMin, anyoMax);
            // generamos un cualquier mes comprendido entre 1 y 12
            mes = rand.Next(1, 12);

            // dependiendo del año y del mes podemos generar un dia u otro e incluso puede ser un día erroneo ya que ni 
            // todos los meses ni todos los años tienen los mismos días.
            // Vamos generando fechas hasta que sea correcta
            for (; ; )
            {
                dia = rand.Next(1, 31); // lo máximo que puede tener un mes es 31 y lo mínimo 1

                // comprobamos que la fecha sea correcta. Sino generamos otra hasta que sea correcta
                if (EsFechaOk(dia, mes, anyo))
                {
                    // si la fecha es correcta salimos y nos quedamos con esos valores para mostrarlo en pantalla
                    return;
                }

            }


        }

        /// <summary>
        /// comprueba si la fecha introducida por el usuario existe
        /// </summary>
        /// <param name="dia">dia a analizar</param>
        /// <param name="mes">mes a analizar</param>
        /// <param name="anyo">año a analizar</param>
        /// <returns></returns>devuelve verdadero si la fecha existe y falso si no existe (fecha errónea)
        public static bool EsFechaOk(int dia, int mes, int anyo)
        {
            if (mes < 1 || mes > 12)
            {
                return false;
            }

            if (dia < 0 || dia > Ndias_Mes(mes, anyo))
            {
                return false;
            }
            return true;

        }

        /// <summary>
        /// devuelve el número de días que tiene un mes
        /// </summary>
        /// <param name="mes">mes que vamos a analizar</param>
        /// <param name="anyo">año que vamos a analizar</param>
        /// <returns></returns>devueve un número entero (nº de día del mes)
        public static int Ndias_Mes(int mes, int anyo)
        {
            int num_dias = 0; //dias que tiene un mes.


            if (mes == 2)
            {

                if (Es_biciesto(anyo))  //el año es bisiesto
                {
                    num_dias = 29;

                }

                else  // el año no es biciesto 
                {

                    num_dias = 28;
                }

            }

            else
            {
                // meses de 31 dias

                if (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)
                {

                    num_dias = 31;
                }
                else  // meses de 30
                {

                    num_dias = 30;
                }

            }

            return num_dias;



        }





        /// <summary>
        /// función que nos dice si un año es biciesto o no
        /// </summary>
        /// <param name="anyo">año que vamos a analizar</param>
        /// <returns></returns>devuelve verdadero si es biciesto y falso si no lo es
        public static bool Es_biciesto(int anyo)
        {
            if (anyo % 4 == 0 && (!((anyo % 100 != 0) && (anyo % 400 == 0))))  //el año es bisiesto
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}
ContactoEmpresarial.cs
Código:
using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsApplication1
{
    class ContactoEmpresarial : Persona
    {
        string empresa;
        string cargo;
        string telfempresa;

        public ContactoEmpresarial()
        {
            empresa = "";
            cargo = "";
            telfempresa = "";
        }

        public ContactoEmpresarial(string empresa, string cargo, string telfempresa, string nombre, string apellidos, string telf, DateTime fnac)
            : base(nombre, apellidos, telf, fnac)
        {
            this.empresa = empresa;
            this.cargo = cargo;
            this.telfempresa = telfempresa;
        }

        public void Asigna_datos(string empresa, string cargo, string telfempresa)
        {
            this.empresa = empresa;
            this.cargo = cargo;
            this.telfempresa = telfempresa;
        }


        /*public override string Nombre()
        {
            return nombre;
        }

        public override string Apellidos()
        {
            return apellidos;
        }

        public override string Telf()
        {
            return telf;
        }

        public override DateTime Fecha_Nacimiento()
        {
            return fnac;
        }*/

        public string leerempresa()
        {
            return empresa;
        }
        public string leercargo()
        {
            return cargo;
        }
        public string leertelfempresa()
        {
            return telfempresa;
        }
    }
}