|
||
Scuola è la classe principale, che costituisce il
cuore dell'architettura: infatti il punto di partenza per ogni esempio e test
case presentato è un oggetto di tipo Scuola che funge da
contenitore per tutti gli altri oggetti istanziati dall'utente.
Questa classe modella la scuola vera e propria, intesa come collezione
di sezioni (A, B, C..), a loro volta le sezioni sono costituite da
classi (I, II, III..). Ciascuna Classe contiene istanze di oggetti
diversi, in particolare gli alunni iscritti, i professori che vi
insegnano e un registro che permette di ottenere l'elenco delle presenze
in ordine alfabetico.
Ognuna di queste classi ha dei metodi per aggiungere/rimuovere elementi
alle collezioni, in questo modo risulta possibile creare o eliminare
nuove sezioni e nuove classi dalla scuola e gestire gli alunni di
ciascuna classe.
Scuola scuola = new Scuola("Liceo Scientifico Belfiore"); Sezione pni = new Sezione("A","Piano nazionale informatico"); Sezione bilinguismo = new Sezione("B","Sperimentazione inglese-spagnolo"); scuola.aggiungiSezione(pni);
scuola.aggiungiSezione(bilinguismo);
Classe primaA = new Classe(1);
Classe secondaA = new Classe(2);
pni.aggiungiClasse(primaA);
pni.aggiungiClasse(secondaA);
Persona è super
classe di Studente e di Professore.
All'esterno del package scuola non è possibile istanziare direttamente oggetti di tipo Studente e
Professore, ma per farlo bisogna passare attraverso l'oggetto Segreteria che svolte il ruolo di factory e
permette di assegnare matricole univoche agli studenti e ai professori.
GregorianCalendar calendar = new GregorianCalendar(1982,2,22);
Persona luigi = new Persona("Luigi", "Malagò", calendar.getTime(),"LGMLG32E65ZXE"); Persona mario = new Persona("Paolo", "Verdi", calendar.getTime(),"PLVRD54E78E0C"); Studente studLuigi = segreteria.iscriviStudente(luigi);
Studente studMario = segreteria.iscriviStudente(mario);
Segreteria è una sorta di contenitore per le funzionalità
più specifiche relative alla gestione dei professori e degli studenti. Per
poter inserire una persona in una classe, o associare una persona come
professore di una data materia è necessario prima passare per la
Segreteria: bisogna registrare lo studente o il professore e
creare a partire da un oggetto Persona rispettivamente oggetti di
tipo Studente o Professore.
GestioneStudenti e GestioneProfessori sono le classi che in dettaglio
si occupano di gestire l'elenco dei professori e degli alunni iscritti alla scuola, questi oggetti
sono contenuti all'interno della Segreteria che li maschera all'utente finale.
Persona andrea = new Persona("Andrea","Rossi", calendar.getTime(),"RSSPL51WLD0EW"); Professore profAndrea = segreteria.assumiProfessore(andrea);
Materia italiano = new Materia("italiano","letteratura italiana"); profAndrea.aggiungiMateria(italiano);
profAndrea.aggiungiClasse(primaA);
ConsiglioDiClasse si occupa della promozione/bocciatura a fine anno dei vari alunni.
Rispetto alla classe Segreteria si colloca ad un livello di astrazione più alto, in quanto implementa
funzioni di granularità maggiore, combinando le funzionalità di base della Segreteria e di ciascuna Classe.
// questi esempi che riguardano il ConsiglioDiClasse mostrano le operazioni di
// bocciatura e di promozione a fine anno che coinvolgono eliminazione e
// inserimento di alunni in nuove classi
ConsiglioDiClasse consiglio1A = primaA.getConsiglioDiClasse();
consiglio1A.bocciaStudente(studMario);
consiglio1A.promuoviStudente(studLuigi,secondaA);
ConsiglioDiClasse consiglio1B = primaB.getConsiglioDiClasse();
consiglio1B.bocciaStudente(studAnna,primaA);
ConsiglioDiClasse consiglio5B = quintaB.getConsiglioDiClasse();
consiglio5B.diplomaStudente(studPaolo);
// questi esempi a differenza di quello che avviene col ConsiglioDiClasse
// mostrano aggiunta e rimozioni di studenti non a causa di promozioni o bocciature
// ma a causa di ritiri o arrivo di nuovi studenti durante l'anno
primaA.aggiungiStudente(studLuigi);
primaA.rimuoviStudente(studLuigi.getMatricola());
Materia costituiscono le materie che vengono insegnate da ciascun professore.
Per ogni materia è possibile ricavare i professori che la insegnano, così come per ogni professore è
possibile ricavare le materie che questo insegna.
Figura 2: TestCase
System.out.println("---Appello del giorno---"); ArrayList elenco = primaA.appello();
for (int i=0;i<elenco.size();i++) { System.out.println((i+1) + ". " + ((Studente)elenco.get(i)).toString());
}
---Appello del giorno--- 1. Bianchi Anna 2. Malagò Luigi 3. Moroni Paolo 4. Verdi Paolo