Sei sulla pagina 1di 43

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