Você está na página 1de 8

ProgramaoOrientadaaObjetoscomC#(Parte3.

3)
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.

EstetemadasrieProgramaoOrientadaaObjetoscomC#irdemandarmaispublicaes.Sendoassim,anumeraosequencial
destapartedasriepassoude3.2para3.3(videttulo)eassimseguir(3.4,3.5)medianteanecessidadedeconcluso.

Palavraschaves:

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

Texto:

RetomandoaTeoria

ComaapresentaoinicialeprticadoconceitodeEncapsulamento(videpostanterior),oprximopassonaProgramaoOrientadaa
ObjetoscomC#serdarcontinuidadeaesteassuntoesuasvariantes.

O exemplo se dar de maneira a entender que o leitor j possua a estrutura do projeto (tipo Console), alm das
classesMetroeProgramdapostagem:ProgramaoOrientadaaObjetoscomC#(Parte2.3).

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 parametro)
18 {
19 velocidade = parametro;
20 }
21
22 public int getVelocidade()
23 {
24 return velocidade;
25 }
26 }
27 }

DetalhesdamodificaodaClasse:

AclasseMetrofoialteradacomomodificadordeacessopublic
FoicriadaavariveldeinstnciavelocidadecomomembrodaclasseMetrosendoestadotipointeiro.Almdisto,avarivelesta
comomodificadordeacessocomoprivate,ouseja,acessvelapenasdentrodaclasseMetro.
Foram criados os mtodos Andar(), setVelocidade() e getVelocidade() como membros da classe Metro. O mtodo Andar() foi
criadodemaneiraapreparloparaexecuosemapassagemdeparmetros,jomtodosetVelocidade(intparametro)recebe
como parmetro um tipo de dado inteiro e por fim o mtodo getVelocidade() tambm foi criado de maneira a preparlo para
execuosemapassagemdeparmetros,pormretornandoumvalorinteiro.Almdisto,estesmtodosestocomomodificador
deacessocomopublic.

Aindasobreosmtodos,aaodomtodoAndarseestabelecedemaneiraaexecutlolevandoaumamensagemfinal:
OMetrestandando.

NomtodosetVelocidade,suaaoseestabelecedemaneiraareceberumparmetroeatribuloavariveldeinstnciavelocidade
e,porfim,omtodogetVelocidadeapenasretornaovalordavariveldeinstnciavelocidade,ouseja,osmtodossetVelocidadee
getVelocidadeencapsulamavarivelvelocidadenaclasseMetro.

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.getVelocidade());
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.
Linha15:utilizao da classe do prprio Framework que serve para exibir informao referente ao contedo do objeto. O mtodo
getVelocidadecriadopartirdaclasseMetro,foiacessadoatravsdadeclaraodoobjetodestamesmaclasse(videlinha12),de
maneiraapreparloparaexecuosemapassagemdeparmetros.Aofinal,amensagemqueserexibidanajaneladeconsole
complementaramensagempreparadanaexecuodomtodoAndar.
Linha16a20:encerramentodocdigo.

DetalhesdadeclaraodaClasse:

Com a criao do novo objeto (objMetro) possvel verificar que logo aps a declarao da Classe, os mtodo Andar,
setVelocidadeegetVelocidadesoexecutadossequencialmente.
Anomenclaturadosmtodoscomosprefixossetegetumconceitonovo,aindanoexplicado:

No exemplo, a ideia contextual fornecer a possibilidade de trabalhar com o comportamento de velocidade do Metr, definindo a
velocidadeeretornandoavelocidadedefinidaparaapresentaodesta,atravsdemensagensemumajaneladeconsole.

OmtodosetVelocidadecomoprefixoset,proporcionaadefiniodavelocidade:

1 objMetro.setVelocidade(73);

EgetVelocidadecomoprefixoget,arecuperaodavelocidadeantesdefinida:

1 objMetro.getVelocidade();

No caso, ambos os mtodos esto manipulando a varivel velocidade internamente e, segundo fontes diversas, a sugesto que
essaprticadeutilizaodeprefixosdevaserusadaparaquaisquermtodosquedefinamourecuperemovalordeumavarivel.

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:

EstapublicaovisaalterarasClassesMetroeProgram,deixandonoresultadofinal,acombinaodamensagemreferenteaexecuo
domtodoAndar(O Metr est andando ) com a mensagem preparada na prpria classe Programaps a definio da velocidade
com o mtodo setVelocidade, somada a execuo do mtodo que retorna esta definio, ou seja getVelocidade (a 73 Km/h). O
resultadoconcludocomamensagem:OMetrestandandoa73Km/h.
Nocontexto,oexemplorecorrea2tiposdeacesso:

Adefiniodavelocidadedometr
Arecuperaodavelocidadedometr.

Comoavarivelprincipalnestecasovelocidade,noseriaflexvel,porexemplo,acriaodeumnicomtodo(exemploVelocidade())
paraarealizaodoencapsulamento,afimdeatingirestesdiferentestiposdeacessos.

Sendoassim,paradisponibilizardiferentestiposdeacesso,houveacriaode2mtodos:setVelocidadeegetVelocidade,dandomais
dinamismoamanipulaodestavariveletologosugerindoaadoodeumanomenclaturalegtimaaaplicaodeencapsulamento.

Emdadomomentopoderiasurgiraindaaideiaderestringirarecuperaodavelocidade,deixandosomenteacargodaprpriaclassede
origem (Metro), para isto, bastaria colocar apenas no mtodo getVelocidade o modificador de acesso private, criando ainda o
encapsulamentodomtodo(outradascapacidadesdoconceitodeencapsulamento).

importanteressaltarque,amedidaqueospostsforemevoluindo,comapresentaestericassomadasasprticas,atendnciaqueo
leitorvsanandosuasdvidasedificuldadesdeentendimento.

Na prxima publicao, ainda terceira parte da srie: Programao Orientada a Objetos com C#, ser apresentado o quarto post
sobreEncapsulamento,oleitorirconferiracontinuidadedotemaentreoutrosaspectosrelevantesaesteassunto.

RefernciasBibliogrficas:

Asrefernciasbibliogrficasseroapresentadasnoltimopostdestasrie.

Compartilhar
Compartilhar
Compartilhar

Email
Curtir
PostagemAnterior

PrximaPostagem

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/08/10/programacaoorientadaaobjetoscomcparte33
encapsulamento/