Page 1 sur 1
A l'aide : Interface comment on fait ???
Publié : mer. 02/févr./2005 10:25
par lionel_om
Bonjour
je voulais voir comment marchée les interfaces (classes en C++).
Mais je n'ai pas d'exemple et je n'arrive pas a voir comment on associe qqchose aux méthodes créées.
Est-ce que qq pourrai me faire une conversion de ce petit code, c'ets juste pour voir comment on les utilisent, je me débrouillerai tt seul après :
Code : Tout sélectionner
class Carre {
int _x;
Carre(int a) { _x = a; }
~Carre() {;}
void reSize(int a) { _x = a; }
int getSize() {return _x; }
}
Merci bien !!!

Publié : mer. 02/févr./2005 10:59
par hardy
Je n'ai que des exemples compliqués sous la main : utilisation de WMI.
C'est plutôt ça qui doit t'intéresser : code de Flype (démo d'implémentation d'interfaces)
Code : Tout sélectionner
;/---------------------------------------------------
;- DECLARATION DES METHODES DE L'OBJET
;/---------------------------------------------------
Interface Poule
Picorer()
Pondre ( Nom.s )
Chanter( Message.s )
EndInterface
Structure Poule_TableVirtuelle
Picorer.l
Pondre.l
Chanter.l
EndStructure
;/---------------------------------------------------
;- DECLARATION DES ATTRIBUTS DE L'OBJET
;/---------------------------------------------------
Structure Poule_Structure
*TableVirtuelle.Poule_TableVirtuelle ; Indispensable
Nom.s
Couleur.s
NombreOeufs.l
EndStructure
;/---------------------------------------------------
;- DECLARATION DES PROCEDURES DE L'OBJET
;/---------------------------------------------------
Declare CreerPoule( Parametres.s )
Declare Picorer ( *Self.Poule_Structure )
Declare Pondre ( *Self.Poule_Structure, Parametre.s )
Declare Chanter ( *Self.Poule_Structure, Message.s )
;/---------------------------------------------------
;- DEFINITION DES METHODES DE L'OBJET
;/---------------------------------------------------
Procedure Picorer( *Self.Poule_Structure )
Debug *Self\Nom + " vient de picorer"
EndProcedure
Procedure Pondre( *Self.Poule_Structure, Parametres.s )
*Self\NombreOeufs + 1
Debug *Self\Nom + " vient de pondre"
ProcedureReturn CreerPoule( Parametres )
EndProcedure
Procedure Chanter( *Self.Poule_Structure, Message.s )
Debug PeekS(*Self\Nom) + " chante " + Message
EndProcedure
;/---------------------------------------------------
;- ATTACHEMENT DES METHODES A L'OBJET
;/---------------------------------------------------
Global Poule_Global.Poule_TableVirtuelle
Poule_Global\Picorer = @Picorer()
Poule_Global\Pondre = @Pondre()
Poule_Global\Chanter = @Chanter()
;/---------------------------------------------------
;- CREATION D UNE LISTE CONTENANT LES OBJETS
;/---------------------------------------------------
NewList Instances.Poule_Structure()
;/---------------------------------------------------
;- DEFINITION DU CONSTRUCTEUR : CREATION D'UN OBJET
;/---------------------------------------------------
Procedure.l CreerPoule( Parametres.s )
Nom.s = StringField( Parametres, 1, ";" )
Couleur.s = StringField( Parametres, 2, ";" )
AddElement(Instances())
Instances()\TableVirtuelle = Poule_Global
Instances()\Nom = Nom
Instances()\Couleur = Couleur
Instances()\NombreOeufs = 0
Debug Nom + " vient de naitre. Ho ! elle est " + Couleur
ProcedureReturn @Instances()
EndProcedure
;/---------------------------------------------------
;- PROGRAMME PRINCIPAL
;/---------------------------------------------------
Poule1.Poule = CreerPoule("Poule De Basse Cours;Marron")
Poule2.Poule = CreerPoule( "Poule De Luxe;Jaune" )
Debug "---"
Poule1\Picorer()
Poule1\Picorer()
Poule1\Picorer()
Poule3.Poule = Poule1\Pondre( "Poulette;Noire" )
Poule4.Poule = Poule1\Pondre( "Poussin;Bleu" )
Debug "---"
Poule2\Picorer()
Poule2\Chanter("Cocoricooo")
Poule2\Picorer()
Poule2\Chanter("Cocorico")
Debug "---"
Poule3\Picorer()
Poule3\Chanter("CuiCui")
Debug "---"
ForEach Instances()
Debug Instances()\Nom + " a donc pondu "+Str(Instances()\NombreOeufs) + " oeufs"
Next
Debug "---"
ForEach Instances()
x.Poule=Instances()
x\Chanter("Au revoir")
Next
Debug "---"
Debug "Fin"
End
Publié : mer. 02/févr./2005 11:23
par Frenchy Pilou
@Hardy
S'il y a des poules qui chantent "coccorico", c'est pas des poules mais des coqs
Ps Exposé très clair

Publié : mer. 02/févr./2005 13:50
par Heis Spiter
Il y a aussi le code que j'ai posté dans Trucs & Astuces.
http://purebasic.hmt-forum.com/viewtopic.php?t=2089
Publié : mer. 02/févr./2005 16:31
par lionel_om
oki ca m'éclaire pas mal.
Mais en fait les procédure sont justes déclarées dans l'interface, mais il faut les coder plus bas dans le programme.
Donc on ne peut pas avoir une méthode 'getSize()' appartenant à certaine interface et une méthode 'getSize()' que l'on utilise pour une autre interface ???

C'est pas cool ca !!!
Et on peut importer nos classes faites en C++ ???
Publié : mer. 02/févr./2005 19:32
par hardy
Si, tu peux avoir des méthodes de même nom pour des interfaces différentes.
Mais tu utilises des noms différents pour les définir.
Par exemple, si tu as déclaré deux interfaces avec une méthode picorer, disons poule1 et poule2, tu fais Poule_Global\Picorer = @Picorer1() dans la construction de la première interface, et Poule_Global\Picorer = @Picorer2() pour la seconde.
En ce qui me concerne, je ne fais pas de prog orientée objet pour le plaisir, mais utilise des interfaces pour accéder à divers outils Microsoft, notamment WMI.
La plupart sont déjà déclarée en PB, donc pas à les construire.
Y'a juste à les initialiser avec les fonctions windows adéquates.
Publié : jeu. 03/févr./2005 8:32
par lionel_om
Daccord et j'imagine qu'il faut rechercher dans l'API pour retrouver tout ce qu'il y a dans PB ??? (on peut la consulter où dailleurs ???)