Creazione di classi personalizzate

Il processo di creazione delle classi da utilizzare nei progetti può incutere un certo timore. Tuttavia, la parte più impegnativa del processo è la progettazione dei metodi, delle proprietà e degli eventi della classe.

Strategie per la progettazione di una classe

La progettazione orientata agli oggetti è una disciplina molto complessa, a cui studiosi hanno consacrato intere carriere accademiche e professionali. Tuttavia, di seguito proponiamo alcuni approcci che consentono di orientarsi.

  1. Considerate il ruolo che le istanze di questa classe svolgono all'interno dell'applicazione. Generalmente, gli oggetti espletano una di queste tre funzioni:

    • Oggetto Value: si tratta di oggetti destinati a contenere dei valori e sono caratterizzati da varie proprietà e pochi metodi (a volte nessun metodo). Sono spesso rappresentazioni in codice di elementi chiaramente definiti. Ad esempio, un'applicazione di riproduzione musicale può includere una classe Song che rappresenta una canzone e una classe Playlist che rappresenta un gruppo di canzoni.

    • Oggetto di visualizzazione: oggetti che vengono visualizzati sullo schermo, ad esempio elementi dell'interfaccia utente quali elenchi a discesa o comunicazioni dello stato, elementi grafici quali creature di un video game e così via.

    • Struttura applicazione: oggetti che espletano vari ruoli di supporto nell'ambito della logica e dell'elaborazione eseguita dalle applicazioni. Ad esempio, potete fare in modo che un oggetto esegua determinati calcoli in una simulazione biologica. Potete rendere un oggetto responsabile della sincronizzazione di valori tra il comando del quadrante e il valore del volume in un'applicazione di riproduzione musicale. Un altro oggetto può gestire le regole di un videogioco. Oppure potete fare in modo che una classe carichi un'immagine salvata in un'applicazione di disegno.

  2. Scegliete la funzionalità che deve svolgere la classe. I vari tipi di funzionalità spesso diventano i metodi della classe.

  3. Se la classe deve fungere da oggetto contenitore di valori, scegliete i dati che le istanze conterranno. Queste voci sono buoni candidati da convertire in proprietà.

  4. Poiché la classe viene progettata espressamente per un progetto, quello che più conta è assegnarle la funzionalità che l'applicazione richiede. Provate a rispondere alle domande seguenti:

    • Che tipo di informazioni vengono memorizzate, monitorate e manipolate dall'applicazione? La risposta a questa domanda consente di individuare gli oggetti contenitore e le proprietà necessari.

    • Quali set di azioni esegue l'applicazione? Cosa accade, ad esempio, quando si carica l'applicazione, quando si seleziona un pulsante specifico, quando si interrompe la riproduzione di un filmato e così via? Questi sono candidati eccellenti per i metodi o per le proprietà se le “azioni” prevedono la modifica di valori singoli.

    • Per eseguire ogni singola azione, quali sono le informazioni necessarie? Questi dati diventeranno i parametri del metodo.

    • Durante l'esecuzione dell'applicazione, quali cambiamenti che si verificano nella classe devono essere comunicati alle altre parti dell'applicazione? Questi sono ottimi candidati per gli eventi.

  5. Esiste un oggetto simile a quello che desiderate creare ma a cui mancano alcune funzionalità che desiderate aggiungere? Valutate la possibilità di creare una sottoclasse, cioè una classe che amplia la funzionalità di una classe esistente, anziché creare una classe completamente nuova. Ad esempio, per creare una classe che funge da oggetto visivo dello schermo, utilizzate come base il comportamento di un oggetto di visualizzazione esistente. In questo caso, l'oggetto di visualizzazione (ad esempio, MovieClip o Sprite) è la classe base la cui funzionalità viene ampliata nella nuova classe.

Scrittura del codice per una classe

Una volta progettata la classe, o perlomeno, una volta stabilite le informazioni che deve memorizzare e le azioni che deve eseguire, la sintassi da usare per scrivere il codice della classe è abbastanza semplice.

Ecco i passaggi fondamentali da seguire per creare una classe ActionScript:

  1. Aprite un nuovo documento di testo nell'editor di testo di ActionScript.

  2. Immettete un'istruzione class per definire il nome della classe Per aggiungere un'istruzione class, digitate le parole public class seguite dal nome della classe. Aggiungente parentesi graffe per racchiudere il contenuto della classe (le definizioni di metodi e proprietà). Ad esempio:

    public class MyClass 
    { 
    }

    Il termine public indica che la classe è accessibile da qualsiasi altra riga di codice. Per altre soluzioni alternative, vedete Attributi dello spazio dei nomi per il controllo dell'accesso.

  3. Digitate un'istruzione package per indicare il nome del pacchetto che contiene la classe. La sintassi è la parola package, seguita dal nome pacchetto completo, seguito dalle parentesi graffe che racchiudono il blocco di istruzioni class. Ad esempio, modificate il codice nel passaggio precedente come segue:

    package mypackage 
    { 
        public class MyClass 
        { 
        } 
    }
  4. Definite tutte le proprietà della classe usando l'istruzione var all'interno del corpo della classe. La sintassi corrisponde a quella utilizzata per dichiarare una variabile (con l'aggiunta del modificatore public). Ad esempio, l'aggiunta di queste righe tra le parentesi graffe della definizione della classe crea le proprietà textProperty, numericProperty e dateProperty:

    public var textProperty:String = "some default value"; 
    public var numericProperty:Number = 17; 
    public var dateProperty:Date;
  5. Definite tutti i metodi della classe replicando la sintassi utilizzata per definire una funzione. Ad esempio:

    • Per creare il metodo myMethod(), digitate:

      public function myMethod(param1:String, param2:Number):void 
      { 
          // do something with parameters 
      }
    • Per creare la funzione di costruzione, cioè lo speciale metodo invocato come parte del processo di creazione di un'istanza di una classe, create un metodo a cui assegnare l'esatto nome della classe:

      public function MyClass() 
      { 
          // do stuff to set initial values for properties 
          // and otherwise set up the object 
          textVariable = "Hello there!"; 
          dateVariable = new Date(2001, 5, 11); 
      }

      Se non includete un metodo di costruzione nella classe, il compilatore crea automaticamente un costruttore vuoto nella classe, ovvero un costruttore senza parametri né istruzioni.

    Esistono alcuni altri elementi che potete definire per la classe. Si tratta di elementi più complessi.

    • Gli accessor sono vie di mezzo tra i metodi e le proprietà. Nel codice che definisce una classe, l'accessor viene scritto come un metodo che consente di eseguire varie azioni, al contrario di una proprietà che si limita a leggere o ad assegnare un valore. Tuttavia, quando create un'istanza della classe, l'accessor viene trattato come una proprietà e se ne usa il nome per leggere o assegnare il valore.

    • In ActionScript, la definizione degli eventi non richiede una sintassi particolare. Gli eventi della classe vengono invece definiti mediante le funzionalità della classe EventDispatcher.