Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

itepi

Interface em OO

Recommended Posts

Alguém sabe como criar uma interface no delphi?

Não estou falando em interface gráfica e sim no conceito de interface em orientação a objeto!

Desde já agradeço pela ajuda!!

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia.

 

Primeiramente voce declara a interface assim:

 

  Type
     IMinhaInterface = interface
       function RetornaInteiro: Integer;
       procedure executa(Op: String);
       ....
       ....
     end;

Após isso, pressione "Ctrl + Shift + G e o seu código será acrescentado de um GUID (Globally Unique Identifier), e ficará assim:

 

  Type
     IMinhaInterface = interface
       ['(EAD9C4B4-E1C5-4CF4-9FA0-3B812C880A21')]
       function RetornaInteiro: Integer;
       procedure executa(Op: String);
       ....
       ....
     end;

Após isso voce vai declarar a classe juntamente com sua herança, acrescentando a interface declarada, assim:

 

  Type
     IMinhaInterface = interface
       ['(EAD9C4B4-E1C5-4CF4-9FA0-3B812C880A21')]
       function RetornaInteiro: Integer;
       procedure executa(Op: String);
       ....
       ....
     end;

     TCliente = class(TForm, IMinhaInterface)
     private
       function RetornaInteiro: Integer;
     public
       procedure executa(Op: String);
     end;

Repare que quando declaro classes, geralmente colocamos a letra "T" maíuscula no ínicio do nome da classe, com as Interfaces o fazemos com a letra "I" maíuscula, não que isso seja uma regra, porém facilita e muito o compilador.

 

Todos os métodos declarados na Interface devem ser redeclarados e implementados na classe que a implementa, pois essa é a finalidade da Interface definir comportamentos obrigatório para uma classe, como se fosse um tipo de contratro a ser cumprido.

 

Como uma Interface não existe praticamente uma herança definida, ou seja, ela não herda de TObject, voce pode implementar várias interfaces em uma classe, assim:

 

  TCliente = class(TForm, IPrimeiraInterface, ISegundaInterface)
  .....

Espero ter ajudado.

Jorge da Silva Abreu

 

O Senhor é meu Pastor e nada me faltará (Sl. 23:01).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Discorpio obrigado pela explicação, me ajudou muito.

Só me tire mais uma dúvida se possível, qual a finalidade da GUID? Toda interface precisa ter uma GUID?

 

Obrigado! http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

 

Olá Itepi.

 

Embora seja possível compilar e usar uma interface sem especificar a GUID, o compilador do Delphi vai gerar uma automaticamente no momento da compilação do Projeto, isto porque ela é exigida para executar consultas à interface, e em caso de conversões de tipo (typecast) de interface usando-se o conversor "AS" da RTTI dinâmico. É como se a GUID fosse um ponteiro da interface, e elas são baseadas em convenções do Windows.

 

Apenas citei a GUID para mais um conhecimento seu sobre o conceito, porém elas não são necessárias ser declaradas em tempo de projeto.

 

A questão das interfaces é aproveitar a flexibilidade de tipo amplamente estendida em tempo de execução. Assim sendo, comparadas aos tipos de classe, as interfaces sem GUID não são muito úteis.

 

 

O Senhor é meu Pastor e nada me faltará (Sl. 23:01).

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.