Con l'introduzione del concetto di "oggetto", gli sviluppatori sono stati in grado di descrivere la struttura dei sistemi software utilizzando i termini del "mondo reale" e mantenere sistemi con milioni di righe di codice, il che era impossibile quando si utilizzava il paradigma procedurale. La programmazione procedurale non potrebbe fornire un livello adeguato di sviluppo e supporto per sistemi software complessi nel settore bancario, delle telecomunicazioni e altro aree di attività dove i requisiti per i programmi diventano costantemente più complessi. Lo stile (paradigma) della programmazione, che si basa sul concetto di classe e oggetto, è stato sviluppato come sviluppo di un paradigma procedurale che ha cessato di essere efficace come la complessità dei progetti software sviluppati, ed è stato chiamato "programmazione orientata agli oggetti" (OOP).
Per la prima volta è stata applicata la programmazione orientata agli oggetti nel linguaggio Simula 67, che ha avuto una grande influenza sullo sviluppo di linguaggi come Lisp e Smalltalk. Ma il più grande sviluppo di OOP risale alla metà degli anni '90, quando fu creato il C ++ "OOP classic", il cui lavoro con gli oggetti fu adottato dai popolari ambienti di programmazione Delphi e VisualFoxPro. L'OLP continua ad evolversi e tra i nuovi paradigmi si può identificare il paradigma orientato all'aspetto e al soggetto. Ogni linguaggio orientato agli oggetti estende i concetti di base di OOP con aggiunte ed estensioni esclusive, a seconda dell'uso specifico. In questo articolo esamineremo l'implementazione di OOP nell'ambiente di programmazione Delphi e il linguaggio di sviluppo web PHP.
Il paradigma OOP è costituito da tre concetti di base: incapsulamento, polimorfismo ed ereditarietà.
Il meccanismo di combinazione di codice e dati all'interno di un oggetto, nonché la loro protezione da modifiche esterne. All'interno di un oggetto, i dati e il codice possono essere aperti (pubblici) per l'accesso e la modifica da altri oggetti e chiusi (privati) per le modifiche esterne.
L'elemento più importante del concetto di OOP, che consente l'uso di un singolo nome per le funzioni che eseguono azioni simili. All'inizio è difficile capire il significato del polimorfismo, quindi diamo un semplice esempio. In ogni linguaggio di programmazione per ogni tipo di numeri, ad esempio, in C "classica" per trovare il modulo di un numero, è necessario utilizzare la funzione abs () per i numeri interi, per i laboratori interi lunghi (), per i numeri in virgola mobile fabs (). Ciò porta alla necessità di ricordare la sintassi del set di funzioni e il carico aggiuntivo sulla memoria e sul processore del computer. La programmazione orientata agli oggetti, utilizzando il meccanismo del polimorfismo, consente di scrivere la propria funzione per determinare il modulo modul () e utilizzarlo nei calcoli aritmetici, senza pensare al tipo di numeri. Basta scrivere nell'espressione modul () e ottenere la risposta corretta. Oltre a una riduzione del codice del programma e del carico del sistema. Un altro esempio di polimorfismo è mostrato nella figura: la classe generale "Curva" (Forma) è il "genitore" di un cerchio, un rettangolo e una stella.
Meccanismo OOP che consente a un oggetto di avere (ereditare) i metodi di un altro oggetto. Più precisamente, l'oggetto riceve (eredita) tutte le proprietà di base del suo "antenato" e aggiunge a loro i metodi peculiari solo ad esso. L'"erede" di un oggetto erediterà già i metodi di due oggetti, ecc. L'ereditarietà viene anche chiamata gerarchia di classi. L'utilizzo dell'ereditarietà semplifica la gestione di grandi quantità di informazioni e codice di programma. Successivamente, puoi vedere come gli oggetti ereditano proprietà comuni dalla classe genitrice "Car".
Tutti i linguaggi che supportano la programmazione orientata agli oggetti hanno la stessa interpretazione del concetto di classe e oggetto. Classe : un tipo di dati per descrivere le proprietà e il funzionamento di un oggetto "reale", ad esempio un conto bancario. Un oggetto è un'istanza separata di una classe. Metodo : codice software che modifica il comportamento di un oggetto o il suo stato in base al valore delle sue proprietà. Modificatore di accesso : un metodo che separa gli elementi di classe in campi aperti e chiusi. Il costruttore è un metodo che viene eseguito prima dopo l'inizializzazione dell'oggetto e lo riporta al suo stato originale. Il distruttore è un metodo chiamato quando un oggetto viene cancellato. Il diagramma mostra l'interazione degli elementi di classe.
Il cuore dell'ambiente di sviluppo è un sottoinsieme del linguaggio Pascal con elementi OOP - Object Pascal. L'ambiente e il linguaggio Delphi è stato il primo ambiente di sviluppo grafico per MS Windows. Delphi di programmazione orientata agli oggetti è un insieme di classi astratte standard che incapsulano determinati elementi di un programma Windows, come un'interfaccia grafica, lavorando con la RAM, ecc. Delphi ha avuto un impatto significativo sullo sviluppo di tutti i linguaggi orientati agli oggetti, specialmente C # per l'ambiente di sviluppo Microsoft .NET. L'ultima versione di Delphi 8 funziona solo con .NET.
TObject è il "genitore" di tutte le classi di Delphi. La classe fornisce tutti i suoi "discendenti" con il supporto delle funzioni di programmazione orientata agli oggetti, e il suo costruttore assicura che il programma inizi e funzioni correttamente in Windows. TPersistent: fornisce oggetti con interazione a livello di flussi di trasferimento dati. Trasmette flussi di dati e fornisce l'accesso a Object Inspector. TComponent: consente di creare oggetti non visivi e garantisce la loro interazione con l'intero ambiente di sviluppo. È questo che consente di lavorare con oggetti e componenti di programma in un ambiente di sviluppo visuale. Il suo discendente TGraphicControl crea vari elementi di interfaccia non di finestra, ad esempio, sfondi grafici, ecc. TControl: tutti gli oggetti visualizzati sullo schermo (finestre, elenchi, pulsanti, moduli, ecc.) Sono i suoi discendenti. Incapsula il lavoro con le funzioni GUI Di Windows. TWinControl - fornisce lavoro con Windows del programma. Il suo discendente TCustomControl consente di creare controlli come editor di testo, liste di scelta.
PHP è uno dei linguaggi più popolari per lo sviluppo web ed era originariamente un linguaggio di programmazione completamente procedurale. Pertanto, la programmazione orientata agli oggetti in php è apparso più tardi, a partire dalla quarta versione. La necessità di supportare entrambi gli stili di programmazione, procedurale e orientato agli oggetti, ha portato al fatto che gli elementi OOP sono ancora un'aggiunta, non la base del linguaggio. Ma la situazione sta cambiando rapidamente verso l'oggetto PHP. La versione PHP 5 supporta completamente tutti gli elementi OOP e lo sviluppatore ha la completa libertà di creare le proprie classi e oggetti, a differenza di Delhi, dove lo sviluppatore deve utilizzare le classi standard in un modo o nell'altro con tutti i loro possibili svantaggi. La sintassi degli elementi di oggetti PHP non è difficile per i programmatori che hanno precedentemente lavorato su C ++ / # e Delphi.
Il paradigma di programmazione orientato agli oggetti continua ad evolversi e viene utilizzato in molti elementi dei sistemi software, ad esempio in database specializzati che supportano il modello di dati dell'oggetto e nello sviluppo di applicazioni per tablet e telefoni cellulari. Tra i nuovi linguaggi di oggetti, possiamo distinguere Python, che è ampiamente utilizzato per lo sviluppo di sistemi Internet, e Go, un linguaggio di programmazione multifunzionale di Google.