2010-08-31 13 views
0

Je commence à réaliser mon premier programme C en utilisant GTK +. J'ai appris le C dans une certaine mesure et j'ai travaillé avec PyGTK, donc j'ai une bonne compréhension des deux. Mais, je n'ai jamais créé de programme d'interface graphique avec C. Bien que cela ait fonctionné, mon dernier programme d'interface graphique était un peu en désordre parce que la logique du programme était tout mélangée avec les choses de l'interface graphique. J'ai lu qu'il est préférable d'écrire la GUI et la logique du programme d'une manière découplée de sorte que si vous changez de bibliothèque graphique, ce serait plutôt indolore.Comment concevoir un programme pour découpler l'interface graphique et la logique de programme

Est-ce exact? Disons que j'ajoute un élément à une liste visuelle. Ai-je une fonction qui ajoute l'élément à une liste logique et l'exécute dans une fonction qui regarde cette liste, puis met à jour le GUI?

Par exemple,

void new_item_button_handler() 
{ 
    add_item_to_array() /* Code dealing with program logic*/ 
    /* 
    * Code here to look at array and update visual list using GUI commands 
    */ 
} 

Quel est le processus général pour ce faire?

Un conseil serait apprécié!

EDIT:

Merci pour les conseils en ce qui concerne MVC. Pourriez-vous peut-être expliquer cela dans le contexte de l'exemple que j'ai donné? Il y a beaucoup d'informations sur MVC, et j'ai du mal à comprendre comment cela s'applique à mon exemple de code ici.

Répondre

2

traditionnellement, ceci est résolu avec un motif MVC. Cependant, si vous n'êtes pas discipliné, vous verrez une logique métier se glisser dans votre couche de vue.

concevez votre structure de paquets de façon à ce que tout soit parfaitement adapté à un ensemble de modèles, de vues et de contrôleurs. assurez-vous de bien définir les interfaces pour le partage des données entre les paquets. faire tous les efforts pour concevoir les paquets de telle sorte que chaque paquet individuel soit testable et utilisable pour la plupart sans dépendre de l'autre 2.

Je vous encourage également à regarder le modèle IOC. Cela vous aidera à connecter tous vos paquets ensemble. Il sera également utile lors des tests lorsque vous devrez simuler des classes de souche pour tester 1 paquet indépendamment des autres 2. IOC est le "câblage" de votre application, il vous permet de mélanger et de faire correspondre des objets.