Étant donné un ensemble de classes de tuple dans un langage OOP : Pair, Triple et Quad, est-ce que Triple devrait sous-classer Pair, et Quad sous-classer Triple ?
La question, à mon sens, est de savoir si un triple doit pouvoir être remplacé par une paire, et de même un quad pour un triple ou une paire. La question de savoir si un triple est également une paire et un quadruple est également un triple et une paire.
Dans un certain contexte, une telle relation peut être utile pour l'extensibilité - aujourd'hui, cette chose renvoie une paire de choses, demain j'aurai besoin qu'elle renvoie un triple sans interrompre les appelants existants, qui n'utilisent que les deux premiers des trois.
D'autre part, doivent-ils être des types distincts ? Je vois l'intérêt d'un contrôle de type plus fort - où l'on ne peut pas passer un Triple à une méthode qui attend un Pair.
Je penche pour l'utilisation de l'héritage, mais j'apprécierais vraiment l'avis d'autres personnes ?
PS : Au cas où cela aurait de l'importance, les classes seront (bien entendu) génériques.
PPS : D'un point de vue beaucoup plus subjectif, les noms devraient-ils être Tuple2, Tuple3 et Tuple4 ?
Edit : Je pense à ces groupes plutôt comme des groupes à couplage lâche ; pas spécifiquement pour des choses comme les coordonnées x/y x/y/z, bien qu'ils puissent être utilisés pour cela. Il s'agirait de choses comme le besoin d'une solution générale pour des valeurs de retour multiples d'une méthode, mais sous une forme avec une sémantique très simple.
Cela dit, je suis intéressé par toutes les façons dont les autres ont utilisé les tuples.