Programmazione funzionale: un primo approccio attraverso F#
Linguaggidiprogrammazione
1. I linguaggi di
programmazione
Andrea Serafini
I linguaggi di programmazione Cos’è un
linguaggio di
programmazione
Didactics of Computer Science
Sviluppo storico
Macchina
Assembly
Alto livello
Andrea Serafini Il processo di
programmazione
Compilazione
Università degli Studi di Trento I paradigmi di
programmazione
Imperativo
20 Aprile 2012 Dichiarativo
Funzionale
Orientato ad
oggetti
Concetti base
Variabili e tipi di
Fonti: dati
Strutture di
◮ J. Glenn Brookshear, Computer Science: An Overview, controllo
Procedure e
11th edition, Addison-Wesley Pearson, 2012 funzioni
Programmazione
◮ Wikipedia - http://it.wikipedia.org orientata ad
oggetti
2. Cos’è un linguaggio di programmazione I linguaggi di
programmazione
Andrea Serafini
Cos’è un
linguaggio di
programmazione
Un linguaggio di programmazione è un linguaggio artificiale e Sviluppo storico
Macchina
formale, dotato di un lessico, di una sintassi e di una Assembly
Alto livello
semantica ben definiti, utilizzabile per la programmazione di Il processo di
una macchina attraverso la scrittura di un programma sotto programmazione
Compilazione
forma di codice I paradigmi di
programmazione
Imperativo
Dichiarativo
Funzionale
La programmazione può essere paragonata all’insegnamento: Orientato ad
oggetti
è come se il programmatore insegnasse˝al computer come Concetti base
Variabili e tipi di
svolgere un determinato compito, più o meno complesso dati
Strutture di
controllo
Procedure e
- Wikipedia - funzioni
Programmazione
orientata ad
oggetti
3. Sviluppo storico I linguaggi di
programmazione
Linguaggi di prima generazione: linguaggio macchina Andrea Serafini
Cos’è un
linguaggio di
programmazione
Sviluppo storico
I primi programmi consistevano in una sequenza di istruzioni Macchina
codificate come cifre binarie attraverso un linguaggio Assembly
Alto livello
macchina, un linguaggio di prima generazione Il processo di
programmazione
Compilazione
Scrivere programmi in linguaggio macchina risultava I paradigmi di
programmazione
complesso e spesso conduceva ad errori. Da qui la necessità Imperativo
Dichiarativo
di sviluppare linguaggi più vicini alla sensibilità umana e Funzionale
Orientato ad
oggetti
facilmente convertibili in istruzioni macchina:
Concetti base
◮ linguaggi di seconda generazione Variabili e tipi di
dati
Strutture di
◮ linguaggi di terza generazione controllo
Procedure e
funzioni
Programmazione
orientata ad
oggetti
4. Sviluppo storico I linguaggi di
programmazione
Linguaggi di seconda generazione: linguaggio assembly Andrea Serafini
Negli anni ′ 40 furono sviluppati sistemi notazionali in cui le Cos’è un
linguaggio di
istruzioni venivano rappresentate in una forma mnemonica programmazione
piuttosto che numerica: il linguaggio assembly Sviluppo storico
Macchina
Assembly
Es: Sposta il contenuto del registro 5 nel registro 6˝ Alto livello
Il processo di
◮ linguaggio macchina: 4056 programmazione
Compilazione
◮ linguaggio assembly: MOV R5, R6 (identificatore) I paradigmi di
programmazione
Imperativo
Furono creati programmi in grado di convertire le espressioni Dichiarativo
Funzionale
mnemoniche in istruzioni binarie di linguaggio macchina: Orientato ad
oggetti
assembler Concetti base
Variabili e tipi di
dati
Svantaggi: Strutture di
controllo
Procedure e
◮ dipendenza dalla macchina funzioni
Programmazione
◮ primitive di basso livello (istruzioni espresse in piccoli orientata ad
oggetti
passi)
5. Sviluppo storico I linguaggi di
programmazione
Linguaggi di terza generazione: linguaggi di programmazione ad alto livello Andrea Serafini
Cos’è un
linguaggio di
programmazione
Sviluppo storico
A partire dagli anni ′ 50 furono sviluppati linguaggi di Macchina
Assembly
programmazione ad alto livello, che rispetto alle precedenti Alto livello
generazioni avevano il vantaggio di: Il processo di
programmazione
◮ essere indipendenti dalla macchina (istruzioni non Compilazione
I paradigmi di
dipendono dalle caratteristiche di una macchina programmazione
particolare) Imperativo
Dichiarativo
Funzionale
◮ contenere primitive di alto livello (istruzioni espresse Orientato ad
oggetti
come successione di primitive di basso livello), da cui la Concetti base
possibilità di introdurre anche strutture più generali e Variabili e tipi di
dati
più simili al linguaggio naturale Strutture di
controllo
Procedure e
funzioni
Programmazione
orientata ad
oggetti
6. Il processo di programmazione I linguaggi di
programmazione
Andrea Serafini
Cos’è un
linguaggio di
Programmare significa scrivere uno o più file di testo, programmazione
chiamato codice sorgente, tramite un editor Sviluppo storico
Macchina
Assembly
Alto livello
Il codice sorgente viene eseguito tramite Il processo di
◮ Compilazione o traduzione, ovvero il processo per cui il programmazione
Compilazione
codice sorgente viene tradotto in un codice binario I paradigmi di
programmazione
eseguibile (in linguaggio macchina) per mezzo di un Imperativo
programma detto compilatore Dichiarativo
Funzionale
Orientato ad
oppure tramite oggetti
Concetti base
◮ Interpretazione, ovvero il processo per cui il programma Variabili e tipi di
dati
viene eseguito da un interprete, traducendo in linguaggio Strutture di
controllo
macchina un’istruzione alla volta Procedure e
funzioni
Programmazione
orientata ad
oggetti
7. Il processo di compilazione I linguaggi di
programmazione
Andrea Serafini
Cos’è un
linguaggio di
programmazione
Il processo di compilazione consiste di 3 attività: Sviluppo storico
Macchina
Assembly
◮ analisi lessicale Alto livello
Il processo di
◮ analisi sintattica programmazione
Compilazione
◮ generazione del codice I paradigmi di
programmazione
Imperativo
Dichiarativo
Funzionale
Orientato ad
oggetti
Concetti base
Variabili e tipi di
dati
Strutture di
controllo
Procedure e
funzioni
Programmazione
orientata ad
oggetti
8. Il processo di compilazione I linguaggi di
programmazione
Analisi lessicale Andrea Serafini
Cos’è un
linguaggio di
programmazione
Sviluppo storico
L’analisi lessicale è il processo di divisione del programma Macchina
Assembly
Alto livello
sorgente in piccole entità, i token, che rappresentano gli
Il processo di
elementi minimi del linguaggio, non ulteriormente divisibili programmazione
Compilazione
I paradigmi di
L’analizzatore lessicale: programmazione
Imperativo
◮ legge il codice sorgente simbolo per simbolo, Dichiarativo
Funzionale
identificando quali gruppi di simboli rappresentano dei Orientato ad
oggetti
token, classificandoli in base alla loro natura Concetti base
Variabili e tipi di
◮ codifica i token e li consegna al parser dati
Strutture di
controllo
Procedure e
funzioni
Programmazione
orientata ad
oggetti
9. Il processo di compilazione I linguaggi di
programmazione
Analisi sintattica Andrea Serafini
Cos’è un
linguaggio di
programmazione
Sviluppo storico
L’analisi sintattica o parsing è il processo di identificazione Macchina
Assembly
della struttura grammaticale del programma e di Alto livello
Il processo di
riconoscimento del ruolo dei token. Si basa su un insieme di programmazione
regole che definiscono la sintassi del linguaggio di Compilazione
I paradigmi di
programmazione, chiamato grammatica. Tali regole vengono programmazione
Imperativo
espresse e rappresentate tramite diagrammi di sintassi Dichiarativo
Funzionale
Orientato ad
oggetti
Il risultato di questa fase è un albero di sintassi (parse tree),
Concetti base
che rappresenta l’interpretazione della composizione Variabili e tipi di
dati
grammaticale del programma Strutture di
controllo
Procedure e
funzioni
Programmazione
orientata ad
oggetti
10. Il processo di compilazione I linguaggi di
programmazione
Generazione del codice Andrea Serafini
La generazione del codice è l’attività finale di costruzione Cos’è un
linguaggio di
delle istruzioni in linguaggio macchina per implementare i programmazione
comandi riconosciuti dal parser. Un compito importante del Sviluppo storico
Macchina
generatore è l’ottimizzazione del codice Assembly
Alto livello
Il processo di
programmazione
Le 3 attività del processo di traduzione non vengono eseguite Compilazione
secondo un rigido ordine sequenziale, ma interagiscono fra I paradigmi di
programmazione
loro Imperativo
Dichiarativo
Funzionale
Orientato ad
oggetti
Concetti base
Variabili e tipi di
dati
Strutture di
controllo
Procedure e
funzioni
Programmazione
orientata ad
oggetti
11. I paradigmi di programmazione I linguaggi di
programmazione
Andrea Serafini
I linguaggi di programmazione vengono classificati in base al Cos’è un
linguaggio di
paradigma di programmazione, ovvero l’approccio con cui programmazione
viene concepito il programma e l’insieme degli strumenti Sviluppo storico
Macchina
concettuali forniti dal linguaggio per la stesura dello stesso: Assembly
Alto livello
◮ paradigma imperativo o procedurale Il processo di
programmazione
◮ paradigma dichiarativo Compilazione
◮ paradigma funzionale I paradigmi di
programmazione
Imperativo
◮ paradigma orientato ad oggetti Dichiarativo
Funzionale
Orientato ad
oggetti
Concetti base
Variabili e tipi di
dati
Strutture di
controllo
Procedure e
funzioni
Programmazione
orientata ad
oggetti
12. I paradigmi di programmazione I linguaggi di
programmazione
Paradigma imperativo Andrea Serafini
Cos’è un
linguaggio di
programmazione
Sviluppo storico
Macchina
Assembly
Alto livello
Il paradigma imperativo rappresenta l’approccio tradizionale Il processo di
al processo di programmazione, definendolo come lo sviluppo programmazione
Compilazione
di una successione di comandi che manipolano i dati per I paradigmi di
produrre il risultato desiderato programmazione
Imperativo
Dichiarativo
Funzionale
L’obiettivo è quindi cercare un algoritmo per risolvere il Orientato ad
oggetti
problema ed esprimerlo con opportuni comandi Concetti base
Variabili e tipi di
dati
Strutture di
controllo
Procedure e
funzioni
Programmazione
orientata ad
oggetti
13. I paradigmi di programmazione I linguaggi di
programmazione
Paradigma imperativo Andrea Serafini
Cos’è un
linguaggio di
◮ C: creato da Dennis Ritchie nei primi anni ′ 70 programmazione
originariamente come linguaggio per sviluppare software Sviluppo storico
di sistema, trovò presto popolarità fra la comunità di Macchina
Assembly
Alto livello
programmatori per il suo minimalismo
Il processo di
◮ FORTRAN (FORmula TRANslator): uno dei primi programmazione
Compilazione
linguaggi ad alto livello (1957), diffuso soprattutto in I paradigmi di
ambito scientifico e ingegneristico programmazione
Imperativo
Dichiarativo
◮ COBOL (COmmon Business-Oriented Language): Funzionale
Orientato ad
sviluppato agli inizi degli anni ′ 60 dalla U.S.Navy per oggetti
applicazioni commerciali Concetti base
Variabili e tipi di
dati
◮ Ada: linguaggio general-purpose, sviluppato verso la fine Strutture di
controllo
degli anni ′ 70 su iniziativa del Dipartimento della Difesa Procedure e
funzioni
degli USA Programmazione
orientata ad
◮ Pascal: molto diffuso a livello scolastico oggetti
14. I paradigmi di programmazione I linguaggi di
programmazione
Paradigma dichiarativo Andrea Serafini
Cos’è un
linguaggio di
programmazione
Compito del programmatore è dare una formulazione precisa Sviluppo storico
del problema, piuttosto che sviluppare un algoritmo per Macchina
Assembly
risolverlo. Sarà il sistema di programmazione dichiarativa ad Alto livello
applicare un algoritmo prestabilito Il processo di
programmazione
Compilazione
Si basa sul fatto che la logica formale matematica fornisce I paradigmi di
programmazione
algoritmi risolutivi, adatti per i sistemi di programmazione Imperativo
Dichiarativo
dichiarativa. Da qui lo sviluppo della programmazione logica Funzionale
Orientato ad
oggetti
◮ Prolog (PROgramming in LOGic): un programma Concetti base
consiste in una collezione di istruzioni iniziali (predicati) Variabili e tipi di
dati
a partire dalle quali l’algoritmo applica il ragionamento Strutture di
controllo
Procedure e
deduttivo (regole inferenziali) funzioni
Programmazione
orientata ad
oggetti
15. I paradigmi di programmazione I linguaggi di
programmazione
Paradigma funzionale Andrea Serafini
Cos’è un
linguaggio di
programmazione
Un programma è visto come un’entità che accetta input e Sviluppo storico
produce output, come una funzione matematica. É costruito Macchina
Assembly
connettendo unità di programma predefinite più piccole, tali Alto livello
che gli output di ogni unità siano input di un’altra unità, Il processo di
programmazione
ottenendo la relazione complessiva di input-output Compilazione
desiderata. Il processo di programmazione funzionale consiste I paradigmi di
programmazione
pertanto nella costruzione di funzioni come composizione di Imperativo
Dichiarativo
funzioni più semplici Funzionale
Orientato ad
oggetti
◮ LISP (LISt Processor): ideato nel 1958 da John Concetti base
McCarthy come linguaggio formale per studiare le Variabili e tipi di
dati
Strutture di
equazioni di ricorsione in un modello computazionale, controllo
Procedure e
molto usato nei progetti di intelligenza artificiale funzioni
Programmazione
orientata ad
oggetti
16. I paradigmi di programmazione I linguaggi di
programmazione
Paradigma orientato ad oggetti Andrea Serafini
Cos’è un
Un programma è visto come una collezione di unità, linguaggio di
programmazione
chiamate oggetti, caratterizzate da un insieme di attributi e Sviluppo storico
di procedure, chiamate metodi, che descrivono le attività Macchina
Assembly
eseguibili e il comportamento dell’oggetto al verificarsi di vari Alto livello
Il processo di
eventi. Ogni oggetto è in grado di comunicare con gli altri e programmazione
tale interazione è alla base della risoluzione dei problemi Compilazione
I paradigmi di
programmazione
Imperativo
L’approccio orientato ad oggetti consiste nell’identificare gli Dichiarativo
Funzionale
oggetti coinvolti nel programma e nel descriverli come unità Orientato ad
oggetti
autosufficienti Concetti base
Variabili e tipi di
dati
La modellizzazione astratta di un oggetto con i suoi attributi Strutture di
controllo
e i suoi metodi prende il nome di classe. Un oggetto è creato Procedure e
funzioni
a partire da una particolare classe e si chiama istanza di Programmazione
orientata ad
quella classe oggetti
17. I paradigmi di programmazione I linguaggi di
programmazione
Paradigma orientato ad oggetti Andrea Serafini
Cos’è un
La struttura di un programma orientato ad oggetti contiene linguaggio di
programmazione
la descrizione delle classi, che modellizzano uno o più oggetti
Sviluppo storico
utilizzati nel programma. Esiste inoltre una parte imperativa Macchina
Assembly
di programma, il main, contenente la sequenza di passi da Alto livello
eseguire quando il programma viene compilato Il processo di
programmazione
Compilazione
I paradigmi di
programmazione
Imperativo
Dichiarativo
Funzionale
Orientato ad
oggetti
Concetti base
Variabili e tipi di
dati
Strutture di
controllo
Procedure e
funzioni
Programmazione
orientata ad
oggetti
18. I paradigmi di programmazione I linguaggi di
programmazione
Paradigma orientato ad oggetti Andrea Serafini
Cos’è un
linguaggio di
◮ C++: sviluppato nel 1983 come versione avanzata del programmazione
linguaggio C, modificando il suo paradigma imperativo Sviluppo storico
Macchina
con caratteristiche orientate ad oggetti Assembly
Alto livello
◮ Java: sviluppato da Sun Microsystems agli inizi degli Il processo di
programmazione
anni ′ 90 a partire dal C++, apprezzato per i numerosi Compilazione
modelli predefiniti I paradigmi di
programmazione
◮ C# (C sharp): introdotto da Microsoft all’interno del Imperativo
Dichiarativo
Funzionale
Framework .NET, molto simile al C++ e al Java, Orientato ad
oggetti
promette di diventare preminente nel mondo dello Concetti base
sviluppo del software Variabili e tipi di
dati
Strutture di
◮ Visual Basic: creato da Microsoft per permettere agli controllo
Procedure e
utenti del sistema operativo Windows di sviluppare funzioni
Programmazione
applicazioni GUI (Graphical User Interface) orientata ad
oggetti
19. Concetti base I linguaggi di
programmazione
Struttura di un programma Andrea Serafini
Cos’è un
Un programma consiste in una collezione di istruzioni, divise linguaggio di
programmazione
in 3 categorie: Sviluppo storico
◮ istruzioni dichiarative: descrivono i dati utilizzati Macchina
Assembly
all’interno del programma Alto livello
Il processo di
◮ istruzioni imperative: descrivono i passaggi programmazione
Compilazione
dell’algoritmo da eseguire I paradigmi di
programmazione
◮ commenti: spiegano il programma, migliorandone la Imperativo
Dichiarativo
leggibilità (/*. . . /* oppure // . . . ) Funzionale
Orientato ad
oggetti
Concetti base
Variabili e tipi di
dati
Strutture di
controllo
Procedure e
funzioni
Programmazione
orientata ad
oggetti
20. Concetti base I linguaggi di
programmazione
Variabili e tipi di dati Andrea Serafini
Cos’è un
Una variabile identifica una locazione in memoria destinata a linguaggio di
contenere dei dati, che possono essere modificati nel corso programmazione
Sviluppo storico
dell’esecuzione del programma. Per questo motivo ogni Macchina
variabile è caratterizzata da un tipo di dato, che indica Assembly
Alto livello
l’insieme di valori che essa può assumere e le operazioni che Il processo di
programmazione
si possono effettuare su di essi. Una volta dichiarate, è Compilazione
possibile assegnare alle variabili un valore iniziale I paradigmi di
programmazione
◮ tipi primitivi Imperativo
Dichiarativo
int Costo = 100; Funzionale
◮ numerici: integer, float Orientato ad
oggetti
◮ caratteri: char, string
Concetti base
◮ booleani Variabili e tipi di
dati
◮ tipi derivati Strutture di
controllo
struct {char Nome[25]; Procedure e
◮ strutture dati: array funzioni
(omogenea) e record int Età; Programmazione
(eterogenea) float Peso;} orientata ad
oggetti
◮ classi Atleta;
21. Concetti base I linguaggi di
programmazione
Variabili e costanti Andrea Serafini
Una caratteristica importante di una variabile è la sua Cos’è un
linguaggio di
visibilità (o scope), ovvero la porzione di programma in cui è programmazione
possibile richiamarla e fare riferimento ad essa. Possiamo Sviluppo storico
Macchina
distinguere 2 categorie: Assembly
Alto livello
◮ variabili globali: visibili da qualunque punto del Il processo di
programmazione
programma Compilazione
◮ variabili locali: visibili solo all’interno di una determinata I paradigmi di
programmazione
parte di programma Imperativo
Dichiarativo
Funzionale
Orientato ad
oggetti
A differenza della variabile, una costante è una posizione di Concetti base
memoria che mantiene lo stesso valore per tutta la durata Variabili e tipi di
dati
Strutture di
dell’esecuzione del programma controllo
Procedure e
Es: funzioni
Programmazione
orientata ad
cost float pi = 3.14; oggetti
22. Concetti base I linguaggi di
programmazione
Strutture di controllo Andrea Serafini
Cos’è un
linguaggio di
programmazione
Sviluppo storico
Le strutture di controllo permettono di governare il flusso di Macchina
esecuzione del programma, alterandolo in base al risultato o Assembly
Alto livello
valutazione di una espressione Il processo di
programmazione
Compilazione
Il goto è la struttura di controllo più semplice, il cui I paradigmi di
programmazione
significato generale è quello di indirizzare il controllo ad una Imperativo
istruzione specificata, che può trovarsi in un punto qualsiasi Dichiarativo
Funzionale
del programma Orientato ad
oggetti
A partire dagli anni ′ 70, il goto è stato fortemente criticato, Concetti base
Variabili e tipi di
in quanto favorisce lo sviluppo di programmi poco leggibili e dati
Strutture di
modificabili, e sostituito da strutture più efficienti controllo
Procedure e
funzioni
Programmazione
orientata ad
oggetti
23. Concetti base I linguaggi di
programmazione
Strutture di controllo Andrea Serafini
Cos’è un
linguaggio di
programmazione
Sviluppo storico
Macchina
◮ Cicli iterativi: ripetizione di una sequenza di azioni Assembly
Alto livello
fintanto che una certa condizione viene verificata Il processo di
programmazione
Compilazione
◮ while I paradigmi di
programmazione
while (condizione) Imperativo
{corpo del ciclo} Dichiarativo
Funzionale
◮ for Orientato ad
oggetti
for (int i=1; i<n; i++) Concetti base
Variabili e tipi di
{corpo del ciclo} dati
Strutture di
controllo
Procedure e
funzioni
Programmazione
orientata ad
oggetti
24. Concetti base I linguaggi di
programmazione
Strutture di controllo Andrea Serafini
Cos’è un
linguaggio di
programmazione
◮ Strutture condizionali: esecuzione di un blocco di Sviluppo storico
Macchina
istruzioni se vale una certa condizione Assembly
Alto livello
Il processo di
◮ if-then-else programmazione
Compilazione
if (condizione) then {istruzione A}
I paradigmi di
else {istruzione B} programmazione
◮ switch-case: permette di scegliere un’istruzione tra Imperativo
Dichiarativo
diverse opzioni Funzionale
Orientato ad
oggetti
switch (variabile) {
Concetti base
case ’A’: istruzione A; break; Variabili e tipi di
dati
case ’B’: istruzione B; break; Strutture di
controllo
case ’C’: istruzione C; break; Procedure e
funzioni
default: istruzione D}
Programmazione
orientata ad
oggetti
25. Concetti base I linguaggi di
programmazione
Procedure Andrea Serafini
Cos’è un
linguaggio di
Una procedura è un costrutto che permette di raggruppare, programmazione
in un unico blocco, una sequenza di istruzioni utili a svolgere Sviluppo storico
Macchina
un determinato compito. É importante perché può essere Assembly
Alto livello
chiamata˝(o invocata˝) ogni volta in cui si ha la necessità, Il processo di
come se fosse una singola istruzione programmazione
Compilazione
I paradigmi di
programmazione
Imperativo
Dichiarativo
Funzionale
Orientato ad
oggetti
Concetti base
Variabili e tipi di
dati
Strutture di
controllo
Procedure e
funzioni
Programmazione
orientata ad
oggetti
26. Concetti base I linguaggi di
programmazione
Procedure Andrea Serafini
Una procedura si scrive come una singola unità di Cos’è un
linguaggio di
programma: programmazione
◮ nome della procedura - header (parametri) Sviluppo storico
Macchina
◮ corpo della procedura: parte dichiarativa e imperativa Assembly
Alto livello
Il processo di
programmazione
Compilazione
I paradigmi di
programmazione
Imperativo
Dichiarativo
Funzionale
Orientato ad
oggetti
Concetti base
Variabili e tipi di
dati
Strutture di
controllo
Procedure e
funzioni
Programmazione
orientata ad
oggetti
ProjectPopulation(0.03)
27. Concetti base I linguaggi di
programmazione
Funzioni Andrea Serafini
Cos’è un
Una funzione è una procedura il cui scopo è quello di linguaggio di
programmazione
restituire un valore, piuttosto che di svolgere un’azione. Sviluppo storico
Come conseguenza dell’esecuzione di una funzione, viene Macchina
Assembly
calcolato un valore e rispedito indietro al programma che l’ha Alto livello
invocata Il processo di
programmazione
Compilazione
I paradigmi di
É definita allo stesso modo programmazione
Imperativo
di una procedura, con la Dichiarativo
Funzionale
differenza che l’header di Orientato ad
oggetti
solito inizia specificando il Concetti base
Variabili e tipi di
tipo del valore da restituire dati
Strutture di
e termina con un’istruzione controllo
Procedure e
funzioni
(return) in cui è indicato
Programmazione
il valore CylinderVolume(1.5,4) orientata ad
oggetti
= 28.26
28. Programmazione orientata ad oggetti I linguaggi di
programmazione
Esempio di programma Andrea Serafini
Es: Gioco del laser: proteggere la Terra dai meteoriti˝ Cos’è un
linguaggio di
programmazione
Sviluppo storico
Macchina
Assembly
Alto livello
Il processo di
programmazione
Compilazione
I paradigmi di
programmazione
Imperativo
Dichiarativo
Una volta descritta la classe LaserClass, possiamo Funzionale
Orientato ad
dichiarare variabili di tale tipo e creare oggetti oggetti
Concetti base
Variabili e tipi di
C++: LaserClass Laser1; dati
Strutture di
Java: LaserClass Laser1 = new LaserClass(); controllo
Procedure e
funzioni
Possiamo richiamare metodi di tali oggetti Programmazione
orientata ad
oggetti
Laser1.fire(); Laser1.turnLeft();
29. Programmazione orientata ad oggetti I linguaggi di
programmazione
Costruttori Andrea Serafini
Cos’è un
linguaggio di
programmazione
Esistono metodi speciali
Sviluppo storico
associati alle classi che Macchina
hanno lo scopo di creare le Assembly
Alto livello
istanze e di inizializzarle Il processo di
programmazione
durante il processo di Compilazione
creazione: i costruttori I paradigmi di
programmazione
Imperativo
Dichiarativo
Funzionale
I costruttori vengono eseguiti automaticamente quando un Orientato ad
oggetti
oggetto è costruito a partire da una classe, passando i Concetti base
parametri in entrata Variabili e tipi di
dati
Strutture di
controllo
Procedure e
C++: LaserClass Laser1(50); funzioni
Java: LaserClass Laser1 = new LaserClass(50); Programmazione
orientata ad
oggetti
30. Programmazione orientata ad oggetti I linguaggi di
programmazione
Altre proprietà Andrea Serafini
L’ereditarietà è una tecnica che consiste nel derivare una Cos’è un
linguaggio di
classe a partire da un’altra già definita (extends). Una programmazione
classe derivata, detta sottoclasse, mantiene i metodi e gli Sviluppo storico
Macchina
attributi della classe da cui deriva, chiamata superclasse; Assembly
Alto livello
inoltre, può definirne di propri. Si tratta di una relazione di Il processo di
generalizzazione-specificazione: la superclasse definisce un programmazione
Compilazione
concetto generale e la sottoclasse ne rappresenta una I paradigmi di
programmazione
variante specifica Imperativo
Dichiarativo
Funzionale
Orientato ad
oggetti
Concetti base
Variabili e tipi di
dati
Strutture di
controllo
Procedure e
funzioni
L’incapsulamento si riferisce all’accesso ristretto alle proprietà Programmazione
interne di un oggetto: solo l’oggetto stesso può accedervi orientata ad
oggetti
(private vs public)