Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1739 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  GUI et POO

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

GUI et POO

n°759913
razor_dotn​et
Posté le 10-06-2004 à 23:49:45  profilanswer
 

Salut a tous,
 
Je suis encore "debutant" en prog et actuellement je suis sur une application multi-threads et j'aimerais savoir en theorie s'il est possible de separer completement l'interface graphique du moteur.
Voila en fait ce que j'aimerais faire (mais je sais pas si c'est possible et comment le faire) :
J'aimerais creer un espace d'echange en memoire qui gere les acces concurrents et qui serait alimenter par le moteur en donnees et l'interface graphique y piocherait les donnees dont elle a besoin en plus d'y referencer les actions utilisateurs qui pourraient influencer le comportement du moteur.
Est-ce que cela est possible? si oui qu'elle est la technologie a utiliser?
 
Merci d'avance.
 
Razor.
 
PS: Je code en C# pour ceux que ca pourrait aider...

mood
Publicité
Posté le 10-06-2004 à 23:49:45  profilanswer
 

n°761234
jaylee
Posté le 12-06-2004 à 13:14:08  profilanswer
 

Il est tout à fait possible de séparer la GUI et le "core". C'est d'ailleurs une des grandes forces de .NET, grâce notamment à l'utilisation des events et des composants.
 
En quelques mots, tu crées un assembly de type "Class Library" qui contiens la logique de ton programme. Il contiendra (grossièrement) une classe utilisée par la GUI, qui fournira un certain nombre d'évenements, propriétés et méthodes.
Ensuite, ta GUI viendra s'enregistrer sur ces évènements (l'opérateur += sur les events).
 
Tu as cependant deux problèmes en un ici. La séparation GUI/Logique et le threading. En ce qui concerne le threading, les même règles que celle que l'on pouvait trouver avec Win32 s'appliquent. Autrement dit, tu n'as pas le droit de mettre à jour la GUI depuis une thread de ton core, par exemple. Tout du moins, pas directement.
 
Tu as besoin d'utiliser les namespaces suivants : System.Threading pour les threads, mutexes et autre monitors et System.Collection pour ton "espace d'échange". Attention à la synchronisation des collections qui doit être effectuée soit par l'intermédiaire du mot clé "lock", soit par l'intermédiaire de collections synchronisées. (e.g. ArrayList.Synchronized)
 
C'est un sujet assez vaste :)
 
--
Jay
{Epitech.}
http://www.labtech.epitech.net/blogs

n°761236
Yttrium
Furtif
Posté le 12-06-2004 à 13:16:43  profilanswer
 

C'est un peu casse-tête, ton histoire multithread...
 
Personnellement, pour ton problème, je tenterais plutôt une conception mutli-couche : de cette façon tu peux séparer l'interface graphique, la logique et les données, tout en bénéficiant d'un traitement asynchrone sur la couche métier, locale ou non.
 
Mais il faut utiliser un bon paquet de technologies pour faire ça, et c'est pas forcément l'architecture de choix pour un débutant.
 
Sinon, à partir d'une application simple, il est possible de démarrer des fonctions "lentes" dans un thread séparé pour pouvoir conserver la réactivité de l'interface graphique, mais ça c'est autre chose.
 
Il y quelques articles intéressants que tu devrais consulter sur MSDN. Cela te permettrait déjà d'y voir plus clair.
 
// EDIT: grilled
// EDIT: il débute : mieux vaut avoir un aperçu général des solutions disponibles plutôt que de coder à toute pompe... C'est mon avis. ;)


Message édité par Yttrium le 12-06-2004 à 13:18:35
n°761243
jaylee
Posté le 12-06-2004 à 13:27:28  profilanswer
 

Yttrium a écrit :


// EDIT: grilled
// EDIT: il débute : mieux vaut avoir un aperçu général des solutions disponibles plutôt que de coder à toute pompe... C'est mon avis. ;)


 
Tout à fait :) Le problème pour les débutant dans ce genre de chose est justement de mettre la main sur ces technologies, considérant leur nombre. Un peu d'aide pour avoir quelques bases et la possibilité de savoir plus où moins où chercher après cela n'est pas inutile :)
 
Mais nous somme d'accord : Un bon code est un code réfléchi avant son écriture... A condition de savoir où l'on va :)
 
--
Jay
{Epitech.}
http://www.labtech.epitech.net/blogs

n°761280
razor_dotn​et
Posté le 12-06-2004 à 15:25:13  profilanswer
 

Merci bcp les gars j'ai de quoi occuper mes prochaines semaines en recherche et analyse.
J'apprecie bcp le partage de votre experience!
Reste a trouver maintenant quelle techno va etre la plus appropriee a ce que je veux faire... Une bonne serie de Dummies applications, c'est partie!

n°761366
razor_dotn​et
Posté le 12-06-2004 à 19:03:46  profilanswer
 

Bon apres reflexion, Jaylee je crois que j'ai a peu pres compris le raisonnement de la solution que tu proposes, meme si je suis pas sur que l'application pratique de ce raisonnement soit du gateau... Par contre Yttrium, j'avoue que je suis pas tres bien ce que tu entends par "couche" ...  
Ca donnerait une couche graphique, une couche logique et une couche donnees?
Comment se caracterisent ces couches reellement? Ce sont des classes independantes du contexte? ou bien autre chose de plus obscurs a mes yeux! ;P


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  GUI et POO

 

Sujets relatifs
[Scheme] GUI : tout intégrer dans un let ? des problèmes s'ensuivent..[Perl] Aide pour logique en POO
[Perl] POO et utilisation d'une method dans un print ou un shell execcreation d une GUI a un JS
communication entre les plugins et le coeur d'une application POO[Perl] Utilisation de Win32::GUI
[Livre] C++ Gui Programming With Qt 3, kkun l'a ??..GUi avec deux frames
pb de coompilation d'un prog GUI avec GTK[PHP] La POO
Plus de sujets relatifs à : GUI et POO


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR