LocalStone
Messages postés514Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 1 mars 2009
-
22 nov. 2007 à 15:09
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDerniè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();
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 20116 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)