Imprimir Post

Programação Orientada a Objetos com C# (Parte 3.1) – Encapsulamento

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.

Encapsulamento - 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 3 para 3.1 (vide título) e assim seguirá (3.2, 3.3…) 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 Metro e Program apresentando mensagens em uma janela de console através da relação destas (vide post anterior), fica compreendida a declaração, criação e utilização dos elementos básicos que compõem uma Classe (Estados e Comportamentos) e Objetos criados a partir destas (Variáveis do Objeto e Métodos do Objeto), o próximo passo na Programação Orientada a Objetos com C# será entrar no conceito de Encapsulamento.

Encapsulamento - 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.

Resultado da Execução da Aplicação

Partindo das últimas alterações realizadas, sabe-se que a classe Program é executada logo que se inicia a Aplicação, em seguida a classe Metro é executada à partir da classe Program.

No quadro abaixo são exibidos os códigos que manifestam as informações anteriores:

Encapsulamento - Classe Program x Classe Metro

Classe Program x Classe Metro

O resultado desta execução pode ser analisada através de uma espécie de teste de mesa, técnica demonstrada a seguir:

Encapsulamento - Teste de Mesa

Teste de Mesa

Na tabela, nota-se que os métodos estão sendo executados após a Instanciação e Inicialização do objeto Metro. Além disso, é de extrema importância compreender entre estes métodos, o compartilhamento de variáveis que determinam as regras principais. Acompanhando na ordem, tem-se:

  • 1º Passo: a classe é executada (Metro), o objeto (objMetro) é instanciado e inicializado obtendo os valores padrões das variáveis (status e portaAberta), ou seja, false para ambas. No contexto geral significa que o Metrô está parado e de portas fechadas;
  • 2º Passo: o primeiro método (Andar) é executado passando como parâmetro o valor true, alterando o valor da variável status para true. A variável portaAberta mantêm-se como false mediante seu valor padrão. No contexto geral significa que o Metrô está andando e permanece de portas fechadas;
  • 3º Passo: o segundo método (AbrirPorta) é executado sem parâmetros, internamente ao verificar o status como true (mediante o 2º Passo), mantém a variável portaAberta como false. No contexto geral significa que o Metro está andando de portas fechadas;

Em resumo, na execução dos métodos, os valores das variáveis de instância é que determinam o comportamento final do objeto criado pela classe Metro.

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 11: são declarações realizadas na classe Program.
  • Linha 12: declaração de um novo objeto (objMetro) à partir da classe Metro.
  • Linha 13: o método Andar criado à partir da classe Metro, foi acessado através da declaração do objeto desta mesma classe (vide linha 12), de maneira a prepará-lo para execução com a passagem de um parâmetro booleano, no exemplo, o valor true. Ao final, a mensagem que será exibida na janela de console, fora inserida diretamente no método Andar.
  • Linha 14: atribuição de valor a variável de instância do novo objeto (objMetro).
  • Linha 15: o método AbrirPorta criado à partir da classe Metro, foi acessado através da declaração do objeto desta mesma classe (vide linha 12), de maneira a prepará-lo para execução sem a passagem de parâmetros. Ao final, a mensagem que será exibida na janela de console, fora inserida diretamente no método AbrirPorta.
  • Linha 16 a 20: encerramento do código.

Detalhes da declaração da Classe:

  • Com a criação do novo objeto (objMetro) é possível verificar que logo após a declaração da Classe, o método Andar é acessado, em seguida a variável de instância status é modificada manualmente e por fim o método AbrirPorta conclui a sequência de execuções.

Tela ao colar o código:

Encapsulamento - 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:

Encapsulamento - 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):

Encapsulamento - 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):

Encapsulamento - 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 Metro e Program deixando no resultado da execução mensagens que refletem um problema grave, pois um metro não pode abrir suas portas se estiver andando. A abordagem e contextualização, no entanto, são propositais para encarar o conceito de Encapsulamento e suas variantes, que virão em sequência na série.

É 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 terceira parte da série: Programação Orientada a Objetos com C# será apresentado o segundo post sobre Encapsulamento, 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/2015/06/29/programacao-orientada-a-objetos-com-c-parte-3-1-encapsulamento/