begin process at 2012 02 16 20:22:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

 > COMMENT CRÉER UN MODULE DE CLASSE

COMMENT CRÉER UN MODULE DE CLASSE


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :44 603 / 5 697

Auteur : psykocrash

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
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

Les Membres Club peuvent 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.

 Sources du même auteur

Source .NET (Dotnet) ASYNC TCP SOCKET
Source avec Zip Source .NET (Dotnet) FREEACCESS.NET - VISIONNEUSE DE BASES DE DONNÉES ACCESS
Source avec Zip FREEACCESS : CLONE DU LOGICIEL ACCESS
INVITE DE COMMANDE : TEXTBOX LOCKER
INTÉRACTION AVEC LES FICHIERS (LECTURE ASCII & BINAIRE) (N°1...

 Sources de la même categorie

Source avec Zip DLL PERSONNALISÉ AVEC ÉVÈNEMENTS ET PROPRIÉTÉS EN VB6. par Number7
Source avec Zip Source .NET (Dotnet) EXEMPLE DU TUTORAIL "CLASSES MÉTIER" par Adn56
Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION DES LISTES : RANGEMENT (LIST.SORT) ET FILTRAGE (LIST... par kbalist
Source avec Zip EXEMPLE SUR LES MENUS POUR AIDER LES DÉBUTANTS COMME MOI ;-) par viragoloco
LES OPÉRATIONS DE LA LISTE CHAINÉE par smaili

Commentaires et avis

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!

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)

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.

Commentaire de LeVoleur le 28/01/2005 15:31:43

Super bien expliqué et commenté
merci

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

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

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)

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.
@++

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!

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+

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

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.

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

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

Commentaire de soldier8514 le 03/02/2005 04:32:15

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

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

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.

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

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

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

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

Commentaire de soldier8514 le 17/03/2005 03:01:56

Enfin Kk1 ki retourne qqchose dans ces fonctions _

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

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

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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales