Olá pessoal, vou falar um pouco sobre herança  mostrarei um exemplo prático de como podemos esta fazendo uso do mesmo e reaproveitando o código, e para melhor entendimento sobre o assunto vamos ver um pequeno resumo teórico. Primeiro vamos entender algumas coisas: as dificuldades do modelo estruturado e a busca por um novo padrão. 

Os métodos empregados como modelo para o desenvolvimento de software, em geral, é baseado em duas abordagens: decomposição funcional e na modelagem de dados, ou seja, estão constituídos segundo o paradigma estruturado, onde se tem visões dissociadas em que se distinguem claramente os processos de dados.  Tanto os processos como os dados possuem uma modelagem própria. O método deve retratar com fidelidade o que ocorre no ambiente real e para isso o DFD( Diagrama de Fluxo de Dados) e o DER( Diagrama entidade Relaciona) são responsáveis por representar os processo e dados nesse modelo. O problema é que nem sempre essa representação é bem definida ou esclarecida no ambiente real e a manutenção é dificultosa, daí, a partir desses e outros problemas surge à necessidade de um novo padrão, e três aspectos foram relevantes para ascensão da orientação a objetos, contrapondo-se aos métodos estruturados: a unificação de conceitos entre a fase de analise e programação, o grande potencial de reutilização do software e a facilidade de manutenção.

A herança é um recurso dentro do conceito orientado a objeto, com ela podemos criar classes genéricas, e a partir dessa cria subclasses que herdam características da classe pai, veja a figura 1. Diagrama de classe UML(Unified Modeling Language)*

figura1_art2.jpg

Figura 1. Classe derivado de um ator

Note que é fornecida uma modelagem mais natural, que melhor retrata a realidade, pois processos e dados estão coligados.

*Nota: juntamente com a Orientação a Objetos precisava-se de uma modelagem que correspondesse a esse modelo, dentre as propostas apresentadas a UML sai na frente e tornou se padrão universal de modelagem.

 

 Quando uma subclasse herda características a partir de um único ramo da classe diz-se tratar de herança simples, independente da quantidade de superclasses existente no ramo veja figura 2.

figura2_art2.jpg

Figura 2. Herança simples

E quando uma classe herda características de mais de um ramo genealógico diz-se haver herança múltipla. Veja figura 3. Mais o VS. NET e suas linguagens não suportam herança múltipla em vez disso tem-se o conceito de interfaces mais isso é outro assunto.

figura3_art2.jpg

Figura 3. Herança múltipla

Bem, agora vamos ver um exemplo bem simples na pratica

1.       Crie um novo projeto Visual C# > Windows Application

2.       Depois, usando o Menu Project > Add Class, adicione uma classe ao nosso projeto, como mostra a figura abaixa:

figura4_art2.jpg

Escreva a Classe como mostra a seguir:

using System;

using System.Collections.Generic;

using System.Text;

 

namespace DevMedia.Artigo // Ficheiro ou gaveta que contem a classe

{

    class Pessoa // Construtor padrão

    {

        private string _Nome; // Atributo

 

        public string Nome // Modificador de acesso e consulta

        {

            get { return _Nome; }

            set { _Nome = value; }

        }

        private string _CPF;

 

        public string CPF // Modificador de acesso e consulta

        {

            get { return _CPF; }

            set { _CPF = value; }

        }

 

    }

}

Nós já temos a base de uma classe. Para implementar herança, vamos adicionar uma nova classe, usando Menu Projct > Add Class. Renomeie  como Funcionario.cs e digite o seguinte código:

using System;

using System.Collections.Generic;

using System.Text;

 

namespace DevMedia.Artigo

{

    class Funcionario : Pessoa // Para a Classe Funcionário herda da 

                               // Classe Pessoa que criamos, basta

                               // acrescentar os ‘ : ‘ + o nome da

                              // classe que queremos herdar.                                                               

    {

        private string _dataAdmissao;

 

        public string DataAdmissao

        {

            get { return _dataAdmissao; }

            set { _dataAdmissao = value; }

        }

        private string _Salario;

 

        public string Salario

        {

            get { return _Salario; }

            set { _Salario = value; }

        }

 

    }

}

 

Testando a Classe

No design do Form1 da aplicação, desenhe os seguintes controles:

Tipo de Controle

Nome

Valor do Text

Label1

lblNome

Nome

TextBox1

txtNome

Vazio

Label2

lblCpf

Cpf

TextBox2

txtCpf

Vazio

Label3

lblData

Data Admissão

TextBox3

txtData

Vazio

Label4

lblSalario

Salário

TextBox4

txtSalário

Vazio

Button1

bntOk

Ok

Resultado:

figura2_art5.jpg

1.       Agora clique duas vezes no botão Ok e escreva o seguinte código:

 

      private void button1_Click(object sender, EventArgs e)

{

    Funcionario ObjFuncionario = new Funcionario();

    ObjFuncionario.Nome = txtNome.Text = "William";

    ObjFuncionario.CPF = txtCpf.Text = "900.100.200-00";

    ObjFuncionario.DataAdmissao = txtData.Text = "26/04/07";

    ObjFuncionario.Salario = txtSalario.Text = "1000";

}

Comentário:

Instanciamos a Classe Funcionário com o nome ObjFuncionario, como você pode notar a Classe Funcionário não tem as propriedades Nome e Cpf, mais mesmo assim elas apareceram? Mais como? Elas foram herdadas da classe Pessoa.cs, aproveitamos código, todo funcionário é uma pessoa assim eu posso reutilizar a classe generica para qualquer situação onde precisar das caracteristicas comum de pessoa.  Podemos também trabalhar com herança visual no VS.NET , tanto em Windows Application como em paginas Web usando Master Pages assunto claramente abordado por Rodrigo Sendin na revista .NET Magazine Ano 4 – 39 Edição.

Conclusão:

                Diante do que foi comentado, fica claro as vantagens de se usar Orientação a Objeto e UML no projeto. Facilitando o Entendimento da modelagem com o mundo real, e alem da herança têm-se várias outras vantagens.

Espero que tenham gostado e até a próxima.