Utilizando Diagrama de Classes do Visual

Studio 2005 – Parte 02


Desenvolvendo e Alterando códigos gerados

Como foi dito no artigo anterior, sempre é necessário revisar os códigos gerados para implementar ou corrigir algo que foi gerado.

As alterações mais significantes que foram realizadas foram nos construtores das classes como foi ser visto nas listagens abaixo.

public class Pessoa

  {

    private string nome = string.Empty;

    private string sexo;

 

    public string Sexo

    {

      get { return sexo; }

      set { sexo = value; }

    }

    private DateTime dataNascimento;

 

    public DateTime DataNascimento

    {

      get { return dataNascimento; }

      set { dataNascimento = value; }

    }

 

    public string Nome

    {

      get { return nome; }

      set { nome = value; }

    }

 

    public Pessoa(string nome, string sexo, DateTime dataNascimento)

    {

      this.nome = nome;

      this.sexo = sexo;

      this.dataNascimento = dataNascimento;

    }

  }

Listagem 1 – Classe Pessoa


public
class Funcionario : Pessoa

  {

    private float salario;

 

    public float Salario

    {

      get { return salario; }

      set { salario = value; }

    }

    private string empresa;

 

    public string Empresa

    {

      get { return empresa; }

      set { empresa = value; }

    }

 

    public Funcionario(string nome, string sexo, DateTime dataNascimento)

      : base(nome, sexo, dataNascimento)

    {

     

    }

}
Listagem 2– Classe Funcionario


public class AnalistaSistemas : Funcionario

  {

    private string linguagemProgramacao;

 

    public AnalistaSistemas(string nome, string sexo, DateTime dataNascimento)

      : base(nome, sexo, dataNascimento)

    {

      throw new System.NotImplementedException();

    }

 

    public string LinguagemProgramacao

    {

      get { return linguagemProgramacao; }

      set { linguagemProgramacao = value; }

    }

  }
Listagem 3 – Classe AnalistaSistemas

  public class Engenheiro : Funcionario

  {

    private int crea;

 

    public Engenheiro(string nome, string sexo, DateTime dataNascimento)

      :base(nome,sexo,dataNascimento)

    {

 

    }

 

    public int Crea

    {

      get { return crea; }

      set { crea = value; }

    }

}
Listagem 4 – Classe Engenheiro

Como se pode ver as principais alterações foram nos métodos construtores de cada classe, para que as os atributos da classe recebam os valores das variáveis que estão sendo passadas por parâmetro.

Apesar da falta de alguns recursos é possível realizarmos um Diagrama de Classes bastante completo definindo quando necessário, Eventos, Métodos, Propriedades para as classes e ainda acrescento e implementando Interfaces, Enum, Abstract Class e outras entidades.

Realizando testes nos códigos gerados

Para realização de teste foi criado uma simples aplicação console que permite que o usuário cadastre os tipos de entidades que criamos com classe (Funcionário, Engenheiro) e depois emitir todos os itens cadastrados.

Provando que a herança e as propriedades criadas e herdades funcionam da maneira que definimos, como pode ser visualizado na
Listagem 5.

static void Main(string[] args)

    {

      ArrayList pessoas = new ArrayList();

      int i = 0;

      while (i == 0)

      {

        Console.WriteLine("Testes de aplicação com os objetos gerados pelo Diagrama de Classes\r\n");

        Console.WriteLine("1 - Adicionar uma nova Pessoa");

        Console.WriteLine("2 - Adicionar um novo Funcionário");

        Console.WriteLine("3 - Adicionar um novo Analista de Sistemas");

        Console.WriteLine("4 - Adicionar um novo Engenheiro");

        Console.WriteLine("5 - Relatorio dos itens Cadastrados");

        Console.WriteLine("6 - Sair");

        string opcao = Console.ReadLine();

 

        string nome = string.Empty;

        string sexo = string.Empty;

        DateTime dtNasc = new DateTime();

 

 

        switch (opcao)

        {

 

          case "1":

            try

            {

              Console.Clear();

              Console.WriteLine("Informe o nome da Pessoa");

              nome = Console.ReadLine();

              Console.WriteLine("Informe o sexo da Pessoa");

              sexo = Console.ReadLine();

              Console.WriteLine("Informe a Data de Nascimento da Pessoa");

              dtNasc = DateTime.Parse(Console.ReadLine());

 

              Pessoa pessoa = new Pessoa(nome, sexo, dtNasc);

              pessoas.Add(pessoa);

              Console.WriteLine("Pessoa inserida com sucesso!");

              Console.Clear();

            }

            catch (Exception e)

            {

              Console.Clear();

              Console.WriteLine("Erro ao cadastrar pessoa : " + e.Message);

              Console.ReadLine();

            }

            break;

 

          case "2":

            try

            {

              Console.Clear();

              Console.WriteLine("Informe o nome do Funcionário");

              nome = Console.ReadLine();

              Console.WriteLine("Informe o sexo do Funcionário");

              sexo = Console.ReadLine();

              Console.WriteLine("Informe a Data de Nascimento do Funcionário");

              dtNasc = DateTime.Parse(Console.ReadLine());

 

              Funcionario pessoa = new Funcionario(nome, sexo, dtNasc);

              pessoas.Add(pessoa);

              Console.WriteLine("Pessoa inserida com sucesso!");

              Console.Clear();

            }

            catch (Exception e)

            {

              Console.Clear();

              Console.WriteLine("Erro ao cadastrar pessoa : " + e.Message);

              Console.ReadLine();

            }

            break;

 

          case "3":

            try

            {

              Console.Clear();

              Console.WriteLine("Informe o nome do Analista de Sistemas");

              nome = Console.ReadLine();

              Console.WriteLine("Informe o sexo do Analista de Sistemas");

              sexo = Console.ReadLine();

              Console.WriteLine("Informe a Data de Nascimento do Analista de Sistemas");

              dtNasc = DateTime.Parse(Console.ReadLine());

 

              AnalistaSistemas pessoa = new AnalistaSistemas(nome, sexo, dtNasc);

              pessoas.Add(pessoa);

              Console.WriteLine("Pessoa inserida com sucesso!");

              Console.Clear();

            }

            catch (Exception e)

            {

              Console.Clear();

              Console.WriteLine("Erro ao cadastrar pessoa : " + e.Message);

              Console.ReadLine();

            }

            break;

 

          case "4":

            try

            {

              Console.Clear();

              Console.WriteLine("Informe o nome do Engenheiro");

              nome = Console.ReadLine();

              Console.WriteLine("Informe o sexo do Engenheiro");

              sexo = Console.ReadLine();

              Console.WriteLine("Informe a Data de Nascimento do Engenheiro");

              dtNasc = DateTime.Parse(Console.ReadLine());

 

              Engenheiro pessoa = new Engenheiro(nome, sexo, dtNasc);

              pessoas.Add(pessoa);

              Console.WriteLine("Pessoa inserida com sucesso!");

              Console.Clear();

            }

            catch (Exception e)

            {

              Console.Clear();

              Console.WriteLine("Erro ao cadastrar pessoa : " + e.Message);

              Console.ReadLine();

            }

            break;

 

          case "5":

            string relat = string.Empty;

            foreach (Pessoa pess in pessoas)

            {

              relat += "Nome : " + pess.Nome + " - Data Nascimento : " + pess.DataNascimento + " Tipo : " + pess.GetType().Name + "\r\n";

            }

            Console.WriteLine(relat);

            Console.ReadLine();

            Console.Clear();

            break;

 

          case "6":

            i = 1;

            break;

        }

      }

 

    }

  }
Listagem 5 – Código da aplicação para teste

Conclusão

Bom, neste artigo vimos e utilizamos um pouco do Diagrama de Classes do Visual Studio onde criamos propriedades, métodos e construtores para as classes do nosso Diagrama.

Vimos como que os códigos são gerados e as poucas alterações que são necessárias realizar-nos mesmos.

Vimos que apesar de não ser uma funcionalidade completa como algumas que encontramos no mercado podemos sim utilizá-la para o desenvolvimento e documentação de pequenos e/ou médios projetos.