public static void Main()
Pessoa p1 = new Pessoa("Fulano",new DateTime(1991,4,27), Pessoa.GENERO.MASCULINO);
Funcionario f1 = new Funcionario("Ciclan",new DateTime(1985,9,11), Pessoa.GENERO.OUTRO, Funcionario.CARGO.ANALISTA, 3500);
public enum GENERO {INDEFINIDO, FEMININO, MASCULINO, OUTRO};
protected const GENERO GENERO_DEFAULT = GENERO.INDEFINIDO;
protected const String NOME_DEFAULT = "INDEFINIDO";
private DateTime nascimento = DateTime.Now;
private String nome = NOME_DEFAULT;
private GENERO genero = GENERO_DEFAULT;
public String Nome {get {return nome;}
set {if (!value.Equals("")) nome = value;}
public GENERO Genero {get;set;}
public DateTime Nascimento {get {return nascimento;} set { nascimento = value;}}
public override string ToString() {
StringBuilder tmp = new StringBuilder();
TimeSpan diferenca = DateTime.Now - nascimento;
int anos = (new DateTime(1,1,1) + diferenca).Year-1;
tmp.Append("[Pessoa] { ")
.Append(" / Data de Nascimento: " + String.Format("{0:dd/MM/yyyy}", nascimento))
.Append(" ("+anos+" anos) / ")
.Append("Gênero: "+Genero)
public Pessoa(String nome, DateTime nascimento, GENERO genero){
this.Nascimento = nascimento;
class Funcionario: Pessoa {
public enum CARGO { INDEFINIDO, PROGRAMADOR, ANALISTA, GERENTE_PROJETO, GERENTE_EQUIPE, DIRETOR}
public const double SALARIO_MIN = 800.0;
public const double SALARIO_MAX = 39000.0;
public const double SALARIO_DEFAULT = 0.0;
public const CARGO CARGO_DEFAULT = CARGO.INDEFINIDO;
private double Salario {get;set;}
private CARGO Cargo {get;set;}
public Funcionario (String nome, DateTime nascimento, GENERO genero, CARGO cargo, double salario):base(nome,nascimento,genero){
public override string ToString() {
StringBuilder tmp = new StringBuilder();
TimeSpan diferenca = DateTime.Now - Nascimento;
int anos = (new DateTime(1,1,1) + diferenca).Year-1;
tmp.Append("[Pessoa] { ")
.Append(" / Data de Nascimento: " + String.Format("{0:dd/MM/yyyy}", Nascimento))
.Append(" ("+anos+" anos) / ")
.Append("Gênero: "+Genero)
.Append(" / Cargo: "+Cargo)
.Append(" / Salário: "+Salario)