Вы находитесь на странице: 1из 10

ProgramaoOrientadaaObjetoscomC#(Parte6.

5)Interface
Categorias:Interface

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
destapartedasriepassoude6.4para6.5(videttulo)eassimseguir(6.6,6.7)medianteanecessidadedeconcluso.

Palavraschaves:

Encapsulamento,Herana,Polimorfismo,Propriedades,Classe,Objeto.

Texto:

MosaObra

ComaalteraodaInterfaceIBilheteassumindocomomembrosadeclaraodosMtodosSaldo(),CobraTarifa()eDebita(),temsea
conclusodosegundodentreos3passosestabelecidosparaaplicabilidadedeInterface(videpostanterior),oprximopassoseralterar
asClassesUnitario,UnicoComumeEspecialDesempregadodemaneiraafirmarovnculoentreestaseainterfaceIBilhete,garantindo
aimplementaodeseusmtodosdeclaradosnopassoanterior.

Adendo

PararealizaodoPostforamutilizadososseguintesProgramas:

Windows10Pro
MicrosoftVisualStudio2010UltimateSP1(ServicePack1).

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

AlterandoaClasseUnitario

PartindodaclasseUnitario,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 Unitario : Bilhete, IBilhete
9 {
10 }
11 }

Telaaocolarocdigo:
MicrosoftVisualStudio2010UltimateTelaapsAlteraodaClasse

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

AlterandoaClasseUnicoComum

NaclasseUnicoComum,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, IBilhete
9 {
10 private decimal saldo = 100.00m;
11
12 public decimal Saldo()
13 {
14 return saldo;
15 }
16
17 private DateTime dataPrimeiraPassagem;
18 public DateTime DataPrimeiraPassagem
19 {
20 get { return dataPrimeiraPassagem; }
21 set { dataPrimeiraPassagem = value; }
22 }
23
24 private decimal tarifa;
25 public override decimal CobraTarifa()
26 {
27 TimeSpan diferencaHora = dataPrimeiraPassagem - DateTime.Now;
28 tarifa = base.CobraTarifa();
29
30 if (diferencaHora.Hours <= 2)
31 {
32 tarifa = tarifa + 2.12m;
33 }
34
35 return tarifa;
36 }
37
38 public void Debita()
39 {
40 saldo = saldo - tarifa;
41 }
42 }
43 }

Telaaocolarocdigo:
MicrosoftVisualStudio2010UltimateTelaapsAlteraodaClasse

Porfim,devesesalvaraclasseUnicoComumesuasalteraesclicandonobotoSalvar.Telacomaconfirmaopositiva(verrodapda
janela)aoclicarnobotoSalvar:
MicrosoftVisualStudio2010UltimateTelaapsSalvaroProjeto

AlterandoaClasseUnicoEstudante

NaclasseUnicoEstudante,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 UnicoEstudante : Bilhete, IBilhete
9 {
10 private decimal saldo = 100.00m;
11
12 public decimal Saldo()
13 {
14 return saldo;
15 }
16
17 private DateTime dataPrimeiraPassagem;
18 public DateTime DataPrimeiraPassagem
19 {
20 get { return dataPrimeiraPassagem; }
21 set { dataPrimeiraPassagem = value; }
22 }
23
24 private decimal tarifa;
25 public override decimal CobraTarifa()
26 {
27 TimeSpan diferencaHora = dataPrimeiraPassagem - DateTime.Now;
28 tarifa = base.CobraTarifa();
29
30 if (diferencaHora.Hours <= 2)
31 {
32 tarifa = tarifa / 2;
33 }
34
35 return tarifa;
36 }
37
38 public void Debita()
39 {
40 saldo = saldo - tarifa;
41 }
42 }
43 }

Telaaocolarocdigo:
MicrosoftVisualStudio2010UltimateTelaapsAlteraodaClasse

Porfim,devesesalvaraclasseUnicoComumesuasalteraesclicandonobotoSalvar.Telacomaconfirmaopositiva(verrodapda
janela)aoclicarnobotoSalvar:
MicrosoftVisualStudio2010UltimateTelaapsSalvaroProjeto

DetalhesdasClassesUnitario,UnicoComumeUnicoEstudante

AsintaxeparaInterfaceentreasClassesUnitario,UnicoComumeUnicoEstudanteeIBilheteumconceitonovo,aindanoexplicado.

Logo,adeclaraodeumaInterfaceaserutilizadaseestabelecedaseguintemaneira:

1 Modificador-de-acesso class Nome-da-Classe : Nome-da-Interface

Para garantir, portanto, a utilizao da tcnica Interface no cenrio estabelecido, as Classes Unitario, UnicoComum e
UnicoEstudanteforammodificadascomosegueabaixo:

1 public class Unitario : Bilhete, IBilhete

1 public class UnicoComum : Bilhete, IBilhete

1 public class UnicoEstudante : Bilhete, IBilhete

Em resumo, as classes Unitario, UnicoComum e UnicoEstudante devero implementar todos os membros (no
casoMtodos)declaradosnaInterfaceIBilhete.

Outro detalhe que, segundo fontes diversas, quando ocorre o vnculo entre classes (no exemplo: Unitario, UnicoComum e
UnicoEstudante)einterfaces(noexemplo:IBilhete)iniciaseumcontrato.

Notase tambm que estas classes foram determinadas para utilizao da interface IBilhete mantendo Bilhete como classe Herdada,
sendo esta uma combinao de tcnicas totalmente possvel e ser abordada de maneira mais aprofundada ao longo das prximas
postagens:
ClassesmantendoaHeranacomBilhete

ConsideraesFinais:

Esta publicao visa a alterao das Classes Unitario, UnicoComum e UnicoEstudante (agora firmadas com
um contrato), preparandoas para implementao obrigatria dos Mtodos Saldo(), CobraTarifa() e Debita() declarados partir da
interfaceIBilhete.

Fica concludo o terceiro passo definido para incluso de Interface no cenrio estabelecido, restando apenas o consumo de toda esta
preparaocomaclasseProgram,queviremsequncia.

importanteressaltarque,amedidaqueospostsforemevoluindo,comapresentaestericassomadasasprticas,atendnciaqueo
leitorvsanandosuasdvidasedificuldadesdeentendimento.

Naprximapublicao,aindasextapartedasrie:ProgramaoOrientadaaObjetoscomC#serapresentadoosexto post sobre


Interface,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/08/31/programacaoorientadaaobjetoscomcparte65interface/