programmazione a oggetti tramite la macchina del caffé (1/3)

Download Programmazione a oggetti tramite la macchina del caffé (1/3)

If you can't read please download the document

Upload: marcello-missiroli

Post on 13-Jun-2015

1.382 views

Category:

Technology


0 download

DESCRIPTION

Una introduzione semplice e (spero) intuitiva al mondo della programmazione a oggetti usando come riferimento una macchina del caffé (tipo Nespresso) (1/3) Versione 2: tolto qualche refuso, aggiunto un paio di slide chairificatori.

TRANSCRIPT

  • 1. La programmzione a oggetti e le macchine del caff v. 2 Prof. Marcello Missiroli

2. Di cosa parliamo Vantaggi della programmazione a oggetti Terminologia del nuovo paradigma Tipi di visibilit 3. Partiamo dalla moka Supponiamo di dover scrivere un programma per fare il caff. Avremo bisogno di memorizzare la quantit d'acqua e di caff, nonch il tempo di accensione 4. Il codice in C structmoka{ floatwater;floatcoffee; } booleanmake_coffee(moka*m, inttime); 5. Problemi Scalabilit. Dobbiamo ogni volta passare tutti i dati alla funzione. Se abbiamo 1000 moke? Protezione. Le variabili possono essere modificate esternamente alla procedura senza controllo. 6. Cambiamo paradigma Nel linguaggio comune un paradigma un modello di riferimento, un termine di paragone. La parola deriva dal greco antico pardeigma, che significa esemplare, esempio. 7. Il paradigma attuale Il modello di programmazione attuale detto modello imperativo, basato su concetti quali Procedure Funzioni Variabili (possibilmente non globali) Parametri 8. Il paradigma a oggetti La programmazione orientata agli oggetti (OOP, Object Oriented Programming) un paradigma di programmazione, che prevede la definizione di oggetti software che interagiscono gli uni con gli altri attraverso lo scambio di messaggi. 9. La classe La classe lo strumento usato per definire la struttura degli oggetti e il loro funzionamento. (in termini classici, ricorda le struct con l'aggiunta di nuove parole chiave e con l'insermento delle procedure) 10. L'istanziazione L'istanziazione il meccanismo tramite il quale si crea un oggetto. Ricorda una variabile ma ha diverse caratteristiche in pi . (In termini classici, ricorda la creazione di una variabile dinamica tramite malloc, ma notevolemente semplificata) 11. Modernizziamoci 12. Nuove terminologie Strutture dati OggettiOggetti Funzioni MetodiMetodi Variabile OggettoOggetto Definire una variabile Istanziare unIstanziare un oggettooggetto Richiamare una funzione Inviare unInviare un messaggio a un oggettomessaggio a un oggetto 13. Il main publicstaticvoidmain(String args[]){ MacchinaCaffemc=new MacchinaCaffe(); mc.water=2.0f; mc.caffe=3.4f; System.out.println(mc.make_coffee(10)); } istanziazioneistanziazione Accesso agli attributi Invio di un messaggio (make_coffee) all'oggetto mc 14. Protezione Si introduce il concetto di accesibilit variabile per vari motivi quali: * Per proteggere il programmatore da se stesso * Per separare interfaccia e implementazione 15. Nuova versione privatefloatwater;privatefloatcaffe; publicfloatgetCaffe(){returncaffe;} publicvoidsetCaffe(floatcaffe){this.caffe= caffe;} publicfloatgetWater(){returnwater;} publicvoidsetWater(floatwater){this.water= water;} 16. Tipi di visibilit Private:Private: Visibile solo alla classe attuale Package-privatePackage-private (detta anche defaultdefault) Visibile solo all'interno del pacchetto Esiste solo in Java generalmente non una buona idea Protected:Protected: Visibile solo alle classi derivate Public:Public: Visibile a tutti 17. In gergo OOP Il meccanismo di protezione e visibilit (che si estende anche ai metodi) viene chiamato INCAPSULAMENTO 18. Costruttori Moltissimi errori banali di programmazione possono essere evitati assegnando opportuni valori di default alle variabili (cosa che spesso i programmatori dimenticano) Nell'OOP tale concetto viene ampliato e raffinato introducendo i costruttori 19. Cosa sono I costruttori sono particolari metodi che vengono chiamati in modo automatico nel momento dell'istanziazione di una variabile. Sono metodi speciali che NON hanno valore di ritorno (ma possono avere parametri) e devono essere public. 20. Esempio publicMacchinaCaffe(){ this.water=0f; this.caffe=0f; } Nel momento in cui si istanzia una variabile MacchinaCaffe, automaticamente le sue variabili sono inizializzate a 0 21. Polimorfismo Al contrario di altri linguaggi, come il C, POSSIBILE dichiarare pi volte la stessa variabile con un diverso numero e tipo di parametri. Potremmo quindi dichiarare una seconda variante del costruttore che inizializza a un dato valore i dati privati. 22. Esempio II publicMacchinaCaffe(floatwater, floatcaffe){ this.water=water; this.caffe=caffe;} Si usa in questo modo MacchinaCaffemc1=new MacchinaCaffe(30f,10f); 23. What the helll is thisthis? publicMacchinaCaffe(floatwater, floatcaffe){ thisthis.water=water; thisthis.caffe=caffe;} This un riferimento all'oggetto istanziato. Il pi delle volte non necessario. In questo caso si: altrimenti non si distingue tra water (parametro del metodo) e water (attributo dell'oggetto) 24. Riassumendo Abbiamo visto alcuni concetti fondamentali della OOP/OOD: Separazione interfaccia/implementazione Incapsulamento Polimorfismo Nelle prossime lezioni parleremo di ereditariet e interfacce. 25. Licenza Questo documento soggetto alla licenza Creative Common BY-SA (Attribution Share Alike) [email protected]