Newsgroup: it.comp.java
Titolo: collection classes

Sono alle prese con lo studio dei contenitori! Durante una lezione
stavamo leggendo dal mitico Bruce Eckel la spigazione di tali
strutture. Ad un certo punto ci siamo bloccati su di un diagramma (
pag.340 di B.E.) che spiega la gerarchia e le varie suddivisioni di
tali contenitori con le rispettive interfacce. Il problema č sorto
quando abbiamo visto che la Classe Stack eredita da Vector. Qualcuno
saprebbe spiegarmi perchč dovrebbe essere coerente una tale
affermazione, considerando che uno Stack non utilizza i metodi che
potrebbero essere implementati su di un Vector!
Sperando di essermi spiegata bene, ma soprattutto di non aver commesso
troppe imprecisioni (sono una novellina di JAVA), ringrazio chiunque
voglia rispondermi!
Grazie 
  Ciao a tutti
            Laura:-)

Allora Laura,
pur non essendo un grande esperto ti posso dire che in realtà anche in uno
stack possono essere utili anche i metodi della classe Vector oltre ai
soliti Push/Pop.
Inoltre, se ci pensi, la loro implementazione pratica è la stessa dunque non
c'è motivo di scrivere + codice per fare la stessa cosa (ovvero un array
dinamico) in accordo con la filosofia Java & dell'OOP in genere.
Adesso non so come sia implementata Stack, ma se tu avessi la necessita' di
estendere tale classe senza ereditarne metodi 'scomodi' alla tua
applicazione, una soluzione molto utilizzata è la seguente:
    /*Nel file di classe che estende Vector*/
    /*Non vogliamo il metodo getElementAt( int )!*/
   public Object getElementAt( int i ) {
          return null;
   }
   ovvero sovrascrivi( overiding dei metodi in termini OOP ) il metodo e non
li fai fare nulla....
Spero di esserti stato utile...
Ciao Michele
PS: Tra l'altro Vector è una classe deprecated in Java2, usa la classe
ArrayList

 ArrayList
Non sembrerebbe deprecata a consultare la documentazione dell'1.3...
Semplicemente Vector differisce da ArrayList per il fatto che i suoi metodi sono
sincronizzati (e quindi è più lento ma thread-safe), mentre quelli di ArrayList
no (e quindi è più performante, ma pensato per l'utilizzo esclusivo da parte di
una classe/istanza; in caso contrario bisogna gestirsi la sincronizzazione).
Se ho detto qualche sciocchezza è ovviamente dovuto a:
- l'immane quantità di sonno che oramai mi travolge e
- la mia beata ignoranza alla quale ogni giorno tento di porre rimedio
...quindi vi prego di correggermi! :)
Ciao,
 Stefano
----------
"X WindowSSS, teSSSoro mio... lo odieremo per SSSempre"
Bill Gollum
----------

  |
|-----------------------------------------|
|       
http://www.pabasoftware.com
       |
+-----------------------------------------+

 --
Ammetto di non essere ancora andato a fondo della cosa, ma anche io
sapevo che Vector fosse deprecata ed implementata sulle *nuove* classi
per comodità e compatibilità col passato. Mi documento un po' e ci
risentiamo.
ciao
-- 
Ugo
__________________________________________________________________________
"La perfezione si ottiene non quando non c'è nient'altro da aggiungere, 
 bensì quando non c'è più niente da togliere." Antoine de Saint-Exupéry
__________________________________________________________________________
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Enterprise Java Consulting
@mail: Ugo.L...@Flashnet.it
Home Page: 
http://www.ugolandini.net
Mentoring: 
http://www.projectoo.com
Work Phone: 06/5814740
Fax Phone: 06/233207542 
Cell Phone: 0347/6310749 - 0347/4783580
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^