analisi-disegno.com


L'approccio Object Oriented

L'approccio di design che sta alla base delle architetture attuali è object oriented. Ciò non significa che tutti i componenti debbano essere costruiti con linguaggi object oriented (altrimenti non sarebbe possibile riutilizzare, come componenti, programmi e transazioni legacy), ma che i prìncipi generali della progettazione di applicazioni a componenti sono basati sull'orientamento agli oggetti.

Ma perché le architetture a componenti sono basate su prìncipi di progettazione object oriented?

Una diversa (e migliore) organizzazione del software.

L'attenzione e la progressiva diffusione dell'approccio object oriented sono legate al passaggio (avvenuto, all'incirca, nel decennio 1980-1990) dalle precedenti architetture monopiattaforma alle architetture distribuite, multipiattaforma. Questo cambiamento architetturale si è portato dietro alcune questioni concrete da risolvere: come distribuire i dati e le funzioni, che costituivano le vecchie applicazioni monolitiche, su una pluralità di processori cooperanti? Secondo quale logica? Come far colloquiare tra loro i diversi "pezzi applicativi"?

L'object oriented ha fornito a queste domande delle risposte innovative ed adeguate dal punto di vista tecnico, e soprattutto dal punto di vista dell'organizzazione del software.

Un'applicazione ad oggetti è costituita da un insieme di moduli software logicamente indipendenti, le classi, che incapsulano dati ed operazioni sui dati (risolvendo la distinzione tradizionale tra dati e funzioni), e che interagiscono tra loro tramite scambi di messaggi.

Rispetto ai moduli software tradizionali, le classi presentano alcuni vantaggi decisivi, sotto il profilo tecnico-organizzativo.

Elevata coesione interna, coupling limitato verso l'esterno.

Ogni classe è un componente estremamente coeso, che gestisce un insieme di dati omogenei e le operazioni che accedono a tali dati , e se necessario li modificano. Vantaggi:

Separazione rigorosa di interfaccia ed implementazione.

Le richieste (messaggi) indirizzabili ad una classe sono definite esplicitamente (nome messaggio, parametri di input e di output): l'interfaccia della classe è costituita, precisamente, dall'insieme dei messaggi che un qualsiasi chiamante (client) può indirizzarle. L'implementazione della classe è invece inaccessibile ai client. Vantaggi:

Polimorfismo.

Classi diverse possono rispondere al medesimo messaggio, ciascuna in modo appropriato. Il client non ha necessità di conoscere la classe precisa a cui appartiene l'oggetto su cui sta lavorando, ma può inviare un messaggio generico la cui risposta dipenderà dalla classe a cui l'oggetto appartiene. Vantaggi:

Ereditarietà.

È possibile specializzare una classe esistente, ereditandone attributi e comportamenti nella nuova classe, ed aggiungendo solo attributi ed operazioni specifici per la nuova tipologia da gestire. Vantaggi:

Queste caratteristiche dell'approccio object oriented hanno favorito la progressiva diffusione dei linguaggi OO in tutti i domini applicativi e nelle realtà che richiedono volumi di dati e processi elevati.

In particolare, l'approccio OO à indicato in tutte le situazioni applicative in cui si manifestino esigenze di:

Alcuni tra i vantaggi dell'approccio object oriented, comunque, possono essere conseguiti anche adottando tale approccio solo a livello di analisi e design, senza necessariamente ricorrere a linguaggi OO per la programmazione.

In particolare, analisi e design OO comportano comunque una migliore organizzazione dell'applicazione, in quanto le classi costituiscono elementi coesi al loro interno e tra loro disaccoppiati. Ciò garantisce una migliore manutenibilità, riusabilità e distribuibilità.


Bibliografia object oriented.


analisi-disegno.com , servizi e materiali per lo sviluppo dei sistemi software, a cura di Adriano Comai.