Lezione 2
Programmazione ad oggetti
 Oggetti
 Classi
 Interazione tra oggetti
 Accesso agli attributi
1
Modelli orientati agli oggetti
 Modello ad oggetti

Il mondo viene visto come un sistema di cose
Comportamento visibile
Un oggetto
Stato interno nascosto
Oggetto = stato + comportamento + identità
2
Passi per la modellazione OO




Identificare gli oggetti
Identificare il comportamento degli oggetti
Identificare le relazioni tra gli oggetti
Realizzare gli oggetti: raggruppare in classi le strutture dati ed i
comportamenti
3
Lezione 2
Oggetti
 Per capire cos’è un oggetto prendiamo spunto dalla vita
reale: un oggetto è un’automobile, un computer, una
casa, e così via
 Un oggetto può essere definito elencando sia le sue
caratteristiche sia i suoi comportamenti, cioè le funzioni
che mette a disposizione
 Elencando le caratteristiche e i comportamenti, diamo
una definizione generica
 Un oggetto però è un’entità particolare, con le sue
caratteristiche specifiche.
4
Lezione 2
Oggetti
 Ad un preciso oggetto assegniamo un nome:
chiameremo quindi un oggetto di classe automobile
auto1
 Quindi l’oggetto auto1 potrà essere così descritto:
- Velocità = 80
- Colore = rosso
- Numero di porte = 5
- Marca = bmw
5
Lezione 2
Oggetti
 Un altro oggetto auto2 potrà avere le seguenti
caratteristiche:
- Velocità = 60
- Colore = nero
- Numero di porte = 4
- Marca = fiat
 Quindi gli oggetti sono diversi a seconda del valore
assunto dalle loro caratteristiche, ma condividono la
stessa struttura
6
Lezione 2
Oggetti
 Nella terminologia OOP le caratteristiche di un oggetto
vengono chiamate attributi, i comportamenti vengono
chiamati metodi
 I metodi sono le operazioni che un oggetto è in grado di
compiere
 Un oggetto è quindi formato da attributi e metodi
7
Lezione 2
Classi
 Possono esistere più oggetti che hanno gli stessi attributi, anche
con valori diversi, e che dispongono degli stessi metodi. Si dice
che questi oggetti appartengono alla stessa classe
 Una classe specifica gli attributi, senza indicarne il valore, e i
metodi che devono avere gli oggetti che appartengono alla classe
 La classe quindi crea più oggetti tutti con gli stessi attributi e gli
stessi metodi. Gli oggetti creati a partire da una classe vengono
chiamati istanze della classe
 Due istanze della stessa classe sono distinguibili solo per il
valore dei loro attributi, mentre il loro comportamento
(metodo) è lo stesso
8
Lezione 2
Classi
 La struttura di una classe è la seguente:
<nome classe>
<attributo1>
<attributo2>
…
<metodo1>
<metodo2>
…
Diagramma
delle classi
9
Lezione 2
Classi
 Esempio:
Automobile
Velocità
Colore
Numero di porte
Marca
Avviati
Accelera
Fermati
Gira
Cambia marcia
Rifornisciti
10
Lezione 2
Classi
 Usando questa classe possiamo creare gli oggetti auto1 e auto2, e
dopo averli creati possiamo interagire con essi usando l’invio di
messaggi oppure modificando direttamente gli attributi.
 Possiamo impostare alcune caratteristiche dell’oggetto auto1:
- auto1.colore = blu
- auto1.numero_di _porte = 5
oppure possiamo usare i metodi dell’oggetto auto2 sfruttando i
seguenti messaggi:
- auto2.avviati()
- auto2.accelera()
11
Cenni di UML
 UML è un linguaggio (Unified Modeling Language)
 Fornisce i costrutti per lo sviluppo di sistemi software:
 Analisi dei requisiti
 Analisi e progetto OO
 Modellazione dei componenti e della struttura
 Modello espresso mediante diagrammi grafici
12
Simboli usati per la visibilità
UML
.
ContoCorrente
-Numero correntista
-Nome correntista
-Saldo
#Numero operazioni
+deposita(valore)
+preleva(valore)
+calcolaInteressi()
-incrementaNumeroOperazioni
+leggiNumeroOperazioni()
• Tipo di dati astratto=classe
• istanza di un tipo di dati astratto = oggetto
• incapsulamento = data hiding = fornisce un livello di astrazione attraverso le funzoni
 Non c’è struttura dati separata: operazioni e struttura dati integrate in una singola entità
13
CLASSI: classi ed istanze (oggetti) - 1
TIPO
CLASSE
attributi
metodi
istanza
istanza, oggetto (una varabile)
oggetto C
variabili di istanza di C
oggetto A
variabili istanza di A
metodi
istanza
metodi
oggetto B
variabili istanza di B
metodi
Una classe è un modello per creare oggetti descritti dalle stesse caratteristiche (attributi) e
che mostrano comportamenti identici a partire dalle stesse situazioni (attributi) iniziali.
14
CLASSI: classi ed istanze (oggetti) - 2
CLASSE
TCane
Razza
Nome
oggetto
oggetto
unCagnone
unTrovatello
bastardino
boby
oggetto
briciola
san Bernardo
ilMioCane
tea
barboncino
15
Lezione 2
Esempi usando il linguaggio Java
 Un’applicazione Java è costituita da una o più classi; una classe solamente contiene il
metodo main(): l’esecuzione di un’applicazione java comincia eseguendo questo
metodo.
 class saluti
{
public static void main (String args[])
{
System.out.println(“hello world”);
}
}
-public indica che il metodo è pubblico ed è visibile
-static indica che il metodo è associato alla classe e non può essere richiamato dai singoli oggetti della classe.
-void indica che non ci sono valori di ritorno
-Tra parentesi sono indicati i parametri. Il metodo main possiede come parametro un array di stringhe (indicato con args[]) che
corrisponde ai parametri passati dalla riga di comando quando viene eseguita l’applicazione
Questo semplice esempio dichiara una classe chiamata saluti, contenente il metodo main che è formato da un’unica
istruzione, ossia una chiamata del metodo println(). Usando la terminologia OOP diciamo che viene inviato all’oggetto
System.out il messaggio println. L’oggetto System.out indica lo standard output.
16
Lezione 2
Esempi usando il linguaggio Java
 Esempio di dichiarazione di una classe:
class <nome della classe>
{
//attributi
//metodi
}
17
Lezione 2
Esempi usando il linguaggio Java
 Esempio di dichiarazione di attributi:
class automobile
{
private int velocità, numero_porte;
String colore, marca;
}
 Esempio di dichiarazione di metodi
void accelera() { …}
public void sposta() { …}
18
Un primo metodo: il costruttore della classe
 Inizializza le variabili
 Costruttore: metodo con lo stesso nome della classe





non richiede tipo di ritorno
puo’ avere una lista di argomenti di inizializzazione
attivato automaticamente quando si crea un'oggetto con
new
sono possibili costruttore diversi, che devono avere liste di
argomenti diversi
costruttore di default: senza argomenti.
19
Lezione 2
Esempi usando il linguaggio Java
 Esempio di creazione ed uso di oggetti:
supponiamo che esista la classe Automobile; dichiariamo le seguenti istanze
di classe:
- Automobile auto1 ;
- Automobile auto2;
per creare l’oggetto si usa l’operatore new seguito dal nome del metodo
costruttore
- auto1 = new Automobile();
- auto2 = new Automobile();
20
Le classi
 Classificazione:
 Oggetti con gli stessi attributi e con gli stessi comportamenti
sono raggruppati in classi
 Classe astrazione che descrive delle proprietà
 Una classe descrive un insieme di oggetti individuali
 Un oggetto è una istanza della classe


Ogni istanza ha valori diversi degli attributi
Le istanze di una classe condividono i nomi degli attributi e le
operazioni
21
Lezione 2
Interazione tra oggetti
 Un programma ad oggetti è formato da tanti oggetti che
comunicano ed interagiscono tra loro
 L’interazione tra gli oggetti avviene con un meccanismo
chiamato scambio di messaggi
 Un oggetto, inviando un messaggio ad un altro oggetto, può
richiedere l’esecuzione di un metodo
 Un oggetto può interagire con un altro oggetto per diversi
motivi: per modificarne lo stato, per richiedere un’informazione
o per attivare un comportamento
22
Lezione 2
Interazione tra oggetti
 Un messaggio è costituito da 3 parti:
 un destinatario, cioè l’oggetto verso il quale il messaggio è
indirizzato
 il metodo che si vuole attivare, che deve essere uno dei
metodi messi a disposizione dall’oggetto destinatario
 l’insieme dei parametri che vengono passati all’oggetto
quando si richiede l’attivazione del metodo
23
Lezione 2
Interazione tra oggetti
 Per esempio, se abbiamo una classe automobile e una classe
autista, un oggetto di classe autista, per esempio autista1
per inviare all’oggetto auto1 di classe automobile il
messaggio che richiede di aumentare la velocità può
scrivere:
auto1.accelera()
24
Scarica

Le classi - Olinda Marano