apprentissages et fondamentaux
sl1200mk2
Membre
bonjour à tous et à toutes,
j'ai développé une application pour le théâtre http://www.nicole-banana.com en C et Tcl/Tk pour l'interface graphique.
Le soft fonctionne sur les plateformes Mac et Pc, et j'aimerai le traduire en Cocoa.
Ce faisant, j'aimerai vous poser quelques questions préalables.
- le coeur du soft est composé de structures déclarées en C.
puis-je les conserver ou est-ce-que je dois les traduire en cocoa?
- est-ce que je peux continuer à utiliser mes pointeurs avec leur mécanismes d'allocation et de destruction?
- est-ce que le type casting est important en cocoa?
maintenant, pour la partie graphique:
- en Tcl/Tk, les composants comme les labels ou boutons ont des tags (cf identifiants) qui permettent à des fonctions de modifier le comportement ou contenu des composants.
est-ce que ce principe existe en cocoa?
- en cocoa, est-ce que les composants graphiques peuvent être crées à la volée, ou doivent-ils être crées au préalable avec InterfaceBuilder?
- Je programme en C et pas en C++, donc je suis peu familier des classes.
si je veux créer par exemple 10 boutons, est-ce que je dois écrire une classe pour 1 boutons, et l'utiliser pour créer les autres?
merci par avance pour vos éclairages,
nicolas
j'ai développé une application pour le théâtre http://www.nicole-banana.com en C et Tcl/Tk pour l'interface graphique.
Le soft fonctionne sur les plateformes Mac et Pc, et j'aimerai le traduire en Cocoa.
Ce faisant, j'aimerai vous poser quelques questions préalables.
- le coeur du soft est composé de structures déclarées en C.
puis-je les conserver ou est-ce-que je dois les traduire en cocoa?
- est-ce que je peux continuer à utiliser mes pointeurs avec leur mécanismes d'allocation et de destruction?
- est-ce que le type casting est important en cocoa?
maintenant, pour la partie graphique:
- en Tcl/Tk, les composants comme les labels ou boutons ont des tags (cf identifiants) qui permettent à des fonctions de modifier le comportement ou contenu des composants.
est-ce que ce principe existe en cocoa?
- en cocoa, est-ce que les composants graphiques peuvent être crées à la volée, ou doivent-ils être crées au préalable avec InterfaceBuilder?
- Je programme en C et pas en C++, donc je suis peu familier des classes.
si je veux créer par exemple 10 boutons, est-ce que je dois écrire une classe pour 1 boutons, et l'utiliser pour créer les autres?
merci par avance pour vos éclairages,
nicolas
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Cocoa est un framework, le langage utilisé c'est Objective C.
Objective C est un langage objet, basé sur le C, et qui accepte qu'on insère du code en C.
Si par un exemple une de tes fonctions résout un algorithme assez conséquent, tu peux l'utiliser telle quelle.
Oui, mais pour les objets créés, tu seras amené à utiliser le mécanisme de gestion de mémoire spécifique. Si tu veux suivre l'esprit Objective C, tu seras sans doute amené à repenser au moins en partie l'architecture de ton programme.
Pour ce qui est du C que tu peux inclure dans un programme Objective C, oui
Pour ce qui est objet, Objective C utilise le typage dynamique, qui est beaucoup plus souple.
oui
Les deux sont possibles
Un certain nombre de boutons sont prédéfinis.
Si tes boutons requièrent des caractéristiques spécifiques, on prend un bouton existant dans le catalogue, et on lui rajoute les fonctionnalités voulues, en créant une sous-classe. Tes 10 boutons pourront alors être des instances de cette sous-classe.
Compte-tenu de ce que fait ton appli, je considère cette dernière phrase comme de la provocationÂ
Bienvenu sur ce site
je regarde les guides et tutoriaux et je reviens à la charge
++
le principe étant de cliquer sur le texte et de scroller à la souris.
ça foire car les deux Text Filed font référence à une variable slection.level
Or je ne sais pas comment déclarer plusieurs bind...
aussi, coment fait-on pour pour récupérer un tag?
par exemple, le premier joystick aurait le tag 0, ce qui me permettrait d'accéder à l'index 0 d'un pointeur, et ainsi de suite.
merci par avance
A+
L'existence de bindings multiples est normalement gérée par cette technologie, ce qui veut dire que si on déclare correctement les bindings entre Obj1, Obj2, Obj3, le changement de Obj1 se synchronise directement sur Obj2 et Obj3.
Voir ce tuto (un peu vieillot maintenant)
Une action envoyée par un NSControl se fait par une IBAction déclarée ainsi:
-(IBAction) myAction:(id) sender
On récupère alors le tag par [sender tag]
Ceci dit, tes deux vues n'ont pas de tag , elles sont définies comme des NSView (de simples zones de dessins) et non comme des NSControl (NSButton, NSTextField, NSTextView, NSMatrix, ...) dont le tag peut-être défini dans IB.
Rien ne t'empêches de rajouter un champ tag à ta classe StickJoy, mais pour l'instant cette classe se parle à elle-même par la gestion des événements.
Autres remarques:
Les noms de variables et de méthode commencent par une minuscule
Les noms de classe par une majuscule.
- (void)setNilValueForKey:(NSString *)key{
  [self setValue:[NSDecimalNumber zero] forKey:key];
}
Obective-C fournit NSNull une classe bien utile pour encapsuler nil (voir la doc)
Pour récupérer un scroll de souris, on dispose de la méthode scrollWheel
Quit : tu as dû déconnecter l'option de menu
La base de l'objective C, c'est l'envoi de messages entre les objets à travers différents mécanismes :
-envoi direct de message [unObjet faitTelleChoseAvec:..]
-mécanisme target-action dans l'interface graphique
-mécanisme des notifications-observateurs dont les bindings sont une version simplifiée.
- ...
Â
Pour Objective-C et AppKit, on conseille "Cocoa Par la Pratique" d'Aaron Hillegass pour débroussailler rapidement les bases . Une nouvelle édition est disponible en Anglais.
Comprendre:
La version française date un peu (beaucoup...)
A ma connaissance, en Français, faute de livre plus récent, cela reste une référence de qualité pour une première lecture approfondie et permettant de se lancer dans la doc & tutos. J'ai bien aimé le livre plus récent de Vauterin, mais il parle d'autre chose.
1) Le Vauterin est excellent pour se faire une idée des différentes technologies et outils pour programmez sous MacOS et jouer un peu avec chacune d'entre elles. Cela permet de se faire une bonne culture générale de la programmation sous macOS. Il a l'avantage d'être en français, de couvrir un panel relativemetn exhaustif des differentes maniére de programmer sous mac os, et d'être prise en main facilement
2) Le Hillegass est vraiment la référence pour programmer sous mac OS en Obj-C/Cocoa. L'ouvrage couvre 80% des utilisations courantes de Cocoa. Son gros avantage est de permettre de comprendre les fondamentaux du framework cocoa. Par contre c'est un ouvrage qui demande un certain investissement. Pour en profiter il faut non seulement le lire, le re-lire, faire les exemples et surtout tenter de résoudre les "challenges".
La version FR commence effectivement à¡ dater, mais elle reste d'actualité, le gros défaut de cette version FR est finalement qu'elle parle de XCode 2 et IB 2.0. Cela peut etre déroutant pour les débutants.
La nouvelle version présente des diagrammes et images tirées de XCode 3.1
Si tu parle de la version originale (Edition 3) c'est effectivement le cas. Je l'ai sous les yeux et je confirme.
Par contre à ma connaissance là traduction française n'à connue qu'une seule édition et les copies d'ecrans sont celles des vielles versions de xcode/interface builder.