Classe méthodes publiques méthodes privées.

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.

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

je ne sais pas ou tu as trouve cette fameuse classe

Pas bien loin : LiquidCrystal

void LiquidCrystal_I2C::init()
{
	init_priv()	;
}

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.

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

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 LCD sur I2C simplement - PoBot

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 : GitHub - fdebrabander/Arduino-LiquidCrystal-I2C-library: Library for the LiquidCrystal LCD display connected to an Arduino board.
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.

68tjs:
Beuh.. quelque part sur Internet....ah si : le site de Probot LCD sur I2C simplement - PoBot

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

68tjs:
J'ai trouvé sur Github : GitHub - fdebrabander/Arduino-LiquidCrystal-I2C-library: Library for the LiquidCrystal LCD display connected to an Arduino board.
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 :grin:
Et dedans ya pas de priv_init(), c'est propre comme code.

68tjs:
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.

Par convention on met le nom et le lien du site de l'auteur d'origine

Ca serait bien que ce soit respecté !

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.

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.