lezione 1 panoramica sui paradigmi di programmazione introduzione alla programmazione orientata agli...

18
Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

Upload: arduino-lazzari

Post on 02-May-2015

231 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

Lezione 1

Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli

oggetti

1

Page 2: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

Paradigmi di programmazione

Programmazione non strutturataProgrammazione proceduraleProgrammazione modulareProgrammazione ad oggetti

2

Lezione 1

Page 3: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

Programmazione non strutturata

3

Lezione 1

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)

Page 4: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

Programmazione procedurale

4

Lezione 1

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.

Page 5: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

Programmazione modulare

5

Lezione 1

Le procedure aventi un dominio comune (ad esempio, procedure che eseguono operazioni matematiche) vengono raggruppate in moduli separati. Il programma è costituito da più file.

Page 6: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

6

Modularità

strutturare un’applicazione software in componenti il più possibile indipendenti ma tra loro cooperanti e facilmente riutilizzabili in diversi

progetti

• riduzione complessità

• riutilizzo del codice (anche venderlo ad altri programmatori)

• si fanno meno errori, è più facile scoprirli, è più facile correggerli

• il codice è più leggibile

• il codice è più manutenibile

• facilita MOLTO il lavoro in team

Page 7: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

Programmazione orientata agli oggetti (Object Oriented Programming - OOP)

7

Lezione 1

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.

Page 8: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

Origini della programmazione ad oggetti

Anni ’60: Simula 1 e Simula 67Anni ’70: SmalltalkAnni ’80: ADA – consacrazione della

programmazione ad oggettiTra i più noti linguaggi di programmazione ad

oggetti: Java, C++, Delphi, C#, Visual Basic.NET

8

Lezione 1

Page 9: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

9

Approccio orientato agli oggetti: OOAmetodologia generale pensare e rappresentare problemi usando

concetti del mondo realeoggetti: 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…

Page 10: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

10

Approccio orientato agli oggettiEsempio di classi:

PezzoScacchi (una Torre è un oggetto della classe) Attributi:

Colore, Altezza, Posizione Operazioni:

Muove Poligono (un Triangolo è un oggetto della classe)

Attributi: Vertici, ColoreBordi, ColoreInterno

Operazioni: Disegna, Cancella, Muove

Bicicletta (la mia bicicletta è un oggetto della classe) Attributi:

DiametroRuote, Altezza, Materiale Operazioni:

Muove, Ripara, Pulisci

Page 11: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

11

Approccio orientato agli oggettiCaratteristiche di un oggetto:

Attributi (struttura dati)Comportamento

Caratteristiche richieste da un approccio orientato agli oggetti:Identità (identity)Polimorfismo (polymorphism)Ereditarietà (inheritance)

Page 12: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

12

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 oggettiVantaggi proncipali di OOP:

Dati e operazioni incapsulati in un oggettoQuando viene creato un nuovo tipo di oggetto, non è

necessario modificare le implementazioni precedentiPiuttosto, il nuovo oggetto eredita alcune caratteristiche

precedentiProgrammi OO sono di più semplice

manutenzione

Page 13: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

Motivazioni della scelta della OOP

Migliorare la qualità del softwareI programmi di grandi dimensioni vengono

scomposti in moduli, che chiameremo oggettiNe trae beneficio la fase di manutenzioneRiutilizzo del codice

13

Lezione 1

Page 14: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

14

Vantaggi della programmazione ad oggettiProtezione delle strutture dati

Incapsulamento – information hidingMaggiore semplicità di progettazione astratta

progettazione top-down e bottom-up, gerarchia di classicomposizione 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 codiceStrumenti grafici del tipo UML

Page 15: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

15

Esempio: conto corrente Programmazione procedurale:

L’attenzione del programmatore è concentrata sulle funzioni che manipolano i dati!

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

Punto di vista tradizionale: valore=CalcolaInteressi(ID);

funzione argomentovalore di ritorno

Page 16: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

16

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:

ContoCorrenteNumero correntistaNome correntistaSaldoNumero operazionideposita(valore)preleva(valore)calcolaInteressi()incrementaNumeroOperazionileggiNumeroOperazioni()

dati

funzioni

Page 17: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

17

Esempio: conto corrente Programmazione ad oggetti:

Un particolare Conto Corrente è una ‘istanza’ del tipo di dati astratto

Le funzioni sono attivate mediante messaggi.

Un particolare ContoCorrente: cosa è visibile dall’esterno?

Punto di vista ad oggetti: valore=ID CalcolaInteressi();

oggetto funzionevalore di ritorno messaggio

Oggetto:ContoCorrente Dati privati:

Numero correntistaNome correntistaSaldo

Dati protetti: numero operazioni

Dati e funzioni pubbliche:Deposita Preleva leggiNumeroOperazioni CalcolaInteressi

interfaccia

Page 18: Lezione 1 Panoramica sui paradigmi di programmazione Introduzione alla programmazione orientata agli oggetti 1

18

Esempio: conto corrente

Utilizzo dell’oggetto:

oggettoContoCorrente

Messaggio:‘deposita(x)’

Messaggio:‘leggiNumeroOperazioni()’