[POO] Downcasting ...

LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009 - 22 nov. 2007 à 15:09
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 - 22 nov. 2007 à 16:05
Salut à tous,
Alors voilà l'histoire ... Y a-t-il moyen de faire du downcasting en Java ? Je sais qu'il y a surement moyen de faire les choses sans passer par là, mais je vais quand même expliquer mon problème, et peut-être que quelqu'un proposera une solution équivalent voire meilleure ...
Imaginons une classe MatriceCarree qui hérite de la classe Matrice. Imaginons maintenant que la classe Matrice possède une méthode statique qui permet de multiplier 2 matrices dont voici le prototypage : public static Matrice multiplier(Matrice matriceDroite, Matrice matriceGauche); et que la classe MatriceCarree possède une méthode calculerDeterminant() qui retourne le déterminant de la matrice carrée associée.
Et enfin, imaginons le cas suivant : on multiplie une matrice 2x3, par une matrice 3x2. Au final, on obtient bien une matrice 2x2 et donc on peut calculer son déterminant ... Mais comment faire en Java ?
Peut-on faire quelque chose du style :
float determinant = ((MatriceCarre)Matrice.multiplier(new Matrice(2, 3), new Matrice(3, 2))).calculerDeterminant();

LocalStone

1 réponse

super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
22 nov. 2007 à 16:05
Hello,

si  j ai bien compris tu pourras pas.
Matrice.multiplier te renvoie une matrice et pas une matrice carrée donc c est loupé pour le calcul du determinant : t auras un classcastexception à l exécution (à moins que mutliplier soit assez intelligent pour te renvoyer une MatriceCarrée si le résultat est n*n).
A la limite tu pourrais faire une factory de matrice carrée qui prendrait une matrice en entrée (tu ferais les vérifs qu elle soient bien n*n ...)
Dernière chose, t as quoi en plus dans une matricecarrée ? Si c est qu"une seule méthode est-ce bien necessaire de faire de l'héritage (une classe utlilitaire pourrait peut etre suffire)

++ Toinou
0
Rejoignez-nous