Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

COMMENT CRÉER UN MODULE DE CLASSE


Information sur la source

Catégorie :Tutoriaux Niveau : Débutant Date de création : 27/01/2005 Date de mise à jour : 03/03/2006 00:21:01 Vu / téléchargé: 38 348 / 5 062

Note :
8,47 / 10 - par 15 personnes
8,47 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (25)
Ajouter un commentaire et/ou une note


Description

Ce document explique ce qu'est un module de classe, à quoi ça sert et comment en faire (avec un exemple).
 

Conclusion

Ce tutorial a été créé à la demande de salazar.
Si vous avez des questions, n'hésitez pas.

PS : Merci de laisser une note, histoire de savoir si ce tutorial est intéressant et si ça vaut la peine d'en écrire d'autres.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

28 janvier 2005 19:57:29 :
Ajout d'informations
31 janvier 2005 21:09:57 :
Ajout d'informations, d'un code source, et correction d'erreurs.
03 mars 2005 23:08:59 :
Ajout d'informations dans la F.A.Q. concernant les valeurs par défaut des propriétés, et les procédures déclanchées lors de la création et de la destruction d'une instance de classe.
03 mars 2006 00:21:02 :
Ajout d'un PDF à la place du fichier rtf.

Commentaires et avis

signaler à un administrateur
Commentaire de mythic_kruger le 28/01/2005 05:32:21

C'est pas mal, mais tu aurais pu insister plus sur l' instruction Set, qui crée une nouvelle instance de classe.
Aussi tu aurais pu employer un exemple utilisant au moins une API pour montrer la puissance de la classe...
Bon sinon c'est correct 8/10!

signaler à un administrateur
Commentaire de psykocrash le 28/01/2005 12:22:57

Pas de problème, je vais mettre à jour le tutorial en ajoutant une deuxième classe qui utilise des API et en expliquant le rôle de l'instruction "Set". Si je n'ai pas utilisé d'API dans l'exemple, c'est pour avoir un code simple, sans code superflu qui pourais porter à confusion pour la compréhension du code.

Sinon, merci pour le 8/10, dommage que tu n'ai pas mis la note dans l'espace réservé à cet effet plus haut :p

Si tu as d'autre suggestions pour améliorer le tutorial, n'hésite pas :o)

signaler à un administrateur
Commentaire de JoePatent le 28/01/2005 14:30:57

Est-il possible de mettre une propriété par défaut dans une classe ?

Le wizard de classe permet de le faire, mais le code généré par la suite ne réflète pas ce changement.

signaler à un administrateur
Commentaire de LeVoleur le 28/01/2005 15:31:43

Super bien expliqué et commenté
merci

signaler à un administrateur
Commentaire de psykocrash le 28/01/2005 19:11:47

JoePatent :
Bien sûr qu'il est possible de donner des valeurs par défaut. J'ajouterais un commentaire là dessus dans la mise à jour (qui sera prête d'ici quelques minutes).

PS : Merci pour le 9/10 sa fait plaisir :p

signaler à un administrateur
Commentaire de ScSami le 28/01/2005 21:20:52

C'est utile, continue comme ça, c'est utile...

Ceci dit, je ne suis pas entièrement d'accord avec toi lorsque tu dis :
"Le fait de réécrire des fonctions que l'on a l'habitude d'utiliser pour chaque nouveau programme est une tâche longue et inutile.
Les objets sont là justement pour remédier à ce problème."

Non, les modules sont là pour ça. En effet, tout l'intéret des objets sont leur emcapsulement et justement, tu n'en parles pas !!!
Je trouves que tu devrais un peu plus détailler ce qu'est un objet en utilisant, par exemple, la si connue comparaison avec les plats à tarte réutilisables.

On attend maintenant le tuto pour les Contrôles ActiveX ;-)

signaler à un administrateur
Commentaire de psykocrash le 28/01/2005 23:40:14

ScSami :
Je ne suis pas de ton avis en ce qui conserne les modules qui sont là pour rassembler diverses fonctions qui n'ont pas de lien apparent ensembles. Par contre, les modules de classes sont là justement pour regrouper des fonctions liées (l'encapsulation).
Supposons que nous ayons un ensemble de fonctions qui traitent une base de données, pourquoi les mettre dans un module alors qu'un module de classe serait plus efficace ? un module de classe permet d'avoir des propriétés, ce que ne permet pas les modules, et de même pour les évènements. Il permet aussi de contrôler l'accès aux données, de créer un "traitement interne" non visible pour l'utilisateur, etc.

Pour ce qui est de l'encapsulation, je ne pense pas que ce soit adapté à ce tutorial étant donné que j'explique comment créer un module de classe, je ne fais pas un cour sur la programmation orientée objet. Cela dis je peux mettre quelques lignes là dessus dans le tutorial si vous voulez.

-> Un tutorial sur les contrôles ActiveX ? Pourquoi pas :o)

signaler à un administrateur
Commentaire de ScSami le 29/01/2005 01:38:24

D'accord. Mais je trouve quand même que l'intérêt de créer ce genre de choses ("les class") n'est pas frappant dans ton tutorial. Quand j'ai commencé, j'ai mis un sacré paquet de temps avant de comprendre d'un, l'intéret véritable de se "prendre la tête" avec ces trucs, et de deux, à quel point ce n'était pas si compliqué qu'il le paraissait.
Je crois que le concept d'encapsulation mérite tout de même une attention plus grande pour que les newbies comprennent bien.
Mais bon, c'est personnel comme remarque.
@++

signaler à un administrateur
Commentaire de mythic_kruger le 29/01/2005 05:23:29

:) Psyckokrash bien sûr que je n' ai pas noté... Je commente mais ne note la note finale! Je jette un oeil à la mise à jour dès que possible!

Si tu veux mon avis... Pour faire quelque chose de vraiment complet,

Il faudrait commencer par comparer le rôle du module  avec celui du module de classe.

Puis faire une entrée en matière avec les types utilisateurs. Ceci dit, c'est également l' opportunité de présenter la programmation orientée objet! Le tutorial s' adresse à un niveau moyen, correct? Un rappel constitue souvent une bonne transition tout en posant les bases du discours à venir.

Enfin, terminer avec un exemple concret de classe, très simple et évident, comme par exemple créer une classe voiture, lui attribuer quelques propriétés comme la marque ou la couleur... avec des valeurs par défaut -très bonne question d' ailleurs- avant de tester le code directement dans un formulaire, qui pourrait être inclus aux fichiers du tutorial :)

Continues, tu as mon support le plus complet!

signaler à un administrateur
Commentaire de arnohoho le 30/01/2005 02:08:47

je vais regarder le tutorial mais je te remercie d'avance pour ce boulot qui servira à d'autres

quand j'aurai lus le tuto je te dirai ce que j'en pense

a+

signaler à un administrateur
Commentaire de dthuler le 30/01/2005 23:40:38

Voilà un travail qui me semble très intéressant...
moi qui me demande à quoi pouvait bien servir ces sacro-saintes classes... je vais lire ça avec attention, merci...

signaler à un administrateur
Commentaire de JoePatent le 31/01/2005 15:27:41

Petite erreur a la compil avec l'évènement.  Les parametres ne correspondent pas avec la description dans la classe.

j'ai corrigé de cette facon Private Sub MonObjetCString_NouvelleChaine(ByVal Contenu As String, ByVal longue As Long)

pour la form et j'ai ajouté BYVAL a la declaration dans la classe.

Je ne trouve pas encore la valeur par defaut a une propriété.

Merci.

signaler à un administrateur
Commentaire de psykocrash le 31/01/2005 21:12:41

Nouvelle mise à jour, avec au menu une méthode beaucoup plus simple pour déclarer une propriété par défaut, une comparaison entre modules et modules de classe, et enfin le projet sous Visual Basic 6 de l'exemple pratique n°2.

Merci à vous tous pour vos commentaires, cela me permet d'améliorer mon tutorial :o)

Cordialement,
Psykocrash

signaler à un administrateur
Commentaire de salazar le 01/02/2005 16:17:48

Salut Psykocrash,

Merci pour le code et le tutorial que tu as créé. Le tutorial est vraiment très intéressant et explique bien le role de la classe (meme si je ne comprends pas tout).
Cependant, il est dommage que dans ton code, tu n'aies pas repris mon projet d'échange de données entre DLL et appli, car, hors contexte je ne sais pas du tout comment utiliser ta classe.
http://www.vbfrance.com/code.aspx?id=29095

J'ai tout de meme trouvé une solution, qui est loin d'etre celle que tu as tenté de m'expliquer, c'est dommage...

Je te mets 10/10 pour ta rapidité à m'avoir répondu et pour ton tutorial très instructif. Continue comme ça!!!

signaler à un administrateur
Commentaire de soldier8514 le 03/02/2005 04:32:15

dommage kon puisse pas voter + d1 fois ... ;)

signaler à un administrateur
Commentaire de Cacophrene le 12/02/2005 20:53:16

Comme définition en première approche, on peut dire qu'une PROPRIETE est ce qui permet à la fois de définir (Property Let) et de renvoyer (Property Get), tandis qu'une METHODE ne peut que renvoyer. Comme exemple, on peut citer, pour un objet CheckBox, la propriété value qui autorise Check.Value = checked ou Check1.Value (définir ou renvoyer --> propriété), et la méthode Refresh, qui n'a de syntaxe que Check.Refresh. Voilà tout... Mais excellent quand même. 10/10 !

Cacophrène

signaler à un administrateur
Commentaire de JoePatent le 12/02/2005 23:11:38

Cacophrène ?!

Je ne comprend pas ton explication.

Une méthode peut agir comme bon te semble.  Tu peut y mettre le code que tu désire.

Une classe  télephone peut contenir 3 propriété : Code regional, suffixe, prefixe.

Une methode "EnString" qui retourne le numero de telephone formatté a ta convenance.

Les propriétés peuvent être en lecture, ecriture ou lecture/ecriture.

Le tout est une question d'ergonomie et de structure.

signaler à un administrateur
Commentaire de Cacophrene le 13/02/2005 12:48:04

Je proposais une distinction sommaire, à demi fausse mais relativement simple à saisir pour un début (et facile à nuancer par la suite), à savoir : quand tu rédiges une méthode, elle renvoie quelque chose (comme ta méthode EnString par exemple, qui renvoie un numéro formaté), mais quand tu rédiges une propriété, celle-ci peut à la fois renvoyer et définir quelque chose (exemple déjà pris de Check.Value). Bien sûr, cette distinction est fausse. Mais elle garde l'essentiel pour un début. Comme on dit en musique, le rythme d'abord, l'art ensuite. Mais bon, si mon point de vue est aberrant, je te prie de m'en excuser par avance, car je croyais bien faire.

Cacophrène

signaler à un administrateur
Commentaire de cqui789 le 13/02/2005 13:17:27

3/10 paske ecrit trop petit... NON je plaisante  10/10 parce que c'est clair et facile a comprendre.

Pour ce qui est de la valeur par defaut, tu nous indique la propriete par defaut mais pas comment faire pour que quand on cree un nouvel objet, les proprietes prenent une valeur precise.

en decorticant une source, j'ai cru comprendre que les sub suivantes sont appelees quand on cree un nouvel objet, peux-tu en parler dans le tutorail si j'ai raison?

Set MonObjetCString = New CString
appelle?
Private Sub Class_Initialize()

et
Set MonObjetCString = Nothing
appelle?
Private Sub Class_Terminate()

signaler à un administrateur
Commentaire de Gery4u le 25/02/2005 19:30:01

Je l'ai pas encore vu mais juste pour vous dire comment j'apprecie le site il est magique il fallait pareil truc a la famille salut a tous les codeurs les gars notre metier est simplement genial

signaler à un administrateur
Commentaire de psykocrash le 03/03/2005 23:03:56

Bonjour tout le monde :)
Désolé pour tout ce retard, mais j'étais un peut pris...
Bref, voici (encore) une mise à jour :p avec une F.A.Q. un peut enrichie par les commentaires que j'ai pu lire ici. Si vous avez d'autres questions, n'hésitez pas :)

signaler à un administrateur
Commentaire de soldier8514 le 17/03/2005 03:01:56

Enfin Kk1 ki retourne qqchose dans ces fonctions _

signaler à un administrateur
Commentaire de psykocrash le 11/03/2006 12:04:51

Ca fait un moment que je n'ai rien ajouté à ce tutorial.. Est-ce que vous avez des questions ? des points à éclaircir ? des idées à approfondir ?
Participez à l'élaboration du tutorial ;)

signaler à un administrateur
Commentaire de Zakata le 20/09/2006 20:21:36

Salut a tous,

Tout dabord merci pour ce tuto il m'a bien aidé à débuter dans la programmation objet.

Je crois comprendre pourquoi nous avons du mal à définir une propriété par défaut avec la première méthode que tu décri:

Il y a une faute de frappe. Ce n'est pas dans le menu Option que l'on trouve "Attributs de procédure" mais dans le menu outil.

Voila mais je pense que tout le monde s'en étaient aperçut.

Salut et encore merci.
Damien

signaler à un administrateur
Commentaire de PH130366 le 20/02/2007 21:48:21

Vraiment du beau travail. Merci pour nous.
Le concept de classe est vraiment un casse tête au départ. On est tous tentés de se demander ce que ça peut apporter de plus qu'un module de code.
Je plancher sur ton travail et je suis sûr de m'endormir moins ignare.

Chapeau bas!

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Appels d'offres

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.