Imprimir Post

Programação Orientada a Objetos com C# (Parte 6.8) – Interface

Resumo:

O objetivo não se aplica a este post.

Uma vez que o conteúdo total desta série foi dividido em partes, deve-se considerar absoluto o resumo da primeira postagem até o momento presente.

Interface - Relembre - Link Primeiro Post

Este tema da série Programação Orientada a Objetos com C# irá demandar mais publicações. Sendo assim, a numeração sequencial desta parte da série passou de 6.7 para 6.8 (vide título) e assim seguirá (6.9, 6.10…) mediante a necessidade de conclusão.

Palavras-chaves:

Encapsulamento, Herança, Polimorfismo, Propriedades, Classe, Objeto.

Texto:

Mãos a Obra

Com a alteração da classe Unitario corrigindo erros anteriormente indicados pelo compilador, foram apresentadas mensagens em uma janela de console desprezando os métodos Saldo() e Debita() determinados como obrigatórios pela Interface IBilhete (vide post anterior), o próximo passo na Programação Orientada a Objetos com C# será entender como Classes podem implementar métodos exigidos por uma Interfaceainda que esta implementação não ocorra explicitamente na estrutura desta classe, de maneira que o compilador não acuse erros por violação de contrato.

Interface - Relembre - Link Post Anterior

Entendendo a responsabilidade de cada característica

Anteriormente foi apresentada a execução da Aplicação onde a Classe Unitario assumira a responsabilidade de implementar os métodos exigidos pela Interface IBilhete.

Recorda-se que, IBilhete exige a implementação dos métodos Saldo(), CobraTarifa()Debita():

Interface - Interface IBilhete

Interface IBilhete

Porém a classe Unitario ao utilizar-se desta Interface, implementa somente dois destes métodos:

Interface - Classe Unitario

Classe Unitario

Ao final a execução é realizada sem erros:

Interface - Microsoft Visual Studio 2010 Ultimate – Execução da Aplicação (Janela de Console)

Microsoft Visual Studio 2010 Ultimate – Execução da Aplicação (Janela de Console)

Nesta altura da série, a dúvida que cabe, portanto é:

 “Porque o compilador não acusou erro a Classe Unitario, diante da não implementação do método CobraTarifa(), também exigido por IBilhete?”

Partindo para a resposta da dúvida acima, e, com o intuito de resgatar todos os assuntos e suas variantes vistas até o momento, para o cenário exemplificado, deve-se atentar-se, portanto, que a classe Unitario além de utilizar-se da Interface IBilhete, também herda da classe Bilhete:

Interface - Classe Unitario

Classe Unitario

Dentro das características herdadas pela classe Unitario da classe Bilhete, encontra-se o método que garante o cumprimento das exigências pela Interface IBilhete.

Interface - Classe Herdada Unitario

Classe Herdada Unitario

Conclusivamente, quando ocorre a execução da aplicação, a Interface IBilhete interpreta que o método CobraTarifa() está sendo implementado pela classe Unitario mesmo que não explicitamente e sim pela prática de Herança.

Considerações Finais:

Esta publicação visa explanar a dúvida levantada sobre a implementação obrigatória, porém não explicita de um dos métodos da Classe Unitario, garantindo a execução da Aplicação por meio das técnicas de Herança e Interface em conjunto.

O questionamento final que fica em aberto é:

“Porque as classes UnicoComum e UnicoEstudante não acusaram os mesmos erros que a classe Unitario no compilador? “

É importante ressaltar que, a medida que os posts forem evoluindo, com apresentações teóricas somadas as práticas, a tendência é que o leitor vá sanando suas dúvidas e dificuldades de entendimento.

Na próxima publicação, ainda sexta parte da série: Programação Orientada a Objetos com C# será apresentado o nono post sobre Interface, o leitor irá conferir a continuidade do tema entre outros aspectos relevantes a este assunto.

Referências Bibliográficas:

As referências bibliográficas serão apresentadas no último post desta série.

Sobre o autor

Thiago Richard Vanicore

Thiago Richard Vanicore formou-se em análise e desenvolvimento de sistemas, possui certificação ITIL Foundation V2 e entre seus conhecimentos estão: ASP .Net (WebForms/MVC5/Web API) C#, HTML5, Html/XHtml, CSS3, JQuery, JQuey Mobile, JavaScript, Xml, Ajax, Json, Microsoft SqlServer, MySql, Firebird, Azure, Visual Studio Online, Scrum, UML, CRM, Quality Assurance, CTI (Computer Telephony Integration) MPSBR (Melhoria de Processos do Software Brasileiro).

Link permanente para este artigo: http://linksinergia.com.br/2016/09/28/programacao-orientada-a-objetos-com-c-parte-6-8-interface/