OOP: Object Oriented programming:
la programmazione orientata agli oggetti



   Il computer può essere pensato (molto approssimativamente) come una serie di circuiti elettrici a due stati ("aperti"/"chiusi", 1/0). Da ciò segue (con un pò di fantasia) che è possibile dare al computer l'istruzione: "apri (=1) il relais all'indirizzo 3245"; inoltre una tale istruzione può essere espressa usando solo una lunga serie di numeri in base binaria (numeri scritti solo con 0 e 1): questo è il linguaggio macchina, l'unico che il computer capisca veramente.
Basandosi su questi fatti, agli inizi, la programmazione era concepita come una lista di istruzioni da fare eseguire al computer. Quindi istruzione 1, fai questo... ecc... istruzione n: se il numero k è positivo allora passa all'istruzione successsiva, altrimenti torna (il famigerato "goto") all'istruzione n-t, ... Questa è la programmazione "procedurale" (per procedure).
Queste istruzioni vengono scritte, non in linguaggio macchina (piuttosto penoso per l'essere umano), ma in un linguaggio "umano" ("human readeable"); un altro programma (compilatore) s'incarica di tradurre questo linguaggio "umano" in linguaggio "macchina". Se il linguaggio "umano" è molto vicino al linguaggio macchina, si dice che è un "linguaggio di basso livello". Per esempio l'Assembly (assemblaggio) è il linguaggio di basso livello per eccelenza (per i processori Intel).
Un programma, scritto in un linguaggio di basso livello, dà al programmatore un controllo (quasi) totale su tutti i passi effetuati, inoltre, necessitando di una "piccola" traduzione, è più veloce nell'esecuzione. (Con la crescente velocità dei processori, quest'ultimo vantaggio tende a scomparire). Però il codice è molto pesante e difficile da seguire (pensare a tutti i rimandi ("goto")), ma soprattutto è difficile da "mantenere", cioè è difficile controllare, modificare, aggiornare un tale codice, specie se consta di migliaie di righe.
Per superare questi inconvenienti (controllo, modificazione, aggiornamento, ampliamento) si è pensato ad astrarre il linguaggio, lasciando alcune procedure standard codificate una volta per tutte. Per esempio per aprire una finestra di Windows si è pensato di riassumere varie centinaie di righe di codice in una procedura "WinProc". Basta richiamare la procedura "WinProc", passargli qualche parametro (lunghezza, larghezza della finestra) ed ecco comparire la nostra finestra! Poi tocca all'utente scrivere del codice per mettere qualcosa nella finestra, ma intanto quanto tempo di guadagnato!
Detto ciò, si è arrivati a grandi collezioni di procedure standard organizzate in "biblioteche" (API = "Application and Programming Interface").
Il passo successivo è stato un'ulteriore astrazione del linguaggio per dare la possibilità al programmatore di creare facilmente le proprie biblioteche. E qui nasce la programmazione OOP ("orientata oggetti").

Che cos'è un oggetto?