#desenvolvimento

Conhecendo Objective-C – Parte II


Olá pessoal.

Continuando nosso primeiro contato com Objective-C vamos explorar um pouco mais o conceito de mensagens.

É bom saber que também é possível implementar mensagens aninhadas para diminuir o número de declaração de objetos receptores de mensagens. Assim o valor recebido em cada mensagem é utilizado como parâmetro para outra mensagem:

[meuObjeto inserirObjeto:[objetoReceptor metodoQueRetornaObjetoParaInserir] naPosicao:0];

Neste exemplo o primeiro parâmetro umObjeto foi substituído pela mensagem objetoReceptor metodoQueRetornaObjetoParaInserir, ou seja o objetoReceptor possui um método que retorna um objeto e este objeto será enviado como parâmetro para o método inserirObjeto.

No post anterior vimos que as classes possuem métodos de classe e de instância. Os métodos de classe são usados como fábrica para criação de novas instâncias da classe ou para acessar alguma informação associada com a classe, como por exemplo uma constante. Para identificar um método como sendo um método de classe é necessário utilizar o identificador plus (+) no início do método.

Digamos que criamos uma classe chamada NSArray que herda de NSMutableArray e nossa classe possui um método de classe denominado criarArrayDeObjetos. Então para criarmos uma nova instância desta classe temos que alocar e inicializar uma instância, conforme o código abaixo:

// Aloca espaço para a nova instância.
NSMutableArray *meuArrayDeObjetos = nil;

// Inicializa a instância.
meuArrayDeObjetos = [NSMutableArray criarArrayDeObjetos];

Assim como em Ruby a palavra chave reservada para nulo é denominada nil, diferentemente do Java e C# que utilizam a palavra reservada null.

Enfim vamos visualizar o código de uma classe com método de instância e método de classe:

@implementation MinhaClasse

// Método de instância.
- (id)inicializarComNome:(NSString *)umNome
{
 self = [super init];
 if (self){
 nome = [umNome copia];
 }
 return self;
}

// Método de classe.
+ (MinhaClasse *)criarMinhaClasseComNome:(NSString *)umNome
{
 return[[[self alloc] inicializarComNome:umNome] autorelease];
}
@end

Não se preocupe se não entendeu completamente a classe acima. Neste momento é importante identificar apenas o que já vimos até aqui, isto é, identificar que o método de classe realiza uma chamada ao método de instância.

Em Objective-C também temos os métodos de acesso get e set que são descritos assim:

// Get.
- (int)idade

// Set.
- (void) setIdade:(int)

E podem ser acessados de forma semelhante ao acesso das propriedades em C#:

// Forma simplificada.
meuObjeto.nome = umNovoNome;

// Forma completa.
[meuObjeto setNome:umNovoNome];

Aqui o conceito de propriedade pode ser entendido como uma notação de conveniência usada para substituir a declaração dos métodos de acesso. A declaração das propriedades devem ser feitas no arquivo de interface cuja extensão é o famoso .h da linguagem C. Basicamente a declaração de uma propriedade é composta pela diretiva @property, o tipo e o nome da propriedade.

// Diretiva + Tipo + Nome da propriedade.
@property BOOL flag;

// Copia o nome durante a atribuição.
@property (copy) NSString *nome;

// Declara somente o método de acesso (Get).
@property (readonly) int idade;

Para utilizar as propriedades declaradas no header file é necessário solicitar ao complilador a geração dos métodos declarados na especificação das propriedades. Esta solicitação se dá quando inserimos a diretiva @synthesize seguida do nome da propriedade:

// Solicitação de apenas uma propriedade.
@synthesize flag;

// Solicitação de múltiplas propriedades.
@synthesize flag, nome, idade;

A manipulação de strings em Objective-C suporta as convenções de especificação de strings em C, ou seja, podemos utilizar o estilo do printf para formatá-las.

int idade = 24;
NSString *mensagem;

// Conteúdo da mensagem: "Eu tenho 24 anos."
mensagem = [NSString stringWithFormat: @"Eu tenho %d anos.\n", idade];

NSString *nome = @"Brena";
NSString *sobrenome = @"Monteiro";
NSString *nomeCompleto;

// Conteúdo do nomeCompleto: "Meu nome completo é Brena Monteiro".
nomeCompleto = [NSString stringWithFormat: @"Meu nome completo é %@ %@", nome, sobrenome];

Para mim este primeiro contato direto com Objective-C diminuiu a dificuldade de entendimento da linguagem. E acredito que é possível avançar os estudos, aprofundando nas características específicas da linguagem.

Espero que tenha sido útil para quem também está começando a aprender Objective-C. E só para constar, toda consideração sobre o post é bem vinda.

Até breve.

[Edited]

Conhecendo Objective-C – Parte I

Conhecendo Objective-C – Parte III

[/Edited]

Anúncios
Padrão

2 comentários sobre “Conhecendo Objective-C – Parte II

  1. Edmar Pereira disse:

    Excelente poste muito didático. Aproveito a oportunidade para colocar uma dúvida:
    o conceito de sobrecarga do método, como denominato em Java de – método sobrecarregado, existe em obj-C?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s