Timeline
Chat
Prospettiva
Sather
linguaggio di programmazione orientato agli oggetti Da Wikipedia, l'enciclopedia libera
Remove ads
Sather è un linguaggio di programmazione orientato agli oggetti. Nacque all'incirca nel 1990 all'International Computer Science Institute dell'Università della California, sviluppato da un gruppo internazionale guidato da Steve Omohundro. Supporta la garbage collection e la programmazione generica dei sottotipi. In origine si basava su Eiffel ma ora include anche caratteristiche di programmazione funzionale.
Remove ads
Hello World
class HELLO_WORLD is main is #OUT+"Hello World\n"; end; end;
Alcuni commenti sul codice:
- I nomi delle classi usano solo caratteri maiuscoli. Non è soltanto una convenzione; l'uso di caratteri minuscoli nel nome di una classe è considerato un errore dal compilatore del linguaggio.
- Il metodo chiamato
mainè il punto principale di esecuzione per un programma. Può appartenere a qualunque classe, ma se questa non èMAIN, il nome della classe deve essere specificato con una opzione del compilatore. #è il simbolo del costruttore della classe. Chiama il metodocreatedella classe il cui nome è indicato subito dopo l'operatore. In questo esempio, è usato per creare ed inizializzare un oggetto della classeOUT, la classe per scrivere sullo standard output.- L'operatore
+è ridefinito dalla classe per appendere la stringa passata come argomento allo stream. - Operatori come
+sono syntactic sugar per chiamate di metodi.a + bè l'equivalente dia.plus(b). Gli usuali ordini di precedenza degli operatori aritmetici sono usati per risolvere l'ordine di chiamata dei metodi in formule complesse.
Remove ads
Esempio di iteratori
Riepilogo
Prospettiva
Questo programma stampa i numeri da 1 a 10.
class MAIN is
main is
loop
i := 1.upto!(10);
#OUT + i + "\n";
end;
end;
end;
loop ... end è il costrutto preferito per cicli, anche se while e repeat-until sono disponibili. Nel costrutto possono essere usati uno o più iteratori, i cui nomi finiscono sempre con un punto esclamativo. (Questa convenzione è controllata dal compilatore del linguaggio.) upto! è un metodo della classe INT che accetta un argomento once, un argomento il cui valore non cambierà all'interno dell'iteratore. upto! potrebbe essere implementato col seguente codice.
upto!(once m:INT):SAME is
i: INT := self; -- inizializza i al valore di self,
-- che è l'intero per il quale il metodo è invocato.
loop
if i>m then
quit; -- Esci dal ciclo quando i è maggiore di m.
end;
yield i; -- Altrimenti use i come valore di ritorno e continua il ciclo.
i := i + 1; -- Incrementa il suo valore di 1.
end;
end;
L'informazione sul tipo di una variabile è indicata usando la sintassi post-fissa variable:CLASS. Il tipo della variabile può essere spesso dedotto ed è quindi una informazione opzionale, come in anInteger::=1. SAME è una pseudo-classe che si riferisce alla classe attuale.
Remove ads
Collegamenti esterni
- Sito di Sather, su icsi.berkeley.edu.
- Gnu Sather, su gnu.org.
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads