Polifonie
Leucippo
Esoterico Pitagora, sono sinceramente impressionato dal tuo carillon! Il quale, se posso permettermi, ha un limite: ha una sola anfora!
Per accompagnare degnamente il pathos dell'ultimo musical di Euripide, per esempio, mi sembra imprescindibile un'armonia di suoni, cioè poterne suonare più d'uno, contemporaneamente!
Pitagora
Il tuo rilievo è pertinente, atomico Leucippo. Spero non ti sorprenderà apprendere che ho pensato anche a questo!
Leucippo
In effetti non ne dubitavo...
Pitagora
Ebbene, vedi quella macchina, vicino al carillon?
Pitagora
Ebbene, quello è un costruttore di anfore, Leucippo! Anch'esso ha un'API, naturalmente: per creare una nuova anfora, è sufficiente chiedere di eseguire il comando:
new Anfora
Leucippo
Ho provato, Pitagora, ma non sembra succedere niente...
Pitagora
Perché una volta creata, devi aggiungere la nuova anfora al carillon!
Per fare questo, ti puoi riferire alle anfore (ora più d'una) della macchina con il nome anfore. Per aggiungere un oggetto alle anfore, puoi invocare (che vuole dire "chiedere di eseguire") il metodo aggiungi:
anfore.aggiungi(⟨oggetto⟩)
Ora, se vuoi creare un'anfora, e aggiungerla a quelle del carillon, basta combinare le due cose:anfore.aggiungi(new Anfora)
Leucippo
Questa sì che si chiama creatività, Pitagora! Ma poi, come faccio a suonare una particolare anfora?
Pitagora
Ti puoi riferire ad una particolare anfora (un particolare elemento) di anfore esattamente come facevi per le componenti del colore di un pixel: con le parentesi quadre [] con dentro un numero. Questo è un modo frequente di riferirsi a una collezione di oggetti, in Javascript: indicare un elemento di una collezione con un nome. Nel caso del colore, i "nomi" delle componenti erano numeri (0 il rosso, 1 il verde, 2 il blu).
Nel caso delle anfore, vale lo stesso.
Mettiamo alla prova le capacità generative del costruttore Pitagorico di anfore: aggiungi un'altra anfora al carillon, e poi suona le due anfore alle frequenze 440 e 550, e vediamo che pathos generano i due suoni insieme! (cioè: vediamo se vanno d'accordo...)
Clicca Coding-mooc Polimi per accedere all'esercizio.