Introduzione alla programmazione ad oggetti

Quando iniziamo a realizzare un programma, sia di 10 righe sia di 100 mila righe, a primo impatto andiamo a cercare una soluzione al nostro problema, pensando principalmente a non avere troppe complicazioni man mano che si scrive il codice.
Fra le considerazioni iniziali c’è sempre la famosa domanda “Che linguaggio utilizziamo?”. Quello che noi andremo a cercare è un paradigma che ci permette di risolvere il problema, nella maniera più semplice possibile. Da qui discende che un paradigma è un modello comportamentale di programmazione o, più semplicemente, uno stile di programmazione.

La scelta del linguaggio di programmazione è molto importante, soprattutto se un progetto è abbastanza grande. Essa può derivare anche dal tipo di problema da risolvere: molti linguaggi dispongono di librerie, già predisposte, che semplificano alcune procedure ritenute fondamentali o soltanto per il semplice scopo di semplificare la vita del programmatore.
Il modo di pensare come programmare un applicazione è fondamentale.
In programmazione imperativa ci mettiamo davanti il progetto e ci chiediamo cosa fare, fissando l’attenzione sull’obiettivo da raggiungere e di come raggiungerlo.
In programmazione ad oggetti, invece, dobbiamo cercare di non personalizzare l’oggetto ma continueremo a pensare l’oggetto così come è.
Penseremo ad un oggetto astratto, cercando di individuare quali sono le caratteristiche dell’oggetto e le sue potenzialità.
Gli elementi caratteristici sono chiamati Attributi dell’oggetto, le potenzialità sono invece chiamate Metodi.
Da notare che, molti programmatori, le potenzialità dell’oggetto li chiama erroneamente funzioni: dato che possono somigliare parecchio alle funzioni utilizzate in qualunque linguaggio imperativo.
Durante l’analisi del problema non importa cosa faccia il metodo, l’importante è rispecchiare le potenzialità e successivamente svilupparne il problema.
Altro errore che spesso si sente è l’utilizzo di Classe e Oggetto come se fossero la stessa cosa: un Oggetto è la rappresentazione reale della problematica presa in considerazione, la Classe invece è la rappresentazione astratta dell’Oggetto.
Per esempio, se consideriamo una penna, essa nella realtà rappresenta il nostro Oggetto vero e proprio, così come è fatto: sappiamo che è una penna, il colore, il tipo, ecc…
La Classe che rappresenterà la penna sarà, per definizione, l’astrazione dell’Oggetto. Qui ci possiamo chiedere “E cosa cambia? Non è la stessa cosa?”, la risposta è parzialmente negativa perché, attraverso questo processo di astrazione, noi andremo a determinare anche altri dettagli supplementari dell’Oggetto: se scrive o meno, livello di inchiostro, ecc.