140 likes | 227 Views
Paradigmas da Programação – Semestre 2 – Aula 13. Professor: Eduardo Mantovani (eduardo.mantovani@aes.edu.br) Prof. Fábio de Paula Santos fabps@mandic.com.br. INTERFACES. Especificam conjuntos de serviços (métodos e atributos) que as classes devem implementar
E N D
Paradigmas da Programação – Semestre 2 – Aula 13 Professor: Eduardo Mantovani (eduardo.mantovani@aes.edu.br) Prof. Fábio de Paula Santos fabps@mandic.com.br
INTERFACES • Especificam conjuntos de serviços (métodos e atributos) que as classes devem implementar • É usada quando não existe nenhuma implementação padrão para herdar
Interfaces • Palavra-chave interface • A classe assina um “contrato” com o compilador que diz que “ esta classe definirá todos os métodos e atributos especificados pela interface. • As interfaces são quase sempre comparadas à classes abstratas. Uma classe abstrata serve como classe-base para uma família de classes derivadas, enquanto que as interfaces foram feitas para serem misturadas a outras árvores de herança
Interfaces e Polimorfismo • Interfaces fornecem conjuntos uniformes de métodos e atributos para objetos de classes díspares ( Ex: pessoas e árvores). • Isso permite que os programas processem objetos destas classes de maneira polimórfica ( pessoas e arvores tem algo em comum: a idade)
Criando a aplicação • Windows Form • Crie cada classe separadamente: • File/New File/Visual C# Class
Juntando classes em arquivos separados numa única aplicação Adicione os .CS em sua aplicação. Obs: procure salvar os .CS na mesma pasta de sua aplicação.
Foreach • Permite a iteração de todos os itens de uma array examinando cada item de cada vez. foreach( int i in intArray) { Console.WriteLine( i.ToString()); }
Classe 1: a interface using System; /// arquivo: IIdade.cs /// Esta interface declara propriedade para configurar e obter a idade das classes (nao importa se pessoas ou árvores) /// propriedade de somente leitura que todas as classes que a implementam devem fornecer implementacoes public interface IIdade { public int Idade { get; } public string NomeCompleto { get; } }
Classe 2: pessoa using System; /// <summary> /// a classe pessoa tem uma data de nascimento. /// Os atributos NomeCompleto e Idade, satisfazem os requisitos de implementacao definidos na interface IIdade; /// portanto, a classe Pessoa cumpre o seu "contrato" com o compilador /// </summary> public class Pessoa : IIdade // a classe pessoa implementa a interface IIdade { private string Nome; private string Sobrenome; private int AnoNascimento; public Pessoa(string ValorNome, string ValorSobrenome, int ValorAnoNascimento) { Nome = ValorNome; Sobrenome = ValorSobrenome; if( ValorAnoNascimento > 0 && ValorAnoNascimento <= DateTime.Now.Year) AnoNascimento = ValorAnoNascimento; else AnoNascimento = DateTime.Now.Year; }
Classe 2: pessoa (cont..) public int Idade //implementacao do atributo Idade da interface IIdade { get { return( DateTime.Now.Year - AnoNascimento); } } public string NomeCompleto //implementacao do atributo Idade da interface IIdade { get { return( Nome + " "+ Sobrenome ); } } }//fecha pessoa
Classe 3: arvore using System; /// arvore.cs /// contém o numero de anéis de uma arvore, o que corresponde a sua idade /// public class Arvore : IIdade { private int aneis; // numero de aneis de um tronco public Arvore(int anoPlantacao) { aneis = (DateTime.Now.Year - anoPlantacao); } public void AddAneis() { aneis++; }
Classe 3: arvore ( cont..) public int Idade { get { return aneis; } } public string NomeCompleto { get { return( "Arvore"); } } }
A aplicação class TesteInterface { static void Main(string[] args) { Arvore arvore = new Arvore(1978); Pessoa pessoa = new Pessoa("Eduardo", "Mantovani", 1950); Pessoa pessoa2 = new Pessoa("Fabio", "Santos", 1920); IIdade[] iIdadeArray = new IIdade[3]; iIdadeArray[0] = arvore; iIdadeArray[1] = pessoa; iIdadeArray[2] = pessoa2; string saida = arvore + ":" + arvore.NomeCompleto + "\nIdade é " + arvore.Idade + "\n\n"; foreach( IIdade referencia in iIdadeArray) { saida += referencia.NomeCompleto + " Sua Idade é: "+ referencia.Idade + "\n" ; } MessageBox.Show(saida, " Demonstracao de Polimorfismo/Interface"); } }
Nesta aula aprendemos... • Interface ( necessidade de um contrato) • Polimorfismo ( arvore e pessoa) • Criar uma aplicação com classes em arquivos separados • Uso de foreach