Da dove viene la programmazione Object Oriented?

Da dove viene la programmazione Object Oriented? / Cultura Web

Orientato agli oggetti non è solo una parola d'ordine casuale che senti nei circoli di programmazione. C'è una ragione dietro il nome - ma cosa? Unisciti a me mentre esploro alcune delle nozioni di base sui concetti di programmazione e spieghiamo il motivo per cui la programmazione orientata agli oggetti guida la tecnologia alla base di qualsiasi software moderno e la contrappone alla Programmazione basata su procedure e logiche.

Storia della programmazione procedurale

Quando i computer sono stati inventati per la prima volta, hanno dovuto essere programmati esplicitamente con semplici istruzioni - e “Software” era semplicemente una raccolta di questi comandi estremamente semplici messi insieme che avrebbero funzionato in sequenza.

Inizialmente, questo codice macchina richiesto deve essere scritto: spostalo “po” da questa memoria a questa posizione, ed eseguire una logica “e” operazione su di esso con questo bit, ecc., ma abbastanza presto questi sono stati estratti ad un livello più alto usando BASIC.

Sospetto che molti di voi si siano imbattuti in BASIC (codice di istruzione simbolica per tutti gli usi per principianti) a scuola. È un perfetto esempio di linguaggio di programmazione procedurale. Anche la mia prima incursione di programmazione stava usando BASIC su un Amstrad CPC-64. Ogni riga inizia con un numero di riga, seguito da una semplice istruzione in linguaggio leggibile dall'uomo.

Poiché i linguaggi procedurali seguono i comandi uno dopo l'altro, è generalmente facile per gli umani seguire ciò che sta accadendo nel programma. Tuttavia, è anche difficile fare qualcosa al di là di un semplice esercizio di apprendimento - che ci porta alla creazione di programmazione orientata agli oggetti.

Orientato agli oggetti?

Con la programmazione orientata agli oggetti, l'idea è di raggruppare le variabili e le funzionalità correlate in un unico oggetto, che rappresenta una sorta di struttura di dati complessa. L'oggetto può quindi essere riutilizzato più volte o esteso per essere qualcosa di ancora più complesso.

Ad esempio, un gioco potrebbe avere un oggetto giocatore. Ogni oggetto giocatore nel gioco rappresenta un giocatore unico e reale nella nostra immaginaria partita online multiplayer. Ogni oggetto giocatore ha un soprannome, una posizione corrente, un inventario e una velocità di movimento. Anche se ogni giocatore è unico, vogliamo comunque che condividano la stessa funzionalità di livello base. Ogni giocatore potrebbe avere un mossa funzione, che fa muovere il giocatore in avanti di X numero di quadrati. Ogni giocatore può avere una velocità di movimento diversa, ma quando diciamo al giocatore di spostarsi in un comando, saprà come reagire secondo la propria meccanica di Internet.

Perché è utile? Prendendo un esempio più realistico - perché le interfacce utente grafiche moderne sarebbero impossibili senza oggetti - tutti i sistemi operativi forniscono un oggetto Window. È quindi facile avere un nuovo “finestra” completo di pulsanti ravvicinati ea schermo intero e possibilità di essere spostato senza dover programmarlo tu stesso. Tutto quello che devi fare è dire crea una finestra.

Infatti, il software moderno consiste di migliaia e migliaia di oggetti - non solo finestre, ma anche pulsanti e campi modulo e caselle di avviso (che sono a loro volta un tipo speciale di oggetto finestra) - ed è solo il modo in cui sono disposti e la logica di interazione tra loro che rende questo software diverso dagli altri. Significa che programmatori e progettisti di software sono liberi di concentrarsi sulla realizzazione delle meccaniche di base del loro programma senza dover reinventare la ruota ogni volta.

Un altro vantaggio del design orientato agli oggetti è che la funzionalità è separata e invisibile l'una dall'altra. Quindi, quando il giocatore preme la chiave avanti nel nostro gioco, lo fa chiamate il funzione di spostamento nel oggetto del giocatore. Se apportiamo una piccola modifica al modo in cui tale mossa viene eseguita con precisione all'interno dell'oggetto del giocatore, come il salto invece che camminare, non è necessario regolare l'ascoltatore della tastiera. Chiama ancora “mossa” indipendentemente da ciò che accade internamente nell'oggetto giocatore - così possiamo cambiare funzionalità senza rompere tutto il resto.

Lo stesso vale per i sistemi operativi: se l'utente decide improvvisamente di cambiare il colore della finestra in rosso, non è necessario rilevarlo e rendere la finestra rossa - è tutto integrato nell'oggetto della finestra.

Eredità

Una volta che abbiamo oggetti, possiamo anche estenderli ed ereditarli per produrre oggetti più utili con un comportamento diverso o funzionalità aggiuntive. tu può reinventa la ruota - se vuoi. Nell'esempio del nostro giocatore, forse vogliamo creare un “superuomo” oggetto. Superman è ancora un giocatore, lo stesso di tutti gli altri - vuole anche un soprannome, e vuole essere elencato nelle stesse classifiche dei giocatori - ma invece dell'azione di spostamento standard che sposta gli spazi X dell'oggetto giocatore in avanti, vogliamo che lui vola invece - spostando 10 quadrati alla volta sopra la cima di tutti gli oggetti nel modo. Estendendo l'oggetto base del giocatore che possiamo “ereditare” tutte quelle funzionalità utili senza dover riscrivere tutto di nuovo - ma possiamo ancora “oltrepassare” la funzione di movimento con la nostra mossa volante superman speciale!

La programmazione orientata agli oggetti è una rivelazione assoluta se solo tu abbia mai sperimentato una programmazione procedurale, e personalmente penso che sia un peccato che un semplice tipo di linguaggio OOP non sia insegnato nelle scuole medie.

Un'ultima cosa: linguaggi di programmazione basati sulla logica

Questi sono di particolare interesse per me, in quanto sono generalmente più utili per qualsiasi cosa relativa all'Intelligenza Artificiale. I linguaggi di programmazione basati sulla logica, come Prolog, non usano comandi e istruzioni nel senso tradizionale. Invece, risolveranno un problema dato un insieme di regole e condizioni.

Pensa a una cena che stai ospitando per la tua famiglia. Tua zia non può sedere accanto a tuo zio perché litigherà; non vuoi due bambini seduti insieme perché saranno dei piccoli mascalzoni; di certo non vuoi sederti tra due bambini. È proprio lì - questo è il tuo programma Prolog scritto. Ora basta dare una lista di bambini e adulti che vengono alla festa, e produrrà una lista di possibili suggerimenti di posti a sedere!

Spero che ti sia piaciuta questa introduzione di livello principiante ai concetti di programmazione. Mi dispiace di non poter entrare nei dettagli e ovviamente c'è un milione di cose che non ho toccato. Se desideri saperne di più, fammelo sapere nei commenti. Forse potremmo fare una serie di tutorial di programmazione orientata agli oggetti per principianti per varie lingue se c'è abbastanza interesse? Assicurati di controllare anche i nostri archivi relativi alla programmazione, con vari strumenti e siti web di programmazione.

Credito d'immagine: ShutterStock

Scopri di più su: Programmazione.