Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
OOP em VFP e .NET
Message
 
À
03/03/2003 17:14:02
Information générale
Forum:
Visual FoxPro
Catégorie:
Programmation Orientée Object
Divers
Thread ID:
00760569
Message ID:
00760684
Vues:
34
Fala Lassala!

Uma coisa que sempre senti falta do VFP é a possibilidade de construir interfaces. Claro que a possibilidade de IMPLEMENTAR interfaces incluída no VFP 7 já é um avanço, mas não existe nenhum mecanismo que reforce a validade das classes implementadas em tempo de execução (muito menos em tempo de compilação, o que seria o ideal).

Mas o que gostaria de dizer mesmo, não é sobre a implementação de interfaces, mas a criação e consequente utilização das mesmas. Veja abaixo algo que gostaria de usar em VFP e não posso (escrito em C#):

Suponha que temos um formulário que em tempo de execução decide qual classe será instanciada baseado em parâmetros passados pelo usuário. Estas classes deveriam TODAS implementar um método chamado "Executar" com a seguinte assinatura:
string Executar()
Seria interessante que todas as classes usadas neste formulário sejam "downcasted" para uma interface comum, que poderia ser implementada da seguinte forma:
public interface IExecutor
{
	string Executar();
}
Suponha que tenho somente duas classes (potencialmente várias). Estas classes implementariam esta interface e seriam obridadas pelo compilador a implementar a interface definida em "IExecutor"; por exemplo:
public class CTrabalhoDuro: IExecutor
{
	public string Executar()
	{
		return "Estou trabalhando duro!!!";
	}
}
e
public class CTrabalhoLeve: IExecutor
{
	public string Executar()
	{
		return "Esse trabalho é moleza...";
	}
}
Na hora de usar uma destas classes polimorficamente, posso tranquilamente ter o seguinte código (no click de um botão, por exemplo):
private void button1_Click(object sender, System.EventArgs e)
{
	const string TIPO_TRABALHADOR = "Duro";
	//const string TIPO_TRABALHADOR = "Leve";

	IExecutor executor;

	// Instancia o objeto que implementa a interface "IExecutor"
	if (TIPO_TRABALHADOR == "Duro")
		executor = (IExecutor) new CTrabalhoDuro();
	else
		executor = (IExecutor) new CTrabalhoLeve();

	// Utiliza a instância
	System.Windows.Forms.MessageBox.Show(executor.Executar());
}
Se qualquer uma das classes usadas neste bloco disser que implementa a interface "IExecutor", ela será obrigada pelo compilador a implementar esta interface...

Acho que isso é muito útil e, infelizmente, não temos no VFP :(

Um abraço!
-----
Fabio Vazquez
http://www.fabiovazquez.com
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform