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!
Zakata
Messages postés59Date d'inscriptionlundi 21 août 2006StatutMembreDernière intervention17 juillet 2009 20 sept. 2006 à 20:21
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
psykocrash
Messages postés240Date d'inscriptionvendredi 14 juin 2002StatutMembreDernière intervention17 mars 2009 11 mars 2006 à 12:04
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 ;)
soldier8514
Messages postés295Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention24 janvier 20141 17 mars 2005 à 03:01
Enfin Kk1 ki retourne qqchose dans ces fonctions _
psykocrash
Messages postés240Date d'inscriptionvendredi 14 juin 2002StatutMembreDernière intervention17 mars 2009 3 mars 2005 à 23:03
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 :)
Gery4u
Messages postés1Date d'inscriptionmardi 22 février 2005StatutMembreDernière intervention25 février 2005 25 févr. 2005 à 19:30
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
cqui789
Messages postés261Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention18 mai 20093 13 févr. 2005 à 13:17
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()
Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 4 mars 20081 13 févr. 2005 à 12:48
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
JoePatent
Messages postés171Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention20 juillet 2008 12 févr. 2005 à 23:11
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.
Cacophrene
Messages postés251Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 4 mars 20081 12 févr. 2005 à 20:53
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
soldier8514
Messages postés295Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention24 janvier 20141 3 févr. 2005 à 04:32
dommage kon puisse pas voter + d1 fois ... ;)
cs_salazar
Messages postés241Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention19 février 20061 1 févr. 2005 à 16:17
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!!!
psykocrash
Messages postés240Date d'inscriptionvendredi 14 juin 2002StatutMembreDernière intervention17 mars 2009 31 janv. 2005 à 21:12
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
JoePatent
Messages postés171Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention20 juillet 2008 31 janv. 2005 à 15:27
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.
dthuler
Messages postés121Date d'inscriptiondimanche 9 mars 2003StatutMembreDernière intervention29 avril 2009 30 janv. 2005 à 23:40
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...
arnohoho
Messages postés77Date d'inscriptionmercredi 17 septembre 2003StatutMembreDernière intervention24 août 2005 30 janv. 2005 à 02:08
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+
mythic_kruger
Messages postés241Date d'inscriptionjeudi 8 janvier 2004StatutMembreDernière intervention10 novembre 2005 29 janv. 2005 à 05:23
:) 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!
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 29 janv. 2005 à 01:38
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.
@++
psykocrash
Messages postés240Date d'inscriptionvendredi 14 juin 2002StatutMembreDernière intervention17 mars 2009 28 janv. 2005 à 23:40
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)
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 28 janv. 2005 à 21:20
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 ;-)
psykocrash
Messages postés240Date d'inscriptionvendredi 14 juin 2002StatutMembreDernière intervention17 mars 2009 28 janv. 2005 à 19:11
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
cs_LeVoleur
Messages postés15Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention11 juillet 2005 28 janv. 2005 à 15:31
Super bien expliqué et commenté
merci
JoePatent
Messages postés171Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention20 juillet 2008 28 janv. 2005 à 14:30
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.
psykocrash
Messages postés240Date d'inscriptionvendredi 14 juin 2002StatutMembreDernière intervention17 mars 2009 28 janv. 2005 à 12:22
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)
mythic_kruger
Messages postés241Date d'inscriptionjeudi 8 janvier 2004StatutMembreDernière intervention10 novembre 2005 28 janv. 2005 à 05:32
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!
20 févr. 2007 à 21:48
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!
20 sept. 2006 à 20:21
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
11 mars 2006 à 12:04
Participez à l'élaboration du tutorial ;)
17 mars 2005 à 03:01
3 mars 2005 à 23:03
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 :)
25 févr. 2005 à 19:30
13 févr. 2005 à 13:17
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()
13 févr. 2005 à 12:48
Cacophrène
12 févr. 2005 à 23:11
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.
12 févr. 2005 à 20:53
Cacophrène
3 févr. 2005 à 04:32
1 févr. 2005 à 16:17
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!!!
31 janv. 2005 à 21:12
Merci à vous tous pour vos commentaires, cela me permet d'améliorer mon tutorial :o)
Cordialement,
Psykocrash
31 janv. 2005 à 15:27
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.
30 janv. 2005 à 23:40
moi qui me demande à quoi pouvait bien servir ces sacro-saintes classes... je vais lire ça avec attention, merci...
30 janv. 2005 à 02:08
quand j'aurai lus le tuto je te dirai ce que j'en pense
a+
29 janv. 2005 à 05:23
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!
29 janv. 2005 à 01:38
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.
@++
28 janv. 2005 à 23:40
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)
28 janv. 2005 à 21:20
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 ;-)
28 janv. 2005 à 19:11
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
28 janv. 2005 à 15:31
merci
28 janv. 2005 à 14:30
Le wizard de classe permet de le faire, mais le code généré par la suite ne réflète pas ce changement.
28 janv. 2005 à 12:22
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)
28 janv. 2005 à 05:32
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!