Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3008 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Extends un tableau basique, c'est impossible ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Extends un tableau basique, c'est impossible ?

n°731186
souliane
Posté le 19-05-2004 à 11:16:49  profilanswer
 

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))

mood
Publicité
Posté le 19-05-2004 à 11:16:49  profilanswer
 

n°731188
darklord
You're welcome
Posté le 19-05-2004 à 11:20:39  profilanswer
 

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.


---------------
Just because you feel good does not make you right
n°731197
pascal34
one point !
Posté le 19-05-2004 à 11:27:30  profilanswer
 

Faut faire gaffe, y'a des classes du JDK qu'on peut pas étendre. Ex: String

n°731200
souliane
Posté le 19-05-2004 à 11:28:44  profilanswer
 

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.

n°731201
gfive
Posté le 19-05-2004 à 11:28:55  profilanswer
 

- 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.

n°731204
gfive
Posté le 19-05-2004 à 11:30:21  profilanswer
 

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 :
  1. Color get(int i, int j)

, ce qui te permet de n'écrire qu'une fois le fameux (Color)(((ArrayList)rows.get(i)).get(j))

n°731210
darklord
You're welcome
Posté le 19-05-2004 à 11:34:28  profilanswer
 

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?


---------------
Just because you feel good does not make you right
n°731226
_guigui_
Posté le 19-05-2004 à 11:43:09  profilanswer
 

mais tu veux faire quoi exactement? quel intéret d'étendre le tableau??? :heink:

n°731256
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 19-05-2004 à 11:59:31  profilanswer
 

darklord a écrit :

quelle fonctionnalité tu veux en plus?


length, stro chiant à recoder :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°731260
R3g
fonctionnaire certifié ITIL
Posté le 19-05-2004 à 12:04:31  profilanswer
 

Taiche a écrit :

length, stro chiant à recoder :o

Code :
  1. public int length;

C'est pas si dur en fait :D

mood
Publicité
Posté le 19-05-2004 à 12:04:31  profilanswer
 

n°731315
souliane
Posté le 19-05-2004 à 12:27:25  profilanswer
 

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.

n°731319
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 19-05-2004 à 12:30:36  profilanswer
 

Mais pourquoi, bordel ? :cry: Faire un extends pour faire un extends, ça veut rien dire et ça sert à rien [:spamafote]
"Tiens, aujourd'hui j'vais faire un extends de LinkedHashSet, pour le fun. Demain ça sera un extends de ColorChooserComponentFactory" [:kiki]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°731357
pascal34
one point !
Posté le 19-05-2004 à 13:00:44  profilanswer
 

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

n°731372
souliane
Posté le 19-05-2004 à 13:06:32  profilanswer
 

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).

n°731373
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 19-05-2004 à 13:07:29  profilanswer
 

Ba extends ArrayList, alors [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°731379
souliane
Posté le 19-05-2004 à 13:12:41  profilanswer
 

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).

n°731408
pascal34
one point !
Posté le 19-05-2004 à 13:47:26  profilanswer
 

souliane a écrit :

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).


 
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

n°731409
pascal34
one point !
Posté le 19-05-2004 à 13:47:57  profilanswer
 

Taiche a écrit :

Ba extends ArrayList, alors [:spamafote]


 
extends AbstractList  :jap:

n°731411
gfive
Posté le 19-05-2004 à 13:49:44  profilanswer
 

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! :)

n°731579
souliane
Posté le 19-05-2004 à 15:20:02  profilanswer
 

Mais c'est quoi les relations entre les classes alors ?
Je saisis pas qui implemente quoi.

n°731597
gfive
Posté le 19-05-2004 à 15:29:07  profilanswer
 

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.

n°731704
_guigui_
Posté le 19-05-2004 à 16:10:15  profilanswer
 

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 :
  1. public class Column {
  2.     private Color[] colors = null;
  3. }


et

Code :
  1. public class Row {
  2.     private List columns = null;
  3.    
  4.     public Row() {
  5.         columns = new ArrayList();
  6.     }
  7.     public void addRow(Column column) {
  8.         columns.add(column);
  9.     }
  10. }

n°731736
pascal34
one point !
Posté le 19-05-2004 à 16:31:09  profilanswer
 

gfive a écrit :

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.


 
pas mieux !!!

n°743321
childjuice
il est ou papa ?
Posté le 28-05-2004 à 13:41:57  profilanswer
 

ca dépend de tes pointeurs

n°743705
pascal34
one point !
Posté le 28-05-2004 à 16:04:38  profilanswer
 

childjuice a écrit :

ca dépend de tes pointeurs


 
pô de pointeur en Java  :non:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Extends un tableau basique, c'est impossible ?

 

Sujets relatifs
[c][Resolu]Passage d'un tableau à une fonctionFaire un tri a partir d'un tableau comment faire sous ASP ?
rafraîchir un tableau croisé dynamique[HTML] fixer la hauteur d'une ligne d un tableau.
Un tableau d'une page a l'autre[C++]Tableau de pointeru sur chaine de car.
[java] probleme de newbie (tri de tableau)Affichage requete dans un tableau avec selecteur
[HTML] Fixer la largeur d'une colonne dans un tableau ?comment mettre un tableau en public
Plus de sujets relatifs à : Extends un tableau basique, c'est impossible ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR