Tesi Robotica V+ Sim: Interprete Command Language e... | Page 64

Sebbene preveda meno di 90 parole chiavi, la sintassi C# è altamente espressiva ed è anche molto semplice da imparare. Inoltre, essendo basato sull'utilizzo delle parantesi graffe, risulterà immediatamente riconoscibile per chiunque abbia familiarità con i linguaggi C,C++ o Java. La sintassi del C# semplifica molte delle complessità presenti in C++, fornendo al tempo stesso alcune potenti funzionalità quali tipo di valore nullable, enumerazioni, delegati, metodi anonimi e accesso diretto alla memoria, non disponibili in Java. Sono inoltre supportati metodi e tipi generici, che garantiscono migliori prestazioni e maggior indipendenza dai tipi, nonché iteratori, che consentono ai responsabili dell'implementazione di classi Collection di definire comportamenti di iterazione personalizzati facilmente utilizzabili nel codice client. Essendo un linguaggio orientato a oggetti, C# supporta i concetti di incapsulamento, ereditarietà e polimorfismo. Tutti i metodi e le variabili, incluso il metodo main, che rappresenta il punto ingresso dell'applicazione, vengono incapsulati all'interno delle funzioni di classe. Una classe può ereditare direttamente da un'unica classe padre, ma può implementare un numero qualsiasi di interfacce. Per evitare una ridefinizione accidentale, i metodi che eseguono l'override di metodi virtuali in una classe padre richiedono la parola chiave overidde. In C# la struttura è simile a una classe leggera. Si tratta di un tipo allocato nello stack che può implementare interfacce ma non supporta l'ereditarietà. Oltre a supportare questi principi base della programmazione orientata a oggetti, in C# sono disponibili alcuni costrutti di linguaggio innovativi che facilitano lo sviluppo di componenti software, ad esempio: ● Firme del metodo incapsulate, denominate delegati, che consentono l'invio di notifiche degli eventi indipendenti dai tipi. ● Proprietà, che vengono utilizzate come funzioni di accesso per le variabili membro private. 63