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

  FORUM HardWare.fr
  Programmation
  Java

  Problème pour implémenter classe pile en liste chainée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème pour implémenter classe pile en liste chainée

n°1542944
Siron
Posté le 14-04-2007 à 22:06:49  profilanswer
 

Bonjour, dans l'optique de m'entrainer en java, je réalise actuellement une classe chargé de l'implémentation d'un type pile en liste chainée.
J'ai donc un panel de fonction classique à implémenter tel : size(), add(), sub(), ...
Et au niveau du add j'ai des problèmes pour l'implémentation :

 

Classe pilenempty :

Code :
  1. private String head;
  2. private Pile tail;
  3. private int size ;
  4. public pilenempty(String a){
  5. head = a;
  6. tail = null;
  7. size = 1;
  8. }
  9. public void add(String a){
  10. Pile temp = new pilenempty(a);
  11. temp.tail = this;
  12.         temp.size = this.size() + 1;
  13. this = temp;
  14. }
 

Comme vous pouvez le voir, j'ai tenté le add avec l'intuition (je suis plus coutumier des pointeur en pascal), ce qui évidemment ne marche pas.
Quelqu'un pourrait-il me mettre sur le droit chemin ?
Merci d'avance.

 


Message édité par Siron le 14-04-2007 à 22:10:37
mood
Publicité
Posté le 14-04-2007 à 22:06:49  profilanswer
 

n°1542954
jbourdello​n
Posté le 14-04-2007 à 23:57:42  profilanswer
 

Je connais pas bien le pascal, mais la en effet c'est de pietre qualite comme code .
 
Moi je verrais plutot un truc du genre :  

Code :
  1. class Pile{
  2.     private ArrayList pile;
  3.     public Pile(){
  4.         pile = new ArrayList();
  5.     }
  6.      public void add(Object o){
  7.          pile.add(o);
  8.      }
  9.      public int size(){
  10.          return pile.size();
  11.      }
  12. }


 
Dans ton cas, tu recree un nouvel objet pielempty a chaque fois , c'est donc pas génial, tu as une multitude liste a un seul element....
 
Si tu as d'autre questions....

n°1542987
Siron
Posté le 15-04-2007 à 10:07:59  profilanswer
 

Oui je sais que c'est surement pas top, mais c'est ce que j'aimerais faire si il y a moyen.

 

En gros on a fait cet exercice à un tp java et je le refais de mon coté sans regarder le tp.
Au tp dans le add, on injecte en paramètre le this dans le constructeur appelé de sorte que le constructeur fasse un truc genre : tail = t (qui est le this du add en paramètre) et head = le String.
Moi j'aimerais bien  tester sans passer le this en paramètres.

 

J'ai l'impression que dans

Code :
  1. temp.tail = this;
  2. temp.size = this.size() + 1;

je n'ai pas accès aux variables internes du temp, c'est probable ?


Message édité par Siron le 15-04-2007 à 10:27:26
n°1543048
masklinn
í dag viðrar vel til loftárása
Posté le 15-04-2007 à 17:54:33  profilanswer
 

C'est plus que probable, c'est certain, ils sont marqués private donc inaccessibles "de l'extérieur" [:spamafote]
 
De plus Java demande une approche objet des systèmes, donc tu n'est pas censé faire ce genre de choses. Ici tu dois créer une classe Pile qui va contenir toutes les opérations qu'elle effectue sur elle même.
 
Après, tu as grosso modo 3 approches possibles:

  • Celle de jbourdellon, dans laquelle ta classe de pile n'est qu'un wrapper pour un objet existant du JDK (c'est la plus simple)
  • Faire la même chose mais en le réimplémentant manuellement, dans ce genre de cas tu vas probablement avoir besoin d'une classe Stack et d'une classe permettant de gérer les éléments de ta stack (des cons cells), qui va créer comme le cas précédent une pile mutable
  • Ou alors tu utilises tes cons cells directement comme des piles, en ce cas tes piles deviennent immutables


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1543381
Siron
Posté le 16-04-2007 à 15:54:06  profilanswer
 

Donc si je comprends bien dans mon cas, comme chaque domino de la pile est un nouvel objet en soit, un domino ne peut avoir accès à la rep interne d'un autre domino (et ce même si ils sont gérer pas la même classe) ?
Dans ce cas je vais aller voir l'approche qu'ils ont fait au tp.
 
Et je vois clairement que c'est très moche comme approche, mais le but c'est de m'entrainer à gérer les références.
 
Une petite question à propo du this : c'est légal de changer ça valeur de référence betement comme ça : this = a; dans le cas ou a est un type totalement différent de a ?  
 
Merci pour votres aides.  :jap:  
Siron

n°1543389
masklinn
í dag viðrar vel til loftárása
Posté le 16-04-2007 à 16:00:40  profilanswer
 

Siron a écrit :

Donc si je comprends bien dans mon cas, comme chaque domino de la pile est un nouvel objet en soit, un domino ne peut avoir accès à la rep interne d'un autre domino (et ce même si ils sont gérer pas la même classe) ?


Oui, ce sont des instances différentes d'une même classe, donc des objets réellement différents, donc pas de possibilité d'accès aux membres privés de leurs camarades.

Siron a écrit :


Une petite question à propo du this : c'est légal de changer ça valeur de référence betement comme ça : this = a; dans le cas ou a est un type totalement différent de a ?  


J'en doute, mais je dois te dire que je n'ai jamais essayé de faire un truc pareil, l'intérêt est limité et il y a toujours un moyen de faire autrement (et probablement plus proprement)


Message édité par masklinn le 16-04-2007 à 16:01:10

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1543621
Siron
Posté le 17-04-2007 à 09:59:49  profilanswer
 

Citation :

Oui, ce sont des instances différentes d'une même classe, donc des objets réellement différents, donc pas de possibilité d'accès aux membres privés de leurs camarades.


Je comprends dès lors pourquoi au tp ils passaient en paramètre les valeurs internes du this.

 

Merci pour ces éclaircissement  :jap:

 

Siron


Message édité par Siron le 17-04-2007 à 10:00:17

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

  Problème pour implémenter classe pile en liste chainée

 

Sujets relatifs
Problème d'affiche d'une page, selon navigateur etc...[JS] Probléme création d'un bbcode => apercu
[WinCE] Probleme lors du linkage avec la STLprobleme de programme en C
liste deroulanteProblème de Click Event sur button dynamic
Problème de mysqli_query (y marche chez moi mais pas chez OVH)problème pour ouvrir un .VCF
[wxWidgets et OpenGL] Problème de stack overflowproblème de casting objet
Plus de sujets relatifs à : Problème pour implémenter classe pile en liste chainée


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