Riassunti PDS
Introduzione.
Unità 1: Java concettuale
Generalità
A Java-1 concettuale. Generalità. Modulo: ogni unità o modulo deve corrispondere ad un'alta coesione e deve incorporare.
- Alta coesione: tutti gli aspetti relativi a tale modulo.
- Basso accoppiamento: una unità deve comunicare e scambiare il meno possibile informazioni con altri moduli.
- Interfacciamento chiaro ed esplicito: comunicazione.
- Information hiding: informazioni private che devono essere scambiate non devono essere nella classe.
Esempio di compilazione ed esecuzione
Esempio: compilare il file. Deve compilarlo ed eseguire Java. Il programma deve avere un nome, per esempio con terminale da scrivo: "javac Esempio.java" e per eseguirlo "java Esempio". Il file crea un class.
Un programma è un insieme di classi.
Static e main
Static oggetto f-1 f. Il static vuol dire che la funzione non è applicata ad un oggetto, ad esempio public static void.
Main: si scrive public static void main(String[] args).
Stampa e input
Stampa: la funzione System.out.println stampa a schermo, poiché andando a schermo si usa println per stampare e andare a capo.
Scanner: tipi. Scanner terminale, chiedendo input da stringa scanner system. Si scrive: Scanner x = new Scanner(System.in); nextLine.
JOptionPane: chiedendo stringa input aprendo una finestra. Si scrive: input = JOptionPane.showInputDialog("..."). Bisogna importare javax.swing.*.
StringTokenizer: salva una stringa data in più variabili. Serve per tokenizer, per esempio new StringTokenizer("..."). int, double, Integer. nextToken(); Integer.parseInt(...); Double.parseDouble(...). Intero Double, cast, casta a.
Unità 2: classi e oggetti
Classi, campi e metodi
Classi e oggetti: classi caratterizzate da dati, ovvero le variabili che servono a rappresentare i campi, nome e setter.
Le funzioni definiscono operazioni da effettuare sugli oggetti e sui campi. Possiamo usare modificatori public o private.
Si creano oggetti della classe. I metodi sono funzioni di tipo pubblico. Essi possono creare e usare variabili, nome.
Oggetti e memoria
Oggetti: la variabile di riferimento all'oggetto contiene un riferimento a tipo oggetto. Possiamo creare solo alloca memoria, non staticamente ma dinamicamente, nel tempo di compilazione, stack, identificatori degli oggetti, qui vanno gli oggetti.
Tutti gli oggetti creati con il comando new vanno nell'heap nel tempo di esecuzione.
La deallocazione di oggetti nell'heap è effettuata in modo automatico dal garbage collector, quando non sono più presenti riferimenti allo stesso oggetto.
Unità 3: campi, overloading e costruttori
Campi public e private
Campi public: public indica che il campo è visibile ai clienti della classe. I campi e le funzionalità rappresentano l'interfaccia pubblica della classe, di interesse per i clienti della classe.
Private: private indica che il campo non è visibile all'esterno della classe. I campi sono dati della classe e le funzioni ausiliarie.
Overbooking o overloading
Overbooking Java: Java permette di avere più funzioni con lo stesso nome, ma distinguibili per numero e tipo dei parametri.
Costruttori
Costruttori: il costruttore ha il nome della classe. Serve per inizializzare, ma non ritorna nulla.
Può essere invocato esclusivamente con new. I campi di una classe, con una istruzione new.
Esempio Persona: Persona Simone = new Persona("Simone"); l'oggetto Persona viene allocato nell'heap, mentre nello stack il riferimento p punta al nome, come un puntatore.
Anche per i costruttori è ammesso l'overbooking.
Unità 4: this
This: può essere usato solo nelle funzioni di istanza per denotare l'oggetto di invocazione. Può anche essere omesso: lo mette il compilatore.
Unità 5: package
Package: ogni classe appartiene ad un solo package, ma in un package vi possono essere più classi.
Si possono importare le classi anche per usare classi all'interno del proprio package o di un altro package.
Non è un buon modo definire dei sotto package modularizzati.
Unità 6: derivazione
Dichiarazione
Derivazione: extends tra classi. Dichiaro una classe D dicendo: public class D extends B. La classe B è la classe base, la classe D è la classe derivata.
Principi fondamentali
La derivazione ha principi fondamentali:
- La classe derivata ha tutte le proprietà che ha la classe base: le eredita.
- La classe derivata può avere anche ulteriori proprietà.
- Ogni oggetto della classe derivata è anche un oggetto della classe base.
- Non è vera quella fase inversa: studente è una persona, ma una persona non è per forza uno studente.
Ogni classe derivata ha una sola classe base, ma una classe base può avere infinite classi derivate.
Si possono fare facilmente casting, responsabilità del programmatore: per esempio B b = (B) d. Possono dare errori di compilazione, ma non errori a run time.
Protected e costruttori
Protected: è possibile l'accesso ai campi alle classi derivate, ma non ai clienti generici.
Costruttori delle classi derivate: la prima istruzione eseguibile nel costruttore della classe derivata deve essere super(), cioè chiamare il costruttore della classe base. Se non lo metto, lo mette il compilatore. Serve per costruire.
This(): è un'invocazione esplicita a un altro costruttore della stessa classe.
Unità 7: overriding e classi astratte
Overriding
Overriding: si può ridefinire una funzione della classe base nella derivata usando stesso nome e stessi parametri. Per usare quella della classe base dovremo usare super.
Late binding: in caso di overriding, il metodo giusto da utilizzare viene individuato a runtime in base all'oggetto di invocazione. Tale processo viene eseguito.
Classi astratte
Classi astratte: sono classi che non possono avere proprie istanze, non possono chiamare il new.
Le loro funzioni dichiarate astratte sono senza corpo. Le classi concrete devono fare overriding di queste funzioni, altrimenti sono inutili.
Esempio: classe astratta Figura con funzione perimetro. Ciascuna figura fa overriding di perimetro, perché la funzione calcola figure diverse. Perimetro su ogni figura: altrimenti servirebbero infinite funzioni di numero a seconda della figura.
Unità 8: interfacce e Object
Interfacce
Interfacce: sintatticamente è simile ad una classe, ma al suo interno non vi possono stare dati; possono stare solo funzioni, tutte implicite public e astratte, e costanti statiche.
Possiamo costruire funzioni confrontabili con classi che usano l'interfaccia implementandola.
Una classe può implementare più interfacce. Un'interfaccia può essere derivata da un'altra interfaccia.
Classe Object
Object: tutte le classi sono implicitamente derivate dalla classe Object, ereditandone le funzioni.
- toString(): trasforma un oggetto in una stringa. Si può fare overriding.
- equals(): verifica se oggetti sono uguali.
- getClass(): restituisce la classe a cui appartiene un oggetto.
- hashCode(): restituisce il codice hash.
- clone(): prende un oggetto e ne copia uno.
Classe Class
Classe Class: oggetti di tipo Class generati a runtime, i costruttori non sono accessibili ai clienti.
Ha la funzione isInstance(Object o): restituisce true se o è un'istanza della classe. Si può usare anche nell'invocazione su class; si scrive Ogg.getClass().isInstance(...).
Instanceof: nome oggetto instanceof nome classe.
Array e matrici
Array
Array: sono una collezione di elementi indicizzati dello stesso tipo. Contengono degli oggetti.
Una variabile di tipo array contiene un riferimento ad un oggetto array.
Dichiarazione: tipo[] nomeArray. Creazione: nomeArray = new tipo[dimensione]. length dà la dimensione dell'array.
Arrays.sort(nomeArray) ordina l'array. Per accedere all'indice dell'array: nomeArray[indice].
Arrays.toString(nomeArray) restituisce una rappresentazione stringa dell'array.
Ciclo for: for (int i = 0; i < length; i++). Ciclo for migliorato: for (tipo elemento : array) posso scrivere e accedere direttamente agli elementi dell'array.
Matrici
Matrici: tipo[][] nomeMat. Creazione: nomeMat = new tipo[righe][colonne]. Accesso: nomeMat[i][j].
length: nomeMat.length restituisce il numero di righe; nomeMat[0].length restituisce il numero di colonne.
Scansione con ciclo for migliorato: for (tipo[] row : nomeMat) e poi for (tipo elemento : row).
Eccezioni
Throwable: è la superclasse di tutti gli errori, si trova nel package java.lang.
Ha due sottoclassi:
- Error: errori fatali che non sarebbero gestiti dai programmi.
- Exception: errori che rientrano nei programmi e sono gestibili, ovvero non Error.
Eccezioni: sono eventi che interrompono la normale esecuzione di un programma.
Se si verifica un'eccezione, il metodo trasferisce il controllo al gestore delle eccezioni.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Riassunti esame Programmazione 2
-
Riassunti Tecnologia Meccanica
-
Riassunti di Logistica industriale
-
Riassunti di marketing completo