I linguaggi di programmazione servono per creare dei modelli, delle astrazioni che descrivono il comportamento di un sistema reale.
Una possibile distinzione dei linguaggi di programmazione è tra i linguaggi procedurali e i linguaggi Orientati agli Oggetti (OOP). I linguaggi procedurali consentono di costruire modelli che privilegiano l’aspetto procedurale, cioè le operazioni (funzioni) che il sistema deve eseguire. I linguaggi di programmazione OOP consentono, invece, di costruire modelli che privilegiano le entità logiche, ossia il sistema viene suddiviso in una serie di componenti logici che interagiscono tra loro; ogni componente a sua volta è suddiviso in un insieme di attributi e in un insieme di operazioni, che in qualche modo riguardano il componente stesso.
Un componente nel mondo reale potrebbe essere la macchina di Franco, la macchina di Gigi, la casa di Giuseppe. Un componente è anche detto oggetto.
Gli insiemi di oggetti che condividono delle caratteristiche (ad esempio la macchina di giuseppe e macchina di francesco sono macchine entrambi) sono rappresentati come classi.
Le caratteristiche (o proprietà) degli oggetti della stessa classe (es. cilindrata, marca, proprietario) sono dette variabili d’istanza (o campi o attributi) e hanno
- un nome (identificatore) uguale per tutti gli oggetti
- un tipo, (predefinito o classe) uguale per tutti gli oggetti
- un valore, diverso per ogni oggetto della classe
Ad esempio l’attributo cilindrata avrà un tipo numero e un valore 1200 per la macchina di Gigi e 2000 per la macchina di Francesco.
Le operazioni associate agli oggetti di una classe sono dette metodi d’istanza (o metodi). Un metodo su una macchina potrebbe essere “dimmi quanto sto consumando”.
Ricapitolando, abbiamo quindi che, una classe rappresenta una descrizione di una categoria di oggetti, individuati da comportamenti e caratteristiche simili. I comportamenti vengono definiti “metodi” mentre le caratteristiche vengono definite “attributi”.
Spesso al posto del termine oggetto di una classe viene usato il sinonimo istanza.
Ipotizziamo di dover sviluppare una applicazione per la gestione di una libreria. Ovviamente avremo a che fare con il concetto di libri. Avremo quindi una classe (chiamata anch’essa LIBRO) in cui sono racchiuse tutte le informazioni, detti campi (o attributi), relative ai libri (quindi autore, numero pagine, editore, etc) e un insieme di metodi collegati da essa; un esempio di metodo potrebbe essere il metodo dammiIndice che restituisce, appunto, l’indice del libro. In termini OOP si dice che il libro “divinaCommedia” è un oggetto (o una istanza) della classe Libro.
Gli OOP sono di gran lunga i più diffusi; java è un OOP.