Bonjour,
Je rencontre le problème suivant depuis peu sur un de mes projets.
J'ai une interface de base IDAO codée (approximativement!) comme suit:
Cette interface concerne comme on le voit la lecture/écriture/suppression de données. Et elle est héritée par deux autres interfaces plus précises :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Interface IDao function read(obj Object) as Object function write(obj Object) as boolean function delete(obj Object) as boolean
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Interface ITxtDao inherits IDao function parseLine(...) function countLines(...) etc...L'une pour l'utilisation de fichiers textes, l'autre pour les Excels, il y en aura d'autres bien assez vite :o)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Interface IXlsDao Inherits IDao function countRows(...) function countFields(...) etc...
Pour l'instant, chacune de ces deux interfaces sont implémentées (forcément) par une classe TxtDao et XlsDao. Mais là ca se gatte, car je souhaierai pouvoir implémenter les méthodes de l'interface IDao tout en modifiant les paramètres d'entrées. Comme dans l'exemple suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Class TxtDao Implements ITxtDao ' implémentation des méthodes diverses... function read(linenumber Integer) as String function write(linedata String) as Boolean function delete(linenumber Integer) as BooleanMais bon, il semblerait que ce soit pas permis en VB.Net... On pourrait bien implémenter IDao avec une classe Dao par exemple et surcharger ses méthodes. Mais c'est pas très propre, car la surcharge implique que les méthodes de cette classe Dao serait déjà utilisables telles quelles et leur surcharge serait une addition de fonctionnalités.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Class XlsDao Implements IXlsDao ' implémentation des méthodes diverses... function read(rownumber Integer) as Array[] function write(rowdata Array[]) as Boolean function delete(rownumber Integer) as Boolean
Là ce ne sera pas le cas, l'interface IDao ne contiendra que les signatures des méthodes de lecture/écriture/suppression et les classes l'implémentant concerneront des fichiers Excels, Xml, texte, etc... et donc auront des signatures de méthodes (paramètres) forcéments différentes!
Enfin voilà le problème. Quelqu'un a t il déjà été confronté à ce genre de problème?
Merci d'avance
Arach
Partager