CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Les design patterns dans C?

[Biff_Tannen]
[Biff_Tannen]
Niveau 10
18 décembre 2010 à 20:09:49

bonjour,
est-il possible d'utiliser les design pattern en langage C, sans recours à la POO?

godrik
godrik
Niveau 30
19 décembre 2010 à 01:18:34

oui

isukthar
isukthar
Niveau 10
19 décembre 2010 à 12:36:32

En C tu peux tout faire, donc tu peux très bien utiliser les design pattern. Après, c'est plus ou moins facile ou long à mettre en place.

godrik
godrik
Niveau 30
19 décembre 2010 à 19:59:20

et il y a des designs pattern qui n'ont pas vraiment de sens en C egalement.

[Biff_Tannen]
[Biff_Tannen]
Niveau 10
20 décembre 2010 à 13:44:14

j'ai fait des recherches mais tout ce que j'obtiens c'est des trucs sur C++ (POO) pas sur C

je sais pas comment faire, des conseils svp? merci

godrik
godrik
Niveau 30
20 décembre 2010 à 21:32:06

Si tu nous disait ce que tu cehrches a faire plutot ?

[Biff_Tannen]
[Biff_Tannen]
Niveau 10
21 décembre 2010 à 12:54:44

et bien je veux utiliser les DP dans un mini projet C,
déjà j'ai voulu adopter l'architecture MVC mais c'est vite devenu le bordel à cause des fonctions éparpillées juste pour faire un petit truc du projet
c'est pour ça que je me suis dit que les design patterns ne marchent qu'avec la POO..

c'est chiant de faire du C quand on est habitué à la POO :-(

godrik
godrik
Niveau 30
21 décembre 2010 à 17:45:09

personnellement, je ne vois pas pourquoi C ne serait pas un langage oriente objet alors que C++ en est un. On passe facilement de l'ecriture des classes a une ecriture de struct avec pointeur de fonction. C'est un peu plus moche mais ca se fait tres bien si on en a besoin.

Si tu n'as qu'un seul M, un seul V et un seul C, tu peux juste partitionner tes fonctions dans des fichiers differents qui utilisent des donnees propres et tu as regle ton problemes.

Si tu as plusieurs type de l'un des composants, il faut alors faire de l'heritage proprement en C, c'est a dire faire des struct et des pointeurs de fonction qui prennent ces struct en argument.

je te donne un exemple en C++ et son equivalent en C pour que tu vois de quoi je parle:

struct Base
{
int foo;
virtual void bar()=0;
};

struct Fils1 : public Base
{
int fofo;
virtual void bar(){foo=12;}
};

struct Fils2 : public Base
{
double fofo;
virtual void bar(){foo=13;}
};

En C:

struct Base
{
int foo;
void (*bar)();
};

struct Fils1
{
struct Base b;
int fofo;
};

struct Fils2
{
struct Base b;
double fofo;
};

void bar_de_fils1(void* p)
{
struct Fils1* = p;
p->b.foo=12;
}

struct Fils1 build_fils1()
{
struct Fils1 f;
f.b.foo=bar_de_fils1;
}

void bar_de_fils2(void* p)
{
struct Fils2* = p;
p->b.foo=13;
}

struct Fils2 build_fils2()
{
struct Fils2 f;
f.b.foo=bar_de_fils2;
}

[Biff_Tannen]
[Biff_Tannen]
Niveau 10
22 décembre 2010 à 14:47:04

merci

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment