Creare una nuova classe: Interfaccia in Obj-C

      Nessun commento su Creare una nuova classe: Interfaccia in Obj-C

La sintassi di Objective-C per la creazione di una classe è molto semplice. Si presenta di solito in due parti:

L’interfaccia della classe è di solito memorizzata nel file NomeClasse.h, e definisce le variabili di istanza e metodi pubblici. Mentre l’implementazione si trova nel file NomeClasse.m che contiene il codice vero e proprio dei metodi, spesso definisce i metodi privati ​​che non sono disponibili per i clienti della classe.

learnobjectivec-editorwindowinset

Progettare l’interfaccia di una classe

Ecco come si presenta un’interfaccia. La classe è chiamata Foto, quindi il file è chiamato Foto.h:

[code lang=”obj-c”]

#import <Cocoa/Cocoa.h>

@interface Photo : NSObject {

NSString* caption;

NSString* photographer;

}

@end

[/code]

Innanzitutto, abbia importato Cocoa.h per caricare la classe base da cui deriveremo la nostra. La direttiva #import impedisce che vengano inclusi file più volte.

L’ @interface  ci dice che questa è la dichiarazione della classe Foto. I due punti (:) specificano la superclasse, NSObject ovviamente.

All’interno delle due parentesi graffe ci sono due variabili d’istanza: caption e photographer. Sono entrambi NSString ma potrebbero essere qualsiasi tipo di oggetto, incluso id.

Alla fine il simbolo @end termina la dichiarazione della classe.

Aggiungiamo i metodi

Andiamo ad aggiungere alcuni metodi getter per le variabili istanziate. Ricorda però che i metodi in Obj-C solitamente non hanno il prefisso “get” ma semplicemente il nome della variabile. Un singolo trattino (-) prima del metodo indica un metodo d’istanza, Un più (+) indica un metodo di classe.

Di default il compilatore assume che il metodo ritorni un oggetto id e che tutti gli input siano id. Quindi anche se il codice potrebbe essere corretto aggiungiamo sempre il tipo di dato da ritornare:

[code lang=”obj-c”]

#import <Cocoa/Cocoa.h>

@interface Photo : NSObject {

NSString* caption;

NSString* photographer;

}

– (NSString*) caption;

– (NSString*) photographer;

@end

[/code]

Ed infine aggiungiamo anche i setter. Ovviamente non dovranno ritornare alcun valore…quindi specifichiamoli a void.

[code lang=”obj-c”]

#import <Cocoa/Cocoa.h>

@interface Photo : NSObject {

NSString* caption;

NSString* photographer;

}

– (NSString*) caption;

– (NSString*) photographer;

– (void) setCaption: (NSString*)input;

– (void) setPhotographer: (NSString*)input;

@end

[/code]

Successivamente dovremo scrivere il file di implementazione Foto.m …ma lo vedremo successivamente.