Eccoci alla seconda parte del nostro viaggio alla scoperta dell’Objective-C. Nella prima parte abbiamo visto la teoria e i concetti che stanno dietro ai linguaggi orientati agli oggetti e anche se abbiamo affrontato tutto in maniera molto superficiale in realtà stiamo facendo un’operazione concettuale non indifferente: stiamo imparando a conoscere un nuovo PARADIGMA di programmazione.
Adesso sappiamo, quindi, cosa sono:
- OGGETTI (la nostra penna nera, ricordate?)
- CLASSI (l’insieme delle penne)
- METODI (la penna “scrive”)
- VARIABILI (di che colore è la penna?)
- ISTANZE (la mia penna nera è un’istanza della classe penna)
Ed è giunta l’ora di vedere questi concetti calati nella realtà del codice. Quello che faremo è creare una classe, non ci interessa adesso scrivere un programma completo che possa essere compilato e lanciato, non siamo ancora pronti e ci arriveremo in seguito, quindi per ora scordatevi Hello World o cose del genere e non vi aspettate che vi parli dell’ambiente di programmazione XCode. Procediamo per Step:
Quello che faremo è scrivere il file Penna.h in cui creeremo la nostra classe Penna.
Questo file (quando sarà completo ovviamente) potrà essere aggiunto ad un qualsiasi progetto ed utilizzato senza problemi e senza dare fastidio al resto del vostro codice (a patto che non abbiate già un’altra classe che si chiama Penna).
Aprite il vostro editor di testo preferito (TextEdit, Blocco Note, XCode, quello che più vi piace) ed iniziate a scrivere il file Penna.h:
Di prassi una classe risiede in un file .h ed in un file .m (.cpp per chi viene dal C++) e di norma nel file .h viene riportata la DICHIARAZIONE della classe mentre nel file .m viene riportata la sua IMPLEMENTAZIONE. Per dirla in parole ancora più semplici nel .h scriviamo cosa fa la classe e nel .m scriviamo come lo fa.
Ora dobbiamo dichiarare la classe dunque:
@interface Penna { } @end
Tutto qui. Abbiamo dichiarato la nostra prima classe in Objective-C! Complimenti.
Va bene, va bene, avete ragione potrebbe essere qualunque cosa, non abbiamo dichiarato nessun metodo e nessuna proprietà (variabile), ma è un punto di partenza. Adesso sappiamo che la dichiarazione di una classe è compresa fra due DIRETTIVE: @interface e @end.
Tutto quello che c’è fra queste due direttive fa parte della dichiarazione della nostra classe.
Aggiungiamo qualche caratteristica che identifica la nostra classe Penna, per esempio il suo colore:
@interface Penna { NSString *colore; NSString *marca; } @end
Abbiamo definito due variabili di tipo NSString che definiscono rispettivamente il colore e la marca della penna. NSString è un tipo di variabile che definisce una variabile di tipo stringa e fa parte del FRAMEWORK Cocoa che è un insieme di classi preconfezionate sviluppate da Apple che facilitano la programmazione del MAC e dell’iPhone.
C’è un problema, però e cioè il compilatore non sa cosa è una NSString e non sa nemmeno dove cercarla, quindi sarebbe meglio indicarlo onde evitare di incappare in errori di compilazione.
#import <Cocoa/Cocoa.h> @interface Penna { NSString *colore; NSString *marca; } @end
Adesso ci siamo, la direttiva #import dice al compilatore di andare a cercare quello che non conosce nel file di interfaccia Cocoa.h in modo simile a quello che in C++ o C viene fatto con la direttiva #include con la differenza che #import si preoccupa di controllare se l’HEADER specificato non sia già stato incluso da qualche altra parte o se sia effettivamente necessario.
A questo punto manca solo una cosa da fare e cioè definire (dichiarare per meglio dire) uno o più METODI che facciano qualcosa. Per rimanere in linea con l’esempio della penna potremmo dichiarare il metodo “scriviQualcosa”.
#import <Cocoa/Cocoa.h> @interface Penna { NSString *colore; NSString *marca; } - (void) scriviQualcosa; @end
Cosa abbiamo scritto? Abbiamo dichiarato il PROTOTIPO di un metodo e cioè abbiamo dichiarato una funzione che si occuperà di fare qualcosa, magari di modificare le variabili della classe o forse di comunicare con l’esterno, ma ora non ci interessa. La sintassi è quella di scrivere il segno “meno” (ci sono metodi che hanno bisogno del segno “più” davanti, ma vedremo in seguito cosa significa) seguito dal tipo di variabile restituito dal metodo racchiuso fra parentesi tonde (in questo caso il metodo non restituisce nulla al chiamante , quindi void è la variabile che fa per noi) ed infine il nome del metodo seguito dal punto e virgola.
Benissimo, adesso la dichiarazione della classe è completa, potete salvare il file Penna.h che è il vostro HEADER contenente la DICHIARAZIONE della CLASSE Penna.
Nella prossima guida, come avrete immaginato, ci occuperemo dell’IMPLEMENTAZIONE della classe Penna (un po’ debole come classe, ma portate pazienza, in seguito faremo classi molto più utili e pratiche, questa è puramente didattica).
Enzo Francesca per iSpazio.net
Leggi o Aggiungi Commenti