OOP in Java
Paolo Bison
Fondamenti di Informatica 1 A.A. 2004/05
Universit`a di Padova
Caratteristiche
linguaggio OO ibrido
dinamico
gestione della memoria
interpretato (Virtual Machine)
tipizzato
ereditarietà singola + interfacce
OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.2/17
Paradigma di programmazione
procedurale (livello base) tipi primitivi ed istruzioni
orientato agli oggetti
classi
Cos’è un programma Java ?
class E [ integer x ]
class E { int x;}
sintassi e semantica
J. Gosling, B. Joy, G. Steele, G. Bracha,
Java Language Specification Second Edition
OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.4/17
Classe
unità di programmazione in Java
struttura sintattica
[ Modifiers]
class
Identifier[
extends
Class ][
implements
InterfaceList ]{
FieldDeclaration MethodDeclaration}
FieldDeclaration
definizione delle variabili per rappresentare lo stato dell’istanza
MethodDeclaration
definizione dei metodi appartenenti all’interfaccia
Classe come tipo
la classe individua un tipo
“reference type”
riferimento ad un oggetto di quella classe o sue sottoclassi
elementi
variabili: Complex numero
valore di ritorno: ContoCorrente nuovoConto()
riferimento nullo null
OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.6/17
FieldDeclaration
dichiarazioni delle variabili di stato dell’oggetto
struttura sintattica
[ Modifiers] type idList
;
esempi:
int i,j;
boolean flag;
Complex j;
Boolean b;
MethodDeclaration
dichiarazione dei metodi
sintassi
[ Modifiers] type identifier
(
[ FormalParList ])
blocco
type
: primitivo, classe, void
FormalParList
: lista di identificatori con il tipo
int compute(int x, int y){
return x+y;
}
OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.8/17
Overloading
si possono avere più metodi con lo stesso nome
“signature” di un metodo
nome + parametri (numero e tipo) int compute(long x, long y){
return (int)(x+y);
}
Creazione di istanze
espressione new
new
ClassName(
[ ActualParList ])
ritorna un riferimento ad una nuova istanza della classe
ClassName
possibile attivazione di metodi speciali detti costruttori
OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.10/17
Costruttori
metodi (constructors) attivati in maniera implicita alla creazione di un oggetto
sintassi
ClassName
(
[ FormalParList ])
azioni da eseguirsi alla creazione
Numeri complessi
stato
parte reale, parte immaginaria
interfaccia
creazione, somma, prodotto tra complessi e con scalari
progetto Complex con Bluej
OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.12/17
Attivazione dei metodi
operatore .
ref
.
methodId(
[ ActualParList ])
ref
espressione di tipo “reference type”
methodId
nome del metodo
ActualParList
lista di espressioni (parametri attuali)
pseudo variabile
thisContoCorrente
stato
importo del conto
interfaccia
saldo, prelievo, versamento
progetto Banca
OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.14/17
Accesso variabili d’istanza
lettura/modifica di var. d’istanza di altri oggetti
funzionalità
“horribilis”
sintassi
ref
.
varIdref
riferimento ad un oggetto
varId
identificatore variabile d’istanza
Elementi di classe
variabili e metodi appartenenti alla classe
opzione static in
Modifiersstatic int contatore;
static double sqrt(double x)
proprietà
variabili sono condivise da tutte le istanze
metodi statici non sono attivabili da metodi non-statici
OOP in Java, Paolo Bison, A.A. 2004-05, 2004-11-13 – p.16/17
Accesso ad elementi di classe
solo nome
elemIdin ambito di validità
in altri contesti
classId
.
elemId
variabile
MyClass.ncreati