Programmazione orientata agli aspetti

La programmazione orientata agli aspetti è un paradigma di programmazione basato sulla creazione di entità software — denominate aspetti — che sovrintendono alle interazioni fra oggetti finalizzate a eseguire un compito comune. Il vantaggio rispetto alla tradizionale programmazione orientata…

La programmazione orientata agli aspetti è un paradigma di programmazione basato sulla creazione di entità software — denominate aspetti — che sovrintendono alle interazioni fra oggetti finalizzate a eseguire un compito comune. Il vantaggio rispetto alla tradizionale programmazione orientata agli oggetti consiste nel non dover implementare separatamente in ciascuna classe il codice necessario a eseguire questo compito comune.

Utilità della programmazione orientata agli aspetti

È noto che ci sono varie ragioni per cui la programmazione orientata agli oggetti (in inglese Object Oriented Programming, in acronimo OOP) è così diffusa oggigiorno. Alcune delle più importanti sono la semplicità dell'ingegnerizzazione del software tramite un design object-oriented, l'incremento nella manutenibilità del codice e le aumentate possibilità di riuso dello stesso.

Tuttavia, col passare degli anni ci si è resi conto che il modello di sviluppo object-oriented non si adatta perfettamente alla modellazione di tutti i problemi che un sistema software deve risolvere.

Per esempio, uno dei principi fondamentali dell'OOP è la modellazione del programma come uno scambio di messaggi tra oggetti, i quali sono entità tra loro indipendenti. Tale principio garantisce sicuramente la modularità del sistema software sviluppato con un linguaggio object oriented, ma al tempo stesso rende difficile l'implementazione di alcune funzionalità che per loro natura sono comuni a più oggetti (quali ad esempio logging e sicurezza). Ci sono cioè alcuni compiti del sistema informativo che non possono essere modellati come oggetti, semplicemente perché interessano l'applicazione nel suo insieme.

Prendiamo ad esempio un'applicazione che deve effettuare il logging di alcune transazioni che richiedano l'interazione tra più oggetti: ognuno degli oggetti coinvolti deve, nei propri metodi, contenere codice in grado di gestire il suddetto problema; si viene così a creare, nella stesura del codice, una ridondanza non necessaria. Inoltre gli oggetti modificati a tale scopo diventano più complessi e quindi diminuisce la manutenibilità del programma.

L'aspect oriented programming (AOP) è nato con lo scopo di risolvere problemi di questo tipo. Gli aspetti modellano cioè le problematiche trasversali agli oggetti stessi, ossia compiti (quali ad esempio l'accounting) che nell'OOP tradizionale sono difficilmente modellabili.

In sintesi

Un programma aspect-oriented è costituito essenzialmente da due insiemi di costrutti: gli aspetti e gli oggetti.

Gli aspetti sono delle entità esterne agli oggetti che osservano il flusso del programma generato dalle interazioni tra oggetti, modificandolo quando opportuno. Se paragonassimo gli oggetti a degli attori, potremmo dire che gli aspetti sono degli spettatori, cioè delle entità che osservano le azioni in corso nel programma senza esservi direttamente coinvolti, ma degli spettatori un po' particolari, visto che in determinate circostanze salgono sul palcoscenico e partecipano alla rappresentazione (l'esecuzione del programma, fuor di metafora).

I linguaggi più usati per l'AOP

AspectJ

AspectC++

PHP-AOP, su github.com.

Servizi correlati

Altre voci

E

Enterprise resource planning

Un enterprise resource planning o ERP, conosciuto come pianificazione delle risorse d'impresa, è un software di gestione (o Software gestionale) che integra tutti i processi aziendali e tutte le funzioni aziendali rilevanti, ad esempio vendite, acquisti, gestione magazzino, finanza o…

Leggi la voce →
Ingegneria informaticaI

Ingegneria informatica

L'ingegneria informatica è un ramo dell'ingegneria dell'informazione, derivato in larga parte dall'ingegneria elettronica, che applica principi di quest'ultima e dell'informatica pura a processi di progettazione, realizzazione, perfezionamento e gestione di sistemi e soluzioni per l'elaborazione…

Leggi la voce →
P

Programmazione orientata agli oggetti

In informatica, la programmazione orientata agli oggetti (in inglese object-oriented programming, in acronimo OOP), a volte chiamata semplicemente programmazione a oggetti, è un paradigma di programmazione che permette di definire oggetti software in grado di interagire gli uni con gli altri…

Leggi la voce →
A

Adobe Creative Cloud

Adobe Creative Cloud è una raccolta di software e servizi cloud per la fotografia, il disegno grafico, il montaggio video, la creazione di contenuti per il web e altre applicazioni creative sviluppata e distribuita da Adobe.

Leggi la voce →
M

Metodologia agile

Con metodologia agile (o sviluppo agile del software, in inglese agile software development, abbreviato in ASD), nell'ingegneria del software, si indica un insieme di metodi di sviluppo del software emersi a partire dai primi anni 2000 e fondati su un insieme di principi comuni, direttamente o…

Leggi la voce →
J

Java (linguaggio di programmazione)

In informatica Java è un linguaggio di programmazione ad alto livello, orientato agli oggetti e a tipizzazione statica, che si appoggia sull'omonima piattaforma software di esecuzione, specificamente progettato per essere il più possibile indipendente dalla piattaforma hardware di esecuzione…

Leggi la voce →