GARANTIR DESCONTO

Fórum Implementando interfaces. Como instanciar? #314824

03/03/2006

0

Tenho um form que instancia ´n´ interfaces(Interface1, Interface2...Interface n).
Se eu instanciar o FORM, tenho acesso a todas as propriedaes e métodos declarados nas interfaces. Mas qual seria o método correto:

Acessar essas propriedades e métodos pela instancia do FORM ou criar instancias das interfaces e acessar por elas?


Rjun

Rjun

Responder

Posts

03/03/2006

Michael

Olá!

Interfaces são similares à classes abstratas, e portanto vc não pode instânciá-las diretamente. É necessário [b:9f2b0685c9]implementá-las[/b:9f2b0685c9] através de uma classe para se ter acesso aos seus atributos.

E, tbm como em classes abstratas, interfaces não possuem código escrito, apenas assinaturas de métodos. Essa é outra razão pela qual elas não podem ser instanciadas diretamente, pois não haveria código para fazer nada.

Tenho um form que instancia ´n´ interfaces(Interface1, Interface2...Interface n).

O correto é dizer que o form [b:9f2b0685c9]implementa [/b:9f2b0685c9]as interfaces, pelas razões já mencionadas.

[]´s


Responder

Gostei + 0

03/03/2006

Rjun

Michael

Valeu pelas correções. O instancia ´n´ interfaces realmente foi falta de atenção. Quanto a instanciar interfaces, acabei me expressando mal.

O que quero saber é se crio objetos do tipo da interface para acessar as propriedades ou se instancio a classe que implementou as interfaces e acesso as propriedades e métodos por ela.


Responder

Gostei + 0

03/03/2006

Michael

Você não vai conseguir criar um objeto derivado diretamente da interface. Sempre é necessário criar uma classe e implementá-las adicionalmente.

Mas acho q entendi o que vc quer: se as interfaces definirem métodos que possam ser genéricos, talvez seja mais interessante vc criar uma classe separada do seu form e nela implementar o código dos atributos das interfaces. Desta forma vc poderia usar essa classe em vários projetos diferentes, o que não seria tão simples se todo o código estivesse em um formulário.

Entendi bem o que vc quis dizer?

[]´s


Responder

Gostei + 0

03/03/2006

Rjun

Michael

Na verdade minha dúvida nem é sobre Delphi, mas coloquei aqui pois poderia ser implementada em qualquer linguagem. Estou programando em C# para Compact Framework. E essa aplicação também devera funcionar no framework normal.

Então retirei toda a lógica de negócio do form e coloquei em uma classe que chama esse form. Esse form só possue propriedades que são implementações de uma interface. Dessa forma quando for criar um form para o framework normal, ou quiser mudar a forma como será apresentada essas informações ao usuário basta eu implementar a interface que para a classe com a lógica de negócios será indiferente o tipo de interface com o usuário que estou usando.

Bom, minha dúvida se reside nisso. Qual seria o mais indicado. Eu criar um objeto que instancie o form direto, pois dessa forma consigo acessar todas as propriedades implementadas ou ter variáveis do tipo da interface. Desse modo ficaria mais claro os tipos de cada interface.

Fui meio extenso mas não sei se fui claro.

Quero trocar ideias, pois funciona com qualquer uma das abordagens.


Responder

Gostei + 0

03/03/2006

Michael

Eu criar um objeto que instancie o form direto, pois dessa forma consigo acessar todas as propriedades implementadas ou ter variáveis do tipo da interface. Desse modo ficaria mais claro os tipos de cada interface.


Para ficar mais legível o acesso aos métodos das interfaces vc quer implemetá-las em classes separadas da do formulário, certo? Bom, isso é uma questão pessoal. Vc poderia manter a implementação no formulário, e quando quiser acessar apenas os atributos de uma determinada interface basta fazer um cast.

Se não for isso, então não entendi direito o que vc quer... ;-)

[]´s


Responder

Gostei + 0

03/03/2006

Rjun

O que quero fazer é implementar um MVP, parecido com esse [url=http://www.javafree.org/content/view.jf?idContent=91]artigo[/url].


Responder

Gostei + 0

03/03/2006

Michael

Só conheço a sigla MVC. Vou dar uma olhada mais tarde no link que vc passou para saber o que é MVP.

[]´s


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar