Lezione 1
 Panoramica sui paradigmi di programmazione
 Introduzione alla programmazione orientata agli oggetti
1
Lezione 1
Paradigmi di programmazione
 Programmazione non strutturata
 Programmazione procedurale
 Programmazione modulare
 Programmazione ad oggetti
2
Lezione 1
Programmazione non strutturata
Il programma è costituito da un unico blocco di codice detto "main" dentro
il quale vengono manipolati i dati in maniera totalmente sequenziale (non si
utilizzano solo le tre strutture di controllo e ci possono essere goto)
3
Lezione 1
Programmazione procedurale
Il concetto base è quello di raggruppare i pezzi di programma ripetuti in
porzioni di codice utilizzabili e richiamabili ogni volta che se ne presenti
l'esigenza; queste porzioni di codice sono chiamate procedure. Il programma è
costituito da un unico file.
4
Lezione 1
Programmazione modulare
Le procedure aventi un dominio comune (ad esempio, procedure che eseguono
operazioni matematiche) vengono raggruppate in moduli separati. Il programma è
costituito da più file.
5
Verso la OOP: non si ricomincia da zero! Modularità? Certo!
Modularità
strutturare un’applicazione software in componenti il più possibile indipendenti
ma tra loro cooperanti e facilmente riutilizzabili in diversi progetti
• riduzione complessità
• il codice è più leggibile
• riutilizzo del codice
(anche venderlo ad
altri programmatori)
• il codice è più manutenibile
• facilita MOLTO il lavoro in team
• si fanno meno errori,
è più facile scoprirli,
è più facile correggerli
6
Lezione 1
Programmazione orientata agli oggetti
(Object Oriented Programming - OOP)
E’ basato sul fatto che esistono una serie di oggetti che interagiscono
vicendevolmente, scambiandosi messaggi ma mantenendo ognuno il
proprio stato ed i propri dati.
7
Lezione 1
Origini della programmazione ad oggetti
 Anni ’60: Simula 1 e Simula 67
 Anni ’70: Smalltalk
 Anni ’80: ADA – consacrazione della programmazione ad
oggetti
 Tra i più noti linguaggi di programmazione ad oggetti: Java,
C++, Delphi, C#, Visual Basic.NET
8
Approccio orientato agli oggetti: OOA
 metodologia generale
 pensare e rappresentare problemi usando concetti del
mondo reale
 oggetti: rappresentano proprietà e comportamenti in una
unica entità
 I modelli possono essere implementati usando un
linguaggio di programmazione, un sistema di gestione di
archivi, etc…
9
Approccio orientato agli oggetti
 Esempio di classi:
 PezzoScacchi (una Torre è un oggetto della classe)



Poligono (un Triangolo è un oggetto della classe)



Attributi:
 Colore, Altezza, Posizione
Operazioni:
 Muove
Attributi:
 Vertici, ColoreBordi, ColoreInterno
Operazioni:
 Disegna, Cancella, Muove
Bicicletta (la mia bicicletta è un oggetto della classe)


Attributi:
 DiametroRuote, Altezza, Materiale
Operazioni:
 Muove, Ripara, Pulisci
10
Approccio orientato agli oggetti
 Caratteristiche di un oggetto:
 Attributi (struttura dati)
 Comportamento
 Caratteristiche richieste da un approccio orientato agli
oggetti:
 Identità
 Polimorfismo
 Ereditarietà
(identity)
(polymorphism)
(inheritance)
11
Alcune differenze tra OO e procedurale
 OOP  dati e comportamento contenuti in un oggetto
singolo
 Procedurale  dati e comportamento separati
 OOP  divide il problema in oggetti separati che
realizzano azioni relazionandosi con altri oggetti
 Vantaggi proncipali di OOP:
 Dati e operazioni incapsulati in un oggetto
 Quando viene creato un nuovo tipo di oggetto, non è necessario
modificare le implementazioni precedenti
 Piuttosto, il nuovo oggetto eredita alcune caratteristiche precedenti
 Programmi OO sono di più semplice manutenzione
12
Lezione 1
Motivazioni della scelta della OOP
 Migliorare la qualità del software
 I programmi di grandi dimensioni vengono scomposti in
moduli, che chiameremo oggetti
 Ne trae beneficio la fase di manutenzione
 Riutilizzo del codice
13
Vantaggi della programmazione ad oggetti
 Protezione delle strutture dati
 Incapsulamento – information hiding
 Maggiore semplicità di progettazione astratta
 progettazione top-down e bottom-up, gerarchia di classi
 composizione delle classi come mattoni fondamentali
 Migliore riutilizzazione del codice
 composizione, aggregazione, derivazione
 Migliore manutenzione del codice
 le modifiche sono realizzate mediante aggiunta di classi e funzioni virtuali
– non è necessario riprendere e modificare l’intero codice
 Migiore documentazione del codice
 Strumenti grafici del tipo UML
14
Esempio: conto corrente
 Programmazione procedurale:
 L’attenzione del programmatore è concentrata sulle funzioni che
manipolano i dati!
Punto di vista tradizionale:
valore=CalcolaInteressi(ID);
valore di ritorno
funzione
argomento
 Ma: l’attenzione di un correntista è più concentrata sui dati che
sulle funzioni!
 Inoltre:
Chiunque può modificare i dati (se i dati sono
visibili)
 Funzioni e dati entità separate

15
Esempio: conto corrente
 Programmazione ad oggetti:
 L’attenzione del programmatore è concentrata sui dati non sulle funzioni
 Dati e funzioni NON sono entità separate
 programma ad oggetti: insieme di oggetti cooperanti, che sono istanze di un tipo di
dati astratto
 Esempio di tipo di dati astratto per gestire un conto corrente:
ContoCorrente
Numero correntista
Nome correntista
Saldo
Numero operazioni
deposita(valore)
preleva(valore)
calcolaInteressi()
incrementaNumeroOperazioni
leggiNumeroOperazioni()
dati
funzioni
16
Esempio: conto corrente
 Programmazione ad oggetti:
 Un particolare Conto Corrente è una ‘istanza’ del tipo di dati astratto
 Le funzioni sono attivate mediante messaggi.
Punto di vista ad oggetti:
valore=ID  CalcolaInteressi();
valore di ritorno
oggetto
messaggio
funzione
 Un particolare ContoCorrente: cosa è visibile dall’esterno?
Dati e funzioni pubbliche:
Deposita
Oggetto:
ContoCorrente

Preleva
leggiNumeroOperazioni
CalcolaInteressi
 interfaccia
Dati privati:
Numero correntista
Nome correntista
Saldo
Dati protetti: numero operazioni
17
Esempio: conto corrente
 Utilizzo dell’oggetto:
Messaggio:
‘deposita(x)’
oggetto
ContoCorrente
Messaggio:
‘leggiNumeroOperazioni()’
18
Scarica

Presentazione di PowerPoint