itepi 0 Denunciar post Postado Dezembro 16, 2009 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
Discorpio 1 Denunciar post Postado Dezembro 17, 2009 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
itepi 0 Denunciar post Postado Dezembro 17, 2009 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 Compartilhar este post Link para o post Compartilhar em outros sites
Discorpio 1 Denunciar post Postado Dezembro 17, 2009 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