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.
Este tema da série Programação Orientada a Objetos com C# encerra-se nesta publicação. Sendo assim, a numeração sequencial desta parte da série passou de 3.5 para 3.6 (vide título).
Palavras-chaves:
Variáveis, Propriedades, Modificador, Acesso, Classe, Objeto.
Texto:
Mãos a Obra
Com a alteração de Classes Metro e Program apresentando mensagens em uma janela de console através da relação destas sobre a utilização do conceito Encapsulamento (vide post anterior), o próximo passo na Programação Orientada a Objetos com C# será dar continuidade prática a estes assuntos e suas variantes, vistas até o momento presente.
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication { public class Metro { private int velocidade; public void Andar() { Console.Write("O Metrô está andando "); } public void setVelocidade(int velocidade) { this.velocidade = velocidade; } public int Velocidade { get { return velocidade; } } } } |
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 está com o modificador de acesso como private, ou seja, acessível apenas dentro da classe Metro.
- Foram criados os métodos Andar() e setVelocidade 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 velocidade) recebe como parâmetro um tipo de dado 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 ou seja, o método setVelocidade encapsula a variável velocidade na classe Metro.
A utilização da palavra reservada this é um conceito novo, ainda não explicado:
Até o momento da série, as explicações se deram através da preparação de parâmetros com nomes diferentes das variáveis a serem atribuídas por estes em seus métodos:
1 2 3 4 |
public void setVelocidade(int parametro) { velocidade = parametro; } |
Segundo fontes diversas, em casos como este, a sugestão é que o parâmetro (variável local) possua o mesmo nome da variável pertencente a classe (variável global):
1 2 3 4 |
public void setVelocidade(int velocidade) { velocidade = velocidade; } |
Na declaração acima ocorreriam conflitos, pois a atribuição consideraria apenas a influência sobre uma variável local no método setVelocidade, não garantindo a recuperação da variável global pelo valor passado no parâmetro do método. Em resumo, ao utilizar a prática acima, e, ao recuperar a variável global em um passo posterior, por ser do tipo int, haveria sempre o valor 0 como resultado, independente do valor passado via parâmetro.
A correção desta prática se resume na utilização da palavra reservada this, que possui a função de referenciar-se ao objeto corrente:
1 2 3 4 |
public void setVelocidade(int velocidade) { this.velocidade = velocidade; } |
this.velocidade: é a variável global (objeto);
velocidade: é a variável local (parâmetro)
- Foi criada a propriedade Velocidade como membro da classe Metro, sendo esta do tipo inteiro. Além disto, a propriedade está com o modificador de acesso public.
Ainda sobre propriedades, a ação do método assessor get se estabelece de maneira a retornar o valor da variável de instância velocidade, ou seja, o método assessor get (que faz parte da propriedade Velocidade) encapsula a variável velocidade na classe Metro.
Tela ao colar o código:
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:
Alterando a classe Program
Na classe Program, deve-se clicar e modificar a área da classe, alterando-a para o seguinte código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication { class Program { static void Main(string[] args) { Metro objMetro = new Metro(); objMetro.Andar(); objMetro.setVelocidade(73); Console.Write("a {0} km/h", objMetro.Velocidade); Console.ReadKey(); } } } |
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. A propriedade Velocidade criada à partir da classe Metro, foi acessada através da declaração do objeto desta mesma classe (vide linha 12), de maneira a prepará-la para execução retornando um valor. Ao final, será exibida uma mensagem numa janela de console.
- Linha 16 a 20: encerramento do código.
Tela ao colar o código:
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:
Finalizando o exemplo, resta apenas executar a Aplicação, deve-se então clicar no botão Start Debugging (F5):
Tela ao clicar no botão Start Debugging (F5):
Considerações Finais:
Esta publicação visa alterar as Classes Metro e Program de maneira que o leitor possa entender a comunicação e funções que cada uma destas desempenham entre si, dispondo da execução de métodos, propriedades, entre outros elementos e conceitos da Orientação a Objetos descritos até o momento.
É 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, quarta parte da série: Programação Orientada a Objetos com C#, será apresentado o conceito de Herança.
Referências Bibliográficas:
As referências bibliográficas serão apresentadas no último post desta série.