Imprimir Post

Programação Orientada a Objetos com C# (Parte 3.3) – 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.2 para 3.3 (vide título) e assim seguirá (3.4, 3.5…) mediante a necessidade de conclusão.

Palavras-chaves:

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

Texto:

Retomando a Teoria

Com a apresentação inicial e prática do conceito de Encapsulamento (vide post anterior), o próximo passo na Programação Orientada a Objetos com C# será dar continuidade a este assunto e suas variantes.

Encapsulamento - Relembre - Link Post Anterior

O exemplo se dará de maneira a entender que o leitor já possua a estrutura do projeto (tipo Console), além das classes Metro e Program da postagem: “Programação Orientada a Objetos com C# (Parte 2.3)”.

Encapsulamento - Relembre - Link Programação Orientada a Objetos com C# (Parte 2.3)

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.

Alterando a classe Metro

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

Detalhes da modificação da Classe:

  • A classe Metro foi alterada com o modificador de acesso public;
  • Foi criada a variável de instância velocidade como membro da classe Metro sendo esta do tipo inteiro.  Além disto, a variável esta com o modificador de acesso como private, ou seja, acessível apenas dentro da classe Metro.
  • Foram criados os métodos Andar(), setVelocidade() e getVelocidade() como membros da classe Metro. O método Andar() foi criado de maneira a prepará-lo para execução sem a passagem de parâmetros,  já o método setVelocidade(int parametro) recebe como parâmetro um tipo de dado inteiro e por fim o método getVelocidade() também foi criado de maneira a prepará-lo para execução sem a passagem de parâmetros,  porém retornando um valor inteiro. Além disto, estes métodos estão com o modificador de acesso como public.

Ainda sobre os métodos, a ação do método Andar se estabelece de maneira a executá-lo levando a uma mensagem final:
O Metrô está andando “.

No método setVelocidade, sua ação se estabelece de maneira a receber um parâmetro e atribuí-lo a variável de instância velocidade e, por fim, o método getVelocidade apenas retorna o valor da variável de instância velocidade, ou seja, os métodos setVelocidade e getVelocidade encapsulam a variável velocidade na classe Metro.

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 Metro 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

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 sem a passagem de parâmetros. Ao final, a mensagem que será exibida na janela de console, fora inserida diretamente no método Andar.
  • Linha 14: o método setVelocidade 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 inteiro, no exemplo o valor 73.
  • Linha 15: utilização da classe do próprio Framework que serve para exibir informação referente ao conteúdo do objeto. O método getVelocidade 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 complementará a mensagem preparada na execução do método Andar.
  • 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, os método Andar, setVelocidade e getVelocidade são executados sequencialmente.
  • A nomenclatura dos métodos com os prefixos set e get é um conceito novo, ainda não explicado:

No exemplo, a ideia contextual é fornecer a possibilidade de trabalhar com o comportamento de velocidade do Metrô, definindo a velocidade e retornando a velocidade definida para apresentação desta, através de mensagens em uma janela de console.

O método setVelocidade com o prefixo set, proporciona a definição da velocidade:

E getVelocidade com o prefixo get, a recuperação da velocidade antes definida:

No caso, ambos os métodos estão manipulando a variável velocidade internamente e, segundo fontes diversas, a sugestão é que essa prática de utilização de prefixos deva ser usada para quaisquer métodos que definam ou recuperem o valor de uma variável.

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 final, a combinação da mensagem referente a execução do método Andar (“O Metrô está andando ”)  com a mensagem preparada na própria classe Program após a definição da velocidade com o método setVelocidade, somada a execução do método que retorna esta definição, ou seja getVelocidade (“a 73 Km/h”). O resultado é concluído com a mensagem: “O Metrô está andando a 73 Km/h”.

No contexto, o exemplo recorre a 2 tipos de acesso:

  • A definição da velocidade do metrô;
  • A recuperação da velocidade do metrô.

Como a variável principal neste caso é velocidade, não seria flexível, por exemplo, a criação de um único método (exemplo Velocidade()) para a realização do encapsulamento, afim de atingir estes diferentes tipos de acessos.

Sendo assim, para disponibilizar diferentes tipos de acesso, houve a criação de 2 métodos: setVelocidade e getVelocidade, dando mais dinamismo a manipulação desta variável e tão logo sugerindo a adoção de uma nomenclatura legítima a aplicação de encapsulamento.

Em dado momento poderia surgir ainda a ideia de restringir a recuperação da velocidade, deixando somente a cargo da própria classe de origem (Metro), para isto, bastaria colocar apenas no método getVelocidade o modificador de acesso private, criando ainda o encapsulamento do método (outra das capacidades do conceito de encapsulamento).

É 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 quarto 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/08/10/programacao-orientada-a-objetos-com-c-parte-3-3-encapsulamento/