La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Maurizio Cozzetto, Francesco Sarasini

Presentazioni simili


Presentazione sul tema: "Maurizio Cozzetto, Francesco Sarasini"— Transcript della presentazione:

1 Maurizio Cozzetto, Francesco Sarasini
Corso Base Geca Lezione 1 Maurizio Cozzetto, Francesco Sarasini

2 Breve storia del linguaggio
Nasce nel 1995 per opera degli ingegneri della Sun Microsystem James Gosling è il team leader del linguaggio Attualmente Java è di proprietà di Oracle Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

3 Logo e mascotte Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

4 Caratteristiche del linguaggio
E' orientato agli oggetti E' indipendente dalla piattaforma (portabilità) Contiene strumenti e librerie per il networking E' progettato per eseguire codice da sorgenti remote in modo sicuro (applet) E' semplice E' multithread Robusto Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

5 Sviluppo di un programma Java
Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

6 Esecuzione di un programma Java
Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

7 Piattaforma Java Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

8 Piattaforma Java in dettaglio
Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

9 Caratteristiche del linguaggio
/** * HelloWorld.java */ package it.geca.corso.helloworld; maurizio public class HelloWorld { args public static void main(String[] args) { System.out.println("Ciao Raffaele!"); System.out.println("Benvenuto a Java!"); // commento inline } // fine metodo entry-point } // fine classe Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

10 Programma HelloWorld Demo
Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

11 Il computer Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

12 La memoria 1 2 ... 100 … 200 …. Indirizzi Locazioni di memoria
1 2 ... 100 200 …. Indirizzi Locazioni di memoria Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

13 La variabile è un contenitore di dati
Variabili (1/5) La variabile è un contenitore di dati Variabili di tipo primitivo Variabili di tipo riferimento Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

14 Variabili di tipo primitivo
100 è l'indirizzo di memoria della variabile int eta; // Dichiaro eta, eta vale 0 eta = 8; // Assegno a eta il valore 8 eta = eta + 1; // Incremento di 1, quindi eta vale 9 int eta = 8; // Dichiarazione e assegnamento int eta 8 100 Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

15 Variabili di tipo riferimento
JButton bottone; // Dichiaro un riferimento (vale null) bottone null Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

16 Variabili di tipo riferimento
JButton bottone; // Dichiaro un riferimento (vale null) // Creo l'oggetto in memoria e gli assegno un riferimento bottone = new JButton(“Saluta”); bottone 200 JButton Saluta 250 ... text 200 x y Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

17 Variabili di tipo riferimento
// Dichiaro il riferimento e creo l'oggetto in memoria con una sola istruzione JButton bottone = new JButton(“Saluta”); Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

18 Riferimenti e puntatori
In Java non esistono puntatori ma riferimenti. Un riferimento contiene qualcosa del tipo it.geca.corso.progetto è il package JButton è la classe 558ee9d6 è l'hashing dell'indirizzo di memoria 558ee9d6 JButton …. bottone Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

19 Variabili stringa (1/2) // Creazione usando il costruttore
String nome = new String(“Raffaele”); nome String Raffaele Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

20 Variabili stringa (2/2) // Assegnamento “diretto”
String nome = “Raffaele”; String Raffaele nome Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

21 Variabili data (1/2) // Creo una data
GregorianCalendar miaDataDiNascita = new GregorianCalendar(1959, 3, 1); GregorianCalendar 1959 YEAR 3 MONTH 1 DAY miaDataDiNascita Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

22 Variabili data (2/2) // Semplifichiamo la rappresentazione ma non il codice GregorianCalendar miaDataDiNascita = new GregorianCalendar(1959, 3, 1); GregorianCalendar miaDataDiNascita Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

23 Variabili Variabili di istanza Variabili di classe Variabili locali
Variabili parametro Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

24 Funzioni (1/2) Si chiamano anche metodi
Definiscono le funzionalità di un oggetto o di un programma Metodi di istanza Metodi di classe Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

25 Funzioni (2/2) public double computePayment( double loanAmt,
double rate, double futureValue, int numPeriods) { double interest = rate / 100.0; double partial1 = Math.pow((1 + interest), - numPeriods); double denominator = (1 - partial1) / interest; double answer = (-loanAmt / denominator) - ((futureValue * partial1) / denominator); return answer; } Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

26 Regole per il naming (Camel Notation)
Iniziale minuscola per le variabiliQualsiasi Tutte lettere MAIUSCOLE per le costanti Iniziale Maiuscola per le classi Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

27 Tipi primitivi Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

28 Classi wrapper Classe Integer
... int ... String toBinaryString(int i) int parseInt(String s) Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

29 Tipi derivati e classi di utilità
String è una classe per le sequenze di caratteri GregorianCalendar è una classe per le date JOptionPane è una classe dotata di metodi statici per la lettura e la stampa dei dati (package javax) System è usata anche per l'output su Console Scanner è una classe usata anche per la lettura dei dati da Console Demo Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

30 Controllo del flusso (1/2)
Struttura di sequenza Struttura condizionale Con un ramo Con due rami Struttura switch Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

31 Controllo del flusso (2/2)
Cicli Ciclo while Ciclo do-while Ciclo for Ciclo infinito Ciclo infinito con break Ciclo infinito con variabile booleana Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

32 Sequenza Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

33 Sequenza in Java { <istruzione1>; <istruzione2>;
... } Demo Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

34 Struttura condizionale con un ramo
Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

35 Struttura condizionale con un ramo in Java
if (<cond>) { <istruzione1>; <istruzione2>; <istruzione3>; ... } Demo Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

36 Struttura condizionale con due rami
Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

37 Struttura condizionale con due rami in Java
if (<cond>) { <istruzione11>; <istruzione12>; <istruzione13>; ... } else { <istruzione21>; <istruzione22>; } Demo Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

38 Struttura ciclica while
Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

39 Struttura ciclica while in Java
while (<cond>) { <istruzione1>; <istruzione2>; <istruzione3>; ... } Demo Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

40 Struttura ciclica do-while
Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

41 Struttura ciclica do-while in Java
<istruzione1>; <istruzione2>; <istruzione3>; ... } while (<cond>); Demo Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

42 Struttura ciclica for Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

43 Struttura ciclica for in Java (1/2)
for (int i = 0; i < n; i++) { // Esegue i comandi n volte <istruzione1>; <istruzione2>; <istruzione3>; ... } Demo Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

44 Struttura ciclica for in Java (2/2)
while (i < n) { <istruzione1>; <istruzione2>; <istruzione3>; i++; // Equivale a i = i + 1 } Demo Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

45 Ciclo infinito Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

46 Ciclo infinito in Java while (true) { <istruzione1>;
... } Demo Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

47 Cicli generici Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

48 Struttura ciclica generica (1/2)
while (true) { <istruzione1>; if (<cond>) break; // Salta alla prima istruzione fuori dal ciclo <istruzione2>; ... } Demo Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

49 Struttura ciclica generica (2/2)
boolean finito = false; while (!finito) { <istruzione1>; if (<cond>) finito = true; else { <istruzione2>; ... } Demo Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

50 Array (1/6) Un array è un oggetto contenitore che mantiene un numero fisso di elementi tutti dello stesso tipo (primitivo, derivato o user-defined) Primo indice 3 6 1 -1 2 4 5 elementi Elemento (alla posizione 3) Indici Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

51 Array (2/6) Dichiarazione int[] a; // Significa a = null null a
Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

52 Array (3/6) Allocazione di memoria
a = new int[5]; // Trova lo spazio necessario int[] 1 2 3 4 a Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

53 Array (4/6) Assegnamenti a[0] = 2; a[1] = 4; a[2] = 6; a[3] = 8;
int[] 2 4 1 6 8 3 10 a Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

54 Final e static Final denota che “qualcosa” non è ulteriormente modificabile - Se applicata ad una classe indica che essa non è più estendibile Static denota “qualcosa” che è invocabile indipendentemente dall'esistenza di oggetti istanza della classe - Il calcolo della radice quadrata di un numero non dipende da oggetti istanza della classe Math - Math.sqrt() è un metodo statico Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

55 Array (5/6) Dichiarazione e caricamento con un ciclo
final static int MAX = 5; int[] a = new int[MAX]; // Dichiarazione (allocazione) // Caricamento dei dati for (int i = 0; i < a.length; i++) // length numero di elem. a[i] = 2 * i; Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

56 Array (6/6) Dichiarazione e assegnamento
int[] a = {2,4,6,8,10}; // Attenzione! Non si può “spezzare” // oppure // int a[] = new int[]{2,4,6,8,10}; Demo Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

57 Classi (1/5) Una classe definisce un tipo (user-defined)
Esiste un costruttore - Metodo speciale per allocare gli oggetti - Non restituisce nessun tipo di ritorno, neanche void Esiste un metodo toString() Serve a rappresentare l'oggetto in forma testuale E' possibile l'overloading del costruttore Esistono altri metodi importanti - equals() - clone() - finalize() Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

58 Classi (2/5) Persona nome: stringa cognome: stringa dataNascita: data
Nome della classe Persona nome: stringa cognome: stringa dataNascita: data cittaResidenza: stringa Persona() Persona(nome: stringa, …, cittaResidenza: stringa) toString(): stringa eta(): intero Variabili di istanza Metodi Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

59 Classi (3/5) public class Persona { String nome; String cognome;
GregorianCalendar dataNascita; String cittaResidenza; // costruttore di default public Persona() { // una persona “precisa” } ... Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

60 Classi (4/5) // Overloading del costruttore
public Persona(String n, String c, GregorianCalendar d, String r) { nome = n; cognome = c; dataNascita = d; cittaResidenza = r; } public int eta() { return (new GregorianCalendar()).get(Calendar.YEAR) - this.dataNascita.get(Calendar.YEAR); ... Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

61 Classi (5/5) // Metodo che deriva dalla classe Object
public String toString() { return cognome + “ “ + nome + “ “ + eta(); } // Idem public boolean equals(Persona p) { // Due persone sono “uguali” quando tutti i dati // coincidono” return nome.equals(p.nome) && cognome.equals(...) && dataNascita.equals(p.dataNascita) && ...; } // fine classe Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

62 Oggetti (1/3) Un oggetto è un rappresentante della classe
La creazione avviene mediante il richiamo di un costruttore I valori degli attributi sono tutti inizializzati a 0 se interi, a false se booleani ecc I valori degli oggetti attributo della classe sono inizializzati a null Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

63 Oggetti (2/3) // Costruttore di default
Persona raffaeleTomasini = new Persona(); raffaeleTomasini Persona Raffaele nome Tomasini cognome dataNascita Brescia cittaResidenza Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

64 Oggetti (3/3) // Uso il costruttore “sovraccaricato”
Persona maurizioCozzetto = new Persona(“Maurizio”, ”Cozzetto”, new GregorianCalendar(1959, Calendar.APRIL, 1), “Roncadelle”); maurizioCozzetto Persona Maurizio nome Cozzetto cognome dataNascita Roncadelle cittaResidenza Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

65 Ereditarietà (1/4) E' un meccanismo di astrazione che consente
Il riutilizzo del codice La creazione di gerarchie di classi Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

66 Ereditarietà (2/4) Veicolo è detta superclasse e Automobile è detta classe derivata Automobile eredita gli attributi e i metodi della classe padre (solo attributi e metodi pubblici e protected) La relazione tra Automobile e Veicolo è detta relazione ISA Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

67 Ereditarietà (3/4) public class Veicolo extends Object { String targa;
int ruote; int cilindrata; String aziendaProduttrice; String modello; public String toString() return targa + “ “ + modello; } Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

68 Ereditarietà (4/4) public class Automobile extends Veicolo {
int posti; int classe; // Rappresenta Euro1, Euro2, Euro3 ... int potenza; public double bollo() double d = 0.0; // Si fanno i calcoli necessari... return d; } Demo Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

69 Override Consiste nella ridefinizione in una classe derivata di metodi già definiti nella superclasse public class Automobile extends Veicolo { int posti; // Altre variabili di istanza @Override // Ridefinisco le funzionalità di toString() del padre public String toString() { return super.toString() + “ “ + posti } Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

70 Super Parola chiave che permette di far riferimento ai metodi e agli attributi definiti nella superclasse nel codice dei metodi di una classe derivata public class Automobile extends Veicolo { int posti; // Altre variabili di istanza @Override // Ridefinisco le funzionalità di toString() del padre public String toString() { return super.toString() + “ “ + posti } Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

71 Polimorfismo Capacità di un “oggetto” di assumere forme “differenti”
- In una gerarchia di classi, la possibilità di adottare il “binding dinamico” Automobile ferrariF40 = new Automobile("KU737WE","Ferrari F40 rosso metallizzato", “Coupè”,2936); // 2936 è la cilindrata // ferrariF40 è un anche un oggetto di tipo Veicolo Veicolo ferrariF40 = new Automobile(...); Proprietario me = new Persona(...); // Richiamo un metodo della classe padre System.out.println(ferrariF40.setProprietario(me)); Android Corso Base. Maurizio Cozzetto, Francesco Sarasini.

72 Maurizio Cozzetto, Francesco Sarasini
Corso Base 5 minuti di pausa Maurizio Cozzetto, Francesco Sarasini


Scaricare ppt "Maurizio Cozzetto, Francesco Sarasini"

Presentazioni simili


Annunci Google