
11/05/2009, 06:37
|
| | Fecha de Ingreso: marzo-2007
Mensajes: 129
Antigüedad: 18 años 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;
}
}
}
|