Grazie per la risposta. Purtroppo faccio un po di confusione, visto che è il mio primo programma java che scrivo, e provenendo da un anno e mezzo di programmazione C, faccio fatica ad entrare nel meccanismo.
Le variabili di istanza sono quelle appartenenti alla singola classe, giusto? Avrei dovuto dichiarale come private? E per accedervi poi avrei dovuto creare i metodi getter e setter? (ho preferito dichiararle public per capire, inizialmente, come muovermi in Java)
Provo a postare il testo dell' esercizio, così è tutto più chiaro:
Gestione Ateneo
Progettare ed implementare un programma che possa gestire corsi, docenti e studenti di un ateneo. Tutte le classi deveono appartenere al pacakge university.
Il programma interagisce attraverso la classe University.
R1. Ateneo
La classe principale con cui interagire è University, che riceve come parametro del costruttore il nome dell'ateneo.
Il nome dell'ateneo è leggibile tramite il metodo getter getName().
È possibile definire il nome del rettore di un ateneo tramite il metodo setRector() che riceve come parametri nome e cognome del rettore.
Il metodo getter getRector() restituisce nome e cognome del rettore concatenati con uno spazio (" ") in mezzo.
R2. Studenti
È possibile inserire le informazioni relativa ad un nuovo studente tramite il metodo enroll() della classe University, che riceve come parametri il nome ed il cognome dello studente; il metodo reststituisce il numero di matricola che è stato assegnato allo studente.
I numeri di matricola vengono assegnati, in maniera progressiva per ogni ateneo a partire dal numero 10000.
Si assuma che ciascun ateneo non possa contenere più di 1000 studenti.
Per ottenere le informazioni relative ad uno studente si utilizza il metodo student() che riceve come parametro la matricola e restituisce una stringa composta da numero di matricola, nome e cognome separati da spazi.
R3. Insegnamenti
Per definire un nuovo insegnamento si utilizza il metodo activate() che riceve come parametri il titolo del corso e il nome del docente titolare. Il metodo restituisce un intero che corrisponde al codice del corso. I codici vengono assegnati progressivamente a partire da 10.
Si assuma che ciascun ateneo non possa attivare più di 50 insegnamenti.
Per conoscere le informazioni relative ad un corso si usa il metodo course() che riceve come parametro il codice del corso e resituisce una stringa contenente codice, titolo e titolare del corso.
R4. Iscritti agli insegnamenti
Gli studenti possono essere iscritti agli insegnamenti tramite il metodo register() che riceve come parametro la matricola dello studente ed il codice del corso a cui iscriverlo.
Si assuma che ciascuno studente non possa essere iscritto a più di 25 insegnamenti e che un insegnamento non possa avere più di 100 iscritti.
Per ottenere l'elenco degli iscritti ad un insegnamento è disponibile il metodo listAttendees() che riceve come parametro il codice dell'insegnamento e restituisce una stringa contenente l'elenco degli studenti iscritti.
Gli studenti compaiono uno per riga (le righe sono terminate da un a-capo "\n") secondo il formato descritto al punto R2.
Data la matricola di uno studente, tramite il metodo studyPlan(), è possibile conoscere l'elenco degli insegnamenti a cui è iscritto, gli insegnamenti sono descritti come al punto precedente.
codice:
package university;
public class University {
private String uniName,recName,recSurname,studName,studSurname,teacherName,titleCourse;
private int studMatr=10000,corsCode=10;
private static final int N_MAX_STUD=1000, N_MAX_CORSI=50, N_MAX_ISCRITTI=100;
public Studente[] StudVett=new Studente[N_MAX_STUD];
public Corso[] CourseVett=new Corso[N_MAX_CORSI];
public int matr=0,nCorso=0;
private int i=0;
public University(String name){
uniName=name;
}
public String getName(){
return uniName;
}
public void setRector(String first, String last){
recName=first;
recSurname=last;
}
public String getRector(){
return recName + " " + recSurname;
}
public int enroll(String first, String last){
StudVett[matr]=new Studente(matr,first,last);
matr++;
return matr-1+studMatr;
}
public String student(int id){
return StudVett[id-studMatr].name +" "+ StudVett[id-studMatr].surname;
}
public int activate(String title, String teacher){
CourseVett[nCorso]=new Corso(title, teacher);
nCorso++;
return nCorso-1+corsCode;
}
public String course(int code){
return code +": "+ CourseVett[code-corsCode].title + " " + CourseVett[code-corsCode].teacher;
}
public void register(int studentID, int courseCode){
CourseVett[courseCode].addStudent[]= new Studente(studentID);
}
public String listAttendees(int courseCode){
//TODO: to be implemented
return null;
}
public String studyPlan(int studentID){
//TODO: to be implemented
return null;
}
}
codice:
package university;
public class Studente {
private static final int N_MAX_C_STUD = 25;
private String name,surname;
private int matricola,codCorso;
private Corso[] addCourse=new Corso[N_MAX_C_STUD];
private int numCorso=0;
public Studente(int matricola,String name, String surname){
this.name=name;
this.surname=surname;
this.matricola=matricola;
}
public Studente(int matricola){
this.matricola=matricola;
}
public void CourseStudent(int matricola, int codCorso){
}
}
codice:
package university;
public class Corso {
private String teacher,title;
private static final int N_MAX_S_CORS = 100;
private Studente[] addStudent=new Studente[N_MAX_S_CORS];
private int idStudent, corsoCod;
private int numStud=0;
public Corso(int idStudent, int corsoCod){
this.idStudent=idStudent;
this.corsoCod=corsoCod;
}
public Corso(String title, String teacher){
this.title=title;
this.teacher=teacher;
}
public void StudentiCorso(int matricola, int corso){
numStud++;
}
}
Credo che i primi tre punti, più o meno, vanno abbastanza bene.
Ora dovrei creare questi array, il primo, quello dei corsi, che contenga la lista degli studenti iscritti;
Il secondo, quello degli studenti, che contenga una lista dei corsi a cui ogni studente è iscritto.
Grazie mille per la pazienza