Evoluzione dei Paradigmi di Programmazione: Concetti Essenziali e Applicazioni

Classificato in Informatica

Scritto il in italiano con una dimensione di 7,24 KB

Evoluzione della Programmazione

La programmazione si è evoluta attraverso diversi paradigmi, ciascuno con le proprie caratteristiche e vantaggi distinti.

Programmazione Sequenziale

Un programma sequenziale è un programma le cui istruzioni vengono eseguite in ordine, una dopo l'altra, fino al completamento del programma.

Programmazione Strutturata

La programmazione strutturata è un approccio per scrivere programmi per computer in modo chiaro e organizzato. Si utilizzano solo tre strutture di controllo fondamentali: sequenza, selezione e iterazione, senza la necessità di ricorrere a istruzioni o dichiarazioni di trasferimento incondizionato (come GOTO, EXIT FUNCTION, SUB EXIT, RETURN o simili).

Il teorema della programmazione strutturata, dimostrato da Böhm-Jacopini, evidenzia che ogni programma può essere scritto utilizzando esclusivamente queste tre strutture di controllo:

  • Sequenza
  • Affermazione condizionale (Selezione)
  • Ciclo di iterazione (o ripetizione) con condizione iniziale

Programmazione Orientata agli Oggetti (OOP)

La Programmazione Orientata agli Oggetti (OOP) è un paradigma di programmazione che impiega oggetti e le loro interazioni per la progettazione di applicazioni e programmi informatici. Si fonda su diverse tecniche chiave, tra cui l'ereditarietà, l'astrazione, il polimorfismo e l'incapsulamento. Il suo utilizzo è stato reso popolare agli inizi degli anni '90. Attualmente, esiste una vasta gamma di linguaggi di programmazione che supportano l'orientamento agli oggetti.

L'OOP si distingue dalla programmazione strutturata tradizionale, in cui dati e procedure sono separati e indipendenti, e l'obiettivo principale è l'elaborazione di dati di input per produrre dati di output. La programmazione strutturata incoraggia il programmatore a pensare primariamente in termini di procedure e funzioni, e secondariamente nelle strutture dati che tali procedure gestiscono. Nella programmazione strutturata, le funzioni sono scritte per elaborare i dati. I programmatori che utilizzano l'OOP, invece, definiscono gli oggetti e poi inviano loro messaggi che li istruiscono a eseguire i propri metodi.

Concetti Fondamentali dell'OOP

Istanza
La parola "istanza" può significare "richiesta" o "insistenza". Nel contesto della programmazione, un'istanza di un programma è una copia eseguibile del programma caricata nella memoria del computer. Un'istanza di un programma viene tipicamente creata dall'utente facendo clic su un'icona in un'interfaccia utente grafica (GUI) o inserendo un comando in un'interfaccia a riga di comando (CLI) e premendo INVIO. Le istanze di programmi possono essere create anche da altri programmi.
Costruttore
I costruttori sono metodi o funzioni presenti in tutti gli oggetti, che vengono attivati esclusivamente al momento della creazione dell'oggetto. I costruttori sono utilizzati per definire i valori iniziali delle proprietà dell'oggetto. Si definisce anche un costruttore come un'operazione che crea un oggetto e/o ne inizializza lo stato.
Distruttore
Un metodo che si attiva quando l'oggetto cessa di esistere. Il distruttore è unico e serve a far sì che un oggetto esegua un'azione (o un gruppo di azioni) prima di terminare il suo ciclo di vita. Normalmente, gli oggetti cessano di esistere quando escono dal loro ambito (ambiente) in cui sono stati creati. I distruttori sono importanti perché si attivano automaticamente, sollevando il programmatore dal compito di liberare le risorse occupate dall'oggetto, poiché questo è il compito normalmente eseguito dal distruttore.
Oggetto
Una struttura complessa per l'archiviazione temporanea di dati e la loro amministrazione. Combina attributi (dati) e metodi (procedure per la loro gestione).
Oggetto Visivo
Un oggetto visivo combina attributi di configurazione (es. visibilità, posizione grafica) con dati e metodi, rappresentando un'istanza specifica e interattiva.
Classi
Gli oggetti sono organizzati in famiglie ben definite. Una famiglia è riconosciuta in quanto raggruppa un insieme di oggetti che ereditano elementi comuni. Nel modello di programmazione, così come in natura, gli oggetti sono organizzati in classi (famiglie), e una classe è l'insieme di oggetti appartenenti alla stessa famiglia.

Principi Fondamentali dell'OOP

Incapsulamento
Consiste nel raggruppare tutti gli elementi che possono essere considerati appartenenti alla stessa entità allo stesso livello di astrazione. Questo aumenta la coesione dei componenti del sistema. Alcuni autori confondono questo concetto con il principio di occultamento (o information hiding), soprattutto perché spesso vengono usati insieme.
Occultamento (Information Hiding)
Consiste nel nascondere i processi interni di un oggetto, rendendo accessibile al programmatore solo ciò che è strettamente necessario. Questo offre due vantaggi principali: ciò che l'utente può fare è controllato internamente (anche gli errori), evitando un collasso dovuto a qualsiasi intervento indesiderato.
Polimorfismo
Il polimorfismo è letteralmente la proprietà che indica la possibilità per un'entità di assumere molte forme. In termini pratici, il polimorfismo consente di fare riferimento a oggetti di classi diverse con lo stesso elemento del programma ed eseguire la stessa operazione in modi diversi, a seconda dell'oggetto di riferimento in quel momento.
Ereditarietà
Un oggetto è erede di un altro quando possiede tutti i suoi attributi e metodi e riconosce tutte le sue manifestazioni, ma gode anche di proprietà, metodi ed eventi aggiuntivi. L'ereditarietà è definita come la caratteristica per cui gli oggetti derivano gli uni dagli altri. Inoltre, l'ereditarietà implica una classe base e una gerarchia di classi che contiene classi derivate dalla classe base. Le classi derivate possono ereditare le proprietà e i metodi di una classe base, aggiungendo i propri metodi e proprietà, e persino modificando gli elementi della classe base che devono essere diversi.

Programmazione Orientata agli Eventi

La Programmazione Orientata agli Eventi è un paradigma di programmazione in cui sia la struttura che l'esecuzione dei programmi sono determinate da eventi che si verificano nel sistema, definiti dall'utente o generati dal sistema stesso. Per comprendere la programmazione orientata agli eventi, la contrapponiamo a ciò che non è: mentre nella programmazione sequenziale (o strutturata) è il programmatore a definire il flusso del programma, nella programmazione orientata agli eventi è l'utente (o ciò che è in funzione del programma) a dirigere il flusso del programma.

Passaggio di Messaggi

Il messaggio è essenzialmente un ordine inviato a un oggetto per indicargli di eseguire una certa azione. Un messaggio è anche definito come l'informazione completa che un oggetto mittente trasmette a un oggetto ricevitore.

Un messaggio ha tre elementi: l'oggetto ricevente, il tipo di evento e i dati necessari per il ricevitore.

Voci correlate: