C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Variables globales ?
Goto page 1, 2, 3, 4  Next
 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Michael Monerau
Guest





PostPosted: Sat Jul 26, 2003 11:03 am    Post subject: Variables globales ? Reply with quote



Bonjour,

J'ai une question concernant le design général pour un nouveau et long
projet.

Comment faites-vous pour stocker les options générales d'un programme ? Par
exemple, les options données par la ligne de commande, ou le Handle de la
fenêtre principale (sous Windows), ou l'objet sélectionné en ce moment (dans
le cas d'un programme qui présenterait une telle fonctionnalité), etc...

Vous m'avez compris Smile J'aimerais savoir s'il y a un pattern destiné à celà
: garder les valeurs accessibles par tout le code... Est-ce que les
variables globales sont utilisables dans ce cas-là ?

J'ai utilisé un singleton "GeneralManager" dans mon projet précédent, avec
une paire de Get/Set pour chaque variable, mais je trouve cela vraiment très
lours à l'utilisation (GeneralManager::Instance()->GetBlah() à chaque
fois...).

Merci de vos lumières :)

--
<=-Michaël"Cortex" Monerau.-=>


Back to top
Gabriel Dos Reis
Guest





PostPosted: Sat Jul 26, 2003 11:36 am    Post subject: Re: Variables globales ? Reply with quote



"David Brabant" <david.brabant (AT) qwanful (DOT) design.no.invalid> writes:

Quote:
C'est à peine mieux
que "the real thing". A vrai dire, selon moi toujour, c'est pire dans
la mesure où cela risque de te donner relativement bonne conscience Wink.

N'est-ce pas ce qu'on demande de jours aux étudiants ? Appliquer les
méthodes (sophistiquées) et avoir la concience tranquille (du devoir
accompli).

Bon, je retourne à mes oignons.

-- Gaby

Back to top
Michael Monerau
Guest





PostPosted: Sat Jul 26, 2003 11:55 am    Post subject: Re: Variables globales ? Reply with quote



Gabriel Dos Reis wrote:
Quote:
"David Brabant" <david.brabant (AT) qwanful (DOT) design.no.invalid> writes:

C'est à peine
mieux que "the real thing". A vrai dire, selon moi toujour,
c'est pire dans la mesure où cela risque de te donner
relativement bonne conscience Wink.

N'est-ce pas ce qu'on demande de jours aux étudiants ? Appliquer les
méthodes (sophistiquées) et avoir la concience tranquille (du devoir
accompli).

;-)

Mais dans mon cas, je ne suis pas encore étudiant ! Je voudrais juste
apprendre à programmer "proprement" :)

Quote:
Bon, je retourne à mes oignons.

Oh, je suis sûr que tu as des très bonne manières pour stocker des
paramètres globaux ! Comment fais-tu dans tes projets ?
--
<=-Michaël"Cortex" Monerau.-=>



Back to top
Jean-Marc Bourguet
Guest





PostPosted: Sat Jul 26, 2003 2:43 pm    Post subject: Re: Variables globales ? Reply with quote

"Michael Monerau" <cort (AT) meloo (DOT) com> writes:

Quote:
Comment faites-vous pour stocker les options générales d'un
programme ? Par exemple, les options données par la ligne de
commande,

ont servit comme paramètres de constructeurs

Quote:
ou le Handle de la fenêtre principale (sous Windows),

J'ai pas de fenêtre principale (je suis pas sous Windows et nous avons
plutôt plusieurs fenêtres qu'un concept MDI) et donc des objets
décrivant les fenêtres.

Quote:
ou l'objet sélectionné en ce moment (dans le cas d'un programme qui
présenterait une telle fonctionnalité),

Le gestionnaire de sélection est un composant de la classe décrivant
la fenêtre.

Quote:
etc...

Vous m'avez compris Smile J'aimerais savoir s'il y a un pattern destiné à celà
: garder les valeurs accessibles par tout le code...

As-tu d'autres exemples de valeurs accessibles par tout le code?
Parce que là je suis pas convaincu de leur utilité.

Quote:
Est-ce que les variables globales sont utilisables dans ce cas-là ?

J'ai utilisé un singleton "GeneralManager" dans mon projet
précédent, avec une paire de Get/Set pour chaque variable, mais je
trouve cela vraiment très lours à l'utilisation
(GeneralManager::Instance()->GetBlah() à chaque fois...).

Je ne cherche pas à abolir les variables globales a tout prix.

A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
Luc Hermitte
Guest





PostPosted: Sat Jul 26, 2003 2:44 pm    Post subject: Re: alternative à fprint("33[xx,yy") Reply with quote

dédé le homard <christoleroy (AT) wanadoo (DOT) fr> wrote in
news:bftsco$v8l$1 (AT) news-reader3 (DOT) wanadoo.fr:


Quote:
voila, dans un petit programme en c++, pour afficher une phrase à tel
endroit, j'utilise fprint("33[xx,yy")

mais n'y a t il pas autre chose que cela, car cette expression
n'accepte pas les variables, il faut mettre une abscisse et une
ordonnée bien définie, et j'ai besoin d'une expression qui permette de
faire pareil, mais avec des variables comme abscisse et ordonnée.

on m'a dit d'aller voir 'ncurses', mais comment ,faire ?

....
Ouvrir ce qui te sert de butineur, aller sur google et taper ncurses.
Tu trouveras la doc avec la lib -- tu peux aussi regarder les sources
projets développés avec ncurses comme mutt p.ex.

--
Luc Hermitte <hermitte at free.fr>
FAQ de <news:fr.comp.lang.c++> :
<http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/>
Dejanews : <http://groups.google.com/advanced_group_search>

Back to top
Fabien LE LEZ
Guest





PostPosted: Sat Jul 26, 2003 7:58 pm    Post subject: Re: Variables globales ? Reply with quote

On Sat, 26 Jul 2003 11:03:39 GMT, "Michael Monerau" <cort (AT) meloo (DOT) com>
wrote:

Quote:
Comment faites-vous pour stocker les options générales d'un programme ? Par
exemple, les options données par la ligne de commande, ou le Handle de la
fenêtre principale (sous Windows), ou l'objet sélectionné en ce moment (dans
le cas d'un programme qui présenterait une telle fonctionnalité), etc...

Pour la programmation graphique sous MS-Windows, j'utilise les OWL,
bibliothèque qui ressemble aux MFC. L'objet "de base" est donc un
objet "fenêtre" (TWindow) -- chaque fenêtre est gérée entièrement par
un objet TWindow.
Du coup, chaque objet TWindow doit contenir toutes les données dont il
a besoin : une copie des variables qu'il n'a pas le droit de modifier,
et un système d'accès aux variables qu'il a le droit de modifier. Je
passe à chacun de ces objets pas mal de trucs dans le constructeurs ou
dans une fonction Reset(). C'est une solution apparemment lourde, mais
robuste et flexible -- et incomparablement plus pratique que les
variables globales quand, après un an de développement, on s'aperçoit
qu'on a besoin de créer deux fenêtres de même type avec des paramètres
différents...

Quant aux arguments de main(), argc et argv, ce sont les arguments de
main() -- c'est donc à main() de les mettre en forme (éventuellement
en appelant d'autres fonctions) avant de créer un objet "application"
et de lui passer le résultat de cette mise en forme.



--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html

Back to top
Fabien LE LEZ
Guest





PostPosted: Sat Jul 26, 2003 8:02 pm    Post subject: Re: alternative à fprint("33[xx,yy") Reply with quote

Quote:
voila, dans un petit programme en c++, pour afficher une phrase à tel
endroit, j'utilise fprint("33[xx,yy")

Pourquoi ce message apparaît-il comme réponse au message "Variables
globales ?" de Michael ? Un problème avec mon serveur de news ou une
erreur de ta part ?


--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html

Back to top
M.B.
Guest





PostPosted: Sat Jul 26, 2003 8:44 pm    Post subject: Re: Variables globales ? Reply with quote

Avec les MFC, l'application est encapsulee dans l'instance d'une classe
qui derive de CApplication.

Cet objet est une variable globale (la seule en principe) de l'appli.

MB

"Fabien LE LEZ" <gramster (AT) gramster (DOT) com> a écrit dans le message news:
[email]qbn5iv0ni4tfau21l84h882q61gv5jntqr (AT) 4ax (DOT) com[/email]...
Quote:
On Sat, 26 Jul 2003 16:13:31 GMT, "Michael Monerau" wrote:

D'accord. Donc, encapsuler dans des classes... Mais il faut bien une
variable globale pour la fenêtre principale (à part si on met l'appli
dans
une classe, mais il faut une variable globale pour l'appli).

Avec les OWL, l'application est encapsulée dans un objet TApplication,
qui est une variable locale à la fonction main() (OwlMain, en fait) :





Back to top
Michael Monerau
Guest





PostPosted: Sat Jul 26, 2003 9:43 pm    Post subject: Re: alternative à fprint("33[xx,yy") Reply with quote

Fabien LE LEZ wrote:
Quote:
voila, dans un petit programme en c++, pour afficher une phrase à tel
endroit, j'utilise fprint("33[xx,yy")

Pourquoi ce message apparaît-il comme réponse au message "Variables
globales ?" de Michael ? Un problème avec mon serveur de news ou une
erreur de ta part ?

Sûrement une erreur de sa part, j'ai le même comportement sur le serveur de
news Chello.
--
<=-Michaël"Cortex" Monerau.-=>



Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Mon Jul 28, 2003 8:26 am    Post subject: Re: Variables globales ? Reply with quote

Gabriel Dos Reis <gdr (AT) integrable-solutions (DOT) net> wrote

Quote:
"Michael Monerau" <cort (AT) meloo (DOT) com> writes:

| > Bon, je retourne à mes oignons.

| Oh, je suis sûr que tu as des très bonne manières pour stocker des
| paramètres globaux ! Comment fais-tu dans tes projets ?

Ils sont globaux, sans fioriture -- lorsque cela doit être vraiment le
cas, et je m'assure manuellement de leurs constructions cohérentes, si
cela est nécessaire. Mais, souvent, je n'en ai pratiquement pas.

Les paramètres de configuration (lu depuis la ligne de commande ou d'un
fichier de configuration) est à mon avis un bon exemple d'un cas où une
variable globale pourrait se justifier. Ou un singleton, SI (et
seulement si) c'est une classe particulière qui les contient, et qu'on
tient à s'assurer qu'il n'y a qu'une seule instance de cette classe.

Dans la pratique, j'utilise deux techniques différentes pour la
configuration, selon la taille et l'utilisation du programme. Dans des
petits programmes, ou ceux conçu pour être appelé de façon interactive
depuis la ligne de commande (ou au moyen de la commande '!' de vi), la
configuration (qui est un bien grand mot pour ce que c'est dans ce
cas-ci) se fait au moyen d'options dans la ligne de commande. Pour
chaque option, je déclare une variable à durée de vie statique où
l'option sert ; l'option s'inscrit au près de la classe qui interprète
la ligne de commande (argc et argv), qui est un singleton surtout à
cause des problèmes liés à l'ordre d'initialisation.

Dans des applications plus grandes, ou celles qu'on démarre par un
script rc, j'utilise surtout un fichier de configuration -- dans
certains cas, ce n'est pas rare d'avoir une centaine d'options, voire
plus. Dans ce cas-ci, en général, il y a une classe qui parse le
fichier, et cette classe peut être un singleton (puisqu'il doit n'y
avoir qu'une seule instance), mais ce n'est pas rare que je me contente
d'une simple Configuration const* global non plus.

Quant à l'utilisation d'un objet « application », j'apprends des choses.
Quelle drôle de conception. (J'ai actuellement un « application
manager », mais c'est un thread à part qui écoute une connection sur un
socket prédéfinit pour traiter des commandes particulières de gestion.)

--
James Kanze GABI Software mailto:kanze (AT) gabi-soft (DOT) fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16

Back to top
Gabriel Dos Reis
Guest





PostPosted: Mon Jul 28, 2003 9:54 am    Post subject: Re: Variables globales ? Reply with quote

[email]kanze (AT) gabi-soft (DOT) fr[/email] writes:

Quote:
Gabriel Dos Reis <gdr (AT) integrable-solutions (DOT) net> wrote in message
news:<m3y8ylmrbc.fsf (AT) uniton (DOT) integrable-solutions.net>...
"Michael Monerau" <cort (AT) meloo (DOT) com> writes:

| > Bon, je retourne à mes oignons.

| Oh, je suis sûr que tu as des très bonne manières pour stocker des
| paramètres globaux ! Comment fais-tu dans tes projets ?

Ils sont globaux, sans fioriture -- lorsque cela doit être vraiment le
cas, et je m'assure manuellement de leurs constructions cohérentes, si
cela est nécessaire. Mais, souvent, je n'en ai pratiquement pas.

Les paramètres de configuration (lu depuis la ligne de commande ou d'un
fichier de configuration) est à mon avis un bon exemple d'un cas où une
variable globale pourrait se justifier. Ou un singleton, SI (et
seulement si) c'est une classe particulière qui les contient, et qu'on
tient à s'assurer qu'il n'y a qu'une seule instance de cette classe.

Dans mes applications, j'ai rarement une seule option spécifiée en
ligne de commande (et dans ce cas, elle est souvent décrite par une
variable locale à ::main, ou utilisé comme argument pour construire un
objet plus élaboré). En général, je dois vérifier la cohérence des
options, et là, naturellement c'est le boulot d'une classe qui prend
argc et argv et construit ce qu'il faut, si tout va bien.

Les rares cas où les options sont globaux sont les machins comme GCC,
où de toute évidence, la notion de conception et construction de
logiciels (et non de programme) est, jusqu´à un temps assez récent,
de l'ordre de l'hérésie.

-- Gaby

Back to top
Fabien LE LEZ
Guest





PostPosted: Wed Jul 30, 2003 3:57 am    Post subject: Re: Variables globales ? Reply with quote

On 28 Jul 2003 01:51:25 -0700, [email]kanze (AT) gabi-soft (DOT) fr[/email] wrote:

Quote:
En ce qui concerne les applications avec des fenêtres, la régle
générale, je pense, c'est d'arrêter l'application quand la dernière
fenêtre se ferme.

Il ne doit pas y a une fenêtre « principale »,
privilégée par rapport aux autres.

En général, si (sous Windows du moins)... mais rien ne l'oblige à être
visible.

Quote:
Sinon, on retombe dans des interfaces
pénibles comme Lotus Notes ou Word.

Quel est le point qui te gêne dans ces interfaces ?


--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Wed Jul 30, 2003 10:46 am    Post subject: Re: Variables globales ? Reply with quote

Fabien LE LEZ <gramster (AT) gramster (DOT) com> wrote

Quote:
On 28 Jul 2003 01:51:25 -0700, [email]kanze (AT) gabi-soft (DOT) fr[/email] wrote:

En ce qui concerne les applications avec des fenêtres, la régle
générale, je pense, c'est d'arrêter l'application quand la dernière
fenêtre se ferme.

Il ne doit pas y a une fenêtre « principale », privilégée par rapport
aux autres.

En général, si (sous Windows du moins)... mais rien ne l'oblige à être
visible.

Alors, à quoi est-ce qu'il sert ?

Quote:
Sinon, on retombe dans des interfaces pénibles comme Lotus Notes ou
Word.

Quel est le point qui te gêne dans ces interfaces ?

Dans Lotus Notes, à peu près tout:-). Mais ce dont je parlais, c'est le
fait que tu as une fenêtre énorme, avec beaucoup de petites
sous-fenêtres dedans, et non simplement beaucoup de fenêtres séparées.

--
James Kanze GABI Software mailto:kanze (AT) gabi-soft (DOT) fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16

Back to top
Jean-Marc Bourguet
Guest





PostPosted: Wed Jul 30, 2003 3:20 pm    Post subject: Re: Variables globales ? Reply with quote

"Christophe Lephay" <christophe-lephay (AT) wanadoo (DOT) fr> writes:

Quote:
kanze (AT) gabi-soft (DOT) fr> a écrit dans le message de
news:d6652001.0307300246.16ae075 (AT) posting (DOT) google.com...
Fabien LE LEZ <gramster (AT) gramster (DOT) com> wrote in message
news:<rfgeivg61lia8umujvciflg7tpq2nbv9hv (AT) 4ax (DOT) com>...
On 28 Jul 2003 01:51:25 -0700, [email]kanze (AT) gabi-soft (DOT) fr[/email] wrote:

En ce qui concerne les applications avec des fenêtres, la régle
générale, je pense, c'est d'arrêter l'application quand la dernière
fenêtre se ferme.

Il ne doit pas y a une fenêtre « principale », privilégée par rapport
aux autres.

En général, si (sous Windows du moins)... mais rien ne l'oblige à être
visible.

Alors, à quoi est-ce qu'il sert ?

C'est Windows qui est foutu comme ça : quand tu lances ton application, elle
doit enregistrer sa classe de fenêtre (avec, notemment, la fonction chargée
de réceptionner puis dispatcher les messages).

Qu'est-ce qui t'empeche d'avoir plusieurs fenetres de la meme classe?

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
Fabien LE LEZ
Guest





PostPosted: Wed Jul 30, 2003 3:23 pm    Post subject: Re: Variables globales ? Reply with quote

On 30 Jul 2003 03:46:19 -0700, [email]kanze (AT) gabi-soft (DOT) fr[/email] wrote:

Quote:
En général, si (sous Windows du moins)... mais rien ne l'oblige à être
visible.

Alors, à quoi est-ce qu'il sert ?

Entre autres, à recevoir les messages généraux envoyés à l'application
(du style, "Windows est en cours de fermeture, faudrait p'têt' penser
à terminer l'application avant que je tue le processus").
Sous Windows, le terme "fenêtre" désigne une entité capable de
recevoir des messages, et qui _peut_ avoir une représentation
graphique.

Quote:
Mais ce dont je parlais, c'est le
fait que tu as une fenêtre énorme, avec beaucoup de petites
sous-fenêtres dedans, et non simplement beaucoup de fenêtres séparées.

Si tu veux avoir une fenêtre par document sous un logiciel style Word
par exemple, il suffit de lancer plusieurs instances.
Si par contre tu parles d'une interface avec une fenêtre pour la barre
d'icônes, une fenêtre par barre d'outils, et une fenêtre par document,
avec le tout qui se mélange avec les fenêtres d'autres applications,
non merci, pas pour moi. Borland C++ Builder a une interface de ce
style, et c'est tellement inutilisable (à moins de n'avoir rien sur le
bureau et aucune autre application lancée) que c'est la principale
raison qui m'a fait remiser la version qu'Inprise m'avait offert[*].

[*] L'autre raison était que ce machin générait du code
automatiquement sans que lui demande quoi que ce soit, ce qui est
aussi agréable que conduire une voiture qui déciderait d'elle-même de
dépasser, sur une route de montagne.


--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Goto page 1, 2, 3, 4  Next
Page 1 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.