Sommario
Tutti i programmi visti fino ad ora sono stati progettati intorno a funzioni e blocchi di istruzioni che elaborano in qualche modo i dati. Questa metodica viene detta orientata alle procedure. C'è tuttavia un altro modo per organizzare i programmi che si basa sulla combinazione di dati e funzionalità in una nuova entità chiamata oggetto. Questo paradigma è conosciuto col nome di programmazione orientata agli oggetti. Normalmente si usa l'approccio procedurale ma talvolta, e soprattutto quando siamo alle prese con programmi di una certa complessità, potrebbe tornare utile applicare la tecnica oop.
Classi e oggetti sono due degli aspetti principali della oop.
Una classe crea un nuovo tipo
dove gli oggetti sono istanze
delle classi. Un' analogia possiamo trovarla considerando variabili di tipo
int che memorizzano valori interi; sono in realtà
istanze (cioè oggetti) della classe int.
Si noti che anche gli interi sono trattati come oggetti (della classe
int), a differenza di C++ e Java (prima della
versione 1.5) in cui gli interi sono tipi primitivi nativi. Consultare
help(int) per maggiori dettagli sulle classi.
I programmatori di C# e Java 1.5 avranno senz'altro familiarità con questi concetti essendo molto simili a quelli di boxing e unboxing.
Gli oggetti possono memorizzare variabili ordinarie che appartengono all'oggetto. Le variabili che appartengono ad un oggetto o ad una classe sono chiamati campi. Gli oggetti possono anche avere delle funzionalità che appartengono ad una classe; tali funzioni sono chiamate metodi della classe. Questa terminologia è essenziale perché aiuta a differenziare tra funzioni e variabili generiche e quelle che appartengono alla classe o all'oggetto. Correttamente, ci riferiamo a campi e metodi come agli attributi di una classe.
I campi sono di due tipi: quelli che appartengono all' istanza/oggetto della classe o quelli che appartengono alla classe stessa. Sono chiamate rispettivamente variabili di istanze e variabili di classe.
Una classe è creata usando la parola chiave class. Campi
e metodi di una classe devono essere scritti in un blocco indentato.