Programmazione strutturata vs programmazione orientata agli oggetti
La programmazione orientata agli oggetti (OOP) e la programmazione strutturata sono due paradigmi di programmazione. Un paradigma di programmazione è uno stile fondamentale della programmazione informatica. I paradigmi di programmazione differiscono nel modo in cui ogni elemento dei programmi è rappresentato e come sono definiti i passaggi per la risoluzione dei problemi. Come suggerisce il nome, OOP si concentra sulla rappresentazione dei problemi utilizzando oggetti del mondo reale e il loro comportamento, mentre la programmazione strutturata si occupa di organizzare il programma in una struttura logica.
Cos'è la programmazione strutturata?
Si presume che l'anno di nascita della programmazione strutturata sia il 1970. La programmazione strutturata è considerata un sottoinsieme della programmazione imperativa. Un programma strutturato è costituito da semplici strutture di flusso del programma, che sono organizzate gerarchicamente. Sono sequenza, selezione e ripetizione. La sequenza è un ordine di affermazioni. Selezione significa selezionare un'istruzione da un insieme di istruzioni in base allo stato corrente del programma (ad esempio utilizzando istruzioni if) e ripetizione significa eseguire un'istruzione fino al raggiungimento di un determinato stato (ad esempio utilizzando istruzioni for o while). ALGOL, Pascal, Ada e PL/I sono alcuni dei linguaggi di programmazione strutturati utilizzati oggi.
Cos'è la programmazione orientata agli oggetti?
In OOP, l'obiettivo è pensare al problema da risolvere in termini di elementi del mondo reale e rappresentare il problema in termini di oggetti e del loro comportamento. Le lezioni descrivono le rappresentazioni astratte di oggetti del mondo reale. Le classi sono come progetti o modelli, che raccolgono elementi o cose simili che possono essere raggruppate insieme. Le classi hanno proprietà chiamate attributi. Gli attributi sono implementati come variabili globali e di istanza. I metodi nelle classi rappresentano o definiscono il comportamento di queste classi. I metodi e gli attributi delle classi sono chiamati membri della classe. Un'istanza di una classe è chiamata oggetto. Pertanto, un oggetto è una struttura di dati che assomiglia molto a un oggetto del mondo reale.
Ci sono diversi concetti OOP importanti come l'astrazione dei dati, l'incapsulamento, il polimorfismo, la messaggistica, la modularità e l'ereditarietà. In genere, l'incapsulamento si ottiene rendendo privati gli attributi, creando al contempo metodi pubblici che possono essere utilizzati per accedere a tali attributi. L'ereditarietà consente all'utente di estendere classi (chiamate sottoclassi) da altre classi (chiamate super classi). Il polimorfismo consente al programmatore di sostituire un oggetto di una classe al posto di un oggetto della sua superclasse. Tipicamente, i nomi trovati nella definizione del problema diventano direttamente classi nel programma. E allo stesso modo, i verbi diventano metodi. Alcuni dei linguaggi OOP più popolari sono Java e C.
Qual è la differenza tra la programmazione strutturata e la programmazione orientata agli oggetti?
La differenza fondamentale tra la programmazione strutturata e l'OOP è che l'obiettivo della programmazione strutturata è strutturare il programma in una gerarchia di sottoprogrammi mentre l'obiettivo dell'OOP è suddividere il compito di programmazione in oggetti, che incapsulano dati e metodi. L'OOP è considerato più flessibile della programmazione strutturata, perché l'OOP separa un programma in una rete di sottosistemi anziché strutturare il programma in una gerarchia. Anche se la strutturazione fornisce una certa chiarezza, una piccola modifica a un programma strutturato molto grande può causare un effetto a catena dovuto alla necessità di modificare più sottoprogrammi.