Programmazione object oriented – lezione 1
I linguaggi ad alto livello consentono di far comprendere agli utenti, tramite una forte astrazione. Il compilatore è quello che si occupa di tradurre un codice da linguaggio macchina ad alto livello. I linguaggi ad alto livello possono seguire due approcci:
- L’approccio procedurale (modifica dei dati per la risoluzione del problemi) ha concetti come istruzione, sequenzialità, assegnamento, è cioè attaccato al modello di von Neumann e all’hardware in generale.
- L’approccio object oriented permette di manipolare non solo i dati semplici, ma complessi; si punta al riuso dei programmi, abbattendo i costi.
Concetti base della programmazione OO
- Incapsulamento dei dati: ci si concentra solo sui concetti, nascondendo i dettagli (parte privata).
- Ereditarietà: si riusano parti di soluzioni di oggetti in una gerarchia e caratteristiche.
- Astrazione: si specificano le caratteristiche degli oggetti che si differenziano gli uni dagli altri.
- Polimorfismo: due oggetti possono avere lo stesso nome, ma sono specializzati in una classe diversa.
La programmazione OO, per la sua semplicità, è ottima per lo sviluppo di applicazioni ma non per software di base (come il S.O.).
Mapping
L’approccio procedurale che fa un tra “dominio del problema“ e “dominio della soluzione” è complicato e innaturale. Si preferisce usare, per questo mapping, un linguaggio OO che fornisce astrazioni adatte: Oggetti, Classi e Messaggi. Gli oggetti nel mondo reale sono esseri viventi, cose ecc.; Tutti gli oggetti hanno in comune attributi (dimensione, età, ecc.) e comportamenti (l’auto accelera, una persona mangia, ecc.). Oggetti distinti possono avere gli stessi attributi e comportamenti che possono essere raggruppati in classi. Attributi strutture dati; comportamenti procedure. Le classi hanno relazioni con le altre classi e comunicano tra loro tramite messaggi.
Vantaggi della OOP
- I dati sono incapsulati in oggetti;
- Le classi specificano oggetti simili (basterà soltanto creare le classi);
- La manutenzione è più facile;
- Si possono riusare le classi;
Dei concetti fondamentali per la OOP sono l’astrazione e l’information hiding. I modelli sono formati da elementi che rappresentano entità e che hanno vari comportamenti che permettono di raggrupparli in categorie diverse. In Java abbiamo questa suddivisione:
- Elementi del modello sono gli oggetti;
- Le categorie di oggetti vengono chiamate classi;
Gli oggetti costituiscono istanze di classi e sono entità manipolabili tramite metodi (cioè i comportamenti) definiti dalle classi. Per questo motivo in Java si scrivono le definizioni delle classi e poi si usano tali classi per gli oggetti. Es. “Hello”.length(); Il “.” Indica un metodo.