Cursos / Eletrônica / Programação Orientada a Objetos / Aula

arrow_back Aula 13 - Atributos e Métodos Estáticos, Classes Abstratas e Interfaces

Interface

Imagine uma grande equipe de desenvolvimento de software, onde há subdivisões de acordo com a parte que o software irá atuar, logo, é necessária uma espécie de contrato para garantir “independência” entre as equipes. Assim, saberão o que deverão fazer sem que saibam exatamente como está sendo implementado pela outra equipe.

Imaginemos que fabricamos softwares para serem implantados em brinquedos como robôs, carrinhos e aviões que possuem como característica principal a capacidade de se locomoverem segundo os comandos de um controle remoto. Cada brinquedo entende o que precisa fazer para mover-se para frente ou para trás, parar e emitir um sinal de localização.

Os brinquedos são fabricados por uma companhia e os controles por uma empresa parceira em produção de eletrônicos. Ambos são implementados na linguagem Java. O contrato estabelecido entre os desenvolvedores é de que todos os produtos que necessitam ser controlados por um controle remoto deverão implementar a interface Mobilidade, cujo código é apresentado na Listagem 6.

Listagem 6 - Interface mobilidade

De um lado, as classes que representam os produtos a serem controlados irão “inscrever-se” ou declarar-se implementadoras dessa interface. De outro lado, a classe controle remoto irá operar sobre esses métodos sem conhecer nada além do que ela precisa saber, ou seja, o conjunto de métodos da interface mobilidade. Por isso, chamados de interface, ou modo de ver os objetos.

A Listagem 7 apresenta a classe Robô que implementa a interface Mobilidade.

Listagem 7 - Classe Robô

Veja que a classe Robô se define implementadora da interface Mobilidade através da palavra reservada implements, seguida do nome da interface Mobilidade. Outros métodos podem ser definidos livremente pelas classes que implementam interfaces. O que vemos na definição dos métodos moveBracoDireito() e moveBracoEsquerdo(), por exemplo, são típicos de funções de um robô, mas que certamente não se aplicaria a um veículo de brinquedo.

A Listagem 8 apresenta a classe Trator, que também implementa a interface Mobilidade. Assim como a classe Robô, a classe Trator implementa a interface Mobilidade e declara outro método chamado de ergueEscavadeira(), que representa uma funcionalidade extra e que não será controlada remotamente.

Listagem 8 - Classe Trator

Assim, como o método moveBracoDireito() da classe Robô, o método ergueEscavadeira() da classe Trator faz uma atividade específica para o brinquedo. E, por isso, só é definido no próprio brinquedo. Por fim, temos a classe ControleRemoto que realiza operações sobre objetos “Móveis” que implementam a interface Mobilidade. Veja a Listagem 9.

Listagem 9 - Classe ControleRemoto

Observe que a classe ControleRemoto possui métodos que operam sobre objetos de classes que implementam a interface Mobilidade, sejam eles quais forem. Por isso, na declaração dos métodos, não está explícito classes como Trator ou Robô, pois o controle trata-os de forma transparente. Esse exemplo também representa uma das formas de polimorfismo.

Versão 5.3 - Todos os Direitos reservados