Você está na página 1de 8

ProgramaoOrientadaaObjetoscomC#(Parte4.

12)Herana
Categorias:Herana

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
destapartedasriepassoude4.11para4.12(videttulo)eassimseguir(4.13,4.14)medianteanecessidadedeconcluso.

Palavraschaves:

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

Texto:

MosaObra

ComaalteraodasclassesUnicoComumeProgram,aplicandoHeranapartirdeumanovacategoriadeBilhetes(videpostanterior),
oprximopassonaProgramao Orientada a Objetos com C# ser dar continuidade a estes assuntos e suas variantes, vistas at o
momentopresente.

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.

Entendendoaresponsabilidadedecadacaracterstica

EmOrientaoaObjetos,redesenharocdigoregularmenteumatarefaobrigatria,quevaialmdeHerana.

AnteriormentefoiapresentadaatcnicadeHeranaquesurgiunaformadeumaClassePaiassumindocaractersticasduplicadasde
outrasclasses,decretandoestasltimascomoClassesDescendentes.

PormexistemmomentosondeidentificaseumaquebraderesponsabilidadesdentrodaprpriaClasseDescendenteeoajustedever
serrealizadonelamesma,umavezque,nofazsentidoaClassePaiassumirestasresponsabilidades.

Nocaso,comaltimamodificaonaclasseUnicoComum,podesenotararepetiodeaesentreomtodoSaldo()eomtodo
Debita().Ambospossuememsuasaesoretornodosaldodeumbilheteutilizado,oquedeveriaserresponsabilidadeapenasdo
mtodoSaldo(),deixandoparaDebita()apenasaresponsabilidadederealizaroclculonautilizaodobilhete.
AlterandoaClasseUnicoComum

AindanaclasseUnicoComum,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 UnicoComum: Bilhete
9 {
10 private decimal saldo = 100.00m;
11
12 public decimal Saldo()
13 {
14 return saldo;
15 }
16
17 public void Debita()
18 {
19 saldo = saldo - base.CobraTarifa();
20 }
21 }
22 }

DetalhesdamodificaodaClasse:

AclasseUnicoComumfoialteradacomomodificadordeacessopublic
AclasseUnicoComumherdoudaclasseBilheteeportantosetornouumaclasseDescendente.

FoicriadaavariveldeinstnciasaldocomomembrodaclasseUnicoComum,sendoestadotipodecimal.Almdisto,avarivel
estcomomodificadordeacessocomoprivate,ouseja,acessvelapenasdentrodaclasseUnicoComum.

ForamcriadososmtodosSaldo()eDebita()comomembrosdaclasseUnicoComum,demaneiraapreparlosparaexecuosem
apassagemdeparmetros.Almdissoestesmtodosestocomomodificadordeacessocomopublic.

AindasobreomtodoSaldo(),suaaoseestabelecedemaneiraaguardareretornaravarivelsaldoou seja, o mtodo Saldo()


encapsulaavarivelsaldonaclasseUnicoComum,levandoaoretornodovalorprdefinidocomo:100.00.

No mtodo Debita(), sua ao se estabelece de maneira a guardar a varivel saldo, realizando antes disso uma operao de
subtraoquedeterminaovalordavarivelsaldomenosovalorretornadodaexecuodomtodoCobraTarifa(),criado na classe
HerdadaBilhete.

Telaaocolarocdigo:
MicrosoftVisualStudio2010UltimateTelaapsAlteraodaClasse

Porfim,devesesalvaraclasseUnicoComumesuasalteraesclicandonobotoSalvar.Telacomaconfirmaopositiva(verrodapda
janela)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 UnicoComum objUnicoComum = new UnicoComum();
13 objUnicoComum.Tipo = "Plstico";
14 objUnicoComum.Cor = "Vermelha";
15
16 Console.WriteLine("O Bilhete nico Comum apresenta inicialmente um saldo de R${0}", objUnicoComum.Saldo());
17 Console.WriteLine("O Bilhete nico Comum de {0}, possui a cor {1} e ao passar na catraca, cobra-se uma tarifa de: R${2}", objUnicoComum
18 objUnicoComum.Debita();
19 Console.WriteLine("O Bilhete nico Comum apresenta aps utilizao de uma passagem, um saldo disponvel de R${0}", objUnicoComum.Saldo
20
21 Console.ReadKey();
22 }
23 }
24 }

Cdigo:

Linha1a4:sodeclaraesdenamespacesdeterminadaspeloprprioMicrosoftVisualStudio.
Linha6:declaraodenamespacedeterminadopeloMicrosoftVisualStudiopartirdonomedadoparaoprojetodotipoConsole
Application.Apsalinha6,ocontedopresentedesdeaaberturadachaveatofechamentopertenceaonamespaceemquesto.

Linha 8: declarao da classe Program automaticamente disponibilizada pelo Microsoft Visual Studio partir do nome padro
adotado.

Linha12a18:sodeclaraesrealizadasnaclasseProgram.Instanciando,Inicializando,emseguidapreenchendoasvariveisde
instnciadoobjetocriado(objUnicoComum)apartirdaclasseUnicoComum,queaofinalserovisualizadasnajaneladeConsole
comomensagensdetexto,atravsdautilizaodasprpriasclassesdoFramework.
Linha21:encerramentodocdigo.

DetalhesdadeclaraodaClasse:

ComacriaodoobjetoobjUnicoComum possvel verificar que suas respectivas caractersticas funcionam independentemente,


sendofrutodaHeranaestabelecidaentresuaclassedeorigem(ClasseUnicoComum)eaclasseHerdada(Bilhete).

Diantedocenriosistemametropolitano(estabelecidoaolongodasrie),ovalorretornadodoMtodoSaldo()representaovalorque
o Bilhete nico Comum possui armazenado inicialmente. Alm disso o Mtodo Saldo() pertence exclusivamente a Classe
DescendenteUnicoComum.

Diante do cenrio sistema metropolitano (estabelecido ao longo da srie), o valor retornado do Mtodo CobraTarifa() representa o
valor da tarifa padro cobrada e que d direito a uma passagem atravs do Bilhete nico Comum. Alm disso o Mtodo
CobraTarifa()foicriadonaClassePaiBilheteereaproveitadoatravsdeHeranapelaClasseDescendenteUnicoComum.

Diante do cenrio sistema metropolitano (estabelecido ao longo da srie), o valor calculado no Mtodo Debita() representa o valor
que o Bilhete nico Comum possui armazenado aps a utilizao de uma passagem. Alm disso o Mtodo Debita() pertence
exclusivamenteaClasseDescendenteUnicoComum.

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:

EstapublicaovisaalterarasClassesUnicoComumeProgramdemaneiraqueoleitorpossaentenderaaplicabilidadedetcnicasque
referemse a diviso de responsabilidades entre mtodos estabelecidos em um contexto de Herana, mas com inteno geral sobre
oenvolvimentodaOrientaoaObjetos.

importanteressaltarque,amedidaqueospostsforemevoluindo,comapresentaestericassomadasasprticas,atendnciaqueo
leitorvsanandosuasdvidasedificuldadesdeentendimento.
Na prxima publicao, ainda quarta parte da srie: Programao Orientada a Objetos com C# ser apresentado o dcimo
terceiropostsobreHerana,oleitorirconferiracontinuidadedotemaentreoutrosaspectosrelevantesaesteassunto.

RefernciasBibliogrficas:

Asrefernciasbibliogrficasseroapresentadasnoltimopostdestasrie.

Compartilhar
Compartilhar
Compartilhar

Email
Curtir

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/2016/04/20/programacaoorientadaaobjetoscomcparte412heranca/