vuoi
o PayPal
tutte le volte che vuoi
ARGOMENTI PRIMA PARTE
Cosa vuol dire sviluppare software, algoritmi, diagrammi di flusso, introduzione alla
programmazione ad oggetti, cosa sono classi e oggetti come è fatto un programma ad
oggetti. Compilatori ed Interpreti. Introduzione al linguaggio Java, istallazione sdk e
suo uso, documentazione e tutorial. Come è fatto un programma in java, il metodo
main. Definizione di variabili, tipi di dato, assegnazioni. Operatori ed Espressioni,
precedenze, regole di promozione e casting. Istruzioni per il controllo di flusso: if-else
, switch. I cicli: for, while, do while.
Introduzione alla programmazione ad oggetti
Quello che si vuole fare quando si programma è realizzare un software applicativo o
un’appicazione che deve essere eseguito da un computer per risolvere un determinato
problema o svolgere un determinato compito.
La programmazione a oggetti analizza il problema definendo gli attori del processo e
le entità che ne fanno parte.
Algoritmo
Un algoritmo è una sequenza di azioni non ambigue che trasforma i dati iniziali nel
risultato finale utilizzando un insieme di azioni elementari che possono essere eseguite
da un opportuno esecutore.
Un algoritmo è Finito (la sequenza di passi è ben determinata), Non Ambiguo
(sequenza di azioni determinabile senza ambiguità), Generalizzato (deve avere
carattere di generalità per risolvere una classe di problemi).
Diagramma di flusso
Un grafico che permette di esprimere un algoritmo in modo preciso e intuitivo.
Composto da blocchi elementari atti a descrivere azioni e decisioni (solo True/False)
ed archi orientati per collegare i vari blocchi descrivendo la sequenza di svolgimento
delle azioni.
Programma – una lista di istruzioni, scritte in linguaggio macchina in modo non
ambiguo, eseguibili meccanicamente dal computer. Ogni CPU ha il suo linguaggio
macchina.
Compilatore
Il compilatore è un programma che effettua la compilazione.
La compilazione è la traduzione da linguaggio di programmazione ad alto livello
(codice sorgente) a linguaggio macchina (codice eseguibile).
Il linguaggio macchina è legato alla macchina su cui si vuole eseguire il programma,
quindi è necessario produrre codici eseguibili diversi per macchine diverse.
In java il compilatore è javac.exe, che quando eseguito dal prompt dei comandi
genera un file con estensione .class contenente il programma tradotto in bytecode.
Interprete
L’interprete è un programma che esegue un altro/altri programma/i a partire dal
relativo codice sorgente.
L’interprete traduce ed esegue il codice sorgente un’istruzione alla volta.
Usando un interprete non viene generato un file contenente il codice eseguibile (come
nel caso del compilatore) in quanto l’istruzione tradotta viene eseguita
immediatamente.
Occorrono interpreti diversi a seconda della macchina su cui si vuole eseguire il
programma. L’interpretazione è meno ottimizzata rispetto alla compilazione.
In Java l’interprete è il file java.exe e si esegue nel prompt dei comandi con la sintassi
“java nomefile”.
Portabilità
Java è specificatamente progettato per essere quanto più possibile indipendente dalla
piattaforma di esecuzione, questo vuol dire che può essere eseguito in qualunque
ambiente in cui sia installata la macchina virtuale Java (cioè il JRE, Java Runtime
Environment).
Java produce infatti un metacodice detto bytecode, un codice ad alto livello
indipendente dalla piattaforma hardware.
Lo slogan della Sun (azienda sviluppatrice di Java) è infatti “write once, run
everywhere”; di questo slogan esiste la parodia “write once, debug everywhere”, che
si riferisce al fatto che le macchine virtuali stesse sono programmi e quindi possono
presentare dei bug che vanno corretti.
Produrre un software
Programmare: realizzare un’applicazione che deve essere eseguita da un computer
per risolvere un determinato problema.
I 7 passi:
1) capire il problema che si vuole risolvere (individuare i requisiti)
2) definire una soluzione al problema (progetto e design del software)
3) implementare la soluzione (scrivere il programma)
4) tradurre il linguaggio utilizzato per programmare in linguaggio macchina (codice
eseguibile)
5) eseguire il programma tradotto in linguaggio macchina
6) verificare il corretto funzionamento dell’applicazione (test e collaudi)
7) manutenere il prodotto software (aggiornare, aumentare funzionalità, risoluzione
errori)
Oggetto
Entità dotata di uno stato (attributi che lo descrivono), un comportamento (i metodi
per manipolare gli attributi) e di un’identità.
L’oggetto è presente in memoria ed i suoi attributi contengono dei valori.
Classe
La definizione di un insieme di oggetti che condividono un comportamento e una
struttura comuni. L’oggetto è un’istanza della classe.
La classe è la descrizione di un oggetto e si può dire che non è presente in memoria.
Un programma ad oggetti è un progetto contenente delle classi scritte in un linguaggio
di programmazione ad oggetti (es. Java)
Ereditarietà - cos'è una sottoclasse
Le sottoclassi sono quelle classi che estendono le superclassi ereditandone il codice e
le funzionalità.
Tramite l’ereditarietà (inheritance), una classe (sottoclasse), può ereditare sia i
metodi che le proprietà da un’altra classe (superclasse).
La sottoclasse può definire nuove proprietà e metodi oppure ridefinire (riscrivere)
metodi della classe padre attraverso l’overriding.
Come è fatto un programma ad oggetti in Java
Un programma Java è essenzialmente una sequenza di definizioni di classi.
Una definizione di classe definisce un template con cui creare nuovi oggetti.
Classi, Oggetti, Istanze, Attributi/Proprietà e Metodi/Comportamenti costituiscono un
programma.
Metodo main (I)
In Java l’inizio del flusso di esecuzione del programma comincia sempre da un punto
convenzionalmente stabilito: il metodo main.
Esso deve essere obbligatoriamente definito come public e static e accettare un solo
argomento, di tipo String[], e avere void come tipo di ritorno: public static void
main(String args[]) { ... }
Variabile
Un’area di memoria che viene identificata mediante un nome.
L’informazione contenuta nell’area di memoria assume un valore che dipende dal tipo
della variabile.
La memorizzazione di un valore assunto dalla variabile è detta assegnazione.
Tipi primitivi
Servono a dichiarare una variabile. Possono essere:
Numeri interi - byte (8 bit), short (16 bit), int (32 bit), long (64 bit)
Numeri reali - float (32 bit), double (64 bit)
Caratteri - char (16 bit)
Boolean - true, false
Cicli
I cicli consentono di eseguire ripetutamente un determinato blocco di codice.
In Java i cicli sono sostanzialmente 3: while, do-while e for.
Il ciclo while esegue una istruzione o un blocco di codice finché rimane verificata una
certa condizione (ovvero finché la condizione tra parentesi graffe poste dopo il while è
di tipo boolean true).
Il ciclo do-while è simile al while e analogamente al while causa l’esecuzione del
blocco tra graffe fino a quando la condizione è vera ma con la differenza che in questo
caso condizione viene presa in considerazione alla fine del blocco.
Quindi l’esecuzione del blocco di istruzioni viene effettuata almeno una volta, anche se
la condizione risulta da subito false.
Il ciclo for è costituito da una espressione di inizializzazione eseguita solo una volta
prima di iniziare il ciclo; una espressione di ‘aggiornamento’ (tipicamente un
incremento) da eseguire al termine di ogni esecuzione del blocco; una condizione di
terminazione (o uscita) dall’esecuzione iterativa.
Si ottiene un programma che esegue esattamente una volta inizializzazione, esegue
poi il blocco, quindi effettua l’incremento, valuta condizione e, se questa risulta vera
(true, come al solito condizione deve essere di tipo boolean), esegue di nuovo blocco,
alla fine del quale ripete il test e così via.
Modificatori di flusso
condizionali: if - else, switch
di interruzione di ciclo: break, continue - ritorno di valori: return
gestione eccezioni: try - catch - finally
Espressione
una serie di variabili, operatori e chiamate di metodi che dà luogo ad un singolo
valore.
Scope (ambito di validità)
La regione del codice sorgente del programma in cui la variabile si considera definita.
Al di fuori dello scope, la variabile semplicemente non esiste.
SECONDA PARTE
ARGOMENTI SECONDA PARTE
Utilizzo di classi e oggetti: variabili di riferimento, come si istanzia un oggetto,
l’operatore punto “.”, richiamare metodi: vari tipi di metodi e costruttori, il passaggio
dei parametri nei metodi, il metodo main. Ciclo di vita di un oggetto, i package e
l’import, gli Array, esempi di oggetti della libreria di Java: String, StringBuffer, System
e oggetti Wrapper. Definizione di nuove classi: come si definiscono attributi e metodi,
i costruttori, modificatori di accesso, sovraccarico o overload dei metodi, definizione di
package. Final. Static. Ereditarietà, creazione di gerarchie di classi, ridefinizione o
overriding dei metodi. Casting tra oggetti e la classe Object. Le classi astratte. Le
interfacce. La gestione degli errori: programmi corretti e robusti, cattura delle
eccezioni, lancio di un’eccezione, come definire eccezioni personalizzate. Come java
realizza l'incapsulamento, l'ereditarietà ed il polimorfismo.Come si legge la
documentazione e come si crea la documentazione con i commenti per la creazione
delle pagine di documentazione
Variabili
Una variabile è una piccola area di memoria che permette al programma di ricordare i
dati usati durante l'esecuzione, e quindi di riutilizzarli senza doverli calcolare ogni
volta.
Per utilizzare un oggetto occorre prima crearlo, per poter fare riferimento a tale
oggetto e accedere ai suoi metodi e attributi occorre dargli un nome.
Occorre creare un’area di memoria in cui memorizzare l’indirizzo di memoria in cui
verrà memorizzato l’oggetto istanziato.
Tale variabile che fa riferimento a un oggetto è detta variabile di riferimento o oggetto
o reference.
Il nome dato a tale variabile è il nome che potrà essere utilizzato per richiamare i
metodi e gli attributi dell’oggetto a cui la variabile si riferisce.
Metodo main (II)
Indica l’inizio del flusso di esecuzione, la sua sintassi è
public static void main(String[] args) { ... }
public - il metodo deve essere pubblico
static - deve esistere senza dover istanziare