Categorie
Winzipedia Uso dell'wiki |
SoluzioneVisitorPrimoCompitinoInformatica3.SoluzioneVisitorPrimoCompitino VersioniNascondi le modifiche minori - Mostra le modifiche Modificate le linee 2-3: da:
''' a:
'''Autore:''' [[Profiles.Francesco|Francesco Gianni]] Modificate le linee 2-3: da:
'''Autori:''' [[Profiles.Francesco|Francesco Gianni]] a:
'''Autori:''' [[Profiles.Francesco|Francesco Gianni]] 24/06/2006 ore 13:45 CEST
di - Modifica del sommario
Modificate le linee 3-4: da:
a:
Modificate le linee 5-8: da:
*[-Codice JAVA commentato-] *[-Conclusioni a:
->[-Soluzione dell'esercizio sul patter ''Visitor'' proposto nel primo compitino di '''Informatica 3''' dell'anno accademico 2005/06.-] Aggiunte le linee 1-121:
!Soluzione esercizio sul Pattern Visitor, primo compitino 2006 '''Autori:''' [[Profiles.Francesco|Francesco Gianni]]\\ '''Hanno contribuito:''' ->'''Sommario''' *[-Introduzione all'esercizio-] *[-Codice JAVA commentato-] *[-Conclusioni-] !!Introduzione Testo dell'esercizio proposto nel compitino: !!!Esercizio 4 !!Codice JAVA commentato !!!Interfaccia {+Visitor+} public interface Visitor <T> { public T visit(Aula a); //metodo definito generico sul tipo che restituisce infatti la classe //Direttore, che implementa Visitor, restituisce un Integer (vedere Direttore) } !!!Interfaccia {+Visitable+} public interface Visitable { public void accept(Visitor v); } !!!Classe astratta {+Aula+} public abstract class Aula implements Visitable{ private int posti = 0; private String name = "Aula"; public void accept(Visitor v){ v.visit(this); } public int getPosti() { return posti; } public void setPosti(int posti) { this.posti = posti; } public String getName(){ return this.name; } } !!!Classe {+Laboratorio+} public class Laboratorio extends Aula { private String name = "Laboratorio"; public String getName() { return name; } } !!!Classe {+AulaMagna+} public class AulaMagna extends Aula{ private String name = "Magna"; public String getName() { return name; } } !!!Classe {+Direttore+} public class Direttore implements Visitor{ public Integer visit(Aula a) { System.out.println("Visiting... " + a.getName() + " posti: " + a.getPosti()); return a.getPosti(); } } !!!Classe {+Main+} public class Main { public static void main(String[] args) { Aula la = new Laboratorio(); //creo un laboratorio Aula ma = new AulaMagna(); //creo un aula magna la.setPosti(3); //setto a 3 il numero di posti del laboratorio ma.setPosti(23); //setto a 23 il numero di posti dell'aula magna Visitor d = new Direttore(); //creo un oggetto che implementa il Visitor (Direttore) d.visit(la); //usando il metodo implementato da Direttore d.visit(ma); //visito il laboratorio e l'aula magna la.setPosti(42); //cambio il numero di posti del laboratorio la.accept(d); //visito laboratorio usando il suo metodo accept(Visitor v) } //invece che usare il metodo visit del Direttore //risultato identico } !!!Output del programma Visiting... Laboratorio posti: 3 Visiting... Magna posti: 23 Visiting... Laboratorio posti: 42 !!Conclusioni |