using System; namespace ConAppRevisaoOO { /// /// Classe que representa uma pessoa /// public class Pessoa { // // Atributos privados // private string nome; private DateTime datanasc; private string bi; private string nif; // // Construtores // public Pessoa() { criaPessoa("", DateTime.Now, "", ""); } public Pessoa(Pessoa p) { // Invocar método privado criaPessoa(p.nome,p.datanasc,p.bi,p.nif); } public Pessoa(string nome, DateTime datanasc, string bi, string nif) { criaPessoa(nome, datanasc, bi, nif); } public Pessoa(string nome, DateTime datanasc, string bi) { criaPessoa(nome, datanasc, bi, ""); } public Pessoa(string nome, DateTime datanasc) { criaPessoa(nome, DateTime.Now, "", ""); } public Pessoa(string nome) { criaPessoa(nome, DateTime.Now, "", ""); } // // Operadores // // Ver regras no MSDN online: // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfoperator.asp // public static bool operator==(Pessoa p1, Pessoa p2) { if (p1.nome == p2.nome && p1.datanasc == p2.datanasc && p1.bi == p2.bi && p1.nif == p2.nif) return true; else return false; } public static bool operator!=(Pessoa p1, Pessoa p2) { return !(p1 == p2); } // // Propriedades // // Ver sintaxe e regras no MSDN online: // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vclrfUsingProperties.asp // public string Nome { get { return nome; }// código para devolver o conteudo da propriedade - getter ou accessor set { nome = value; }// código para alterar o coneteudo da propriedade - setter ou mutator } public DateTime DataNascimento { get { return datanasc; } set { datanasc = value; } } public string BI { get { return bi; } set { bi = value; } } public string NIF { get { return nif; } set { nif = value; } } // // Métodos auxiliares // private void criaPessoa(string nome, DateTime datanasc, string bi, string nif) { // usar o objecto this para eliminar a ambiguidade // entre o atributo da classe e o argumento da função this.nome = nome; this.datanasc = datanasc; this.bi = bi; this.nif = nif; } } ... }