sábado, 30 de outubro de 2010

Como programar para iPhone #3

Titulo do Capito 3 - Elementos de Sintaxe
Estamos de volta, e agora para falar sobre os elementos que compõe e formam a sintaxe do Objective-C. Elementos esses que você utilizará constantemente na programação para o iPhone. Explicarei um a um em ordem de importância para o desenvolvedor.

ELEMENTOS DE SINTAXE

Message (Mensagem)

No Objective-C a  mais importante extensão herdada da  linguagem de programação C é a message.  Uma mensagem é enviada quando uma pergunta é feita para outro objeto para realizar uma ação específica. Isto é para o Objective-C equivalente a chamada de procedimentos e funções em outras linguagens.  As message’s também são o lugar em que a sintaxe do Objective-C difere mais em relação ANSI-C, o que significa que depois de compreendê-las, você poderá entender mais o código do Objective-C.

Uma simples chamada de mensagem se parece com isto:
[receptor mensagem];

Segue um exemplo real que nós vamos mostrar, no próximo capítulo:
[window makeKeyAndVisible];

Esta message envia para o objeto” window” o comando “makeKeyAndVisible”,  que diz para que o objeto window ficar visível e passar a aceitar entradas do usuário.

Existem três formas em que essa sintaxe pode ficar  um pouco mais complexa. Primeiro,  ela pode ter argumentos, em segundo lugar, ela poderia ser aninhada; e terceiro, poderia ser uma chamada para um dos poucos diferentes destinatários. Explico:

MENSAGENS COM ARGUMENTOS

A maioria das mensagens irá incluir apenas um simples comando, como no nosso exemplo anterior. Mas às vezes você desejará enviar um ou mais argumentos, juntamente com uma mensagem para fornecer mais informações sobre o que você quer fazer. Quando você envia um argumento, deve fazê-lo, adicionando o argumento separado por dois pontos “:” e depois a mensagem, assim:
[receptor mensagem: argumento];


Aqui está outro exemplo do mundo real:
[textView setText:@"Alô Mundo"];

Quando você quiser enviar vários argumentos, cada argumento adicional é enviado seguindo um rótulo, como mostrado aqui:
[receptor mensagem: arg1 label2: arg2 label3: arg3];

Por exemplo:
[myButton  setTitle: @ "Olá"  forState: UIControlStateNormal];

Esta é a maneira pela qual as mensagens do Objective-C variam bastante das chamadas de funções em C.
A vantagem deste tipo de sintaxe é que você não precisa se lembrar da ordem dos argumentos, porque ele pega pelo rótulo. O resultado é muito mais legível e menos suscetível a erros.
Eu sei, parece mais complicado que o .NET e até mesmo java. Mas logo você verá que é mais simples do que se imagina, e é mero costume.

MENSAGENS ANINHADAS

Um dos mais poderosos elementos do sistema de mensagens do Objective-C é o fato de que você pode aninhar mensagens. Isso permite que você substitua o objeto ou o argumento de uma mensagem (ou ambos), com outra mensagem. Em seguida, o retorno da mensagem que foi aninhada preenche automaticamente o espaço apropriado da mensagem que está dentro do aninhamento.

Não entendeu? Nem eu. Vou explicar:
O objeto criado freqüentemente substitui o receptor deste modo:
[[UITextView alloc] initWithFrame: textFieldFrame];

O objeto é criado através do envio de uma mensagem “alloc”(Alocar) para a classe UITextView, o objeto é então inicializado (Teremos uma aula profunda sobre objetos mais tarde).

Quando você estiver passando uma cor para um objeto como um argumento, você quase sempre irá fazê-lo por um aninhamento, chamando a classe UIColor deste objeto:
[textView setTextColor: [UIColor colorWithWhite: newColor alfa: 1.0]];

Percebeu o aninhamento ? Ele definiu a cor do texto(setTextColor) do objeto textView através de uma chamada a classe UIColor.

Mensagens aninhadas é o núcleo do estilo de codificação em Objective-C, e é neste formato que você verá frequentemente o código. Com um bom uso de indentação do código, pode-se tornar complexos conceitos muito mais legíveis.

MENSAGENS DESTINATÁRIAS

Como vimos ao longo dos últimos dois exemplos, existem dois diferentes tipos de objetos em Objective-C. Objetos de classe hereditários em que cada um representa uma das classes no seu Framework. Eles Podem enviar certos tipos de pedidos, como um pedido para criar um novo objeto, enviando uma mensagem para o nome da classe:
[classe mensagem];

Por exemplo:
UIButton * myButton = [UIButton buttonWithType: UIButtonTypeRoundedRect];

Instância de objeto é o que você geralmente se pensa quando se ouve o termo “Objeto”. Você pode criá-los sozinho e, em seguida, a maio parte do seu tempo de programação é gasto manipulando-os. Exceto por esses exemplos de criação de novos objetos, todos nossos exemplos até agora envolvem instâncias de objetos.

Além de chamar um objeto pelo nome, você também pode referir-se a um objeto por uma das duas palavras-chave específicas: self e super.

O primeiro sempre se refere ao próprio objeto, enquanto o segundo refere-se sempre a classe pai.
Iremos ver “self” frequentemente utilizados internamente no código fonte de aequivos de classe:
[self setText:@"That try mens' souls. "]; (A propósito, não se preocupe com a sintaxe de alguns exemplos, que eles serão explicados no futuro).

Iremos ver “super” frequentemente usados como parte de um método sobreposto, onde o filho chama o método pai antes de executar o seu próprio código:
[super initWithFrame:frame];

Todas as suas chamadas de mensagens devem seguir um destes quatro padrões quanto a nomenclatura do receptor. Eles podem chamar alguma coisa pelo nome de sua classe (como um método de classe), pelo nome da instância (por exemplo, um método de uma instância), pela palavra-chave self, ou pela palavra-chave super.

Agora que você sabe como enviar mensagens entre objetos, você provavelmente deseja saber como criar as classes que seus objetos irão instanciar. Esse é o tema de nosso próximo capítulo.

Autor: webclaudio.wordpress.com

0 comentários:

Postar um comentário

 

Related Posts with Thumbnails