Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C++ > Est-ce la meilleure solution ? > Lecture du sujet

Est-ce la meilleure solution ?

Héritage multiple avec patron Observateur/Observable

Vous devez être inscrit pour pouvoir poster des messages

RésoluLe problème de ce sujet a été résolu

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne Shadow-rebirth # Posté le 24/07/2008 à 00:08:08
L'oubli attend...
Avatar
Groupe : Membres
Bonsoir les zéros,

Encore une fois je fais appel à vos connaissance pour une question d'ordre conceptuelle...

Afin de gérer des éléments graphiques (une fenêtre de dialogue, les décors etc etc...) dans une fenêtre je comptais utiliser le patron de conception Observateur/Observable. L'idée étant que lorsque la fenêtre est redimensionnée ou mise en plein écran tout ce qu'elle contient s'adapte de façon automatique. (En utilisant la bibliothèque SFML, si ça peut paraitre important à quelqu'un...)

Seulement certains éléments comme des fenêtres de dialogues héritent déjà d'un objet, or on m'a toujours dit que l'héritage multiple était une notion très complexe et à éviter lorsqu'on ne la maitrise peu.

Je n'ai eu de cas de figure similaire et ne sais pas quoi faire, est-ce le moment d'utiliser l'héritage multiple ou est-ce une fausse solution ?

Merci d'avance pour vos lumières :)
Édité le 24/07/2008 à 00:09:49 par Shadow-rebirth

L'oubli attend toujours...
 
Hors ligne coucou747 # Posté le 24/07/2008 à 01:44:41
Avatar
Groupe : Membres
Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
heritage multiple ou non, c'est un troll, alors je ne vais pas m'attarder la dessus, ni argumenter pour ou contre, je vais simplement dire deux lignes :

si tu codes sans heritage multiple, tu reflechiras peut-etre plus avant de commencer a coder tes classes (pour les organiser : -> uml), mais ensuite, tu sauras reflechir pour d'autres langages "OO" tels que java, php, C#, etc...

bref, pour ton probleme, tu peux reprendre le meme systeme que java :
Code : Java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
interface ResizeListner{ // en Cpp tu dois faire une classe abstraite virtuelle
   public void resize(Event e);
}

class ComposantGraphique extends ... {
   private ResizeListner r = null;
   public void addResizeListner(ResizeListner a){
      this.r = a;
   }
   // fonction qui est appellee quand tu redimentionnes
   public void resize(){
      if (r != null) r->resize(new Event .... );
   }
}


je ne t'ai pas mis de classe Event.

c'est un design que j'aime beaucoup, c'est un peu comme un MVC : t'as l'interface (la vue), et ce qui agit sur l'interface (le controleur), le modele lui, il est plus loin.
Hors ligne Shadow-rebirth # Posté le 24/07/2008 à 02:30:57
L'oubli attend...
Avatar
Groupe : Membres
D'accord, je pensais qu'on ne pouvait utiliser les méthodes de classes abstraites que dans les classes filles. Or ce que tu propose est d'ajouter "manuellement" cette méthode sans passer par l'héritage si j'ai bien compris ? J'avais jamais pensé à ça ^^
Si c'est ça le résultat ne donnerait-il pas exactement la même chose avec un héritage multiple ? (pas que je défende cette pratique, je comprend ton raisonnement de s'imposer de réfléchir avec ce qu'il y a de plus commun mais je me pose vraiment la question ^^') Ou cela impliquerait-t-il d'autres choses plus complexes à gérer ?

En tout cas merci pour ta réponse !

L'oubli attend toujours...
 
Hors ligne coucou747 # Posté le 24/07/2008 à 02:57:48
Avatar
Groupe : Membres
Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
je ne fais pas assez de Cpp pour etre sur de ma reponse...
ca fait plus d'un an que j'en ai pas fait, et j'ai jamais ete vraiment vraiment bon en Cpp (mais rassure toi, j'ai largement le niveau d'un bon zero en Cpp, et j'ai fait pas mal d'autres langages, notement C, java, php)
de plus, je ne connais pas ta lib graphique, je ne sais pas comment elle gere les evenements, par contre, je sais (en gros) comment fonctionne java a ce niveau... et java est un langage qui ne permet pas l'heritage multiple...

en gros, en java, t'as un observable : ton composant, t'as un observateur : le listner, et une interface (classe abstraite pure) qui decrit comment ton listner agit.

Ah, j'allais oublier... beaucoup de gens critiquent l'heritage multiple, mais tous sont pour l'interfacage multiple...

Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
interface A{
...
}
interface B{
...
}
class C{
...
}
class D extends C implements A, B{
...
}


tout le monde tolere ce genre de choses.
Hors ligne Shadow-rebirth # Posté le 24/07/2008 à 03:12:55
L'oubli attend...
Avatar
Groupe : Membres
Je vois, merci pour tes lumières ^^ Et vu qu'il se fait tard... Bonne nuit à toi ;)

L'oubli attend toujours...
 

Retour au forum "Langage C++" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 310 Zéros connectés | Requêtes SQL 9 requêtes | Temps de génération de la page : Total (SQL) 0.0237s (0.0073s)