Professional Documents
Culture Documents
(rappresentanti lo stato dell’entità) fatto in modo che la modifica dello stato sia
possibile tramite l’uso dei metodi di interfaccia fornita dall’incapsulamento.
Classe Class: quando caricata in memoria una classe è istanza della classe
Class di cui acquisisce i metodi. Metodi di class:
-static class forName(String className) (restituisce oggetto class associato
a className)
-metodi per l’individuazione delle relazioni della classe con le classi interne,
con la sovraclasse e con le interfacce implementate.
-metodi per individuazione campi pubblici e metodi pubblici inclusi quelli
ereditati.
Rifermimenti a oggetti class ottenibili con forName o con IdenCl.class.
Contenitori: nei contenitori vengono inseriti gli handle degli oggetti. Questo fa
sì che si perda informazione sul tipo delle componenti del contenitore e
diventa quindi necessario il casting in fase di estrazione degli oggetti
componenti. Si può ottenere maggiore protezione con il controllo di tipo in
fase di immissione degli oggetti componenti nel contenitore. Il Controllo sul
corretto inserimento di oggetti nel contenitore può avvenire:
- in COMPILAZIONE: generando una classe non derivata dal contenitore di
interesse in cui vengono riscritti i metodi di inserimento e rimozione del
contenitore riferiti alla tipologia di oggetti inseribili;
- in ESECUZIONE: verificando con istanceof che l’oggetto in inserimento sia
del tipo richiesto.
Stack: struttura dati gestita con metodo LIFO, push (inserimento) pop
(rimozione) top (restituzione elemento in testa). Può essere simulato da una
LinkedList sfruttando addLast(…), getLast(), removeLast().
Queue: struttura dati gestita con metodo FIFO, push (inserimento in ultima),
tail (rimozione dato, contrazione coda), head (acquisizione dato). Usa
addLast(…), getFirst(), removeFirst().
Daemon: thread che opera in background per fornire servizi d’uso generale e
che non influisce sulla terminazione del programma (un programma termina
quando terminano tutti i thread non demoni dipendenti). Proprietà dei demoni:
deve essere dichiarato tale prima dell’attivazione; i thread generati da un
demone sono implicitamente demoni.
Thread bloccati: un thread può portarsi nello stato bloccato per : 1) chiamata
al metodo sleep(); 2) attesa del completamento di un’operazione di I/O; 3)
accesso ad un metodo o a un blocco synchronized con mutex non disponibile;
4) chiamata al metodo wait() (ritorna runnable per intercettazione di notify() o
notifyAll().