La programmazione oggetti – 1

Indice dei contenuti

Introduzione

I vantaggi dell’approccio OOP

Elementi fondamentali della Programmazione ad oggetti

Introduzione

Nel corso dell’evoluzione tecnologica che è intercorsa dalla nascita dei primi calcolatori anni post II guerra mondiale ai giorni nostri, anche le modalità di sviluppo del software sono cambiate, spesso integrandosi fra di loro; il motivo è da ricercare nella crescente complessità dei compiti che in epoca moderna si affidano ai computer richiedendo loro di risolvere problemi sempre più complessi.
Negli anni ‘70 si sviluppano diversi linguaggi di programmazione come il Fortran, il Pascal, il C, il Basic, Cobol che poi nei decenni successivi saranno protagonisti in specifici settori dell’informatica e delle tecnologie ICT in generale.
Tutti i linguaggi sopra menzionati, hanno come visto nel caso del C++ che è una naturale estensione del linguaggio C approccio procedurale che possiamo riassumere nelle fasi di realizzazione di un programma:

Orbene a metà anni ‘70 con l’introduzione del C++, si comincia ad intravedere un altro aspetto della programmazione, legato ad una nuova modalità di sviluppo del software la programmazione ad oggetti, che sposta completamente il modello di sviluppo dei programmi su una base moderna è più efficiente.
Il punto di vista del programma orientata agli oggetti (che d’ora in poi chiameremo brevemente OOP), risiede nel definire degli oggetti della realtà che ci circonda e di definire le interazioni che possono avvenire fra essi. In altri termini il problema da risolvere non è visto unicamente come una sequenza prefissata di istruzioni anche lunga, ma è costituito da un insieme di oggetti che interagiscono fra loro per risolvere il problema.


Questo approccio, all’apparenza più complesso (e in parte lo è), stravolge il concetto di programma come entità derivante da uno o più algoritmi, aumentando il livello di astrazione talvolta necessario nella risoluzione di problemi più complessi.
In quest’ottica come vedremo cambiano gli strumenti concettuali anche di analisi e progettazione, che non sono più il flow-chart, ma una serie di schemi concettuali che sono definiti nell’ambito dell’UML, Unified Modelling Language che sarà discusso più avanti.
La domanda che allora viene spontanea, ma allora tutto quello che è realizzato con il procedurale è da ritenersi superato ?
La risposta è assolutamente no, in quanto nell’implementazione, di questo nuovo metodo, l’approccio procedurale è l’aspetto tecnico maggiormente rilevante all’implementazione di tale stile di programmazione, come vedremo più avanti.

I vantaggi dell’approccio OOP

Nel cambiamento, occorre definire il rapporto costi e benefici; i costi sono l’apprendimento di una nuova metodologia raffinata, mentre i benefici sono il riuso del codice, che permettono al programmatore di costruire i propri programmi su un un set di oggetti sul quale poter lavorare, conoscendo solo le modalità di utilizzo.
Dal punto di vista operativo negli anni 90, si è poi sviluppato il linguaggio Java che è completamente OOP come tanti altri C##. Ruby, ecc.

Elementi fondamentali della programmazione OOP

Per poter comprendere meglio, la metodologia occorre comprendere i concetti chiave di tale approccio.

Definizione: Per oggetto si intende un singolo elemento della rappresentazione astratta di un’entità della realtà che si vuole rappresentare, che al suo interno racchiude sia le sue caratteristiche, che le modalità con le quali può essere utilizzato.

A titolo di esempio, proviamo a rappresentare l’oggetto auto; di tale oggetto si possono individuare diverse caratteristiche per semplicità cilindrata, colore, alimentazione, porte, velocità e delle modalità di utilizzo della stessa quali accelera, frena, retromarcia, ecc.
Le caratteristiche sono definite attributi, mentre le modalità di utilizzo metodi.
L’oggetto per essere completamente definito deve avere dei valori assegnati ai suoi attributi ad esempio:

colore=”rosso”;
cilindrata=1299 cm cubi;

alimentazione=”diesel”;

porte=5;

velocità=0; // auto ferma

E’ possibile utilizzare l’oggetto auto solo attraverso i suoi metodi ad esempio il metodo accelera potrebbe essere specificato così:

accelera ( a )
{

accelerazione=a;

}

in questo modo a è un numero che rappresenta quanto l’autista spinge sull’acceleratore che si traduce in un’accelerazione sull’auto producendo un aumento della velocità. Si tenga presente che l’auto raggiunta una velocità di crociera può azzerare l’accelerazione attraverso l’invocazione del metodo “accelera”.
Simili ragionamenti, possono essere lasciati al lettore per esercizio, quello che interessa è l’aspetto fondamentale dell’oggetto ovvero esso si riferisce ad un’entità singola (una sola auto nell’esempio).
Occorre, quindi definire il concetto di classe come una collezione di oggetti dello stesso tipo caratterizzati da attributi e metodi.