59
Le basi del linguaggio Java Prof.ssa Mastrocesare e Prof. Notarantonio

LinguaggioJavaClassieOggetti (1)

Embed Size (px)

DESCRIPTION

linguaggio java

Citation preview

Page 1: LinguaggioJavaClassieOggetti (1)

Le basi del linguaggio

JavaProf.ssa Mastrocesare e Prof. Notarantonio

Page 2: LinguaggioJavaClassieOggetti (1)

Compilazione e

interpretazione

Quando si compila il codice sorgente scritto in

Java, il compilatore genera il codice compilato,

chiamato bytecode.

E un codice generato per una macchina

astratta, detta Java Virtual Machine (JVM).

Per essere eseguito su una macchina reale, il

codice compilato (bytecode) deve essere

interpretato.

Page 3: LinguaggioJavaClassieOggetti (1)

Compilazione e

interpretazione

Java e un linguaggio interpretato, anche se la produzione del bytecode e effettuata con un’operazione di compilazione.

Page 4: LinguaggioJavaClassieOggetti (1)

Ambiente di programmazione con JDK (Java Development Kit) si possono scrivere e

compilare applet e applicazioni Java.

il compilatore e l’interprete sono eseguiti da riga di

comando.

software di tipo IDE (Integrated Development

Environment), cioè ambienti che facilitano lo sviluppo

dei programmi attraverso un’interfaccia grafica e una

modalità di programmazione visuale.

librerie contenenti classi e metodi

Page 5: LinguaggioJavaClassieOggetti (1)

Struttura di un programma

Java

un’applicazione può essere costituita da una o

più classi.

una si differenzia dalle altre perchè contiene il

metodo main().

l’esecuzione di un’applicazione Java comincia

eseguendo questo metodo.

Page 6: LinguaggioJavaClassieOggetti (1)

Struttura di un programma

Java

class <nome classe>

{

public static void main(String args[])

{

// dichiarazioni di variabili

. . .

// istruzioni

. . .

}

}

Page 7: LinguaggioJavaClassieOggetti (1)

Metodo main

public indica che il metodo e pubblico ed e

visibile

void indica che non ci sono valori di ritorno

static indica che il metodo e associato alla

classe e non può essere richiamato dai singoli

oggetti della classe.

Page 8: LinguaggioJavaClassieOggetti (1)

Identificatori e parole chiave

Gli identificatori sono i nomi che il

programmatore assegna per identificare le

variabili, i metodi e le classi.

Le parole chiave sono un insieme di parole

riservate di Java che non possono essere

usate come identificatori.

Page 9: LinguaggioJavaClassieOggetti (1)

Variabili Le variabili:

<tipo> <nome variabile>;

L’assegnamento:

<tipo> <nome variabile> = <valore iniziale>;

int prezzo;

double altezza = 1.83;

Page 10: LinguaggioJavaClassieOggetti (1)

Costanti

Una costante può assumere un solo valore

durante tutta l’esecuzione del programma:

final double YARD_METRO = 0.914;

Page 11: LinguaggioJavaClassieOggetti (1)

Il casting

Il casting e il meccanismo che consente al

programmatore di indicare la conversione da un tipo di dato a un altro tipo.

floatNum = 13.278f;

intNum = (int) floatNum;

Page 12: LinguaggioJavaClassieOggetti (1)

Operatori Le operazioni aritmetiche: +, -, *, /.

L’operatore % e usato per calcolare il resto.

Operatori di incremento e di decremento: ++ e – –.

L’assegnamento di un valore a una variabile viene eseguito usando l’operatore di assegnamento =.

Le stringhe possono essere concatenate tra loro usando l’operatore di concatenazione +.

i++;

Page 13: LinguaggioJavaClassieOggetti (1)

Operatori di confronto Operatori di confronto: l’operatore di uguaglianza è

rappresentato da due simboli di uguale (==).

La disuguaglianza (diverso da) e espressa usando

l’operatore !=.

Gli altri operatori di confronto sono <, <=, >, e >=.

if (voto == 6)

{

System.out.println("sufficiente");

}

Page 14: LinguaggioJavaClassieOggetti (1)

Operatori booleani L’operatore && (oppure &) indica l’operazione

di AND.

L’operatore || (oppure |) indica l’operazione di

OR.

La negazione NOT viene espressa con

l’operatore !.

Page 15: LinguaggioJavaClassieOggetti (1)

Standard output

System.out rappresenta un oggetto associato

allo standard output. Esiste anche un oggetto

associato allo standard error che e System.err.

System.out.println("messaggio da visualizzare");

Page 16: LinguaggioJavaClassieOggetti (1)

Standard input System.in gestisce il flusso di dati inseriti da tastiera.

classe BufferedReader

lettura di una stringa:

InputStreamReader input = new InputStreamReader(System.in);

BufferedReader tastiera = new BufferedReader(input);

String nome;

nome = tastiera.readLine();

Page 17: LinguaggioJavaClassieOggetti (1)

Struttura di sequenza

La struttura di sequenza viene realizzata posizionando le

istruzioni una di seguito all’altra e separandole con il

punto e virgola.

Ogni dichiarazione e istruzione deve terminare con il

punto e virgola.

Page 18: LinguaggioJavaClassieOggetti (1)

Struttura di selezione La struttura di selezione:

if (condizione)

{

// istruzioni eseguite se la condizione e vera

}

else

{

// istruzioni eseguite se la condizione e falsa

}

Page 19: LinguaggioJavaClassieOggetti (1)

Selezione multipla La struttura di selezione multipla:

switch (espressione)

{

case valore1: // istruzioni

break;

case valore2: // istruzioni

break;

. . . .

default: // istruzioni

break;

}

Page 20: LinguaggioJavaClassieOggetti (1)

Struttura di ripetizione while

while (condizione)

{

// istruzioni

}

Page 21: LinguaggioJavaClassieOggetti (1)

Struttura di ripetizione • do while

• for

do

{

// istruzioni

}

while (condizione);

for (inizializzazione; condizione; aggiornamento)

{

// istruzioni

}

Page 22: LinguaggioJavaClassieOggetti (1)

Eccezioni Un’eccezione e una situazione anomala che si verifica

durante l’esecuzione del programma.

try

{

// istruzioni da controllare

}

catch(eccezione)

{

// operazioni da eseguire se si verifica l'eccezione

}

Page 23: LinguaggioJavaClassieOggetti (1)

Eccezioni predefinite

ArithmeticException: segnala errori aritmetici

NullPointerException: errore dovuto all’utilizzo di un

riferimento che possiede il valore null

IndexOutOfBoundException: errore nell’indice di un

array

IOException: generico errore di input/output.

Page 24: LinguaggioJavaClassieOggetti (1)

Classi e oggetti

Page 25: LinguaggioJavaClassieOggetti (1)

Oggetti

La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall’elemento su cui si basa, l’oggetto.

Page 26: LinguaggioJavaClassieOggetti (1)

OOPVantaggi

facilita di lettura e di comprensione del codice

rapidità nella manutenzione

robustezza

riusabilità del codice

Page 27: LinguaggioJavaClassieOggetti (1)

Oggetti

Gli oggetti rappresentano le entità del problema o della realtà che si vuole automatizzare con l’informatica.

Un oggetto e in grado di memorizzare le informazioni che riguardano il suo stato

E possibile associare a un oggetto un insieme di operazioni che esso può compiere.

Page 28: LinguaggioJavaClassieOggetti (1)

Attributi e metodi

Gli attributi rappresentano gli elementi che

caratterizzano l’oggetto, utili per descrivere le sue

proprietà e definirne il suo stato.

I metodi rappresentano le funzionalità che

l’oggetto mette a disposizione.

Page 29: LinguaggioJavaClassieOggetti (1)

Definizione delle classi

Diagramma delle classi

La classe e la descrizione astratta degli oggetti attraverso

gli attributi e i metodi.

<nome classe>

<attributo1>

<attributo2>

. . .

<metodo1>

<metodo2>

. . .

I simboli utilizzati negli

schemi grafici rispettano gli

standard del linguaggio

UML (Unified Modeling

Language)

Page 30: LinguaggioJavaClassieOggetti (1)

Istanza

Diagramma degli oggetti

Per utilizzare un oggetto occorre crearlo come esemplare

della classe, cioè come istanza di una classe.

auto1

velocità = 60

colore = rosso

numero di porte = 5

livello del carburante = ½

posizione della marcia = 3

Ogni classe possiede un

particolare metodo

predefinito, detto

costruttore, che viene

attivato quando si crea un

oggetto.

Page 31: LinguaggioJavaClassieOggetti (1)

Il termine incapsulamento indica la proprietà degli oggetti

di incorporare al loro interno sia gli attributi che i metodi,

cioè le caratteristiche e i comportamenti dell’oggetto.

Incapsulamento

Page 32: LinguaggioJavaClassieOggetti (1)

Dichiarazione di una classe

class NomeClasse

{

// attributi

// metodi

}

Page 33: LinguaggioJavaClassieOggetti (1)

Dichiarazione di un oggetto dichiarazione di un oggetto:

creazione dell’istanza:

NomeClasse nomeOggetto;

nomeOggetto = new NomeClasse();

Page 34: LinguaggioJavaClassieOggetti (1)

Dichiarazione di un attributo dichiarazione di un attributo:

Esempi:

livelloDiVisibilità tipo nomeAttributo;

private int x, y, z;

public double altezza = 15.76;

Page 35: LinguaggioJavaClassieOggetti (1)

Livelli di visibilità

public

l’attributo è accessibile da qualsiasi altra classe

private

permette di nascondere l’attributo all’interno

dell’oggetto

protected

è visto all’esterno solo dalle classi che appartengono

alla stessa libreria oppure dalle sottoclassi della

classe in cui è stato dichiarato l’attributo.

Page 36: LinguaggioJavaClassieOggetti (1)

Altre caratteristiche

staticindica un attributo legato alla classe

finalse lo si vuole rendere una costante, in modo che possa

assumere un unico valore.

Page 37: LinguaggioJavaClassieOggetti (1)

Dichiarazione dei metodi

livelloDiVisibilità tipoRestituito nomeMetodo (parametri)

{

// variabili

// istruzioni

}

Page 38: LinguaggioJavaClassieOggetti (1)

Esempio Il metodo che esegue la somma di due numeri interi

passati come parametri:

public int addizione (int a, int b)

{

int sum;

sum = a+b;

return sum;

}

Page 39: LinguaggioJavaClassieOggetti (1)

Valore di ritorno Il tipo del valore di ritorno indica quale sarà il valore

restituito al termine dell’esecuzione del metodo.

Un metodo può anche non restituire alcun valore: parola

chiave void.

public void setRaggio(double r)

{

raggio = r;

}

Page 40: LinguaggioJavaClassieOggetti (1)

Istruzione return

public int max(int a, int b)

{

if (a > b)

{

return a;

}

else

{

return b;

}

}

Page 41: LinguaggioJavaClassieOggetti (1)

Livelli di visibilità

I livelli di visibilità di un metodo:

publicpuò essere richiamato da qualunque altra classe

privatenon può essere richiamato esternamente alla classe in cui è dichiarato

protectedè visibile solo dalle classi che appartengono alla stessa libreria oppure dalle sottoclassi della classe in cui è dichiarato

Page 42: LinguaggioJavaClassieOggetti (1)

Creazione di oggetti L’allocazione dell’oggetto riserva lo spazio per

memorizzare gli attributi dell’oggetto e viene codificata con

l’operatore new seguito dal nome della classe.

Viene attivato in modo implicito un particolare metodo

predefinito, detto costruttore della classe, che consente di

creare un oggetto.

Cerchio tavolo = new Cerchio();

Page 43: LinguaggioJavaClassieOggetti (1)

Creazione di oggetti

Creare un’istanza della classe Cerchio usando il

costruttore e indicando un valore di inizializzazione

per l’attributo raggio.

Cerchio ruota = new Cerchio(0.41);

Page 44: LinguaggioJavaClassieOggetti (1)

Utilizzo degli oggetti Accesso agli attributi di un oggetto con l’operatore punto:

Invocazione di un metodo:

In ogni classe è implicitamente presente un oggetto speciale identificato dalla parola chiave this, per indicare l’oggetto a cui il costruttore si riferisce.

nomeOggetto.attributo

nomeOggetto.metodo(parametri)

Page 45: LinguaggioJavaClassieOggetti (1)

Information hiding

Metodi per leggere e modificare il valore degli

attributi:

get: leggere il valore di un attributo e

restituirlo

set: modificare il valore di un attributo.

Il termine information hiding indica il mascheramento

delle modalità di implementazione di un’oggetto,

rendendone disponibile all’esterno solo le funzionalità.

Page 46: LinguaggioJavaClassieOggetti (1)

Esempioclass Automobile

{

private final int POSIZIONE_MAX = 6;

private int posMarcia;

public Automobile()

{

posMarcia = 1;

}

public int getMarcia()

{

return posMarcia;

}

public void setMarcia(int m)

{

if ((m >= 1) && (m <= POSIZIONE_MAX))

{

posMarcia = m;

}

}

}

Page 47: LinguaggioJavaClassieOggetti (1)

Interfaccia il termine interfaccia riferito alle classi:

per esempio, l’interfaccia della classe Automobile:

I dettagli sulle caratteristiche e la struttura dell’oggetto

sono nascosti all’interno, garantendo l’information

hiding (mascheramento dell’informazione).

L’interfaccia di una classe indica l’elenco dei metodi

pubblici, cioè l’insieme delle funzionalità utilizzabili dalle

istanze della classe.

public Automobile()

public int getMarcia()

public void setMarcia(int m)

Page 48: LinguaggioJavaClassieOggetti (1)

EreditarietàL’ereditarietà rappresenta la possibilità di creare nuove classi

a partire da una classe già esistente (classe base). La nuova

classe eredita tutti gli attributi e i metodi della classe base e

può essere arricchita con nuovi attributi e nuovi metodi. La

classe così ottenuta si chiama classe derivata..

Page 49: LinguaggioJavaClassieOggetti (1)

Sottoclasse e superclasse

La classe che è stata derivata da un’altra usando

l’ereditarietà prende il nome di sottoclasse.

La classe generatrice di una sottoclasse si chiama

superclasse o sopraclasse.

Page 50: LinguaggioJavaClassieOggetti (1)

Grafo di gerarchia

Page 51: LinguaggioJavaClassieOggetti (1)

Classe derivata

La nuova classe si differenzia dalla sopraclasse:

per estensione: la sottoclasse aggiunge nuovi

attributi e metodi

per ridefinizione: la sottoclasse ridefinisce i metodi

ereditati (overriding del metodo)

Page 52: LinguaggioJavaClassieOggetti (1)

Dichiarazione di una

sottoclasse

class NomeSottoClasse extends NomeSopraClasse

{

. . .

}

Page 53: LinguaggioJavaClassieOggetti (1)

Classe ObjectClasse da cui vengono derivate tutte le altre

Page 54: LinguaggioJavaClassieOggetti (1)

Polimorfismo

Due tipi di polimorfismo:

l’overriding, o sovrapposizione dei metodi,

l’overloading, o sovraccarico dei metodi.

Il polimorfismo indica la possibilità per i metodi di

assumere forme, cioè implementazioni, diverse all’interno

della gerarchia delle classi.

Page 55: LinguaggioJavaClassieOggetti (1)

LibrerieLe librerie sono un insieme di classi già compilate che possono essere richiamate e usate all’interno dei programmi. Java usa il termine package.

Esempi:

• java.applet

• java.awt

• java.io

• java.lang

• java.net

• java.util

Page 56: LinguaggioJavaClassieOggetti (1)

LibreriePer riferirsi a una classe contenuta in un particolare package:

Per evitare di ripetere più volte il nome del package:

comando import

NomePackage.NomeClasse

import java.awt.Button

Button b;

b = new Button();

;

Page 57: LinguaggioJavaClassieOggetti (1)

LibreriePer importare tutte le classi contenute nel package java.io:

Il package java.lang contiene la dichiarazione delle classi

di base del linguaggio Java.

import java.io.*;;

Page 58: LinguaggioJavaClassieOggetti (1)

Classe StringInclusa nel package java.lang.

Per usare le stringhe in Java si deve creare un oggetto

di classe String.

altro modo per allocare le stringhe:

String nome = new String("Elena");

String nome = "Laura";

Page 59: LinguaggioJavaClassieOggetti (1)

Classe String