Estratto del documento

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.

Anteprima
Vedrai una selezione di 6 pagine su 24
Riassunti Progettazione del Software Pag. 1 Riassunti Progettazione del Software Pag. 2
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Riassunti Progettazione del Software Pag. 6
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Riassunti Progettazione del Software Pag. 11
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Riassunti Progettazione del Software Pag. 16
Anteprima di 6 pagg. su 24.
Scarica il documento per vederlo tutto.
Riassunti Progettazione del Software Pag. 21
1 su 24
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher simone_togn di informazioni apprese con la frequenza delle lezioni di Progettazione del software e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Roma La Sapienza o del prof De Giacomo Giuseppe.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community