Dove leggere dal file?

0

In Java: ho una classe Studenti. Mi piacerebbe leggere un elenco di studenti da un file. Quale è più elegante:

  1. Leggere e costruire l'elenco in main () e creare un oggetto Studente con il nuovo elenco passato al costruttore

  2. Passare un FileReader al costruttore, chi fa la lettura?

  3. Qualcos'altro?

posta 15.03.2013 - 16:06
fonte

5 risposte

2

Crea un oggetto stupido di studente.

Crea un metodo per leggere ogni riga del file creando un nuovo oggetto studente in modo da ottenere un elenco di studenti.

Separa la logica della creazione dell'elenco dal determinare quale bit del file di testo contiene quale attributo dell'oggetto studente.

Ricorda solo di seguire regole come la separazione delle preoccupazioni e i principi di SOLID.

    
risposta data 15.03.2013 - 16:14
fonte
1

Sembra che sia richiesto lo schema di fabbrica, qualcosa sulla falsariga di un StudentFactory che genera l'oggetto studenti.

Dovresti avere un'interfaccia e un'implementazione FileStudentFactory che fa la lettura del file e se poi vuoi un altro provider in un secondo momento, modifica l'implementazione.

link

    
risposta data 15.03.2013 - 16:15
fonte
0

Utilizza un metodo separato, che esegue la lettura e l'inizializzazione dell'oggetto Student . Il vantaggio di questo è che puoi riutilizzarlo ovunque ti serva, non solo in main o mentre stai costruendo un nuovo Student .

Potresti anche implementare l'interfaccia Serializable .

    
risposta data 15.03.2013 - 16:14
fonte
0

Which one is more elegant

L'eleganza (nella programmazione) è una questione di gusto personale. Devi decidere da solo.

Altre cose da considerare sono:

  • se un particolare approccio fornisce la funzionalità richiesta,
  • se l'API è facile da capire e
  • se l'API supporta casi d'uso diversi da quello corrente; cioè se è riutilizzabile.
risposta data 15.03.2013 - 16:14
fonte
0

Se crei studenti di classe, probabilmente dovrai creare un metodo che restituisca il nome di studenti come questo

public String getName(){
return this.name;
}

e nella classe principale si crea oggetto studente in un array o ArrayList come questo:

Student [] students = new Student [size];

e quindi hai setName(String name) e getName()

Quindi:

Crea DefaultListModel aggiungi nomi al modello, quindi aggiungi modello all'elenco come questo

DefaultListModel model = new DefaultListModel ();
for(int i = 0; i< students.length; i++){
model.addElement(students[i].getName());
}
list.setModel(model);

Non l'ho testato, spero che tu abbia avuto l'idea.

    
risposta data 15.03.2013 - 16:20
fonte

Leggi altre domande sui tag