Apprendre à programmer avec Objective-C pour Débutant

Objective-C est un langage de programmation polyvalent et orienté objet qui ajoute une messagerie de style Smalltalk au langage de programmation C. ... Il a ensuite été choisi comme langue principale utilisée par NeXT pour son système d'exploitation NeXTSTEP, dont macOS et iOS sont dérivés.

L'Objective-C est un langage de programmation orienté objet réflexif. C'est une extension du C ANSI, comme le C++, mais qui se distingue de ce dernier par sa distribution dynamique des messages, son faible typage, son typage dynamique et son chargement dynamique.

À propos d'Objective-C

Objective-C est le principal langage de programmation que vous utilisez lors de l'écriture de logiciels pour OS X et iOS. Il s'agit d'un surensemble du langage de programmation C et fournit des capacités orientées objet et un runtime dynamique. Objective-C hérite de la syntaxe, des types primitifs et des instructions de contrôle de flux de C et ajoute la syntaxe pour définir les classes et les méthodes. Il ajoute également une prise en charge au niveau du langage pour la gestion des graphes d'objets et les littéraux d'objets tout en fournissant une frappe et une liaison dynamiques, reportant de nombreuses responsabilités jusqu'à l'exécution.

Définition point par point Objectif-C

l'Objective-C est un langage orienté objet. Ça veut dire qu'il intègre (presque) toutes les notions de POO existantes. La POO est donc une très grosse partie du langage. Nous l'aborderons d'ailleurs dans le prochain chapitre.

L'Objective-C est un langage réflexif. Cela veut dire qu'il a une capacité à se modifier à l'exécution. Par exemple : imaginez qu'en C, vous créiez une variable vie de type int. Une fois le code compilé, impossible de changer ces informations, n'est-ce pas ? Eh bien, la réflexivité le permet : on peut définir le type d'une variable en fonction d'une chaîne de caractères par exemple. En gros, le type d'une variable peut changer à l'exécution, cela dépend souvent des actions de l'utilisateur. La réflexivité est une notion un peu avancée, que l'on ne verra pas avant un petit moment.

L'Objective-C est une extension du C. Cela veut dire que l'Objective-C se construit autour des mécanismes du C ; il hérite donc de sa syntaxe. Mais l'Objective-C est une stricte surcouche du C. Cela veut dire que n'importe quel code écrit en C est compilable par un compilateur Objective-C. Il n'y a aucune incompatibilité entre le C et l'Objective-C, contrairement au C++.

L'Objective-C utilise un système de messages : c'est la clé de voûte de l'Objective-C. C'est une partie du langage qui est héritée de Smalltalk. Les messages servent principalement à la POO, nous en verrons dans le prochain chapitre.

L'Objective-C possède un typage dynamique et faible : le type d'une variable est défini à l'exécution, et il peut changer en cours de route. Pour plus d'informations sur le typage, je vous conseille ce tutoriel : Le typage : présentation thématique et historique.

L'Objective-C possède un système de chargement dynamique. Ça ne veut pas dire grand-chose comme ça, mais en réalité, l'Objective-C s'exécute dans un runtime, à la manière de Java. Il y a donc une machine virtuelle qui se charge de distribuer les messages, de créer les objets et les classes, d'évaluer le type des variables, etc. En revanche, il n'y a pas besoin d'installer une machine comme Java, et elle est beaucoup plus légère que celle de Java.

Organisation du code d'Objectif-C

Tout comme un fichier de code C, l'Objective-C attribue sa propre extension à un fichier de code Objective-C. Par exemple : un_fichier.m (l'extension est donc « m »). Les fichiers headers, en revanche, ne changent pas leur extension : on a toujours le fichier « .h ».
Il y a aussi des conventions d'organisation du code pour les objets, mais nous verrons cela plus tard.

Quels logiciels d'Objectif-C

Comme d'habitude : un éditeur de texte, un compilateur et un débogueur. Il n'y a aucun des trois qui soit spécifique à l'Objective-C, sauf peut-être le compilateur : GCC est le plus répandu pour l'Objective-C. Il y a également des IDE disponibles pour l'Objective-C : sous Mac, le plus adapté est Xcode. C'est un IDE fourni avec Mac OS X. Sous GNU/Linux, il y a ProjectCenter.app, qui fait partie du projet GNUstep. Nous verrons également deux logiciels pour développer des interfaces graphiques : Interface Builder sous Mac OS X et Gorm.app avec GNUstep.

Documents pour Objectif-C

Nous utiliserons beaucoup des objets du framework Foundation. C'est une collection d'objets qui sont indispensables au bon fonctionnement de l'Objective-C. La documentation officielle d'Apple se trouve sur leur site : http://developer.apple.com/mac/library [...] ic/index.html. La documentation officielle de GNUstep se trouve sur leur wiki : http://wiki.gnustep.org/index.php/Foundation ; elle est en revanche fortement incomplète.
Il y a dans ces documents la liste de tous les objets disponibles, ainsi que leur usage, etc. Vous n'aurez dans un premier temps pas besoin de la documentation, mais gardez-la toujours à portée de main, c'est le bien le plus précieux du programmeur.

Installation d'Objectif-C

L'Objective-C est un langage multi plates-formes, bien que certains le cantonnent à Mac OS X et Cocoa. GNUstep est fonctionnel sur les trois systèmes d'exploitation majeurs : GNU/Linux, Mac OS X Windows. Sur Mac OS X, par contre, il n'y a pas besoin d'installation supplémentaire : les Xcode tools contiennent tous les logiciels qu'il faut pour développer des applications.

Sous GNU/Linux, il faudra installer GCC pour pouvoir compiler du code Objective-C, et GNUstep pour avoir les bibliothèques spécifiques au langage et les outils de développement. Pour cela, il vous faudra installer les paquets gnustep et gnustep-devel. Sous Windows, la procédure est décrite sur cette page. Je ne sais pas en revanche si la man?uvre est fiable. 

Compilation d'Objectif-C

En théorie, GCC peut compiler de l'Objective-C sans poser de problème, avec l'option -x objective-c. En revanche, pour pouvoir profiter de tous les outils fournis par GNUstep et Cocoa, il faut linker avec les bibliothèques, c'est-à-dire les « inclure » dans le programme. Sur Mac OS X, Xcode fait cela automatiquement. Pour créer un nouveau projet en Objective-C, il faut choisir le Foundation Tool dans la liste des projets disponibles.

Liens externes sur Objectif-C