Bonjour,

J’étudie la Programmation Orientée Objet (POO) en FORTRAN avec le livre de Stephen J. Chapman, Fortran for Scientists and Engineers, 4ième édition de 2018 (je n’ai pas trouvé d’ouvrages pédagogiques en français).

J’ai lu pas à pas son chapitre 16, de la page 763 à 836, que j’ai trouvé sur le net à l’adresse suivante https://mega.nz/file/d0VAWDaK#lf3iIs...OM0rkAF--Wnf4U. Il est très intéressant (et mériterait d'être traduit en français pour les élèves) mais quand je suis arrivé à la section 16.9.3 (page 804) sur la relation entre les objets des super-classes et les objets des sous-classes, j’ai constaté que son programme ne donnait pas les mêmes résultats que ceux obtenus sur mon PC (compilateur Intel) et sur mon Raspberry 500 (compilateur gnu). Mes deux machines donnent le même résultat.

Je vous joins le listing du programme (https://mega.nz/file/gwUFQazA#Vr7GkB...TUlfbgMtzhNjyg) et je pose deux questions sur les deux problèmes que j’ai rencontrés :

a) Les sous-classes n’héritent pas des méthodes de la super-classes :

L’initialisation des données avec les méthodes d’initialisation de la super-classe (employee_class), qui ne figurent pas (données & méthodes) dans les sous-classes (salaried_employee_class et hourly_employee_class), ne permet pas l’affichage de ces données avec les méthodes d’affichage qui sont dans la super-classe, méthodes dont devrait pourtant « hériter » les sous-classes, comme si l’initialisation avait échoué. Est-ce normal et pourquoi ?

b) La méthode polymorphe de calcule de la paie ne fonctionne pas :

Stephen Chapman défini ensuite dans cet exemple pédagogique (page 804, figure 16-18) deux super-classes nommées emp1 et emp2. Il fait pointer chacune de ces super-classes sur une des sous-classes précédentes, et là, l’affichage des données avec les méthodes définies dans ces super-classes s’effectue correctement !
En revanche le calcul de la paie, avec les méthodes définies dans les sous-classes (les employés salariés et les employés horaires ne sont pas payés pareils), ne s’effectue pas. L’affichage effectué à partir des pointeurs (les super-classes emp1 et emp2) donne un résultat faux (0€), et même s’il est effectué directement à partir des sous-classes, cela ne marche pas quand même (toujours 0€).
Sauriez-vous pourquoi ?

Merci de votre aide