17 de maio
Alta procura
464 visualizações

Interfaces e Classes abstratas

Interfaces

Interfaces são convenções que viabilizam a determinação de um padrão, um comportamento esperado. Beneficiam a reutilização de classes ao ditar as assinaturas de nomes e tipagens em atributos e métodos, sem implementar o código da função. São chamadas de contratos por sua capacidade de obrigar suas implementações a executar determinados procedimentos. Interfaces são interpretações de mais alto nível utilizadas por programadores, para que possam garantir operações de suas classes.

Classes abstratas, por sua vez, são interfaces mais flexíveis. Permitem ainda fazer a implementaçao do código de algumas ou todas as funções.

Se o programador deixa de implementar determinado método exigido pela interface ou classe abstrata na classe que o(a) implementa, a aplicação emite um erro para alertar o programador de que faltam métodos para que a classe cumpra com todos os métodos assinados no contrato. Como exemplo: Um software de músicas dispõe de uma interface simples, chamada Playable (executável):



interface Playable{
private List Playlist { get; set; }
private Setting Setting { get; set; }
}

Classes abstratas

Classes abstratas podem cumprir o papel das interfaces e ainda permitir que o corpo das funções seja pré-codificado, como no caso de funções que servem para todas as implementações, sem variação no corpo da função.

abstract class PlayableThemeBehavior{
public virtual List Playlist { get; set; }
public virtual Setting Setting { get; set; }
private const string ThemeFileURL;
public string LoadThemeDOM(){
return HTML::LoadPageCode(PlayableThemeBehavior.ThemeFileURL);
}
}

Logo ele cria sua classe seguindo a especificação:

class NewAwesomePlayer implements Playable, PlayableThemeBehavior{
private const string ThemeFileURL = '~View/Shared/Layout.html';
public List Playlist { get; set; }
public Setting Setting { get; set; }
public void Run { get; set; }
public NewAwesomePlayer(){}
}

O que é um método abstrato?

São métodos que obrigam implementação nas classes filhas.

O que é e para que serve uma classe abstrata?

Classes com pelo menos um método abstrato, onde apenas uma parte do comportamento é conhecido.

Como uma classe abstrata e uma interface de classe, de C#,estão relacionados?

Classes abstratas são tipos de interface. Se uma classe não implementa todos os métodos assinados da interface, ela deve se declarar abstrata e também declarar os métodos não implementados como abstratos.

Em qual ou quais situações deve-se usar uma classe abstrata e em qual ou quais se deve usar interfaces?

Classes abstratas podem descrever “como deve ser feito” e são utilizadas quando se conhece parte do comportamento do objeto, apenas assinando e mantendo métodos desconhecidos como abstratos. Interfaces apenas funcionam como contratos e apenas especificam “o que deve ser feito”.

Quais as restrições no uso de uma classe abstrata em C#? O que é possível fazer e não fazer com o tipo declarado por uma classe abstrata?

Identificada por “abstract”. Precisa ter pelo menos um método público (nunca static) abstrato (virtual por default). Não pode ser instanciada com “new”. Deve ser herdada. Métodos das classes filhas devem usar override.

Um método abstrato pode ser especificado como “private”?

Não, pois isso impediria sua implementação em classes herdeiras.

É obrigatório que uma classe implemente todos os métodos de uma interface da qual ela herda (ou que ela implementa)?

Implementar uma interface é se comprometer em cumprir seu escopo. Caso isso não seja possível, é necessário utilizar uma classe abstrata.

Complementar, contribuir, comentar!

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *


Um pouco sobre o autor

Matteus Barbosa - Desenvolvedor Web
                               
Trabalho como Desenvolvedor web desde 2013 e atualmente faço parte do quadro da Symplicity. Também atuo em projetos como profissional autônomo. Para saber da minha experiência, acesse meu Currículo, meu Portfólio, a relação de Referências de Clientes ou ainda a Lista de Serviços. As propostas de serviço são iniciadas com conversas informais, seguidas da coleta de requisitos, elaboração do cronograma e por fim a proposta de orçamento. Todas as etapas são acompanhados de perto via ferramenta online e videoconferências. Os pagamentos são registrados com entrega de notas fiscais. Presto serviços de projeto, desenvolvimento e manutenção de sistemas baseados nos mais diversos frameworks.