Cos'è la programmazione orientata agli oggetti? Le basi spiegate nei termini di Layman

Cos'è la programmazione orientata agli oggetti? Le basi spiegate nei termini di Layman / Programmazione

Se hai fatto qualche programmazione per principianti o hai persino iniziato a guardare lingue diverse, probabilmente hai trovato la frase “programmazione orientata agli oggetti” (o “OOP”).

Esistono spiegazioni tecniche di ogni tipo, ma oggi daremo un'occhiata alla definizione della programmazione orientata agli oggetti in modo semplice.

Prima di iniziare: lingue procedurali

Per capire cos'è un linguaggio di programmazione orientato agli oggetti, è necessario capire cosa ha sostituito. I primi linguaggi di programmazione erano cosiddetti procedurali perché il programmatore definiva un insieme molto specifico di procedure che il computer avrebbe intrapreso.

Nei primi giorni, le procedure venivano scritte su schede perforate. Questi passaggi contenevano dati, eseguivano una sequenza di azioni su quei dati, quindi producevano nuovi dati.

I linguaggi procedurali hanno funzionato bene per un certo periodo (e alcuni sono ancora in uso). Ma quando si desidera programmare qualcosa oltre una sequenza di passaggi di base, i linguaggi procedurali possono diventare difficili da gestire. È qui che entra in gioco la programmazione orientata agli oggetti.

L'oggetto della programmazione orientata agli oggetti

Quindi, che cos'è la programmazione orientata agli oggetti?

Il primo linguaggio orientato agli oggetti (generalmente accettato come Simula) ha introdotto l'idea di oggetti. Gli oggetti sono raccolte di informazioni trattate come entità singolare.

Ci immergeremo più profondamente in ciò che in realtà significa in un secondo con un esempio, ma prima dobbiamo parlare classi. Le classi sono una specie di pre-oggetti. Contengono un elenco di attributi che, una volta definiti, diventano un oggetto.

Prendiamo l'esempio della programmazione di un gioco di scacchi. Potremmo avere una classe chiamata Piece. All'interno di Piece abbiamo una lista di attributi:

  • Colore
  • Altezza
  • Forma
  • Movimento consentito

Un oggetto definisce semplicemente una particolare istanza di una cosa che appartiene a quella classe.

Quindi potremmo avere un oggetto chiamato WhiteQueen. Quell'oggetto avrebbe definizioni per tutti e quattro gli attributi (bianco, alto, cilindrico con merlature, qualsiasi numero di spazi in qualsiasi direzione). Potrebbe anche avere metodi o funzioni.

Ciò che rende questo molto meglio rispetto all'approccio procedurale?

In breve, i linguaggi di programmazione orientati agli oggetti (come Java) facilitano l'organizzazione di dati e codice in un modo più versatile per progetti di dimensioni maggiori.

Per discuterne un po 'più in dettaglio, parleremo delle quattro basi della programmazione orientata agli oggetti.

Programmazione orientata agli oggetti: astrazione

Solo perché vuoi usare qualcosa non significa che devi sapere come funziona. Una macchina per caffè espresso, per esempio, è complessa. Ma non è necessario sapere come funziona. Devi solo saperlo quando colpisci “Sopra,” avrai l'espresso.

Lo stesso vale per gli oggetti nella programmazione orientata agli oggetti. Nel nostro esempio di scacchi, potremmo avere un metodo move (). Questo metodo potrebbe richiedere molti dati e altri metodi. Potrebbe aver bisogno della posizione iniziale e delle variabili di posizione finali. Potrebbe usare un altro metodo per determinare se è stato catturato un pezzo.

Ma non devi saperlo. Tutto quello che devi sapere è che quando dici al pezzo di muoversi, si muove. Questa è astrazione.

Programmazione orientata agli oggetti: incapsulamento

L'incapsulamento è uno dei modi in cui la programmazione orientata agli oggetti crea astrazione. Ogni oggetto è una raccolta di dati che viene considerata come una singola entità. E all'interno di quegli oggetti ci sono dati, sia variabili che metodi.

Le variabili all'interno di un oggetto sono generalmente mantenute private, il che significa che altri oggetti e metodi non possono accedervi. Gli oggetti possono essere influenzati solo usando i loro metodi.

Un oggetto Bishop potrebbe contenere diverse informazioni. Ad esempio, potrebbe avere una variabile chiamata “posizione.” Quella variabile è necessaria per usare il metodo move (). E, naturalmente, ha un colore.

Rendendo pubblico il metodo di variabile di posizione private e move (), un programmatore protegge la variabile di spostamento dall'essere influenzata da qualsiasi altra cosa. E se il colore è una variabile privata, non c'è modo che un altro oggetto possa cambiarlo a meno che non ci sia un metodo che permetta la modifica. (Che probabilmente non avresti, dato che il colore del pezzo dovrebbe rimanere costante).

Queste variabili e metodi sono mantenuti all'interno dell'oggetto Bishop. Poiché sono incapsulati, un programmatore potrebbe apportare modifiche alla struttura o ai contenuti dell'oggetto senza preoccuparsi dell'interfaccia pubblica.

Programmazione orientata agli oggetti: ereditarietà

Oltre alle classi, i linguaggi di programmazione orientati agli oggetti hanno anche sottoclassi. Questi contengono tutti gli attributi della classe genitore, ma possono anche contenere altri attributi.

Nel nostro gioco degli scacchi, i pezzi dei pedoni hanno bisogno di un metodo che li possa trasformare in altri pezzi se riescono a raggiungere la fine del tabellone. Lo chiameremo il metodo transformPiece ().

Non tutti i pezzi hanno bisogno del metodo transformPiece (). Quindi non vorremmo metterlo nella classe Piece. Invece, possiamo creare una sottoclasse chiamata Pawn. Poiché è una sottoclasse, eredita tutti gli attributi da Piece. Quindi un'istanza della pedina sottoclasse include un colore, altezza, forma e movimento consentiti.

Ma include anche il metodo transformPiece (). Ora non dobbiamo mai preoccuparci di usare accidentalmente quella funzione su una torre. Ecco una spiegazione tecnica:

Anche la creazione di sottoclassi consente di risparmiare un sacco di tempo. Invece di creare nuove classi per tutto, i programmatori possono creare una classe base e quindi estenderla a nuove sottoclassi quando necessario. (Tuttavia, vale la pena notare che l'eccessiva dipendenza dall'ereditarietà è scarsa 10 Principi di programmazione di base Ogni programmatore deve seguire 10 principi di programmazione di base Ogni programmatore deve seguire Scrivi sempre il codice che può essere mantenuto da chiunque possa finire a lavorare sul tuo software. fine, qui ci sono diversi principi di programmazione per aiutarti a ripulire il tuo atto. Per saperne di più.)

Programmazione orientata agli oggetti: polimorfismo

Il polimorfismo è il risultato dell'eredità. La piena comprensione del polimorfismo richiede alcune conoscenze di programmazione, quindi seguiremo qui le nozioni di base. In breve, il polimorfismo consente ai programmatori di utilizzare metodi con lo stesso nome, ma con oggetti diversi.

Ad esempio, la nostra classe Piece potrebbe avere un metodo move () che sposta un pezzo di uno spazio in qualsiasi direzione. Funziona per il pezzo del re, ma non per altro. Per risolvere questo problema, possiamo definire il nuovo metodo move () nella sottoclasse Rook che definisce il movimento come un numero illimitato di spazi avanti, indietro, sinistra o destra.

Ora, quando un programmatore invoca il metodo move () e usa un pezzo come argomento, il programma saprà esattamente come deve muoversi il pezzo. Ciò consente di risparmiare un sacco di tempo cercando di capire quale dei molti metodi diversi si dovrebbero usare.

Programmazione orientata agli oggetti in poche parole

Se la tua testa gira un po 'dopo quelle ultime quattro definizioni, non preoccuparti troppo. Ecco le cose principali che devi ricordare:

  • La programmazione orientata agli oggetti raccoglie le informazioni in singole entità chiamate oggetti.
  • Ogni oggetto è una singola istanza di una classe.
  • L'astrazione nasconde i meccanismi interni di un oggetto quando non è necessario vederli.
  • L'incapsulamento memorizza le variabili e i metodi correlati all'interno degli oggetti e li protegge.
  • L'ereditarietà consente alle sottoclassi di utilizzare attributi dalle classi padre.
  • Il polimorfismo consente a oggetti e metodi di gestire più situazioni diverse con un'unica interfaccia.

Se riesci a ricordare quei punti, avrai una buona padronanza su quale sia la programmazione orientata agli oggetti. Le quattro basi della programmazione orientata agli oggetti, come ho detto, possono essere un po 'difficili da gestire. Ma una volta che inizi a programmare, diventeranno più chiari.

Ricorda che abbiamo discusso solo delle generalità in questo articolo. Diversi linguaggi orientati agli oggetti avranno le loro peculiarità e modi per far accadere le cose. Una volta scelta la lingua giusta per te Cerchi i linguaggi di programmazione migliori? Comincià qui! Cerchi i migliori linguaggi di programmazione? Comincià qui! Se sei completamente nuovo nei linguaggi di programmazione o stai cercando di entrare in un nuovo tipo di programmazione, una delle domande più importanti da porsi è: "Quale linguaggio di programmazione è giusto per me?" Per saperne di più, inizierai a imparare come mette in pratica i principi OOP.

Scopri di più su: Esercitazioni di codifica, programmazione orientata agli oggetti.