CLASSE MATRICE

Madvin Messages postés 123 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2012 - 25 janv. 2010 à 18:24
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 13 févr. 2010 à 08:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51162-classe-matrice

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 févr. 2010 à 08:19
J'ai trouve un exemple récent d'une classe matrice de qualité, tu pourrais y jeter un œil
http://www.javafr.com/codes/CLASSE-MATRICE_45980.aspx
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 févr. 2010 à 08:03
Je suis plutot d'accord pour dire que cette source n'est pas de niveau initié, et sur un critère objectif qui est que tu n'utilises pas le langage objet de java. Mais bon, ce n'est pas très grave.

Le problème avec ta classe est que même si tu n'utilises pas de langage objet, tu déclares tes méthodes comme des méthodes agissant sur des objets. Pour ne pas le faire, il faudrait que tu déclares tes fonctions en static : public static double...
Car sinon, tu dois créér un objet pour pouvoir utiliser la méthode, je pense que tu dois faire
Matrice m = new Matrice(); puis m.determinant(tableau).
En faisant cela tu ne t'en rends pas compte mais tu créé une instance d'objet, de type Object.

Personnellement, ça ne me dérange pas que tu n'utilises pas de langage objet si tu ne le connais pas, mais si tu l'as appris entre temps, tu devrais définir un objet matrice qui pourrait par exemple etre un extends de ArrayList> ou autre, je ne sais pas quelle collection est la plus adaptée pour ce que tu veux faire.

Je ne te mets pas de note pour l'instant, j'attends de voire les évolutions de ton code
frankladen11 Messages postés 14 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 23 janvier 2010
25 janv. 2010 à 18:43
Merci de ton commentaire constructif.

Pour se qui est des indices des tableau, je sais le premier indice est 0. Cependant, Je trouve que les commencer par l'indice 1 m'aide a comprendre les problèmes.
et le code fonctionne je l'aie tester moi-même ;)

J'étudies actuellement au cégep de Trois-Rivières en technique de l'informatique et au moment de l'écriture de cette source, nous n'avions pas encore vu le concept de l'objet, ni des méthodes d'Ailleurs. nous commençons a voir l'objet cette session je pourrai alors améliorer mon code en conséquence. Pour se qui est des additions, soustraction, et bien je crois que tu as vite regarder car elle prenne en charge les matrices non-carrées.

Pour se qui est du niveau de la difficulté, et bien il s'agit d'un évaluation subjective et je ne comprends pas vraiment comment pourrais-je juger de la complexité de mon code. j'y suis donc aller selon la difficulté que j'ai eu à le produire et la calcul de déterminant étant la première méthode récursive que j'eu à créer, j'ai eu passablement de difficulté a réaliser ce programme.

Maintenant, pourrais-tu m'expliquer se que tu entend par "static" et par et par ajouter un constructeur private qui ne fait rien.

Sur ce merci beaucoup, il s'agit de ma deuxième publication sur ce site et j'attendais impatiemment mon premier commentaire ;)
Madvin Messages postés 123 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2012 3
25 janv. 2010 à 18:24
Salut,

*** Juste quelques propositions d'améliorations ***

(Opinion perso) : C'est pas très objet ce que tu as fait... dommage... =/...

Mais bon si tu veux absolument passer en paramètres tes matrices comme tu l'as fait, il serait plus propre que :
* tes méthodes soient statiques (mot clé static)
* ta classe ne soit pas instanciable (ajouter un constructeur private qui ne fait rien)

Autres choses importantes :
* il faudrait préciser à l'utilisateur (en commentaires ou en Javadoc) pour les matrices passées en paramètre quel indice parme le 1er ou le 2ème représente les lignes et lequel représente les colonnes, sinon les résultats attendus peuvent être erronés.
* par convention, le nom des classes Java commence par une lettre Majuscule.
* utilise des noms de variables plus parlant : par exemple les noms des variables boucle et boucle1 ne sont pas très représentatifs, alors que des noms comme ligne, colonne, lig, col, numLigne, numColonne, numLig, numCol le sont un peu plus.
* ajouter une gestion propre des cas impossibles dans tes méthodes : par exemple l'addition et la soustraction sont définies uniquement pour des matrices de même taille (même nombre de colonnes et même nonmbre de lignes). Tu peux générer un résultat plus propre que l'émission d'un IndexOutOfBoundsException, comme par exemple écrire un message explicatif sur le flux de sortie standard ou celui d'erreur.

Encore autre chose : j'ai regardé vite fait ton code sans le tester... donc il y a peut-être quelque chose qui m'échappe et je peux très bien me tromper, mais :
* lors de tes itérations, il semblerait que tu commences à l'indice 1 : or le premier élément d'un tableau se trouve à l'indice 0 en Java. Par exemple pour l'addition de matrices, tu parcours une ligne (ou une colonne) en allant de l'indice 1 à matriceA.length - 1 inclus : ce qui fait au total matriceA.length - 1 éléments parcourus et donc un élément est à chaque fois oublié (en l'occurrence ici le premier, celui à l'indice 0). Donc es-tu sûr que ton code fonctionne ?

Pour finir, tu as classé cette source en niveau Initié... or le code Java que tu as écrit ne contient aucune difficulté technique, et le concept de matrice est plutôt très répandu et bien connu... donc ta source est largement accessible pour les débutants.

Voilà, bonne continuation... :D

@+
Rejoignez-nous