Faire un tableau avec ce que je veux dedans [Java] - Java - Programmation
Marsh Posté le 02-02-2005 à 19:48:06
Hum ...faudrait relire un peu le cours sur les objets...
Autre chose, edite ton poste, et met tes morceaux de codes entre balises [ code] ... [ /code] (sans les espaces)
Code :
|
ensuite en objet y'a un concept qui s'appelle l'encapsulation : ca consiste à cacher de l'extérieur l'état interne de l'objet, en l'occurence ses variables.
Donc tu commences par faire ca :
Code :
|
ensuite il te faut créer des objets cases avant de pouvoir les utiliser.
Marsh Posté le 02-02-2005 à 19:56:17
Malheureusement les cours sur les objets j'en ai quasiment pas eu
Je vais éditer mon 1er post.
Je vais essayer cette encapsulation, mais je ne vois pas trop comment ça va m'aider pour créer mon tableau
Marsh Posté le 02-02-2005 à 19:57:02
merci jubijub pour ce post aussi confituresque qu'inutile.
--> si le constructeur de Case prenait un int
|
ou
-->
|
Marsh Posté le 02-02-2005 à 20:13:20
Ca m'a l'air plus simple ça, mais j'arrive pas à faire la 1ère méthode déjà - je vais essayer la 2e
Marsh Posté le 02-02-2005 à 20:16:23
Avec la 1ere méthode tj, effectivement je n'ai plus l'erreur [b]at Tableau2.<init><Tableau2.java:10>[b]
par contre j'ai tj la 2e, celle qui soncerne le main (est-ce c'est juste ma syntaxe d'affichage qui est fausse ?!)
Marsh Posté le 02-02-2005 à 20:18:06
Pour ton erreur regarde de ce coté là :
for (int i=0; i<3; i++)
{
T[i][i].test=1;
}
Marsh Posté le 02-02-2005 à 20:20:45
En fait, ce que je voudrais, c'est très exactement :
afficher un attribut d'une Case x,y du tableau.
C'est pour ça que je fait : afficher "tableautest2.T[3][3].test" pour afficher l'attribut "test" de la case "T[3][3]" du tableau "tableautest2"
Mais ça marche tj pas
Marsh Posté le 02-02-2005 à 20:22:03
Merde j'suis trop con c'était ça ! Merci beaucoup ça fonctionne maintenant
EDIT : et désolé de vous avoir dérangé pour si peu
Marsh Posté le 02-02-2005 à 21:58:26
jj>bah oui mais bon, tout ça n'avait rien à voir avec la question, donc bon, si tu le mentionnes pas (que ça n'a rien à voir)...
Marsh Posté le 03-02-2005 à 00:01:16
C'est bon vous battez pas
Tout ce que je voulais faire fonctionner tourne maintenant au poil
Encore merci !
Marsh Posté le 03-02-2005 à 10:08:58
Shaffan a écrit : C'est bon vous battez pas |
Ca suffit pas que ca marche, faudrait en plus que ca soit propre pour progresser dans la bonne direction
Le fait que ta classe Tableau expose sa variable d'instance T est non seulement dangereux mais en plus vraiment pas O-O ... si tu regardes bien tu constateras (entre autres choses) que l'interet de ta classe Tableau est nul, puisque tu l'utilises comme un bete tableau au travers de "Tableau.T" alors que tu devrais cacher son implementation par l'utilisation de methodes publiques ...
Marsh Posté le 03-02-2005 à 12:44:36
Si l'intérêt de la classe tableau est nul, comment je peux faire un "bête tableau" mais qui comporte autre-chose que des entiers ?
Marsh Posté le 03-02-2005 à 13:17:47
Shaffan a écrit : Si l'intérêt de la classe tableau est nul, comment je peux faire un "bête tableau" mais qui comporte autre-chose que des entiers ? |
Ben avec "Case[][] tableau" pour un tableau de cases, ou "Object[][] tableau" pour un tableau de n'importe quoi, pas la peine d'encapsuler ca dans une classe Tableau qui n'apporte rien (a part un contructeur qui pre-remplit les donnees).
Mais l'un comme l'autre ne sont pas objet du tout, bien sur ... tu raisonnes en termes de stockage de donnees alors que tu devrais plutot raisonner en termes d'utilisation de donnees ... ta classe Tableau doit fournir une interface qui par exemple renvoie une Case particuliere pour un couple de coordonnees, c'est pas pour ca qu'en interne faut que ce soit un xxx[][]. Et encore moins que les utilisateurs de ta classe sachent qu'elle contient un tableau (ca c'est vraie heresie)
Modelises tes besoins et une fois que c'est fait choisis la meilleure implementation.
Marsh Posté le 03-02-2005 à 13:33:56
Ben en fait effectivement j'ai un constructeur dans ma classe tableau, qui remplit tous les paramètres de chaque case.
Pour l'hérésie désolé si t'es du genre inquisiteur, mais pour le moment je pige pas grand chose alors je fais ce que je sais faire - pour la beauté de la chose ce sera pour plus tard
Marsh Posté le 03-02-2005 à 13:46:27
Shaffan a écrit : Pour l'hérésie désolé si t'es du genre inquisiteur, mais pour le moment je pige pas grand chose alors je fais ce que je sais faire - pour la beauté de la chose ce sera pour plus tard |
Je suis pas du tout inquisiteur, mais ce que tu fais c'est contraire a tous les principes OO ... tu ne fais qu'adapter des structures de donnees a la syntaxe Java, mais tu fais pas du Java, et tu n'essaies pas de comprendre ce qu'est Java. Ca serait du C#, du PHP ou du Visual Basic ca serait pareil. Errare humanum est, perseverare diabolicum.
C'est ca le premier (et le plus difficile) truc a comprendre avant de se mettre a un nouveau langage ... Java c'est un peu plus qu'une syntaxe, interesse-toi a tout ce qui fait ce langage avant de te lancer dans une programmation sans comprendre, tu te rendras service pour plus tard. Et si tu crois que c'est simplement "pour la beaute de la chose", c'est que t'as serieusement loupe un truc.
Marsh Posté le 03-02-2005 à 13:51:05
gonzoide > faut laisser le temps à ces choses-là de décanter
j'ai commencé java en "adaptant" des trucs que j'avais fait en php... j'aurais honte de montrer le résultat maintenant, mais ça n'empeche pas que j'ai progressé en oo - tu peux pas tout encaisser à la fois
Marsh Posté le 03-02-2005 à 13:51:54
the real moins moins a écrit : gonzoide > faut laisser le temps à ces choses-là de décanter |
J'ai fait pareil au debut, mais j'ai toujours ecoute mes aines, en revanche. Comme je viens d'editer dans mom post : Errare humanum est, perseverare diabolicum
Marsh Posté le 03-02-2005 à 14:12:45
Reply
Marsh Posté le 02-02-2005 à 19:42:20
Bonjour.
Disclaimer : avant toute chose, sachez que je débute en java (et en programmation tout court...)
Je sais faire un tableau à deux entrées d'entiers avec :
Jusque là ça va. Bon y'a des 1 sur la diagonale, rien ailleurs, le but étant juste de tester si ça fonctionne, avec :
et effectivement ça fonctionne parfaitement.
Maintenant, ce que je voudrais, c'est créer un tableau du même genre, mais ne contenant non pas des entiers, mais un objet que je nomme "Case" :
Là c'est particulièrement stupide car une case n'a comme attribut qu'un entier, mais le but c'est de rendre ensuite les cases plus riches.
Et ça j'y arrive pas.
Si je crée une classe Tableau2 quasiment identique à la précédente, comme ça :
le .test c'est pour essayer d'atteindre l'attribut "test" de la case (i,i)
Ben là ça déconne, quand j'utilise :
je reçois le message d'erreur :
Exception in thread "main" java.lang.NullPointerException
at Tableau2.<init><Tableau2.java:10)
at Main.main<Main.java:5>
Svp j'ai l'impression d'avoir tout essayé, j'ai vraiment besoin d'un coup de pouce
Message édité par Shaffan le 02-02-2005 à 20:08:47