Publicado por: webclaudio | 02/02/2009

Curso de programação para IPHONE – Parte 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.


Respostas

  1. Oi Claudio, estou lendo(nao li tudo ainda) sobre o SDK do iphone. Primeiramente quero te parabenizar pela iniciativa. Muito boa. O pouco que li me interessou bastante. Parabens e o seu blog já está no meu FEED. Mexo com programaçao de web a algum tempo e estou afim de desenvolver para o iPhone e o seu curso vai me ajudar muito. Parabens, precisando de algo vc tem meu contato. Abraços

    • Valeu Rodrigo. Por enquanto agente está na parte chata da coisa que é a adaptação à nova linguagem. Para quem vem do Mundo Windows, desenvolver em Objective-C é meio esquisito. Mas logo nos adaptamos e tudo melhora. Lembro sempre que os conceitos passados aqui servem tanto para programar aplicações para o iPhone quanto para MACOSX Leopard. Brevemente estaremos entrando na parte divertida onde teremos nosso primeiro “Hello World” e brincaremos com alguns recursos do iPhone. Espere e verá …. e agradeço a ajuda. A propósito quem entender de algum item relacionado no top do meu blog pode se cadastrar e escrever posts também. Toda informação é muito bem-vinda.

  2. Ola Claudio, parabens pela iniciativa. Estou muito satisfeito em encontrar algo realmente do inicio. Sou desenvolvedor Win32 com Delphi. Estou precisando renovar, ja programo para Palm e quero agora pular para o iphone. NAO PARE… pelo amor de Deus.. heheheh Estou adorando essas aulas. Qualquer material que voce tiver e que nao esta pensando em publicar e for material que possa repassar, ou publique ou mande por e-mail. E muito dificil encontrar material em portugues na internet.
    Obs: Desculpe por nao ter nenhum acento, e que estou usando um Hackintosh. No meu Laptop Dell e nao consegui ainda configurar o teclado.
    Abracos.

    • Olá Gustavo. Desculpe a demora mas estava em São Paulo para um trabalho no Cliente da empresa que represento. Informo a você que não vou parar. Esta semana pretendo lançar mais 3 artigo que darão uma alavancada no nosso curso. Vou aproveitar e fazer comentários sobre o novo SDK 3.0 e o iPhoneOS 3.0 (este disponível em Junho deste ano) que aparentemente vem com mais de 1000 API’s que resolvem muitos das reclamações dos usuários do iPhone, como o copiar e colar e bluetooth. Me aguarde…

  3. Muitíssimo obrigado por esses tutoriais..estão me ajudando mto que to começando agora.

    A única coisa que não entendi mto bem foi a linha “UIButton * myButton = [UIButton buttonWithType: UIButtonTypeRoundedRect]; “…seria a criação do objeto similar ao java que usa [classe objeto = new classe()]?

    E esse “self” da a enteder que é igual ao “this”. Até que to conseguindo entender legal.

    To acompanhando e gostando mto dessas lições…obrigado por compartilhar com nós!

  4. Olá Claudio, estou acompanhando o seu blog e não to entendendo nada… hehehe. A única programação qie estudei foi Basic, uns 20 anos atras. Brincadeira à parte, gostaria que me indicasse o que devo estudar antes para poder acompanhar o seu blog. Agradeço desde já.

  5. Parabéns!
    Resolvi voltar a programar depois de conhecer o Iphone e suas funcionalidades… faz tempo que não programo, desde o clipper, dataflex, …

    Varri a net atrás de material, tem muita coisa… agora o que mais me agradou esta sendo seu material.

    Obrigado por compartilhar.

  6. Oi Claudio, dentre os muitos parabéns que vc ja recebeu, gostaria de mandar mais um! Realmente uma iniciativa extraordinária! Comecei hoje o meu curso com vc… e estou empolgado. Confesso que estou longe da programação a algum tempo, mas talvez seja melhor, assim ja retomo nas novidades de uma vez. Ah, se algum dia for realmente lançar um livro neste tema, ja deixo o meu reservado ! Mais uma vez PARABÉNS, e mais do que isso, OBRIGADO!

  7. Muito bom o artigo

  8. Estou acompanhando o site.
    Estou exatamente nesse post.
    O material é de ótima qualidade e estou conseguindo associar com Java e PHP com muita facilidade.
    Meus sinceros parabéns pelo seu trabalho.
    Continuarei com meus estudos.
    Muito obrigado.

  9. Muito bom!!! CONGRATULATIONS, MAN!!!

  10. Olá Claudio,
    parabéns pela iniciativa, estava procurando um conteúdo assim a muito tempo e descobri seu Blog hoje, estou bem atraso pois seus artigos são de 2009.
    Eu desenvolvo Sites e Blog em WordPress, tenho interesse em desenvolver um site mais robusto com mais funcionalidade e um melhor visual, facilitando assim você continuar com seus cursos e tutoriais e os participastes (leitores) tirar melhor proveito disso. O grande detalhe é que estou disposto em desenvolver um sites pra Você na plataforma WordPress totalmente de graça, sem custo nenhum, assim vc podera parar de usar esse Blog com tema padrão do WordPress.
    Peço para que entre em contato comigo via e-mail para tratarmos do assunto.
    Parabéns. Obrigado!


Deixar mensagem para Álvaro Guimarães Cancelar resposta

Categorias