Escolar Documentos
Profissional Documentos
Cultura Documentos
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/