
Neste capítulo aprenderemos como criar classes através de dois arquivos que contém as diretivas “@interface” e “@umplementation”. Veremos como uní-las através do comando “#import” e como enviar mensagens entre os objetos instanciados.
DEFINIÇÃO DE CLASSE
Como já temos observado, cada classe tende a ser representada por um par de arquivos correspondendo: um arquivo cabeçalho(head) e um arquivo de código fonte. Para definir uma classe, cada um desses arquivos deve conter uma diretiva especial de compilador, que é sempre marcada em Objective-C, com um símbolo @.Primeiro, você define a interface para a classe, que é uma simples declaração de suas variáveis públicas e métodos. Você faz isso no arquivo cabeçalho(head – com a extensão .h). Em seguida, você define a aplicação para a classe, que é o verdadeiro conteúdo de todos seus métodos, o que é feito em um arquivo de código fonte (extensão . m). Ou seja cada classe obrigatóriamente e definida em pares desses dois arquivos, um com a assinatura da classe, métodos e variáveis públicas e outra com a definição do código dos métodos.

vamos olhar para ele de forma mais aprofundada mais adiante.
A INTERFACE
Interfaces começam com uma diretiva “@interface” e terminam com uma diretiva “@end”. Eles contém declarações de variáveis instanciadas entre chaves e, em seguida, declarações de métodos.Abaixo um exemplo:

Nós começamos a nossa interface com o comando @interface (1) e terminamos ela com a diretiva @end (4). Note que a nossa diretiva @interface incluía não só o nome da nossa classe, como também o nome da sua superclasse, após os dois pontos “:”. Poderia também incluir uma lista de protocolos, um tema que vamos ingressar mais tarde neste curso.
A declaração da variável (2) é totalmente normal. NSString é um tipo que nós vamos ver quando olhamos para o sistema operacional do iPhone mais tarde. Note que você não tem que declarar todas as suas variáveis em seu @interface, mas apenas as variáveis que deseja acessar fora dos seus métodos (Públicas). Você declara as variáveis que serão usadas apenas pelos métodos dentro desses métodos.
Nossa declaração de método (3) contém uma descrição de um método com um argumento, estando coerente com a sintaxe que vimos anteriormente no elemento de sintaxe “Message”. Ele também contém um outro elemento novo: Vemos que começou com um sinal de menos “-”. Isso significa que este é um método que pode ser usado apenas por uma instância de um objeto. Seu oposto , que é marcada com um +, é o um método de classe, que é utilizado por uma objeto de classe (Acredito que a maioria tenha conhecimento de Programação Orientada a Objeto(POO) e saiba do que eu estou falando).
O tipo “id” é usado como retorno do método” growFruit”, é uma outra inovação do Objective-C.
Objective-C permite a cração de tipos dinâmicos, onde o tipo é decidido em tempo de execução. Para suportar isto, ele inclui um tipo fraco de “id”, que pode ser um ponteiro para qualquer objeto.
Antes de finalizar a nossa discussão sobre declarações de métodos, gostaria de mencionar que, como na declaração de variáveis, você só deve declarar aqui os métodos que podem ser chamados externamente.
Métodos que permanecem internos em uma classe podem permanecer ocultos se assim o desejarem.
A IMPLEMENTAÇÃO
Depois de declarar uma classe com um “@interface”, você pode defini-la com a diretiva @implementation. Abaixo um exemplo do que a poderia fazer a nossa classe AppleTree, incluindo um único método de exemplo:
Nosso código começa com #import (1). Esta diretiva é uma variante do Objective-C para a macro #include.
A diferença é que ela inclui o arquivo a menos que ele já tenha sido incluído, e é a melhor alternativa quando utilizando Objective-C. Neste caso, nós incluímos o arquivo de cabeçalho(Head) AppleTree.h, que deverá conter a interface. Sem incluir isto, teríamos a necessidade de redefinir todas as variáveis do nosso exemplo e incluir a nossa super classe na declaração “@implementation”. Assim, o “#import” nos ajuda a evitar código redundante. Incluímos também um arquivo Apple.h para que possamos criar um “Apple”.
Tal como na nossa interface, o código de implementação começa com uma diretiva (2) e finaliza com um “@end” (4). Dentro, nós descrevemos o que nossos métodos fazem (3), que inclui enviar uma mensagem para o objeto de classe “Apple”.
O que estamos Perdendo
Nós agora temos duas partes de um enigma resolvidos: como criar novas classes de objetos e como enviar mensagens entre os objetos instanciados. O que está faltando é a forma de instanciar um objeto de uma classe.
Geralmente instanciação de objetos, seguirão o mesmo padrão. Primeiro, você aloca o objeto na memória e, em seguida, você inicializa qualquer variável e executa alguma configuração.
A forma precisa em que isto é feito pode variar de classe para classe. É geralmente o Framework que decide como o objeto será criado no iPhone OS. Como você verá mais adiante, o iPhone OS especifica dois métodos de instanciação de objeto: o método alloc-init e o método fábrica de classe (class factory method). Iremos ver cada um destes em breve, quando nós falarmos sobre o iPhone OS, mas primeiro vamos no próximo capítulo terminar com o tema “Elementos de Sintaxe”. Até lá…
Autor: webclaudio.wordpress.com


12:39
Marcell C. Ribeiro



















0 comentários:
Postar um comentário