Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [Java] Strutture dati

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    70

    [Java] Strutture dati

    Ciao a tutti,
    abituato al C, mi trovo un pò incasinato nel realizzare una struttura di dati con la programmazione Java.
    Dovrei realizzare una struttura dati chiamata RR la quale dovrebbe contenere un numero x di record così formati:
    String argomento;
    int tipo;
    String indirizzo;
    double ttl;

    Per realizzare questa struttura dati, posso creare una classe RR (che sarebbe la struttura dati stessa) e nel momento in cui invovo il costruttore viene allocata la memoria?!?!?
    Come si realizza la seguente struttura dati in pratica?!?!?!?


    Grazie mille!!!!!!!!!!!!!!!!!!!!

  2. #2
    public class RR {
    public String argomento;
    public int tipo;
    public String indirizzo;
    public double ttl;

    // eventuale costrutture facoltativo
    public RR (String arg, int tip, String ind, double tt) {
    argomento =arg;
    tipo= tip;
    indirizzo = ind;
    ttl = tt;
    }
    }


    Se deve essere visibile in giro la metti in un file RR.java, altrimenti togli il public prima del class e la sbatti dentro al codice della classe che la deve utilizzare !

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Sì... solo che a me piace l'OOP pura... io metterei i campi privati e ci costruirei dei metodi per accedervi (dei metodi per settare ciascuna delle variabile e dei metodi per leggerli).
    codice:
    public class RR { 
       private String argomento; 
       private int tipo; 
       private String indirizzo; 
       private double ttl; 
    
       // eventuale costrutture facoltativo 
       public RR (String arg, int tip, String ind, double tt) { 
          argomento =arg; 
          tipo= tip; 
          indirizzo = ind; 
          ttl = tt; 
       }
       public void setArgomento(String argomento) {this.argomento = argomento;}
       public void setTipo(int tipo) {this.tipo = tipo;}
       public void setIndirizzo(String indirizzo) {this.indirizzo = indirizzo;}
       public void setTTL(double ttl) {this.ttl = ttl;}
       
       public String getArgomento() {return argomento;}
       public int getTipo() {return tipo;}
       public String getIndirizzo() {return indirizzo;}
       public double getTTL() {return ttl;}
    }
    In questo modo puoi anche rafforzare i controlli per quanto riguarda i valori di ciascun campo: puoi, infatti, aggiungere delle condizioni particolari durante l'inserimento, filtrare i dati inseriti o farci, comunque, delle elaborazioni.

    Avendo a disposizione una classe puoi usare un Vector per contenere quante istanze vuoi della classe (in pratica per gestire un numero di record a piacere).

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    70
    Originariamente inviato da LeleFT
    Sì... solo che a me piace l'OOP pura... io metterei i campi privati e ci costruirei dei metodi per accedervi (dei metodi per settare ciascuna delle variabile e dei metodi per leggerli).
    codice:
    public class RR { 
       private String argomento; 
       private int tipo; 
       private String indirizzo; 
       private double ttl; 
    
       // eventuale costrutture facoltativo 
       public RR (String arg, int tip, String ind, double tt) { 
          argomento =arg; 
          tipo= tip; 
          indirizzo = ind; 
          ttl = tt; 
       }
       public void setArgomento(String argomento) {this.argomento = argomento;}
       public void setTipo(int tipo) {this.tipo = tipo;}
       public void setIndirizzo(String indirizzo) {this.indirizzo = indirizzo;}
       public void setTTL(double ttl) {this.ttl = ttl;}
       
       public String getArgomento() {return argomento;}
       public int getTipo() {return tipo;}
       public String getIndirizzo() {return indirizzo;}
       public double getTTL() {return ttl;}
    }
    In questo modo puoi anche rafforzare i controlli per quanto riguarda i valori di ciascun campo: puoi, infatti, aggiungere delle condizioni particolari durante l'inserimento, filtrare i dati inseriti o farci, comunque, delle elaborazioni.

    Avendo a disposizione una classe puoi usare un Vector per contenere quante istanze vuoi della classe (in pratica per gestire un numero di record a piacere).

    Ciao.

    Ciao,
    avevo creato una classe simile e inserita in un Vector[] v;
    Il problema è che nel vettore posso inserire un oggetto (ed in effetti il mio oggetto istanza della classe RR lo riesco ad inserire); il problema sorge quando devo estrarre i dati: infatti, il metodo .getElementAt(i) ritorna un oggetto Object che è diverso dalla mia classe RR e quindi non mi fà l'assegnamento!!!!!!! Come posso fare?!?!? Come mai non posso riestrarre il mio oggetto (RR)?!??!

  5. #5
    Originariamente inviato da daspin
    Ciao,
    avevo creato una classe simile e inserita in un Vector[] v;
    Il problema è che nel vettore posso inserire un oggetto (ed in effetti il mio oggetto istanza della classe RR lo riesco ad inserire); il problema sorge quando devo estrarre i dati: infatti, il metodo .getElementAt(i) ritorna un oggetto Object che è diverso dalla mia classe RR e quindi non mi fà l'assegnamento!!!!!!! Come posso fare?!?!? Come mai non posso riestrarre il mio oggetto (RR)?!??!
    quando fai il getElement basta farne il cast.
    Cioè
    RR objectRR == (RR)v.getElementAt(i);


    ciao

    chiaramente se sei sicuro che l'oggetto contenuto nel vettore è di tipo RR allora va tutto bene. Se non lo fosse infatti otterresti un classCastException. Se non sei sicuro puoi provare prima ad utilizzare instanceof per testare il tipo di classe dell'oggetto.

    ariciao

  6. #6
    Originariamente inviato da caimano73
    quando fai il getElement basta farne il cast.
    Cioè
    RR objectRR == (RR)v.getElementAt(i);


    ciao

    chiaramente se sei sicuro che l'oggetto contenuto nel vettore è di tipo RR allora va tutto bene. Se non lo fosse infatti otterresti un classCastException. Se non sei sicuro puoi provare prima ad utilizzare instanceof per testare il tipo di classe dell'oggetto.

    ariciao
    pardon mi è scappato un = di troppo

    RR objectRR = (RR)v.getElementAt(i);

  7. #7
    Originariamente inviato da LeleFT
    Sì... solo che a me piace l'OOP pura... io metterei i campi privati e ci costruirei dei metodi per accedervi (dei metodi per settare ciascuna delle variabile e dei metodi per leggerli).
    [.........]
    Ciao.
    yay! l'incapsulamento rulla! :metallica
    volevo metterlo come nota ma mentre scrivevo mi è passato di mente
    cmq volendo fare le cose ancora più fiche si puo' implementare il PropertyChangeSupport e notificare le classi iscritte al ProperyChangeListener ogni volta che si fa una set di un campo!

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    70
    Originariamente inviato da caimano73
    pardon mi è scappato un = di troppo

    RR objectRR = (RR)v.getElementAt(i);


    Eh si... adesso funziona alla perfezione

    grazie

    ciao ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.