Esercitazione (week 1)

Compilare ed eseguire un semplice programma (ad es. Helloworld fatto a lezione) usando il compilatore e interpreta Java da linea di comando Dos (comandi javac, java) Ripetere usando Eclipse.
Completare le classi Java fornite, per gestire un insieme di studenti. Ogni studente e' caratterizzato da un nome (stringa), un cognome (stringa), una matricola (intero), e da una media (reale).

La gestione studenti deve fornire le seguenti funzionalita':

In prima approssimazione l'insieme si puo' realizzare con una lista.

Usare la gestione studenti per:

  1. Creare un insieme vuoto
  2. Inserire tre studenti
  1. Aggiornare la media di Anna a 28.3
  2. Stampare le informazioni di Luca
  3. Stampare tutto l'insieme


Per sviluppare un programma e' bene seguire un approccio incrementale, ovvero scrivere una classe, testarla in modo indipendente, integrarla con le altre. Questo approccio e' piu' efficace dell'approccio 'big bang', in cui si scrivono tutte le classi e si testano in una fase sola. In concreto i passi da seguire in questo caso sono:

Scrivere la classe Student in un file. Il nome del file deve essere uguale al nome della classe. Compilare la classe.

Scrivere un main(), all'interno di una classe Prova, che usa la classe Student. Ad esempio definire due istanze di Student, s1 e s2, chiamare il costruttore, stampare s1 e s2.

Scrivere la classe StudentSet in un altro file. Compilare la classe.

Scrivere la classe Manager (vedi sotto), ovvero un main che usa sia Student che StudentSet. Compilare e testare il programma completo.
 
 

Dal punto di vista del linguaggio Java, si consiglia questa progressione:
  1. Scrivere la prima versione del programma senza package, senza modificatori private e public
  2. Rendere tutti gli attributi private
  3. Definire due package, uno con le classi Student e StudentSet, l'altro con Manager.

Scheletro delle classi da completare:

package it.polito.lab1;

class Student{

/*
 * ATTRIBUTI
 */

 String nome; //nome
 String cognome; //cognome
  int code; //matricola
 double mark; //media

 Student next = null; //successivo nella lista

/*
 * METODI
 */

  //costruttore
  public Student(String first, String last, int code, double mark){
           }

  //setters
  void setMark(double mark){   this.mark = mark}
   //     s1.setmark --> s1== this
   //    s3.setmark --> this == s3
  void setNext(Student s){   }

  //getters
  int getCode(){}
  Student getNext(){}

  //stampa
  void print(){}

  //attacca un nuovo studente a "next"
  void append(Student s){} 
}


class StudentSet{


/*
 * ATTRIBUTI
 */

  private Student head = null; //primo elem della lista

/*
 * METODI
 */

  //funzionalita'
  public void add(Student s){
     

   }

  public boolean update(int code, double newMark){}

  public void print(int code){}

  public void print(){



}
}

Programma di prova:

package it.polito.lab1.test;
import it.polito.lab1.*;

public class Manager{

  public static void main(String args[]){

    StudentSet ss = new StudentSet();

    ss.add(new Student("Mario", "Rossi", 254, 27.5));
    ss.add(new Student("Luca", "Bianchi", 9876, 20.9));
    ss.add(new Student("Anna", "Verdi", 7546, 28.0));

    ss.update(7546, 28.3);
    ss.print(9876);
    ss.print();
  }
}