je un ensemble de Individual
s au premier:Un groupe d'étudiants a juste un nom au début. Dès leur premier examen, ils auront à la fois le nom et le score. Comment concevoir ceci est un moyen simple?
class Individual {
double characteristics[];
abstract double CalculateValue();
...
}
Chaque individu a un ensemble de caractéristiques. Ces caractéristiques seront mises en œuvre par l'utilisateur de ma bibliothèque par héritage:
class MyIndividualABC : Individual {
public MyIndividualABC() {
characteristics = new double[2];
characteristics[0] = 123;
characteristics[1] = 456;
}
public override double CalculateValue() {
return characteristics[0]/characteristics[1]; //for example
}
}
Je vais donc les prendre et donner à chacun d'eux un score (en fonction de leur valeur). Je vais appeler cela faire une itération.
class EvaluatedIndividual {
double value;
double score; //score was calculated based on value
}
De iteration2 et au-delà, je serai toujours à avoir des objets à la main de type EvaluatedIndividual
. Mais la première fois, je vais devoir mener avec des objets de type Individual
.
Je n'aimerais pas avoir à traiter la première itération différemment des autres. Comment dois-je aborder cela?
Une analogie serait d'avoir une classe d'étudiants. Avant le premier examen, vous connaissez simplement leurs noms, et à partir du 1er examen, vous aurez à la fois leurs noms et la moyenne des résultats de leurs examens jusqu'à ce moment.
J'ai mis au point 3 différentes façons de gérer cela:
J'ai une méthode
Start()
sur mon programme, puis unIteration()
. LeStart()
prendIndividual[]
tandis que leIteration()
prendEvaluatedIndividual[]
. Hacky, mais fera des merveilles. Utilisera ceci si rien ne se passe mieux.EvaluatedIndividual
hérite deIndividual
. Cela semble propre, mais je ne suis pas trop sûr à ce sujet parce que je voudraisIndividual
être une interface et mon idée serait de permettre au client de ma bibliothèque/framework d'en hériter et de définir un ensemble de méthodes/champs surIndividual
comme il le souhaite (Individual
pourrait avoir plusieurs valeurs qui seraient prises en considération pour le calculvalue
, par exemple). Si je suis cette approche, je devrais lui faire implémenter un cours deEvaluatedIndividual
. L'individu est formé par la valeur et à la foisevaluation
etwasEvaluated
. Au début wasEvaluated était faux, donc toute tentative de rassemblervalue
lève une exception. Je ne suis pas particulièrement comme ça, mais je ne sais pas pourquoi.
Comment avez-vous abordé cela? Ceci est probablement un modèle assez commun, mais je crains que je ne connais aucun motif GoF qui correspond à ce scénario :(
Merci
Vous voulez dire qu'une instance de 'Individual' devient un' EvaluatedIndividual' après un examen? Le monde change vraiment vite ... –