Implementazione semplificata e definitiva UML

Si parte da una specifica di progetto. Da questa vengono prodotti il diagramma UML delle classi dati, il diagramma dei comportamenti degli oggetti (stati e transizioni) e il diagramma delle attività.

Viene poi mostrata una implementazione semplificata, con il codice più semplice possibile che realizza la specifica. Non include i comportamenti paralleli degli oggetti e non garantisce la coerenza delle associazioni e la sincronizzazione delle modifiche dovute a comportamenti e attività. Non è accettata in sede di esame.

Vengono illustrate le soluzioni realizzabili in Java: gli oggetti gettone, gli oggetti unici e la sincronizzazione attraverso questi. Si conclude con l'implementazione definitiva, da produrre in sede di esame.

Specifica

testo

Diagrammi

diagramma dei dati (classi)

[classi.fig]

diagramma del comportamento (stati e transizioni)

[comportamento.fig]

diagramma delle attività

[attivita.fig]

Implementazione semplificata

implementazione dei dati

implementazione iniziale, non accettata in sede d'esame:
Autobus.java, Autista.java, Autorimessa.java, Dipendente.java, Meccanico.java, Officina.java
perchè non funziona

implementazione del comportamento
ogni messaggio che un oggetto della classe può ricevere è il nome di metodo della classe

implementazione iniziale, non accettata in sede d'esame:
Autobus.java
perchè non funziona

implementazione delle attività
ogni attività è un metodo; se viene svolta in un thread, è il metodo run() di un oggetto Runnable

implementazione iniziale, non accettata in sede d'esame
Main.java, VerificaPeriodica.java, VerificaRotture.java, Attesa.java
perchè non funziona

Implementazione definitiva

strumenti
coerenza delle associazioni
oggetti gettone
sincronismo delle attività
oggetti funtore, oggetti unici (singleton), accesso esclusivo ai dati
parallelismo dei comportamenti
oggetti concorrenti
invio e ricezione dei messaggi
coda di messaggi
implementazione
versione definitiva degli oggetti comuni e delle interfacce
dati: Autobus.java, Autorimessa.java, LinkPosizione.java ManagerPosizione.java Autista.java, Dipendente.java, Meccanico.java, Officina.java
comportamenti: Autobus.java AutobusFired.java Uscita.java Entrata.java Rottura.java
attività: Main.java, VerificaPeriodica.java, Periodica.java, VerificaRotture.java, Rotture.java, Attesa.java

Esercitazione

testo esercitazione
diagramma delle attività

[riparazione.fig]

diagramma del comportamento

[autista.fig]