Cette réponse est dans le cadre du service ping sur forum.
Mes réponses utilisent les conventions de codage suivante : http://blog.ytreza.org/fr/windev-convention-de-codage-dans-mes-projets
Bonjour,
c'est une question intéressante.
Dans le cadre de la POO, un élève (cEleve) ne connait pas les autres élèves, il ne peut donc pas sommer son argent de poche avec celui d'un autre élève.
Nous pourrions par contre avoir une classe qui prend plusieurs élèves en paramètre et qui permette de calculer toute sorte de statistique en fonction de paramètre :
Le code de test :
élèves est un tableau de cEleve dynamique
Ajoute(élèves, cEleve.créer("Nom 1", "Prenom 1", "50", "20181201"))
Ajoute(élèves, cEleve.créer("Nom 2", "Prenom 2", "75", "20181201"))
Ajoute(élèves, cEleve.créer("Nom 1", "Prenom 1", "40", "20181101"))
Ajoute(élèves, cEleve.créer("Nom 2", "Prenom 2", "60", "20181101"))
stat est un cStatistiqueEleve(élèves)
Trace(stat.somme_globale("20181201")) // Doit afficher 125
Trace(stat.moyenne("20181201")) // Doit afficher 62.5
Le code de la classe cElève
cEleve est une Classe
nom est une chaîne
prénom est une chaîne
argent_de_poche est un monétaire
date_argent est une Date
FIN
PROCEDURE Constructeur(nom est une chaîne, prénom est une chaîne, argent_de_poche est un monétaire, date_argent est une Date)
:nom = nom
:prénom = prénom
:argent_de_poche = argent_de_poche
:date_argent = date_argent
PROCEDURE PUBLIQUE GLOBALE créer(Nom est une chaîne, Prénom est une chaîne, argent_de_poche est un monétaire, date_argent est une Date)
élève est un cEleve dynamique = allouer un cEleve(Nom, Prénom, argent_de_poche, date_argent)
RENVOYER élève
Et la classe cStatistiqueEleve :
cStatistiqueEleve est une Classe
PRIVÉ
__élèves est un tableau de cEleve dynamique
FIN
PROCEDURE Constructeur(élèves est un tableau de cEleve dynamique)
Ajoute(:__élèves, élèves)
PROCEDURE somme_globale(date_argent est une Date)
resultat est un réel
POUR TOUT eleve DE :__élèves
SI eleve.date_argent = date_argent ALORS
resultat += eleve.argent_de_poche
FIN
FIN
RENVOYER resultat
PROCEDURE moyenne(date_argent est une Date)
resultat est un réel
nb_element est un entier
POUR TOUT eleve DE :__élèves
SI eleve.date_argent = date_argent ALORS
resultat += eleve.argent_de_poche
nb_element ++
FIN
FIN
RENVOYER resultat / nb_element
Il serait possible de réaliser tout cela sans utiliser la classe cStatistiqueEleve
mais nous sortirions du cadre de la POO.
Pour finir, vous parlez d'une table, de quelle genre de table est-ce ? Si c'est un champ table, il faudrait donner un peu plus de détail pour savoir comment vous souhaitez indiquer le résultat.
Bonne journée à vous !