
Indice dei contenuti
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:
- Analisi: si definiscono i dati che devono essere elaborati, il come devono essere elaborati, e i risultati attesi, anche dettagliando le soluzioni in termini di algoritmi;
- Implementazione: definiti gli algoritmi risolutivi e i dati coinvolti si passa alla codifica in linguaggio di programmazione. La scelta non è sempre semplice anche perché nella fase di analisi devono essere definite le piattaforme hardware/software che devono poi eseguire i programmi.
Su quest’ultimo aspetto farei attenzione in quanto, prima i software non sono facilmente multipiattaforma. Un programma scritto in C eseguito in ambiente Windows non può essere eseguito in ambiente Linux, nemmeno se si prende il codice sorgente si ricompila il codice.
Nei capitolo “tecniche di sviluppo software avanzate” saranno chiariti anche questi aspetti. - Test e Collaudo: è una fase molto delicata in quanto i programmatori devono ricercare errori logici e di funzionamento non sempre prevedibili, questo è uno dei motivi per i quali il software spesso è mantenuto e sono rilasciati aggiornamenti.
- Distribuzione: è l’atto finale nel quale il software viene distribuito ai clienti finali, è quindi deve essere corredato di manuale d’uso per l’utente finale e di licenza (commerciale, open source, ecc.)
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