Aprendendo Objective-C – Parte 5

Projetando uma Interface de Classe

A sintaxe do Objective-C para criar uma classe é muito simples. Ela geralmente vem em duas partes.
A interface de classe geralmente vem armazenada no arquivo ClassName.h, e nela podem ser definidas variáveis de instância e métodos públicos.A implementação da classe fica no arquivo ClassName.m onde ficam o código destes métodos. Lá também podem existir métodos privados que não podem ser acessados pelos clientes da classe.Abaixo vemos como uma interface se parece. A classe é chamada Photo, portanto o nome do arquivo deve ser Photo.h:
#import <Cocoa/Cocoa.h> 

@interface Photo : NSObject { 
NSString* caption; 
NSString* photographer; 
} 
@end
Primeiro, importamos a biblioteca Cocoa.h, para podermos acessar todas as classe básicas para o aplicativo Cocoa. A diretiva #import automaticamente impede que a bliblioteca seja incluída várias vezes.

A palavra reservada @interface indica o início da delcaração da classe Photo. O dois pontos especifica a superclasse, neste caso NSObject.

Entre as chaves, existem duas variáveis de instância: caption e photographer. Ambos do tipo NSString, mas elas podem ser qualquer tipo de objeto, incluindo id.

Finalmente, o símbolo @end finaliza a declaração da classe.

Adicionar Métodos

Vamos adicionar alguns getters para as variáveis de instância.
#import <Cocoa/Cocoa.h> 
@interface Photo : NSObject { 
  NSString* caption; 
  NSString* photographer; 
} 
  - caption; 
  - photographer;
@end

Lembre-se, os métodos do Objective-C tipicamente dispensão o prefixo “get”. Um traço simples antes do nome do método significa que ele é um método de instância. Já um + antes do nome do método significa que ele é um método de classe.

Por padrão, o compilador assume que o retorno do método é um objeto id, e que todos os valores de entrada são do tipo id. O Código acima é tecnicamente correto, mas não é comum. Vamos adicionar os tipos específicos para os valores de retorno.

#import <Cocoa/Cocoa.h> 

@interface Photo : NSObject { 
  NSString* caption; 
  NSString* photographer; 
} 
  - (NSString*) caption;
   - (NSString*) photographer;
@end
Vamos adicionar os “setters“:
#import <Cocoa/Cocoa.h> 

@interface Photo : NSObject { 
  NSString* caption; 
  NSString* photographer; 
} 
  - (NSString*) caption; 
  - (NSString*) photographer; 
  - (void) setCaption: (NSString*)input; 
  - (void) setPhotographer: (NSString*)input; 
@end
Setters” não precisam de um valor de retorno, portanto vamos especificá-los como sendo do tipo void.
Anúncios