Progetti in Java - a.a. 2005-06

Valutazione di espressioni in notazione infissa
Definizioni di classi:
Evaluator
ExpScanner (interfaccia)
Stack
EvalStack
StackItem
Term
Infix
Parenthesis
Check
appunti
Valutazione di espressioni e applicazione dell'eredità
Definizioni di classi:
Value
Plus
Minus
Times
Quotient
OpenParenthesis
CloseParenthesis
StackException
ScanException
Check
appunti
Analisi sintattica e interpretazione del testo di un'espressione
Definizioni di classi:
ExpTokenizer
Interpretation
NumericInterpretation
Check
appunti
Semplice interfaccia grafica utente
Definizioni di classi:
UserFrame
Device
UserApplet
codice html
Altri tipi di elaborazione di espressioni e polimorfismo
Definizioni di classi:
Code
Add
Sub
Mul
Div
CodeInterpretation
appunti
  Raffinamento dell'analisi sintattica
Revisione delle classi:
ExpTokenizer
Evaluator

Altri progetti in Java - a.a. 2002-03

Forme dell'ereditarietà:
specializzazione, specifica, estensione
Esempi relativi alle code ed a strutture derivate:
Main
BasicQueue
Observable
Queue
PriorityQueue
SearchQueue
Forme dell'ereditarietà:
costruzione
Esempio di uso improprio dell'ereditarietà:
BasicQueue
Observable
Queue
Forme dell'ereditarietà:
composizione
Variante che fa un uso proprio dell'ereditarietà:
BasicQueue
Observable
Queue
Assegnazione e confronto di oggetti:
Assignment
Something
Soluzione eccentrica del gioco della torre di Hanoi
(thread, pattern "Observer" e applet)
Definizioni di classi:
Towers
Players
TowersView
MoveCounter
HanoiApplet
codice HTML
Duplicazione di un file di testo
(Input/Output in Java e pattern "Decorator")
Programma:
FileCopy
Ricapitolazione dei meccanismi alla base del polimorfismo e di attivazione dei costruttori
Definizioni di classi:
Mammifero
Felino
Gatto
Polymorphism

Ulteriori esempi (parte facoltativa)

Gioco delle N regine:
il giocatore può cercare una soluzione (selezionando gli scacchi per disporre o rimuovere regine) oppure può richiedere la soluzione automatica (completamento della configurazione introdotta, se possibile)
L'esempio applica il pattern "Decorator" e le operazioni per visualizzare immagini
Definizioni di classi:
Chessboard
SimpleBoard
EnrichedBoard
QueensSolver
ChessboardView
SquareView
BoardFrame
WooddenItem
Queens
Immagini:

Le istanze della classe "EnrichedBoard" sono "decorator" o "wrapper" delle istanze di "SimpleBoard"; nell'esempio, lo stato della scacchiera, rappresentato da un SimpleBoard, viene dinamicamente inglobato in oggetti EnrichedBoard che aggiungono struttura e protocollo utili alla risoluzione automatica, ma non servono nel caso di interazioni da parte di un giocatore. Naturalmente, l'intento è solo quello di evocare il possibile uso del modello di progetto "Decorator", effettivamente utile in casi più complessi

Esempi proposti nei precedenti anni accademici

Programma per visualizzare un orologio
(esempio introduttivo):
Clock
Rompicapo del Quindici
(progetto object oriented)
Definizioni di classi:
Puzzle
Board
Piece
PuzzleFrame
BoardView
PieceView
Elaborazioni di espressioni
(progetto object oriented e uso del polimorfismo per la condivisione di codice ad alto livello)
Definizioni di classi e interfacce:
Expressions
ExprFrame
Parser
ParserEngine
ExecEngine
ExprCalculator
ExprTreeBuilder
ExprTranslator
Stack
Tree
Item
NumberItem
VariableItem
OperatorItem
StructureItem
CodeItem
ExprException
StackException
ExprEvaluator
Polimorfismo e risoluzione dinamica del metodo invocato
(vedi anche le inizializzazioni attraverso i costruttori):
Polymorphism
Father
Child
Grandchild
Visualizzazione di algoritmi che operano su vettori
(esempi di uso delle componenti AWT di Java)
Definizioni di classi:
VectorView
TryVectorView
Applet per una soluzione "multithread" del gioco della torre di Hanoi
(Thread, Applet e pattern "Strategy")
Definizioni di classi:
HanoiApplet
Strategy
MultiPlayer
StackPlayer
Task
Towers
Il programma deve essere completato con la classe "RecursivePlayer" e con le classi relative allo stack (riutilizzo del codice!) gia' introdotte nel programma che opera su espressioni

Package Java

Emulatore di terminale per l'input/output testuale:
console.jar
(materiale didattico reso disponibile da David Eck);
Vedi anche la nota esplicativa e un semplice esempio di applicazione