Imprimir Post

Programação Orientada a Objetos com C# (Parte 4.12) – Herança

Resumo:

O objetivo não se aplica a este post.

Uma vez que o conteúdo total desta série foi dividido em partes, deve-se considerar absoluto o resumo da primeira postagem até o momento presente.

Herança - Relembre - Link Primeiro Post

Este tema da série Programação Orientada a Objetos com C# irá demandar mais publicações. Sendo assim, a numeração sequencial desta parte da série passou de 4.11 para 4.12 (vide título) e assim seguirá (4.13, 4.14…) mediante a necessidade de conclusão.

Palavras-chaves:

Variáveis, Propriedades, Modificador, Acesso, Classe, Objeto.

Texto:

Mãos a Obra

Com a alteração das classes UnicoComum e Program, aplicando Herança à partir de uma nova categoria de Bilhetes (vide post anterior), o próximo passo na Programação Orientada a Objetos com C# será dar continuidade a estes assuntos e suas variantes, vistas até o momento presente.

Herança - Relembre - Link Post Anterior

Adendo

Para realização do Post foram utilizados os seguintes Programas:

  • Windows 7 Ultimate;
  • Microsoft Visual Studio 2010 Ultimate SP1 (Service Pack 1).

A única configuração realizada após a instalação dos programas acima, foi manter o Microsoft Visual Studio sendo executado como usuário Administrador do Sistema Operacional, a fim de evitar maiores problemas.

Entendendo a responsabilidade de cada característica

Em Orientação a Objetos, redesenhar o código regularmente é uma tarefa obrigatória, que vai além de Herança.

Anteriormente foi apresentada a técnica de Herança que surgiu na forma de uma Classe Pai assumindo características duplicadas de outras classes, decretando estas últimas como Classes Descendentes.

Porém existem momentos onde identifica-se uma quebra de responsabilidades dentro da própria Classe Descendente e o ajuste deverá ser realizado nela mesma, uma vez que, não faz sentido a Classe Pai assumir estas responsabilidades.

No caso, com a última modificação na classe UnicoComum, pode-se notar a repetição de ações entre o método Saldo() e o método Debita(). Ambos possuem em suas ações o retorno do saldo de um bilhete utilizado, o que deveria ser responsabilidade apenas do método Saldo(), deixando para Debita() apenas a responsabilidade de realizar o cálculo na utilização do bilhete.

vs07

Alterando a Classe UnicoComum

Ainda na classe UnicoComum, deve-se clicar e modificar a área da classe, alterando-a para o seguinte código:

Detalhes da modificação da Classe:

  • A classe UnicoComum foi alterada com o modificador de acesso public;
  • A classe UnicoComum herdou da classe Bilhete e portanto se tornou uma classe Descendente.
  • Foi criada a variável de instância saldo como membro da classe UnicoComum, sendo esta do tipo decimal. Além disto, a variável está com o modificador de acesso como private, ou seja, acessível apenas dentro da classe UnicoComum.
  • Foram criados os métodos Saldo() e Debita() como membros da classe UnicoComum, de maneira a prepará-los para execução sem a passagem de parâmetros. Além disso estes métodos estão com o modificador de acesso como public.

Ainda sobre o método Saldo(), sua ação se estabelece de maneira a guardar e retornar a variável saldo ou seja, o método Saldo() encapsula a variável saldo na classe UnicoComum, levando ao retorno do valor pré-definido como: 100.00.

No método Debita(), sua ação se estabelece de maneira a guardar a variável saldo, realizando antes disso uma operação de subtração que determina o valor da variável saldo menos o valor retornado da execução do método CobraTarifa(), criado na classe Herdada Bilhete.

Tela ao colar o código:

Herança - Microsoft Visual Studio 2010 Ultimate – Tela após Alteração da Classe

Microsoft Visual Studio 2010 Ultimate – Tela após Alteração da Classe

Por fim, deve-se salvar a classe UnicoComum e suas alterações clicando no botão Salvar. Tela com a confirmação positiva (ver rodapé da janela) ao clicar no botão Salvar:

Herança - Microsoft Visual Studio 2010 Ultimate – Tela após Salvar o Projeto

Microsoft Visual Studio 2010 Ultimate – Tela após Salvar o Projeto

Alterando a classe Program

Na classe Program, deve-se clicar e modificar a área da classe, alterando-a para o seguinte código:

Código:

  • Linha 1 a 4: são declarações de namespaces determinadas pelo próprio Microsoft Visual Studio.
  • Linha 6: declaração de namespace determinado pelo Microsoft Visual Studio à partir do nome dado para o projeto do tipo Console Application. Após a linha 6, o conteúdo presente desde a abertura da chave até o fechamento pertence ao namespace em questão.
  • Linha 8: declaração da classe Program automaticamente disponibilizada pelo Microsoft Visual Studio à partir do nome padrão adotado.
  • Linha 12 a 18: são declarações realizadas na classe Program. Instanciando, Inicializando, em seguida preenchendo as variáveis de instância do objeto criado (objUnicoComum) a partir da classe UnicoComum, que ao final serão visualizadas na janela de Console como mensagens de texto, através da utilização das próprias classes do Framework.
  • Linha 21: encerramento do código.

Detalhes da declaração da Classe:

  • Com a criação do objeto objUnicoComum é possível verificar que suas respectivas características funcionam independentemente, sendo fruto da Herança estabelecida entre sua classe de origem (Classe UnicoComum) e a classe Herdada (Bilhete).
  • Diante do cenário sistema metropolitano (estabelecido ao longo da série), o valor retornado do Método Saldo() representa o valor que o Bilhete Único Comum possui armazenado inicialmente. Além disso o Método Saldo() pertence exclusivamente a Classe Descendente UnicoComum.
  • Diante do cenário sistema metropolitano (estabelecido ao longo da série), o valor retornado do Método CobraTarifa() representa o valor da tarifa padrão cobrada e que dá direito a uma passagem através do Bilhete Único Comum. Além disso o Método CobraTarifa() foi criado na Classe Pai Bilhete e reaproveitado através de Herança pela Classe Descendente UnicoComum.
  • Diante do cenário sistema metropolitano (estabelecido ao longo da série), o valor calculado no Método Debita() representa o valor que o Bilhete Único Comum possui armazenado após a utilização de uma passagem. Além disso o Método Debita() pertence exclusivamente a Classe Descendente UnicoComum.

Tela ao colar o código:

Herança - Microsoft Visual Studio 2010 Ultimate – Tela após Alteração da Classe

Microsoft Visual Studio 2010 Ultimate – Tela após Alteração da Classe

Por fim, deve-se salvar a classe Program e suas alterações clicando no botão Salvar. Tela com a confirmação positiva (ver rodapé da janela) ao clicar no botão Salvar:

Herança - Microsoft Visual Studio 2010 Ultimate – Tela após Salvar o Projeto

Microsoft Visual Studio 2010 Ultimate – Tela após Salvar o Projeto

Finalizando o exemplo, resta apenas executar a Aplicação, deve-se então clicar no botão Start Debugging (F5):

Herança - Microsoft Visual Studio 2010 Ultimate – Execução da Aplicação

Microsoft Visual Studio 2010 Ultimate – Execução da Aplicação

Tela ao clicar no botão Start Debugging (F5):

Herança - Microsoft Visual Studio 2010 Ultimate – Execução da Aplicação (Janela de Console)

Microsoft Visual Studio 2010 Ultimate – Execução da Aplicação (Janela de Console)

Considerações Finais:

Esta publicação visa alterar as Classes UnicoComum Program de maneira que o leitor possa entender a aplicabilidade de técnicas que referem-se a divisão de responsabilidades entre métodos estabelecidos em um contexto de Herança, mas com intenção geral sobre o envolvimento da Orientação a Objetos.

É importante ressaltar que, a medida que os posts forem evoluindo, com apresentações teóricas somadas as práticas, a tendência é que o leitor vá sanando suas dúvidas e dificuldades de entendimento.

Na próxima publicação, ainda quarta parte da série: Programação Orientada a Objetos com C# será apresentado o décimo terceiro post sobre Herança, o leitor irá conferir a continuidade do tema entre outros aspectos relevantes a este assunto.

Referências Bibliográficas:

As referências bibliográficas serão apresentadas no último post desta série.

Sobre o autor

Thiago Richard Vanicore

Thiago Richard Vanicore formou-se em análise e desenvolvimento de sistemas, possui certificação ITIL Foundation V2 e entre seus conhecimentos estão: ASP .Net (WebForms/MVC5/Web API) C#, HTML5, Html/XHtml, CSS3, JQuery, JQuey Mobile, JavaScript, Xml, Ajax, Json, Microsoft SqlServer, MySql, Firebird, Azure, Visual Studio Online, Scrum, UML, CRM, Quality Assurance, CTI (Computer Telephony Integration) MPSBR (Melhoria de Processos do Software Brasileiro).

Link permanente para este artigo: http://linksinergia.com.br/2016/04/20/programacao-orientada-a-objetos-com-c-parte-4-12-heranca/