Você está na página 1de 8

ProgramaoOrientadaaObjetoscomC#(Parte3.

6)
Encapsulamento
Categorias:Encapsulamento

porThiagoRichardVanicore

Resumo:

Oobjetivonoseaplicaaestepost.

Uma vez que o contedo total desta srie foi dividido em partes, devese considerar absoluto o resumo da primeira postagem at o
momentopresente.

Este tema da srie Programao Orientada a Objetos com C# encerrase nesta publicao. Sendo assim, a numerao sequencial
destapartedasriepassoude3.5para3.6(videttulo).

Palavraschaves:

Variveis,Propriedades,Modificador,Acesso,Classe,Objeto.

Texto:

MosaObra

Com a alterao de Classes MetroeProgramapresentando mensagens em uma janela de console atravs da relao destas sobre a
utilizaodoconceitoEncapsulamento (vide post anterior), o prximo passo na Programao Orientada a Objetos com C# ser dar
continuidadeprticaaestesassuntosesuasvariantes,vistasatomomentopresente.

Adendo

PararealizaodoPostforamutilizadososseguintesProgramas:

Windows7Ultimate
MicrosoftVisualStudio2010UltimateSP1(ServicePack1).

A nica configurao realizada aps a instalao dos programas acima, foi manter o Microsoft Visual Studio sendo executado como
usurioAdministradordoSistemaOperacional,afimdeevitarmaioresproblemas.

AlterandoaclasseMetro

AindanaclasseMetro,deveseclicaremodificarareadaclasse,alterandoaparaoseguintecdigo:
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace ConsoleApplication
7 {
8 public class Metro
9 {
10 private int velocidade;
11
12 public void Andar()
13 {
14 Console.Write("O Metr est andando ");
15 }
16
17 public void setVelocidade(int velocidade)
18 {
19 this.velocidade = velocidade;
20 }
21
22 public int Velocidade
23 {
24 get { return velocidade; }
25 }
26 }
27 }

DetalhesdamodificaodaClasse:

AclasseMetrofoialteradacomomodificadordeacessopublic

FoicriadaavariveldeinstnciavelocidadecomomembrodaclasseMetro,sendoestadotipointeiro.Almdisto,avarivelest
comomodificadordeacessocomoprivate,ouseja,acessvelapenasdentrodaclasseMetro.

Foram criados os mtodos Andar() e setVelocidade como membros da classe Metro. O mtodo Andar() foi criado de maneira a
preparloparaexecuosemapassagemdeparmetros,jomtodosetVelocidade(intvelocidade)recebecomoparmetroum
tipodedadointeiro.Almdisto,estesmtodosestocomomodificadordeacessocomopublic.

Aindasobreosmtodos,aaodomtodoAndarseestabelecedemaneiraaexecutlolevandoaumamensagemfinal:
OMetrestandando.

No mtodo setVelocidade, sua ao se estabelece de maneira a receber um parmetro e atribulo a varivel de


instnciavelocidadeouseja,omtodosetVelocidadeencapsulaavarivelvelocidadenaclasseMetro.

Autilizaodapalavrareservadathisumconceitonovo,aindanoexplicado:

Atomomentodasrie,asexplicaessederamatravsdapreparaodeparmetroscomnomesdiferentesdasvariveisaserem
atribudasporestesemseusmtodos:

1 public void setVelocidade(int parametro)


2 {
3 velocidade = parametro;
4 }

Segundo fontes diversas, em casos como este, a sugesto que o parmetro (varivel local) possua o mesmo nome da varivel
pertencenteaclasse(varivelglobal):

1 public void setVelocidade(int velocidade)


2 {
3 velocidade = velocidade;
4 }

Na declarao acima ocorreriam conflitos, pois a atribuio consideraria apenas a influncia sobre uma varivel local no mtodo
setVelocidade,nogarantindoarecuperaodavarivelglobalpelovalorpassadonoparmetrodomtodo.Emresumo,aoutilizara
prticaacima,e,aorecuperaravarivelglobalemumpassoposterior,porserdotipoint,haveriasempreovalor0comoresultado,
independentedovalorpassadoviaparmetro.

Acorreodestaprticaseresumenautilizaodapalavrareservadathis,quepossuiafunodereferenciarseaoobjetocorrente:

1 public void setVelocidade(int velocidade)


2 {
3 this.velocidade = velocidade;
4 }

this.velocidade:avarivelglobal(objeto)

velocidade:avarivellocal(parmetro)

FoicriadaapropriedadeVelocidadecomomembrodaclasseMetro,sendoestadotipointeiro.Almdisto,apropriedadeestcomo
modificadordeacessopublic.

Ainda sobre propriedades, a ao do mtodo assessor get se estabelece de maneira a retornar o valor da varivel de
instnciavelocidade,ouseja,omtodoassessorget(quefazpartedapropriedadeVelocidade)encapsulaavarivelvelocidadena
classeMetro.

Telaaocolarocdigo:

MicrosoftVisualStudio2010UltimateTelaapsAlteraodaClasse

Porfim,devesesalvaraclasseMetroesuasalteraesclicandonobotoSalvar.Telacomaconfirmaopositiva(verrodapdajanela)
aoclicarnobotoSalvar:
MicrosoftVisualStudio2010UltimateTelaapsSalvaroProjeto

AlterandoaclasseProgram

NaclasseProgram,deveseclicaremodificarareadaclasse,alterandoaparaoseguintecdigo:

1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace ConsoleApplication
7 {
8 class Program
9 {
10 static void Main(string[] args)
11 {
12 Metro objMetro = new Metro();
13 objMetro.Andar();
14 objMetro.setVelocidade(73);
15 Console.Write("a {0} km/h", objMetro.Velocidade);
16
17 Console.ReadKey();
18 }
19 }
20 }

Cdigo:

Linha1a11:sodeclaraesrealizadasnaclasseProgram.
Linha12:declaraodeumnovoobjeto(objMetro)partirdaclasseMetro.
Linha 13: o mtodo Andar criado partir da classe Metro, foi acessado atravs da declarao do objeto desta mesma classe
(videlinha12),demaneiraapreparloparaexecuosemapassagemdeparmetros.Aofinal,amensagemqueserexibidana
janeladeconsole,forainseridadiretamentenomtodoAndar.
Linha 14: o mtodo setVelocidade criado partir da classe Metro, foi acessado atravs da declarao do objeto desta mesma
classe(videlinha12),demaneiraapreparloparaexecuocomapassagemdeumparmetrointeiro,noexemploovalor73.
Linha 15: utilizao da classe do prprio Framework que serve para exibir informao referente ao contedo do objeto. A
propriedade Velocidade criada partir da classe Metro, foi acessada atravs da declarao do objeto desta mesma
classe (vide linha 12), de maneira a preparla para execuo retornando um valor. Ao final, ser exibida uma mensagem numa
janeladeconsole.
Linha16a20:encerramentodocdigo.

Telaaocolarocdigo:

MicrosoftVisualStudio2010UltimateTelaapsAlteraodaClasse

Por fim, devese salvar a classe Program e suas alteraes clicando no boto Salvar. Tela com a confirmao positiva (ver rodap da
janela)aoclicarnobotoSalvar:
MicrosoftVisualStudio2010UltimateTelaapsSalvaroProjeto

Finalizandooexemplo,restaapenasexecutaraAplicao,deveseentoclicarnobotoStartDebugging(F5):
MicrosoftVisualStudio2010UltimateExecuodaAplicao

TelaaoclicarnobotoStartDebugging(F5):

MicrosoftVisualStudio2010UltimateExecuodaAplicao(JaneladeConsole)

ConsideraesFinais:

EstapublicaovisaalterarasClassesMetroeProgramdemaneiraqueoleitorpossaentenderacomunicaoefunesquecadauma
destas desempenham entre si, dispondo da execuo de mtodos, propriedades, entre outros elementos e conceitos da Orientao a
Objetosdescritosatomomento.
importanteressaltarque,amedidaqueospostsforemevoluindo,comapresentaestericassomadasasprticas,atendnciaqueo
leitorvsanandosuasdvidasedificuldadesdeentendimento.

Naprximapublicao,quartapartedasrie:ProgramaoOrientadaaObjetoscomC#,serapresentadooconceitodeHerana.

RefernciasBibliogrficas:

Asrefernciasbibliogrficasseroapresentadasnoltimopostdestasrie.

Compartilhar
Compartilhar
Compartilhar

Email
Curtir
PostagemAnterior

Sobreoautor

ThiagoRichardVanicore

ThiagoRichardVanicoreformouseemanliseedesenvolvimentodesistemas,possuicertificaoITILFoundationV2
eentreseusconhecimentosesto:ASP.Net(WebForms/MVC5/WebAPI)C#,HTML5,Html/XHtml,CSS3,JQuery,
JQueyMobile,JavaScript,Xml,Ajax,Json,MicrosoftSqlServer,MySql,Firebird,Azure,VisualStudioOnline,
Scrum,UML,CRM,QualityAssurance,CTI(ComputerTelephonyIntegration)MPSBR(MelhoriadeProcessosdo
SoftwareBrasileiro).

Linkpermanenteparaesteartigo:http://linksinergia.com.br/2015/09/14/programacaoorientadaaobjetoscomcparte36
encapsulamento/

Você também pode gostar