sábado, 24 de novembro de 2012

Objective-C

Olá a todos!!!

Neste tópico irei introduzir alguns conceitos referentes à linguagem Objective-C.

O Objective-C é uma extensão da linguagem C que incorpora conceitos da linguagem Smalltalk (a primeira linguagem orientada a objetos). Sua principal diferença com relação ao C++ é que o C++ foi construído a partir da raiz incorporando conceitos de C, ou seja, não foi apenas uma extensão.

É importante ressaltar que a escolha do Objective-C pela Apple como linguagem padrão de suas plataformas não foi arbitrária, mas sim resultado do legado das bibliotecas já construídas na empresa NeXT e o SO NeXTStep, precursor do Mac OS X. Ou seja, Objective-C representa um legado mais do que uma escolha.

Assim, podemos entender por que o Objective-C e suas classes padrões da Cocoa possuem o prefíxo NS (NextStep).

Mais tarde, desenvolveu-se a versão 2.0 do Objective-C que visou acrescentar as características do Standard C99, Standard esse que visou tornar o C mais próximo do C++, porém mantendo o paradigma estrutural.

Assim, tudo o que representa uma extensão do C e, portanto, um conteúdo de Objective-C é precedido por @. Além disso, as implementações dos header files (.h) passam a ser sufixadas com .m para Objective-C (híbrido de C com as novas implementações prefixadas com @), e sufixadas com .mm para Objective-C++ (híbrido de C++ com as novas implementações prefixadas com @).

Um dos aspectos mais interessantes da linguagem Objective-C é que ela é uma linguagem compilada dinamicamente em tempo de execução. Isso significa que o Objective-C é compilado por um compilador que permite despacho dinâmico de métodos e tipos. 

Ou seja, em tempo de execução são definidos qual método corresponde à chamada do método (portanto, não existe o vínculo do objeto com a implementação, mas sim uma mensagem de um objeto para uma implementação), e qual é o tipo do objeto que estamos trabalhando. A esse conceito damos o nome de Duck Typing.
O fato de não precisarmos definir qual é o tipo de objeto, sendo o compilador inteligente o suficiente para entender qual ele é, nos da uma flexibilidade incrível para trabalhar com void pointers (chamados em Objective-C de ID), sendo muito comum, portanto, encontrarmos na Cocoa classes que recebem um ponteiro para um objeto qualquer (do tipo id) e para um método qualquer (do tipo sel - Selector, que é basicamente o mesmo que um ponteiro para uma função).

O Objective-C é também uma das linguagens precursoras do uso de interfaces (chamada na linguagem de Protocol). O java inclusive copiou a forma como Objective-C trabalha com herança (somente 1 herança por classe e sem limite de implementações de interfaces).

Por hora é só. Para mais informações sobre a linguagem, consultar o seguinte link que mostra um apanhadão do funcionamento da linguagem.

SEE YOU NEXT MISSION

Nenhum comentário:

Postar um comentário

Obrigado por deixar a sua participação!