Fondamenti di Informatica
Luca Cabibbo, Pino Di Battista, Beppe Liotta
Introduzione alla programmazione
orientata agli oggetti
La programmazione orientata agli oggetti
Fondamenti di Informatica
Contenuti
Program mi e program mazione
La program m azione orientata agli oggetti
oggetti software
comportamento e stato
metodi e variabili
classi
La programmazione orientata agli oggetti
Fondamenti di Informatica
Cosa un programma
Un progra m m a una frase che descrive delle azioniche devono essere
svolte da un calcolatore
La frase deve essere dettagliata e non ambigua
per questo motivo ciascun program ma viene scritto utilizzando un
linguaggio specializzato,formale e comprensibile da parte di un
calcolatore, chiamato linguaggio di progra m mazione
Lesecuzione di un program ma da parte di un calcolatore lo
svolgimento delle azioniin esso descritte
La programmazione orientata agli oggetti
Fondamenti di Informatica
Cosa la programmazione
La program m azione lattivit di scrittura di programmi
un progra m m atore una persona che scrive program mi
Program mazione controllo
un calcolatore fa esattamente quello che gli dici difare
Program mazione insegna mento
un calcolatore impara a fare nuove cose solo se gli dici come
Program mazione risoluzione di proble mi
un calcolatore normalmente usato per fare cose utili
Program mazione creativit
pi facile descrivere un problema che trovarne la soluzione
La programmazione orientata agli oggetti
Fondamenti di Informatica
Cosa la programmazione
Program mazione rappresentazione
un program m a rappresenta in un calcolatore un sistema complesso
reale o virtuale
Program mazione astrazione
deviidentificare le caratteristiche essenziali del sistema da
rappresentare, evitando di perderti nei dettagliinutili
Program mazione concretezza
ilcalcolatore per eseguire ciascun compito necessita diistruzioni
dettagliate
La programmazione orientata agli oggetti
Fondamenti di Informatica
Il calcolatore per un programmatore
Un calcolatore un sistema composto da hardware, software di base e
software applicativo
puoi schematizzare il calcolatore come una cipolla
hardware
sistema operativo
strumenti di
program mazione
program mi applicativi
il program matore normalmente interessato solo aglistrati pi
esterni di questa cipolla
gli strati pi interniriguardano altre figure dellinformatica
La programmazione orientata agli oggetti
Fondamenti di Informatica
I punti di vista dellutente e del programmatore
interfaccia del
program ma
strati nascosti dallinterfaccia
del programma
hardware
sistema operativo
strumenti di
program mazione
program mi applicativi
utente
7
program matore
La programmazione orientata agli oggetti
Fondamenti di Informatica
Programmazione orientata agli oggetti
Esistono diversi approcci alla program m azione, chiamati paradigmi di
program mazione
in questo corso introduciamo il paradigma di program mazione
orientato aglioggetti
Prima diiniziare, devi sapere due cose importanti della program m azione
orientata aglioggetti
nella programmazione orientata agli oggetti, un program ma
rappresenta un sistema come una collezione di oggetti(oggetti
software) che cooperano
nella programmazione orientata agli oggetti, ci sono due aspettiche
sono considerati strettamente separati
cosa deve essere fatto
co me le cose sono fatte
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software
Gli oggetti software sono antropomorfi
un oggetto software capace difare delle cose di eseguire delle
azioni specifiche
un oggetto software simile a un letto che sa rifarsi da solo
oppure a una porta che sa aprirsi e chiudersi
un oggetto software fa solo le cose che gli vengono richieste
esplicitamente
le richieste sono fatte da altri oggetti software
La programmazione orientata agli oggetti
Fondamenti di Informatica
Un oggetto reale
Iltelevisore un oggetto del mondo reale
introduciamo ora alcuni aspetti del paradigma orientato agli oggetti
con riferimento a questo oggetto del mondo reale
10
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti e comportamento
Cosa sa fare un televisore?
sa accendersi
sa sintonizzarsi su un canale
sa variare il volume
sa spegnersi
Queste sono le cose che posso chiedere a un televisore difare
le cose che un oggetto sa fare caratterizzano il comportamento
delloggetto
11
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti e messaggi
Co me posso chiedere altelevisore di comportarsi come voglio ?
come posso chiedergli diaccendersi, disintonizzarsi su un canale,
di variare il volume, di spegnersi ?
Premendo un tasto deltelecomando, che gliinvia un comando sotto
forma di segnale elettromagnetico
detto nella terminologia della program mazione orientata agli oggetti,
inviandogliun messaggio
12
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti, propriet e stato
Iltelevisore, per eseguire un comando che gli viene chiesto inviandogli
un messaggio, deve conoscere il valore delle sue propriet
iltelevisore sa se acceso o spento
iltelevisore sa quale canale selezionato
iltelevisore sa il volume attuale
Le propriet di un oggetto caratterizzano lo stato delloggetto
13
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti visti da fuori interfaccia
Cosa devi sapere deltelevisore per poterlo usare?
non serve conoscere il suo schema elettrico ci mancherebbe altro
...
ma serve sapere solo
i messaggi che puoiinviargli
la semantica (leffetto) di ciascun messaggio
Tutto ci che serve per usare un oggetto conoscere la sua interfaccia
14
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti visti da dentro implementazione
Il progettista del televisore deve
definire linterfaccia deltelevisore
stabilire come loggetto potr essere usato dallutente
fornire limplementazione del televisore
implementare un oggetto vuol dire progettarlo e realizzarlo
il progettista del televisore ne deve definire lo schema elettrico
15
La programmazione orientata agli oggetti
Fondamenti di Informatica
Implementazione di oggetti
La progettazione e la realizzazione di un televisore pu consistere
nellassemblaggio di
componenti elettroniciimplementati da altri che vengono usati
conoscendone linterfaccia
componenti elettroniciimplementati precedentemente
riusati senza modifiche
componenti elettroniciimplementati appositamente
16
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software
Nella program mazione orientata agli oggetti, gli oggetti software sono
le componenti dei programmi
un program m a rappresenta un sistema come una collezione di
oggetti software che interagiscono
gli oggetti software interagiscono, cooperando, per ottenere il
comportamento complessivo desiderato
gli oggetti software cooperano inviandosi messaggi
17
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software
Molti oggettisoftware corrispondono a oggettireali
un documento, un libro, uno studente
Altri oggetti software corrispondono a entit concettuali
una equazione, una sequenza di caratteri, un esame
Altri oggetti software sono completamente virtuali, eintrodottisolo per
esigenze realizzative
una finestra o un cursore sullo schermo
18
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software
Un esempio di oggetto software
una equazione di secondo grado
una equazione di secondo grado
In questo corso, utilizzeremo spesso la notazione grafica UML
un oggetto software rappresentato da un rettangolo
ilrettangolo riporta al suo interno il nome delloggetto,
sottolineato
U ML sta per Unified Modeling Language
la notazione U ML verr introdotta gradualmente e informalmente
la notazione per gli oggetti software deve essere completata con
altri elementi
19
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software visti da fuori comportamento e interfaccia
Un oggetto software sa eseguire azioni specifiche
specializzato sa come fare solo delle cose specifiche
le fa solo su richiesta da parte di altrioggetti software
Le cose che un oggetto software sa fare caratterizzano il
co mportamento delloggetto software
la descrizione del comportamento di un oggetto software si chiama
interfaccia
20
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software visti da fuori comportamento e interfaccia
Ad esempio,loggetto software una equazione di secondo grado (che
rappresenta una equazione deltipo ax2 + bx + c = 0)
sa acquisire icoefficienti a, b e c
sa risolversi sa visualizzare le proprie soluzioni
una equazione di secondo grado
acquisiscii coefficienti(a,b,c)
risolviti()
Notazione grafica
un oggetto software rappresentato da un rettangolo, suddiviso in
pi parti
la parte alta riporta il nome delloggetto, sottolineato
la parte bassa riporta linterfaccia delloggetto la descrizione
delle cose che loggetto sa fare
21
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software visti da fuori messaggi
A un oggetto software possiamo chiedere difare una cosa inviandogli un
m essaggio
acquisiscii coefficienti(1,2,1)
una equazione di secondo grado
acquisiscii coefficienti(a,b,c)
risolviti()
risolviti()
una equazione di secondo grado
acquisiscii coefficienti(a,b,c)
risolviti()
Notazione grafica
una freccia e un messaggio rappresentano linvio diun messaggio a
un oggetto
22
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software visti da dentro stato e propriet
Un oggetto software porta con s le informazioni che ne descrivono lo
stato
leinformazioni che descrivono lo stato di un oggetto sono le
propriet delloggetto
Le propriet di una equazione di secondo grado sono i suoi coefficienti
a, b e c
lo stato di una equazione di secondo grado descritto dal valore
delle propriet a, b e c
una equazione di secondo grado non saprebbe risolversi se non
conoscesse il suo stato
23
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software visti da dentro variabili
Il valore delle propriet di un oggetto software sono memorizzate nelle
variabili delloggetto
una variabile un contenitore (con un nome) che in grado di
me morizzare una informazione elementare un valore
ilvalore me m orizzato in una variabile pu variare nel corso
dellevoluzione del sistema software
il nome variabile deriva da questa caratteristica
Le propriet a, b e c nelloggetto software una equazione di secondo
grado possono essere rappresentate da tre variabili
ciascuna di queste tre variabili deve essere in grado di memorizzare
un numero reale
24
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software visti da dentro variabili
I coefficienti delloggetto software una equazione di secondo grado
sono rappresentati da tre variabili a, b e c
una equazione di secondo grado
a=1
b=2
c=1
acquisiscii coefficienti(a,b,c)
risolviti()
Notazione grafica di un oggetto software
un oggetto software rappresentato da un rettangolo, suddiviso in
tre parti
la parte alta riporta il nome delloggetto, sottolineato
la parte centrale riporta le variabili delloggetto, con illoro valore
la parte bassa riporta linterfaccia delloggetto la descrizione
delle cose che loggetto sa fare
25
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software visti da dentro metodi
Il comportamento di un oggetto software realizzato mediante i metodi
un oggetto software contiene un metodo per ciascuna cosa che sa
fare
un oggetto software contiene un metodo per ciascun messaggio
che sa interpretare
un metodo una sequenza diistruzioni di un linguaggio di
program mazione
un metodo specifica le azioni che loggetto software deve
svolgere quando loggetto riceve quel messaggio
26
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software visti da dentro metodi
Un metodo una sequenza diistruzioni di un linguaggio di
program mazione
un metodo specifica le azioni che loggetto software deve svolgere
quando loggetto riceve quel messaggio
una equazione di secondo grado
a=1
b=2
c=1
acquisiscii coefficienti(a,b,c)
...
risolviti()
calcola D = b2 - 4ac;
se D >=0 allora
calcola x1 = (-b -D)/2a;
calcola x2 = (-b +D)/2a;
visualizza x1 e x2 sullo schermo;
altrimenti
...
...
27
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software visti da dentro istruzioni
risolviti()
una equazione di secondo grado
a=1
b=2
c=1
acquisiscii coefficienti(a,b,c)
...
risolviti()
calcola D = b2 - 4ac;
se D >=0 allora
calcola x1 = (-b -D)/2a;
calcola x2 = (-b +D)/2a;
visualizza x1 e x2 sullo schermo;
altrimenti
...
...
lo schermo
visualizza(-1,-1)
...
visualizza(...)
...
Le istruzioniin un metodo sono
calcolo di espressioni e memorizzazione di valori
istruzioni di controllo ad esempio, se ... allora ...
invio di messaggi ad altri oggetti software
28
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software visti da dentro metodi e variabili
Ma chi glielo spiega a un oggetto software che cosa fare quando riceve
un messaggio ?
il program matore,il quale deve specificare la sequenza di azioni del
metodo attivato dalla ricezione di quel messaggio
Chi glielo spiega a un oggetto software quali propriet descrivono ilsuo
stato ?
il program matore,il quale deve specificare le variabili delloggetto
software
29
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software
Esempio di alcuni oggetti software in un sistema software
la porsche
Paola Neri
marca = "Porsche"
modello = "Carrera"
cilindrata = 2500
targa = "BC 555 AZ"
possessore = Paola Neri
nome = "Paola"
cognome = "Neri"
et = 34
professione = "manager"
...
...
la macchina di Mario
rr
marca = "Fiat"
modello = "Bravo"
cilindrata = 1600
targa = "AB 777 KK"
possessore = Mario Rossi
marca = "Rolls Royce"
modello = "Silver Cloud"
cilindrata = 3000
targa = "AM 321 A M"
possessore = Paola Neri
...
30
...
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software e identificatori
Ciascun oggetto software ha un proprio nome, che permette diriferirsi a
quelloggetto
i nomi degli oggetti software sono chiamatiidentificatori
oggetti software diversi hanno identificatori diversi
lidentificatore permette diriferirsi a un oggetto software senza
ambiguit
ilvalore di una variabile diun oggetto software pu essere
lidentificatore di un altro oggetto
la porsche
Paola Neri
marca = "Porsche"
modello = "Carrera"
cilindrata = 2500
targa = "BC 555 AZ"
possessore = Paola Neri
nome = "Paola"
cognome = "Neri"
et = 34
professione = "manager"
...
31
...
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software e classi
La nostra concezione corrente che ciascun oggetto software
rappresenta direttamente una componente del sistema originale
ad esempio, una automobile o una persona
Problema dobbiamo descrivere gli oggetti software uno a uno?
potrebbero essere in numero enorme le auto diRo ma, gliitaliani
non vogliamo descriverliindividualmente potrebbero avere molte
cose in comune
Soluzione descriviamo interiinsiemi di oggetti software con
caratteristiche simili
una classe la descrizione di un insieme di oggetti software con
caratteristiche simili
32
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti software e classi
Oggetti software della classe Auto mobile
la porsche
marca = "Porsche"
modello = "Carrera"
cilindrata = 2500
targa = "BC 555 AZ"
possessore = Paola Neri
...
la macchina di Mario
rr
marca = "Fiat"
modello = "Bravo"
cilindrata = 1600
targa = "AB 777 KK"
possessore = Mario Rossi
marca = "Rolls Royce"
modello = "Silver Cloud"
cilindrata = 3000
targa = "AM 321 A M"
possessore = Paola Neri
...
33
...
La programmazione orientata agli oggetti
Fondamenti di Informatica
Classi
Una classe la descrizione di un insieme di oggetti software con
caratteristiche simili
una classe descrive le caratteristiche simili di un insieme di oggetti
software
ne specifica le propriet
ne specifica le cose che sanno fare
Automobile
marca : String
modello : String
cilindrata :int
targa : String
possessore : Persona
...
34
La programmazione orientata agli oggetti
Fondamenti di Informatica
Notazione grafica per le classi
Automobile
marca : String
modello : String
cilindrata :int
targa : String
possessore : Persona
...
Notazione grafica per una classe
una classe rappresentata da un rettangolo, suddiviso in tre parti
la parte alta riporta il nome della classe (non sottolineato)
la parte centrale riporta le variabili deglioggetti della classe, con
illoro tipo
la parte bassa riporta linterfaccia deglioggetti della classe
35
La programmazione orientata agli oggetti
Fondamenti di Informatica
Classi e istanze
Una classe anche la fabbrica degli oggetti software di quella categoria
Una istanza un oggetto software di una classe
costruito sulla base di ci che specificato dalla classe
la costruzione di un oggetto software da una classe si chiama
creazione o istanziazione delloggetto software
gli oggetti software creati(istanziati) da una classe sichiamano
istanze della classe
36
La programmazione orientata agli oggetti
Fondamenti di Informatica
Classi e istanze
La classe Automobile con una sua istanza
...
Automobile
la porsche : Automobile
marca : String
modello : String
cilindrata :int
targa : String
possessore : Persona
marca = "Porsche"
modello = "Carrera"
cilindrata = 2500
targa = "BC 555 AZ"
possessore = Paola Neri
...
Notazione grafica
accanto al nome delloggetto software viene indicato anche il nome
della classe
37
La programmazione orientata agli oggetti
Fondamenti di Informatica
Istanze
Ciascuna istanza di una classe simile alle altre istanze della classe
tutte le istanze di una classe hanno le stesse variabilie gli stessi
metodi
Ciascuna istanza di una classe diversa dalle altre istanze della classe
ogniistanza ha un proprio identificatore univoco
ogniistanza caratterizzata da un proprio stato
38
La programmazione orientata agli oggetti
Fondamenti di Informatica
Oggetti
Qual la differenza tra itermini oggetto software e istanza ?
Finora abbiamo parlato di
oggetto software indipendentemente dal concetto di classe
istanza di una classe in modo indissolubilmente legato al
concetto di classe
In realt, non possono esistere oggetti software che non sono istanze di
classi
esistono solo oggetti software che sono creati da classi
itermini oggetto software e istanza sono sinonimi
dora in poi, parleremo semplicemente di oggetti
39
La programmazione orientata agli oggetti
Fondamenti di Informatica
Metodi e variabili di classe
Una classe pu avere un proprio comportamento e un proprio stato
ilcomportamento di una classe realizzato mediante i metodi di
classe
in corrispondenza a un metodo di classe, possibile inviare un
messaggio a una classe
lo stato di una classe rappresentato mediante le variabili di
classe
le variabili diclasse rappresentano propriet che sono associate
alla classe
metodi e variabili degli oggetti sono chiamati per contrapposizione
m etodi distanza e variabili distanza o semplicemente metodi
e variabili
Questa caratteristica permette di usare una classe come un singolo
oggetto,fittizio
40
La programmazione orientata agli oggetti
Fondamenti di Informatica
Variabili e metodi distanza
Ad esempio, considera degli oggetti Studente che hanno (tra laltro) la
propriet numero di matricola
il numero dimatricola di un oggetto Studente viene rappresentato
da una variabile distanza
Studente
pierino : Studente
nome : String
cognome : String
matricola :int
nome = "Pietro"
cognome = "Belli"
matricola = 352
presentati()
41
presentati()
La programmazione orientata agli oggetti
Fondamenti di Informatica
Variabili e metodi di classe
Il numero dimatricola di uno studente deve essere assegnato al
mo mento della creazione di un oggetto Studente,in modo progressivo
linformazione relativa al prossimo numero di matricola da
assegnare parte dello stato dellintero sistema software
chiaramente, questa propriet non relativa a nessun particolare
oggetto Studente
questa propriet deve essere gestita come propriet della classe
Studente mediante una variabile di classe
In corrispondenza,il metodo per calcolare il prossimo numero di
matricola un metodo di classe
42
La programmazione orientata agli oggetti
Fondamenti di Informatica
Variabili e metodi di classe
Metodi e variabili distanza (in nero) e di classe (in rosso)
Studente
pierino : Studente
nome : String
cognome : String
matricola :int
prossimaMatricola = 353
presentati()
assegnaMatricola()
43
nome = "Pietro"
cognome = "Belli"
matricola = 352
presentati()
La programmazione orientata agli oggetti
Fondamenti di Informatica