Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Votre avis est le bienvenue

5 réponses
Avatar
Zoupla
Bonjour, je tente une idée avec le pseudo code qui suit. Qu'en pense-vous ?

--> objet.h

class Objet
{
static Objet *Objets[MAXOBJETS];
static int ObjetNum;

Objet *CreerObjet();

/*
Pas mal de méthodes ici dont void Execute();
*/
}

--> objet.cpp

Objet *Objet::Objets[MAXOBJETS];
int Objet::ObjetNum = 0;

Objet *Objet::CreerObjet()
{
Objets[ObjetNum] = new Objet();
Objets[ObjetNum]->Execute();
return Objets[++ObjetNum];
}


Voila, j'utilise donc une méthode statique et deux membres statiques pour
gérer la création de l'ensemble des instances de cette classe... Ainsi le
code correspondant ne se retrouve pas ailleur dans le reste du code.

Ca fonctionne très bien et me permettra d'ajouter (toujours par
l'intermédiaire de méthodes statiques) de nouvelles fonctionnalités ayant
pour but la "gestion" des instances créés...

Pourriez-vous me dire :
1) Si cette manière de faire porte un nom particulier (et ne me répondez
pas : oui "portnaouak!")
2) Si c'est viable...

Merci

5 réponses

Avatar
Jean-Marc Bourguet
Zoupla writes:

Pourriez-vous me dire :
1) Si cette manière de faire porte un nom particulier (et ne me répondez
pas : oui "portnaouak!")


C'est une variante de "Factory" (on utilise souvent une classe
auxilliaire singleton mais des statiques suffisent dans les cas
simples).

2) Si c'est viable...


C'est meme courant.

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

Avatar
Fabien LE LEZ
On 21 Jul 2003 12:31:33 GMT, Zoupla wrote:

static Objet *Objets[MAXOBJETS];


Ça ne répond pas à la question, mais a priori, limiter
artificiellement la taille d'un tableau est une mauvaise idée.


--
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

Avatar
Zoupla
Christophe Lephay - :

Pourrais-tu d‚tailler un peu cet argument, stp ? En effet je ne
comprends pas trŠs bien "le code correspondant ne se retrouve pas
ailleurs". Quelle diff‚rence avec un constructeur, dans lequel le code
utilis‚ pour construire et initialiser les objets ne se retrouvent pas
plus "ailleurs" ?


Non, le code du constructeur s'execute après new et concerne l'objet lui
même alors que dans mon cas ma méthode CreateObject execute du code avant
new et qui concerne un ensemble d'instances... Ce code ne se trouve pas
"ailleurs" c'est à dire qu'ainsi il n'est pas implémenté dans le code
appelant...

Avatar
Christophe Lephay
"Zoupla" a écrit dans le message de
news:
Christophe Lephay - :

Pourrais-tu d,tailler un peu cet argument, stp ? En effet je ne
comprends pas trSs bien "le code correspondant ne se retrouve pas
ailleurs". Quelle diff,rence avec un constructeur, dans lequel le code
utilis, pour construire et initialiser les objets ne se retrouvent pas
plus "ailleurs" ?


Non, le code du constructeur s'execute après new et concerne l'objet lui
même alors que dans mon cas ma méthode CreateObject execute du code avant
new et qui concerne un ensemble d'instances... Ce code ne se trouve pas
"ailleurs" c'est à dire qu'ainsi il n'est pas implémenté dans le code
appelant...


D'accord, c'est plus clair :)

Comme l'a dit Jean-Marc, donc, c'est exactement l'idée d'une fabrique
(factory) sans laquelle le code client est obligé de connaitre le type de
l'objet à instancier (de connaitre [type] pour pouvoir faire new [type])...

Par contre, si le mode de fabrication est susceptible de varier en fonction
des besoins de l'application, ou au fur et à mesure que tes hiérarchies
s'élargissent, je te recommanderais de ne pas mettre dans la classe même le
processus de fabrication...

Chris


Avatar
Zoupla
Christophe Lephay - :

Par contre, si le mode de fabrication est susceptible de varier en
fonction des besoins de l'application, ou au fur et … mesure que tes
hi‚rarchies s'‚largissent, je te recommanderais de ne pas mettre dans
la classe mˆme le processus de fabrication...


Ca signifierait implémenter d'une part la classe (par ex) Connexion et de
l'autre ConnexionManager ? Cette dernière étant dans ce cas la factory dont
tu parles ??