Extends un tableau basique, c'est impossible ? - Java - Programmation
Marsh Posté le 19-05-2004 à 11:20:39
Bin c'est le contenu de ton tableau que tu dois étendre, pas le tableau lui meme. Un tableau c'est un tableau hein!
Tu fais juste class Truc extends Color puis tu fais un tableau de Truc.
Marsh Posté le 19-05-2004 à 11:27:30
Faut faire gaffe, y'a des classes du JDK qu'on peut pas étendre. Ex: String
Marsh Posté le 19-05-2004 à 11:28:44
Ce que je souhaite c'est bien étendre le tableau et pas son contenu. Mais l'utilité de faire une telle chose est tout de meme discutable.
Marsh Posté le 19-05-2004 à 11:28:55
- Un tableau, ce n'est pas un objet à proprement parler, donc, non, tu ne peux pas "étendre" un tableau.
- les classes du JDK qu'on ne peut pas étendre sont les classes final.
Marsh Posté le 19-05-2004 à 11:30:21
Tu veux étendre le tableau, mais pkoi faire???
A la limite, tu crées une classe, qui utilise des arraylist, ou ce que tu veux, et tu y ajoutes une méthode
Code :
|
, ce qui te permet de n'écrire qu'une fois le fameux (Color)(((ArrayList)rows.get(i)).get(j))
Marsh Posté le 19-05-2004 à 11:34:28
souliane a écrit : Ce que je souhaite c'est bien étendre le tableau et pas son contenu. Mais l'utilité de faire une telle chose est tout de meme discutable. |
quelle fonctionnalité tu veux en plus?
Marsh Posté le 19-05-2004 à 11:43:09
mais tu veux faire quoi exactement? quel intéret d'étendre le tableau???
Marsh Posté le 19-05-2004 à 11:59:31
darklord a écrit : quelle fonctionnalité tu veux en plus? |
length, stro chiant à recoder
Marsh Posté le 19-05-2004 à 12:04:31
ReplyMarsh Posté le 19-05-2004 à 12:27:25
Ben en fait je fais un jeu de briques et j'aurai voulu avoir une classe Rows extends ArrayList et je rajoute dedans des instances de Column extends Color[]. Je ne sais pas si ca aurait vraiment été un plus mais j'aurais trouvé ca sympa.
Marsh Posté le 19-05-2004 à 12:30:36
Mais pourquoi, bordel ? Faire un extends pour faire un extends, ça veut rien dire et ça sert à rien
"Tiens, aujourd'hui j'vais faire un extends de LinkedHashSet, pour le fun. Demain ça sera un extends de ColorChooserComponentFactory"
Marsh Posté le 19-05-2004 à 13:00:44
souliane a écrit : Ben en fait je fais un jeu de briques et j'aurai voulu avoir une classe Rows extends ArrayList et je rajoute dedans des instances de Column extends Color[]. Je ne sais pas si ca aurait vraiment été un plus mais j'aurais trouvé ca sympa. |
Ca n'a rien à voir.
Le 'extends' porte bien son nom, ça permet d'étendre les possibilités de la classe mère. Mais là il n'y a rien de commun entre tes classes mères et les classes dérivées !
Il vaut mieux créer une classe Row qui peut contenir un tableau de colonnes Column[]. Et tu mets tes Row dans un ArrayList
Marsh Posté le 19-05-2004 à 13:06:32
J'aurai voulu rajouter des methodes du genre "est ce que le tableau est rempli (aucun element n'est nul)" ou bien "afficher en utilisant un Graphics passé en argument". Moi je trouve que ca aurait mieux séparé mes objets plutot que de mettre dans la meme classe les methodes qui travaille sur une ligne et sur la grille (plusieurs lignes).
Marsh Posté le 19-05-2004 à 13:07:29
Ba extends ArrayList, alors
Marsh Posté le 19-05-2004 à 13:12:41
Tiens en parlant de ColorChooser, c'est facile de changer son aspect, de le rendre plus light et moins encombrant ?
Par facile j'entend des models deja fait qu'il suffit de passer en parametres, à l'inverse d'un truc ou il faudrait tout tout redéfinir (je parle pas des méthodes mais des attributs).
Marsh Posté le 19-05-2004 à 13:47:26
souliane a écrit : Tiens en parlant de ColorChooser, c'est facile de changer son aspect, de le rendre plus light et moins encombrant ? |
Tu peux spécifier les panneaux dont tu n'a pas besoin ou en ajouter d'autre de ta création.
http://java.sun.com/docs/books/tut [...] eviewpanel
Marsh Posté le 19-05-2004 à 13:47:57
ReplyMarsh Posté le 19-05-2004 à 13:49:44
souliane a écrit : "est ce que le tableau est rempli (aucun element n'est nul)" |
Ca, ok, ça peut se justifier.
[citation]
"afficher en utilisant un Graphics passé en argument".
[/citation]
Ca, par contre, c'est pas top : la classe qui gère les données (tes couleurs, si j'ai tout bien compris) ne devrait pas être celle qui dessine!! Pour faire n truc plus propre, et plus évolutif, il te faudrait une interface Renderer, qui a des méthodes permettant de dessiner une cellule que la classe de gestion lui passe : comme ça, si tu veux changer de manière de dessiner (genre, changer le design des briques d'un niveau à l'autre), ben tu écris une nouvelle implémentation de renderer, mais tu n'a pas à toucher à ta classe de gestion.
MVC powah, quoi!
Marsh Posté le 19-05-2004 à 15:20:02
Mais c'est quoi les relations entre les classes alors ?
Je saisis pas qui implemente quoi.
Marsh Posté le 19-05-2004 à 15:29:07
euuuh...alors...
- la classe TonRenderer implémente l'interface Renderer, qui définit la méthode dessineBrique(TonObjetQuiRepresenteUnBrique, Graphics g);
- la classe qui gère les données, donc, celle qui hérite de ArrayList, là, implémente (tant qu'à faire les choses, autant les faire bien) l'interface TonModele, qui définit des méthode permettant de récupérer les instances de TonObjetQuiRepresenteUnBrique a des coordonnées donnée, ou qui permet d'ajouter ou d'enlever une ou plusieurs briques, etc..
- Pour dessiner, ta classe d'interface graphique a un renderer, et un modèle : elle demande au renderer de dessiner la liste de briques fournies par le modèle, en lui donnant son Graphics.
Ca te permet de changer l'un ou l'autre des éléments sans toucher aux autres! Et donc, de facilement changer le design des briques, par exemple, ou de changer le type d'interface graphique, pour remplacer le Swing par de l'AWT ou du SWT ou n'importe quoi d'autre.
Regarde comment sont fait les trucs du même style dans l'API swing : JTable est un bon exemple.
Marsh Posté le 19-05-2004 à 16:10:15
souliane a écrit : Ben en fait je fais un jeu de briques et j'aurai voulu avoir une classe Rows extends ArrayList et je rajoute dedans des instances de Column extends Color[]. Je ne sais pas si ca aurait vraiment été un plus mais j'aurais trouvé ca sympa. |
ben tu fais ca alors:
Code :
|
et
Code :
|
Marsh Posté le 19-05-2004 à 16:31:09
gfive a écrit : euuuh...alors... |
pas mieux !!!
Marsh Posté le 28-05-2004 à 16:04:38
Reply
Marsh Posté le 19-05-2004 à 11:16:49
Comme on pourrait faire class Truc extends ArrayList ou Vector, est-il possible de faire class Truc extends Color[] (par exemple) ?
Je voudrais extends un tableau en fait mais les [] gène le compilateur. La "classe" des tableaux de base a t'elle un nom ?
J'ai fait quelques recherches mais je ne trouve pas on dirait qu'on ne peut pas faire ce que je souhaite...
Pourquoi je ne veux pas utiliser de ArrayList à la place ? Ben pour des questions de performances et de casse-couillage (colors[i][j] est quand meme mieux que (Color)(((ArrayList)rows.get(i)).get(j))