Salut,
Dans un article publié récemment, j'attirais l'attention des développeurs de s'interesser à cocoa. J'ai reçu beaucoup de mails me demandant ce qu'il apporte de plus par rapport aux outils tels que code warrior, et quels sont ses avantages.
Tout d'abord Cocoa est le nouveau nom des apis yellow box encore appelées openstep sous NeXT.
Le seul langage autrefois utilisé sous NeXT était Objectve-C qui est un langage objet plus proche de smalltalk et du langage C.
Comme Objective-C est également très proche de Java, Apple a crée une version java de ces apis.
C'est ainsi que dans cocoa, un objet cocoa-java peut envoyer un message à un objet cocoa-Objective-C. Le nom des apis est le même que l'on utilise Java ou Objective-C.
Le gros intérêt de ces apis, c'est leur maturité et leur puissance.
En effet, sorties depuis 1988, ces apis ont été maintes fois débuggées et soigneusement 'polies'.
A tel point que certaines classes très utilisées comme NSSting, NSArray, NSSet,..etc, qui sont des classes de haut niveau, ont été réadaptées pour être utiliser en lieu et place de fonctions C équivalentes, avec l'avantage de disposer de toutes les methodes très puissantes permettant de les manipuler. Apple les a appelées Core Foundation. Ils portent les noms CFArray, CFString, etc, et sont accessibles à toutes les applications Carbon, Cocoa, Quicktime,...etc.
Si Java est bien apprécié par les développeurs, c'est parce qu'ils retrouvent dans java tout ce que la programmation orienté objet est censé apporter, contrairement à C++.
Dans une échelle décroissante de la nature objet d'un langage on citerai dans l'ordre smalltalk, ObjectiveC, Java puis C++.
smalltalk réunissant les propriétés d'un meilleur langage objet.
Cocoa est formé de plusieurs frameworks (ensemble de classes). La Foundation Kit qui contient des classes de bases (NSString, NSNumber,..etc), l'Application Kit qui réuni l'ensemble de classes permettant de créer une interface graphique (NSButton, NSWindows, ..etc). EOF (entreprise object Framework) qui permet de créer des objets métiers en modélisant les tables de bases de données en objet.(j'en parlerai plus longuement dans un prochain article car c'est le framework phare de WebObjects).
tous ces frameworks regroupent des classes ou objets de base de très haut niveau et cela facilite grandement le travail du développeur dont la tâche principal est de se concentrer sur les fonctions vitales de son application et non sur la 'plomberie'.
L'exemple le plus cité pour démontrer la puissance de ces apis est la classe NSTextView de l'Application Kit qui est à elle seule un éditeur de texte très complet avec des fonctions très avancées comme le drag and drop, le correcteur orthographique, le changement de polices, et tant d'autres déjà implèmentées.
Les classes NSDocument, NSDocumentController et NSWindowsController par exemple constituent a elles trois l'ossature d'une application de gestion de documents; Comme le sont la majorité des applications. (Word, Excel, Photoshop, etc..).le seul code à ajouter dans l'appli c'est celui permettant de créer le contenu des documents. La gestion du contenant étant à 75% gérée par les 3 classes à quelques implémentations de méthodes prédifinies près.
D'autre part, le principe de développement le plus fréquemment adopté est le MVC pour Model, View, controller.
Quand on démarre une appli, la première question à se poser est : quelles sont les objets manipulés dans le domaine dans lequel se place mon application.
Si ton appli a pour domaine la gestion de comptes dans une banque, les objets seront les comptes, les chèques,..etc. C'est ce qu'on appelle les objets de bases du domaine ou encore les objets models.
Après on s'interesse à la partie visuelle permettant aux utilisateurs non informaticiens le plus souvent, d'effectuer les différentes opérations courantes.
C'est la View ou l'interface graphique de l'appli.
Seulement les données saisies dans la View doivent être controlées. c'est le Controller qui le fait. il assure également le lien entre les objets model et l'objet View. En règle général, il y a un objet Controller par objet View.
Des 3 objets, c'est l'objet model qui est important car c'est lui qui est souvent réutilisé, d'où le grand soin mis à le définir.
Dans cocoa, c"est l'outil Interface Builder qui permet de créer les objets View et Controller.
Les objets model sont codés directement dans Project Builder qui sert également à completer l'objet controller et à le tester et débugger.
A supposer que vous vouliez mettre cette appli sur le web, c"est le controller et surtout la View (page web) qui seront réadaptés.
Apple conseille fortement aux développeurs cocoa d'adopter ce principe MVC, c'est le moyen de permettre à leur application de bénéficier 'gratuitement' des possibilités comme la scriptabilité, l'Undo le redo,..etc.
En résumé, comme l'a souligné Steve Jobs dans sa Keynote à la dernière WWDC, avec cocoa on développe 10 fois plus vite qu'avec d'autres outils.
En fait développer sous cocoa est un jeu de Lego où il faut disposer judicieusement les divers composants.
Je vous y invite fortement car les utilisateurs mac gagneront de très bonnes applications, ou great apps comme le dit steve jobs.
A+
manu
Dans un article publié récemment, j'attirais l'attention des développeurs de s'interesser à cocoa. J'ai reçu beaucoup de mails me demandant ce qu'il apporte de plus par rapport aux outils tels que code warrior, et quels sont ses avantages.
Tout d'abord Cocoa est le nouveau nom des apis yellow box encore appelées openstep sous NeXT.
Le seul langage autrefois utilisé sous NeXT était Objectve-C qui est un langage objet plus proche de smalltalk et du langage C.
Comme Objective-C est également très proche de Java, Apple a crée une version java de ces apis.
C'est ainsi que dans cocoa, un objet cocoa-java peut envoyer un message à un objet cocoa-Objective-C. Le nom des apis est le même que l'on utilise Java ou Objective-C.
Le gros intérêt de ces apis, c'est leur maturité et leur puissance.
En effet, sorties depuis 1988, ces apis ont été maintes fois débuggées et soigneusement 'polies'.
A tel point que certaines classes très utilisées comme NSSting, NSArray, NSSet,..etc, qui sont des classes de haut niveau, ont été réadaptées pour être utiliser en lieu et place de fonctions C équivalentes, avec l'avantage de disposer de toutes les methodes très puissantes permettant de les manipuler. Apple les a appelées Core Foundation. Ils portent les noms CFArray, CFString, etc, et sont accessibles à toutes les applications Carbon, Cocoa, Quicktime,...etc.
Si Java est bien apprécié par les développeurs, c'est parce qu'ils retrouvent dans java tout ce que la programmation orienté objet est censé apporter, contrairement à C++.
Dans une échelle décroissante de la nature objet d'un langage on citerai dans l'ordre smalltalk, ObjectiveC, Java puis C++.
smalltalk réunissant les propriétés d'un meilleur langage objet.
Cocoa est formé de plusieurs frameworks (ensemble de classes). La Foundation Kit qui contient des classes de bases (NSString, NSNumber,..etc), l'Application Kit qui réuni l'ensemble de classes permettant de créer une interface graphique (NSButton, NSWindows, ..etc). EOF (entreprise object Framework) qui permet de créer des objets métiers en modélisant les tables de bases de données en objet.(j'en parlerai plus longuement dans un prochain article car c'est le framework phare de WebObjects).
tous ces frameworks regroupent des classes ou objets de base de très haut niveau et cela facilite grandement le travail du développeur dont la tâche principal est de se concentrer sur les fonctions vitales de son application et non sur la 'plomberie'.
L'exemple le plus cité pour démontrer la puissance de ces apis est la classe NSTextView de l'Application Kit qui est à elle seule un éditeur de texte très complet avec des fonctions très avancées comme le drag and drop, le correcteur orthographique, le changement de polices, et tant d'autres déjà implèmentées.
Les classes NSDocument, NSDocumentController et NSWindowsController par exemple constituent a elles trois l'ossature d'une application de gestion de documents; Comme le sont la majorité des applications. (Word, Excel, Photoshop, etc..).le seul code à ajouter dans l'appli c'est celui permettant de créer le contenu des documents. La gestion du contenant étant à 75% gérée par les 3 classes à quelques implémentations de méthodes prédifinies près.
D'autre part, le principe de développement le plus fréquemment adopté est le MVC pour Model, View, controller.
Quand on démarre une appli, la première question à se poser est : quelles sont les objets manipulés dans le domaine dans lequel se place mon application.
Si ton appli a pour domaine la gestion de comptes dans une banque, les objets seront les comptes, les chèques,..etc. C'est ce qu'on appelle les objets de bases du domaine ou encore les objets models.
Après on s'interesse à la partie visuelle permettant aux utilisateurs non informaticiens le plus souvent, d'effectuer les différentes opérations courantes.
C'est la View ou l'interface graphique de l'appli.
Seulement les données saisies dans la View doivent être controlées. c'est le Controller qui le fait. il assure également le lien entre les objets model et l'objet View. En règle général, il y a un objet Controller par objet View.
Des 3 objets, c'est l'objet model qui est important car c'est lui qui est souvent réutilisé, d'où le grand soin mis à le définir.
Dans cocoa, c"est l'outil Interface Builder qui permet de créer les objets View et Controller.
Les objets model sont codés directement dans Project Builder qui sert également à completer l'objet controller et à le tester et débugger.
A supposer que vous vouliez mettre cette appli sur le web, c"est le controller et surtout la View (page web) qui seront réadaptés.
Apple conseille fortement aux développeurs cocoa d'adopter ce principe MVC, c'est le moyen de permettre à leur application de bénéficier 'gratuitement' des possibilités comme la scriptabilité, l'Undo le redo,..etc.
En résumé, comme l'a souligné Steve Jobs dans sa Keynote à la dernière WWDC, avec cocoa on développe 10 fois plus vite qu'avec d'autres outils.
En fait développer sous cocoa est un jeu de Lego où il faut disposer judicieusement les divers composants.
Je vous y invite fortement car les utilisateurs mac gagneront de très bonnes applications, ou great apps comme le dit steve jobs.
A+
manu