Programmazione Orientata ad Oggetti

SuperCollider così come altri software segue un paradigma di programmazione chiamato Object Oriented Programming. Tutte le entità presenti in questo tipo di linguaggio sono chiamate oggetti e questi sono generalmente istanze di qualche classe programmata in precedenza da James McCartney o da altri sviluppatori. Conseguentemente, per programmare SuperCollider dobbiamo anche noi conoscere e seguire i principi di questo paradigma e gli elementi principali sul quale è fondato. Questi, semplificando notevolmente sono: classi, istanze, metodi e messaggi e servono sia per descrivere un oggetto che per fargli compiere alcune azioni.

Classi

La Classe di un oggetto contiene la sua descrizione astratta, le eventuali istruzioni per costruirlo e le operazioni che possono essere eseguite su di esso o meglio che può eseguire. Pensiamo per esempio a un oggetto reale come una porta. Un’ipotetica classe Porta potrebbe contenere le seguenti informazioni:

In SuperCollider tutte le classi cominciano con una lettera maiuscola e sono di colore Blu.

Istanze

Se la classe Porta è stata definita (da noi o dai programmatori del software), è possibile creare una o più porte derivate da essa, ognuna con caratteristiche diverse (più o meno larghe, più o meno alte). Ogni nuova porta sarà una nuova istanza della classe Porta e si differenzierà dalle altre grazie all’assegnazione di valori differenti alle variabili d’istanza che nel caso specifico sono: larghezza e altezza.

Metodi e messaggi

Infine abbiamo già visto che è possibile richiedere a una classe o a un’istanza di compiere delle azioni che devono essere obbligatoriamente previste e descritte all’interno della classe. Questa descrizione è chiamata metodo. La richiesta di effettuare l’azione avviene attraverso un messaggio, o meglio quando un’istanza o una classe ricevono un messaggio specifico, collegano questo messaggio al relativo metodo interno. Se ad esempio un’istanza della classe Porta riceve il messaggio Porta.apri si apre solamente se questa azione è descritta al suo interno come metodo. Ora dovrebbe essere più chiara anche la differenza tra functional notation e receiver notation già affrontata alla fine del Capitolo precedente. Infine abbiamo visto che negli Help files di alcuni oggetti sono presenti sia metodi di classe (Class Methods) che metodi d’istanza (Instance Methods). Questo perchè nella scrittura del codice possiamo utilizzare alcuni oggetti sia come classi che come istanze e, a seconda dei casi potremo richiamare dei metodi piuttosto che altri. A chiosa di questo paragrafo una breve terminologia generale in inglese riguardante i linguaggi OOP che può tornare utile nella lettura di manuali dedicati.

Terminologia inglese