#desenvolvimento

Conhecendo Objective-C – Parte I


Olá pessoal.

Neste post irei descrever alguns aspectos básicos da nova linguagem que estou aprendendo.

Objective-C é de fato uma linguagem orientada a objetos além de ser um “super conjunto” da linguagem C.

Por isto possui três tipos de arquivos:

  • .h  – Contém interfaces, tipos, funções e declaração de constantes.
  • .m  – Contém códigos e classes implementados em C e Objective-C.
  • .mm – Contém códigos e classes implementados em C, Objective-C e C++ (Seu uso só é recomendado quando houver alguma implementação em C++).

Para adicionar uma biblioteca é recomenda a utilização da diretiva #import no lugar da diretiva #include:

#import "Rectangle.h"

As interfaces contém somente a declaração de variáveis e métodos, conforme o exemplo abaixo:

@interface MinhaPrimeiraClasse : NSObject
{
   // Declaração de variáveis.
   int       contador;
   NSString* nome;
}
// Declaração de métodos.
- (id)iniciarComString:(NSString*)aNome;
+ (MinhaPrimeiraClasse*)criarMinhaPrimeiraClasseComString:(NSString*)aNome;
@end

Objective-C suporta tipagem fraca e forte para variáveis que contém objetos:

// Fortemente tipada.
MinhaPrimeiraClasse *meuPrimeiroObjeto;

// Fracamente tipada.
id meuObjeto;

Assim como em Java e C#, o Objective-C possui métodos de instância e métodos de classes, os famosos métodos estáticos. A declaração de métodos é um tanto quanto confusa porque a declaração dos tipos é feita entre parênteses:

- (void)inserirObjeto:(id)umObjeto naPosicao:(NSUInteger)posicao

Para entender a declaração do método é necessário separar e identificar as partes:

  • Identificador do tipo de método: –
  • Tipo de retorno do método: (void)
  • Tipos de parâmetros: (id) e (NSUInteger)
  • Nomes dos parâmetros: umObjeto e posicao
  • Nome do método: inserirObjeto naPosicao

Assim temos um método de instância, representado pelo identificador (-) minus, com o retorno void. Este método insere o objeto recebido, através do parâmetro umObjeto, na posição definida pelo parâmetro posicao. Perceba que o nome do método é composto pelas partes terminadas com dois pontos(:), ou seja inserirObjeto:naPosicao:.

Com o método criado precisamos saber como invocá-lo. A chamada de métodos em Objective-C também é feita através de mensagens seguindo os princípios da OO. A mensagem é delimitada por colchetes[] e é composta por um objeto que recebe a mensagem, pelo nome do método e por seus parâmetros:


[objetoMensagem inserirObjeto:umObjeto naPosicao:0]

Se me perguntarem se é preciso saber C para programar em Objective-C, eu responderei que facilitará bastante, da mesma forma que ajudará se você souber programação orientada a objetos.
Por enquanto é isso, até breve 😉

[Edited]

Conhecendo Objective-C – Parte II

Conhecendo Objective-C – Parte III

[/Edited]

Anúncios
Padrão

6 comentários sobre “Conhecendo Objective-C – Parte I

  1. Tem uma parte que não ficou muito clara para mim, onde você se refere à fortemente tipada e fracamente tipada.

    int contador;

    Quer dizer que em Objective C vc pode mudar contador para um outro tipo de dados? O conceito de tipagem fraca que conheço é este. Não sei se o Objective C permite isso…

    • Jan,

      Realmente ficou meio confuso.
      Pela documentação disponibilizada pela Apple, parece que o conceito é meio diferente do que estamos acostumados.

      De qualquer forma segue o trecho do documento “Learning Objective-C: A Primer” que encontrei do Mac Dev Center:

      Objective-C supports both strong and weak typing for variables containing objects. Strongly typed variables include the class name in the variable type declaration. Weakly typed variables use the type id for the object instead. Weakly typed variables are used frequently for things such as collection classes, where the exact type of the objects in a collection may be unknown. If you are used to using strongly typed languages, you might think that the use of weakly typed variables would cause problems, but they actually provide tremendous flexibility and allow for much greater dynamism in Objective-C programs.

      Espero que tenha ficado mais claro,

      Até breve 😉

      • Apenas o tipo id apresenta essa tipagem fraca, pois podemos usá-la para trocar mensagens contendo qualquer tipo, etc etc. Ela me lembra muito o ponteiro para void de certa forma. Mas “int contador”, não é tipagem fraca não, ariáveis de tipo id sim.

  2. As variáveis correspondem ao estado interno do objeto e não a interface. Portanto você pode omitir sua declaração no arquivo .h deixando assim a interface livre de detalhes de implementação:

    @interface MinhaPrimeiraClasse : NSObject

    // apenas declaração de métodos e propriedades

    @end

    Na implementação, arquivo com a extensão .m, você escreve:

    @implementation MinhaPrimeiraClasse
    {
       NSInteger contador;
       NSString* nome;
    }

    // implementação dos métodos

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