Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
I/O: FILES AND STREAMS
I/O da file: leggere i dati da un file testuale che li elenca uno per riga.
Leggere:
- Apri file;
- Leggi un "data item";
- WHILE not EndOfFile DO
- Processa il data item
- Leggi il prossimo data item
- END WHILE
- Chiudi file
Scrivere:
- Apri il file in scrittura
- WHILE ci sono dati da scrivere DO
- Scrivi il prossimo dato
- END WHILE
- Chiudi il file
- Se il file esiste, lo sovrascrive. Se non esiste, lo crea.
Scanner: Scanner s = new Scanner(new File("nomefile"));
FileNotFoundException
Metodo next(): restituisce un token separato da delimitatori che possono essere scartati con:
- useDelimiter: scan.useDelimiter("\\s*fish\\*")
- classe StringTokenizer (prende in input, nomeStringa e delimitatore):
- metodo split(): ritorna un array di tokens
Classe file:
- exists()
- canRead()
PrintWriter: PrintWriter writer = new PrintWriter("nomeFile"); (se non esiste viene creato, se si vuole mettere in coda si passa nomeFile, true).
Non ha print
Si crea un oggetto PrintWriter che incapsula l'oggetto FileWriter: ```java FileWriter writer = new FileWriter("file.txt", true); PrintWriter pw = new PrintWriter(writer); pw.println("ciao"); pw.close(); ``` Eccezioni (gestite dal main): - FileNotFoundException (se non esiste); - IOException (dal close di FileReader) - BadDataException (se formato sbagliato) 31. EREDITARIETA' Ereditarietà = relazione IS-A tra una superclasse e una sottoclasse (definita con "extends", si specifica solo il codice che differisce dalla classe genitore). Ogni classe può avere a sua volta sottoclassi così da avere una gerarchia. Ogni attributo della superclasse lo è anche della sottoclasse quindi non bisogna ridichiararli. Regole: - Attributo public: accessibile da ogni classe; - Attributo private: accessibile dalla classe che lo contiene; - Attributo protected: accessibile da classi dello stesso package e dalle sottoclassi. - Default: stesso package.Ogni sottoclasse deve dichiarare i costruttori (si può richiamare quello della classe genitore con "super(variabili da passare)" e deve essere la prima istruzione)
Metodi public e protected ereditati automaticamente.
Overridden: posson essere ridefiniti invocando se necessario super.
32. POLIMORFISMO
Polimorfismo = distinto in:
- Ad hoc: un'operazione con lo stesso nome si comporta seconda del tipo/numero dei parametri (overloading, +);
- Parametrico: uno o più tipi specificati come parametri anziché fissati;
- Per inclusione: ogni operazione definita su oggetti di una classe A deve funzionare su qualsiasi oggetto della sua sottoclasse B
Es:BankAccount bob = new BankAccount(123, "Bob", 345.50)
JointBackAccount bobMary = new JoinBankAccount(345, "Bob", "Mar", 450.99)
Si scrive come:BankAccount ellenFrank = new JointBankAccount(456, "Ellen", "Frank", 3450.99);
Può essere utile
Utilizzare i cast. Esempio: JointBankAccount ha un metodo getJoinName allora: String jointName = ((JoinBankAccount)ellenFrank).getJointName(); Si parla di "object amnesia".
Metodi polimorfi: quando una sottoclasse sovrascrive un metodo della classe antenata
Overloading: metodi con stesso nome ma parametri diversi
Overriding: Inbirire la ridefinzione di un metodo con final.
Upcast: assegnare ad un oggetto della superclasse un oggetto della sottoclasse
Downcast: convertire una superclasse in sottoclasse
33. CLASSI ASTRATTE
Classi astratte quando non ha senso definire quel determinato oggetto: se una classe dichiara almeno un metodo astratto allora si parla di "classe astratta"; Una classe astratta è un tipo di dato che offre almeno una funzionalità generica che "ha senso" per sottoclassi concrete.
Sottoclassi devono implementare metodi astratti
Keyword "abstract":
Public abstract class nomeClasse{}
Abstract public tipo nomeMetodo();
34. INTERFACCE
- Interfacce: entità che possono essere implementate da diverse classi
- Public interface nome (solitamente inizia con "I");
- Keyword "interface"
- Contiene le intestazioni dei metodi pubblici, definisce costanti pubbliche. Contiene solo prototipi e non implementazioni.
- Non ha costruttori
- Una classe non può estendere più di un'altra classe ma può implementare più interfacce
- Si possono aggiungere metodi
- Esempi:
- Interface Set<E>
- Interface Comparable<T>
- Public int compareTo(object x)
35. GENERICS
- Le classi possono operare su tipi parametrizzati rispetto ad un tipo generico;
- Classe generica:
- Classname<T> dove T è un tipo utilizzabile nella classe e nei suoi metodi
- Classe può avere più tipi parametrici: Classname<T, B>
- Possono estendere una classe o una o più interfacce:
- public class Coppia<T>
public class Coppia<A extends Person & Comparable, B extends Animal & Misurable>
Prima parte legale, seconda illegale:
- T obj (legale) = new T();
(illegale)
- T[] arr (legale) = new T[10];
(illegale)
Si puo’:
- Coppia<Integer> coppia = new Coppia<>();
- Coppia<Integer> coppia = new Coppia<Integer>();
36. COLLEZIONI
Collezione: classe che contiene un gruppo di oggetti.
Interfaccia List<E>
: definisce lista ordinata di oggetti (può avere duplicati). Estende Collection<E>
- Metodi:
- Boolean containsAll(Collection<?> c);
- Boolean add(E e);
- Void add(int index, E element)
- …
- Arrays.asList()
trasforma ciò che gli passi in una lista.
ArrayList
: dati memorizzati in un vetto dinamico di cui si può settare la capacità iniziale e che viene ridimensionato a run-time. Classe implementata tramite un vettore che è ridimensionato duranteL'esecuzione del programma.
Vector
LinkedList: dati memorizzati in una lista bidirezionale.
Scandire elementi lista:
For: for (int i = 0; i < nomelista.size(); i++) somma = somma + nomelista.get(i);
For-each: for (Tipo i : nomecollezione) somma = somma + i;
Iteratore: oggetto che rappresenta un cursore con cui scandire una collezione di oggetti.
Interfaccia Iterator<E> (deriva da Colletion), metodi:
- Import java.util.Iterator;
- Boolean hasNext(); (verifica se c'è un altro elemento su cui iterare)
- E next(); (elemento successivo)
- Iterator<tipo> nomecollezione = tipo.iterator(); (VA IMPORTATOjava.util.Iterator)
- ListIterator<E> permette, a differenza di iterator, di attraversare la lista in entrambe le direzioni(hasPrevious() e previous()) e aggiungere e sostituire l'elemento corrente(add())
Passi ListIterator<Integer> it = A.listIterator(li.size());
Interfaccia Iterable ha un metodo iterator() che resitutisce un iteratore
LISTE,
E PILE:
Pile: LIFO
Queue: come in una coda, si aggiunge alla fine e si esce dalla testa (FIFO)
import java.util.ArrayDeque;
import java.util.Deque;
Interfaccia Deque<E>: definisce una coda ordinata con oggetti su cui si possono fare operazioni sia in testa che in coda (si possono avere duplicati): IMMAGINA UNA PILA CON ADD E POP
Estende Queue<E>, metodi:
- boolean containsAll(Collection c);
- boolean add(E e);
- boolean addLast(E element); //coda
- E removeLast(); //coda
Implementata da:
- LinkedList
- ArrayDeque
Es: ArrayDeque queue = new ArrayDeque();
LinkedList listqueue = new LinkedList(); IMMAGINA UNA CODA CON ADDFIRST ADDLAST
INSIEME (SET): collezione di elementi distinti dello stesso tipo
Metodi interfaccia:
- public boolean contains(T x);
- public void insert(T x);
- public void remove(T x);
- public Set union(Set B);
- public Set intersect(Set B);
- public Set difference(Set B);
TreeSet (ordinato)
HashSet
DIZIONARI: insieme di associazioni chiave-valore.
Si può ottenere valore associato Inserire nuova associazione Interfaccia Mapledirectory nel classpath
- JAR (Java Archive): archivi di classi e risorse collegate da riusare in altri programmi
- Gestiti con .jar
- Se più librerie: nomi separati dai ":"
38. JAVA FX
- GUI: parte di programma che interagisce con l'utente tramite elementi grafici. La sua programmazione si basa su una gestione degli eventi.
- Evento: azione dell'utente sull'interfaccia. Programmazione in cui il programmatore non sa l'ordine in cui saranno eseguite le varie parti.
- Source: oggetto che genera eventi e notifica l'evento ai Listener registrati
- Listener: oggetto che viene notificato quando si acatena l'evento
- Handler: oggetto che esegue azioni per gestire l'evento
- Design pattern: soluzione progettuale generale ad un problema ricorrente
- Funzioni di callback: gestiscono il comportamento e i parametri degli observer (gestiscono)
- Java FX (e i predecessori AWT e Swing) permette di creare GUI basate su un set predefinito
di oggettigrafici ed eventi di diversa complessità. Un'applicazione JavaFX estende la classe javafx.application.Application.
La classe espone un metodo astratto eseguito al lancio dell'applicazione:
public void start(Stage primaryStage)
Il parametro primaryStage
indica lo Stage (palcoscenico) su cui si svilupperà l'intera applicazione organizzata in Scene (scene).
Ogni app