Pages: [1]   Go Down
Author Topic: Classe méthodes publiques méthodes privées.  (Read 498 times)
0 Members and 1 Guest are viewing this topic.
France S-O ou exil en IDF
Offline Offline
Edison Member
*
Karma: 25
Posts: 1905
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,
Je pensais avoir compris l'utilité d'utiliser des méthodes publiques et privées mais je vois certaines choses qui me font douter.

Edit: en rédigeant le message "l'illumination" m'est tombée dessus mais je ne peux pas le supprimer.
J'avais trouvé dans une classe deux méthodes une publique init() et une privée init_priv().
La méthode init() ne faisant qu'appeler la méthode init_priv() sans rien faire d'autre d'où mon incompréhension.

Mais en fait c'est évident la méthode init_priv manipule des variables privées qui ne doivent pas être accessibles à des méthodes publique.

Désolé pour le bruit.
« Last Edit: March 28, 2013, 05:13:44 am by 68tjs » Logged

France
Offline Offline
Newbie
*
Karma: 0
Posts: 21
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Étrange...
Dans une meme classe des variables publiques ou privées peuvent etre appelées par une methode publique...
Le rôle de public ou privée n'est que de donner ou non de la visibilité a qq d'extérieur a la classe.

Par contre je ne sais pas ou tu as trouve cette fameuse classe mais tout ce qu'on trouve sur internet n'est pas toujours un bon modèle.
Logged

France S-O ou exil en IDF
Offline Offline
Edison Member
*
Karma: 25
Posts: 1905
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
je ne sais pas ou tu as trouve cette fameuse classe
Pas bien loin : LiquidCrystal
Code:
void LiquidCrystal_I2C::init()
{
init_priv() ;
}
Quote
Dans une même classe des variables publiques ou privées peuvent être appelées par une méthode publique
Donc si je te suis j'avais des raisons de ne pas comprendre.
Mais n'y a -t-il pas des conséquences cachées parce que 40 ans de développement en électronique m'ont appris que ce n'est pas parce que on a la possibilité de faire quelque chose qu'au final se soit forcément une bonne idée.
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Je ne sait pas d'où tu sort ta version de LiquidCrystal_I2C (c'est pas la version officielle mais une version moddé pour de l'I2C) mais moi je n'ai pas cette fonction init_priv().

Sinon c'est simple : init() qui appelle init_priv() ça ne sert à rien, ni plus ni moins.
C'est une "erreur" de code (on va appeler ça comme ça).
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France S-O ou exil en IDF
Offline Offline
Edison Member
*
Karma: 25
Posts: 1905
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Je ne sait pas d'où tu sort ta version de LiquidCrystal_I2C, c'est pas la version officielle mais une version moddé pour de l'I2C
Beuh.. quelque part sur Internet....ah si : le site de Probot http://www.pobot.org/LCD-sur-I2C-simplement.html
Quote
c'est pas la version officielle mais une version moddé pour de l'I2C
Ben.. je voulais travailler en I2C : 8 ou 11 fils pour un afficheur non merci, je préfère 2 fils.

J'ai trouvé sur Github  : https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
une autre version dont le code source semble moins emberlificoté et avec un début de documentation.

Humeur :
Je me fiche de savoir qui a écrit la première version de LiquidCrystal_I2C mais c'est quand même gonflant ces auteurs qui utilisent un nom de classe déjà utilisé par d'autres sans ajouter ni leur nom, ni un numéro de version, ni une date de publication.

Merci aux plus qualifiés d'avoir confirmé que mes doutes premiers étaient censés et de m'avoir obligé a aller un peu plus loin dans mes recherches, bon le site de Probot -> poubelle.
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Beuh.. quelque part sur Internet....ah si : le site de Probot http://www.pobot.org/LCD-sur-I2C-simplement.html
Moi j'utilise une version plus récente trouvé sur github (pour avoir la gestion auto des mise à jour, avoir à chercher les màj des zip c'est chiant).

J'ai trouvé sur Github  : https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
une autre version dont le code source semble moins emberlificoté et avec un début de documentation.
Ha ben voila, c'est celle que j'utilise smiley-mr-green
Et dedans ya pas de priv_init(), c'est propre comme code.

Je me fiche de savoir qui a écrit la première version de LiquidCrystal_I2C mais c'est quand même gonflant ces auteurs qui utilisent un nom de classe déjà utilisé par d'autres sans ajouter ni leur nom, ni un numéro de version, ni une date de publication.
Par convention on met le nom et le lien du site de l'auteur d'origine, mais on garde le nom d'origine par soucis de rétro-compatibilité.
Après pour les numéros de version ce n'est pas nécessaire si on utilise un gestion de code (git, svn, ...) qui génère de base un numéro de révision.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France S-O ou exil en IDF
Offline Offline
Edison Member
*
Karma: 25
Posts: 1905
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Par convention on met le nom et le lien du site de l'auteur d'origine
Ca serait bien que ce soit respecté !
Quote
mais on garde le nom d'origine par soucis de rétro-compatibilité
Hum...
J'ai le souvenir qu'ici même il y a quelques semaines un utilisateur de ce forum a dis avoir testé plusieurs versions de la librairie jusqu'à en trouver une qui corresponde au câblage de la carte qu'il a acheté.
Donc garder le même nom pour la compatibilité oui, mais à condition que vu de l'extérieur cela fasse la même chose. L'exemple que je cite montre que ce n'est pas toujours le cas. La publication de l'affectation des broches P7 à P0 du PCF8574 me parait être une exigence.
Quote
Ha ben voila, c'est celle que j'utilise
Et dedans ya pas de priv_init(), c'est propre comme code.
Pour information l'auteur de cette classe (Frank de Brabander) est honnête et signale que sa version est dérivée des travaux DFRobot.
Par curiosité j'ai cherché la version d'origine de DFRobot et.....on y trouve un init() et un init_priv().
Donc en plus d'être honnête notre auteur corrige les erreurs de programmation.
Logged

Pages: [1]   Go Up
Jump to: