Blog Maurício Luís -

Tecnologia e programação web - Consultoria em análise e desenvolvimento de sistemas. Action Script, VB.NET, C#, ASP, PHP, MySQL, SQL Server. Magento, Drupal, Joomla, Wordpress e etc.

11 mai, 2010

Herança na prática utilizando C#

Categoria: .NET| Programação Descomplicada

“A Herança é um princípio da Programação Orientada a Objetos que permite que as classes compartilhem atributos e operações baseados em um relacionamento, geralmente generalização. A herança permite a criação de subclasses que herdam alguns dos atributos e das operações (ou Métodos) da classe pai (super-classe ou classe base). A herança é um conceito aplicado no momento de criação das classes. Ela é usada na intenção de reaproveitar código ou comportamento generalizado ou especializar operações ou atributos.” (…)

Trecho do texto descrevendo o que é herança, retirado do Wikipédia. Saiba mais sobre o conceito de herança em programação acessando os links abaixo:
http://pt.wikipedia.org/wiki/Herança_(programação)
http://msdn.microsoft.com/pt-br/library/ms173149(VS.90).aspx

-

Olá,

Hoje falaremos um pouco sobre herança em aplicações Orientadas a Objetos. Criando um simples sistema que possui como super classe PESSOA e como classes derivadas FUNCIONÁRIO e CLIENTE. Conceito:
Um funcionário e um cliente, necessariamente herda características de uma pessoa.

PASSO 1:

Vamos abrir o Visual Studio e no menu acima ir em File > New Project > Visual C# > Console Application, digitar um nome para o projeto e clicar em “OK”.

PASSO 2:

Certifique-se de que a aba SOLUTION está aberta, caso não esteja, você pode abrí-la com o atalho: crtl + alt + L

PASSO 3:

Clique com o botão no ícone da solution, e acesse a opção: ADD > New Item > Visual C# Class, entre com o nome “Pessoa” e clique em “OK”.

PASSO 4:

Vamos criar uma simples classe Pessoa, que possui as seguintes propriedades:
- Nome (string)
- Nascimento (DateTime)
- Cpf (long)

Respectivamente: Nome do atributo (tipo)

    ///
    /// Classe pessoa
    ///
    public class Pessoa
    {
        ///
        /// Nome da pessoa
        ///
        public string Nome { get; set; }

        ///
        /// Data de aniversário da pessoa
        ///
        public DateTime Nascimento { get; set; }

        ///
        /// Números do cpf da pessoa
        ///
        public long Cpf { get; set; }
    }

PASSO 5:
Repita o passo anterior para criarmos agora uma nova classe, sendo que com o nome “Funcionario”, que terá as seguintes propriedades:
- DataAdmissao (DateTime)
- Salario (double)
- Funcao (string)

Entre com o código abaixo:

    ///
    /// Classe de uma pessoa que é funcionário
    ///
    public class Funcionario : Pessoa // percebe-se que agora o nome da classe possui " : Pessoa". Isto faz a classe "Funcionário" herdar as características de "Pessoa". A herança nesta diferença ao criar uma nova classe.
    {
        ///
        /// Data da admissão do funcionário
        ///
        public DateTime DataAdmissao { get; set; }

        ///
        /// Salário do funcionário
        ///
        public double Salario { get; set; }

        ///
        /// Função exercida pelo mesmo
        ///
        /// Analista de Sistemas, Gerente de contas, Auxiliar Administrativo e etc
        public string Funcao { get; set; }
       }

PASSO 6:
Faça o mesmo agora para criarmos a classe “Cliente”, que possui os seguintes atributos:
- Empresa (string)
- EnderecoComercial (string)

///
    /// Classe de uma pessoa que é cliente
    ///
    public class Cliente : Pessoa
    {
        ///
        /// Nome da empresa em que o mesmo trabalha
        ///
        public string Empresa { get; set; }

        ///
        /// Endereço para se localizar o cliente
        ///
        public string EnderecoComercial { get; set; }
}

PASSO 7:

Agora, criaremos um método em cada classe (Funcionário e Cliente) que escreverá todas as propriedades dos mesmos na tela do console. Para isso, abra o arquivo “Funcionario.cs” na solution e entre com o seguinte método:

///
        ///
        /// Escreve informações do funcionário na tela
        ///
        public void EscreveInformacoes()
        {
            Console.WriteLine("CRIADO UM NOVO FUNCIONÁRIO:");
            Console.WriteLine("CPF: " + this.Cpf);
            Console.WriteLine("Data de Admissão: " + this.DataAdmissao.Date.ToString("dd/MM/yyyy"));
            Console.WriteLine("Função: " + this.Funcao);
            Console.WriteLine("Nascimento: " + this.Nascimento.Date.ToString("dd/MM/yyyy"));
            Console.WriteLine("Nome: " + this.Nome);
            Console.WriteLine("Salário: R$" + this.Salario);
        }

Faça o mesmo no arquivo “Cliente.cs”:

///
        ///
        /// Escreve na tela informações do cliente na tela
        ///
        public void EscreveInformacoes()
        {
            Console.WriteLine();
            Console.WriteLine("CRIADO UM NOVO CLIENTE:");
            Console.WriteLine("Empresa: " + this.Empresa);
            Console.WriteLine("Endereço comercial: " + this.EnderecoComercial);
            Console.WriteLine("Nascimento: " + this.Nascimento.Date.Date.ToString("dd/MM/yyyy"));
            Console.WriteLine("Nome: " + this.Nome);
        }

PASSO 8:

Finalmente vamos agora instanciar os objetos na classe “Program.cs” do console, para exibirmos os dados na tela de nossas classes funcionando.

Antes disso, vamos nos certificar de que a codificação está correta e funcionando, fazendo um BUILD da solution. Acesse o menu superior, clique em BUILD e em seguida em BUILD SOLUTION:
Como fazer um build de uma solution em .NET

Certificando-se de que não há erros em nossa Solution, vamos na classe Program, no método construtor: “Main” e fazer uma chamada para dois métodos que iremos construir em seguida. Estes métodos, instanciarão os objetos “Funcionario” e “Cliente” e escreverá seus dados na tela:

        ///
        /// Método construtor do console
        ///
        static void Main(string[] args)
        {
            CarregaFuncionario(); // Cria a instancia de funcionario
            CarregaCliente(); // Cria a instancia do cliente

            Console.ReadKey(); // Este comando faz a tela do console não fechar após ser executada e aguardar até uma tecla ser pressionada, para finalizar a instancia do console
        }

PASSO 9:

Vamos criar os métodos que chamamos anteriormente da seguinte maneira:

  ///
        /// Instancia um novo funcionário
        ///
        static void CarregaFuncionario()
        {
            var funcionario = new Funcionario()
            {
                Cpf = 12345678900,
                DataAdmissao = new DateTime(2010, 5, 4),
                Funcao = "Analista de Testes",
                Nascimento = new DateTime(1968, 10, 20),
                Nome = "Maurício Santos",
                Salario = 450.37
            };

            funcionario.EscreveInformacoes();
        }

        ///
        /// Instancia um novo cliente
        ///
        static void CarregaCliente()
        {
            var cliente = new Cliente()
            {
                Cpf = 98765432100,
                Empresa = "Sanduíches S.A",
                EnderecoComercial = "Av. Rio Branco 100",
                Nascimento = new DateTime(1981, 1, 12),
                Nome = "Kiko da Silva"
            };

            cliente.EscreveInformacoes();
        }

OBSERVAÇÕES:

1) Perceba, que quando começamos a escrever cada propriedade da classe, o Visual Studio já mostra o comentário que fizemos para cada elemento e lhe auxilia na escrita com o seu intelesense:

Intelesense do Visual Studio para escrita de propriedades

2) Perceba que o mesmo acontece na escrita de chamadas de métodos:

Intelesense Visual Studio 2010 2008 métodos

PASSO 10:

Finalmente estamos prontos para testar o programa. Aperte F5 e a resposta deverá ser igual a abaixo:

Executando um programa no Visual Studio Heranças em .NET

-

Espero que tenham gostado da simples abordagem sobre heranças. Estou abrindo os comentários para perguntas.
Baixe a solution completa funcionando

161 comentários em "Herança na prática utilizando C#"

Comentar aqui: