Defintion d'une classe
AlfAlf
Membre
Bonjour,
j'ai une question très générale sur la programmation objet (plus specifiquement en objective-C). Pour bien comprendre je vais l'illustrer avec un exemple:
Supposons que l'on définisse une classe Rectangle qui aurait trois variables:
_ longueur
_ largeur
_ aire
je veux pouvoir definir à la main les deux grandeurs "longueur" et "largeur" et que dans le même temps la grandeur "aire" se mette à jour toute seule (ie sans que j'ai à faire quelque chose)
Merci
j'ai une question très générale sur la programmation objet (plus specifiquement en objective-C). Pour bien comprendre je vais l'illustrer avec un exemple:
Supposons que l'on définisse une classe Rectangle qui aurait trois variables:
_ longueur
_ largeur
_ aire
je veux pouvoir definir à la main les deux grandeurs "longueur" et "largeur" et que dans le même temps la grandeur "aire" se mette à jour toute seule (ie sans que j'ai à faire quelque chose)
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Le delegate dont tu as parlé m'intéresse . En revanche, je suis perdu avec les notifications quand j'ai :
:-\\
Comment montrer que mon textField fait appel à textDidEndEditing ? J'ai connecté mon textField sur le File's Owner et j'ai sélectionné Delegate, mais après, je ne sais pas quoi faire...
Pour savoir quel champ a été modifié :
Et si tu as un outlet de MyDocument qui pointe vers le champ, tu peux comparer les deux :
Tu peux indiquer quand envoyer l'action.
Tu peux faire une action communes, style changePrefs:(id)sender qui contient un code genre [self updateUI] pour éviter d'avoir 36000 actions. Si tu as besoin de savoir quand un élémentsp récis est modifier tu peux dire if (sender == monTextField) alors fait ça sinon updateUI...
Cette action n'est valable que quand tu valides avec Return ou par tabulation, si tu veux surveiller le textfield de près, c'est à dire à chaque changement de caractère, il te faut utiliser une notification...
Sinon, IB te donne la possibilité de lier directement le textfield et le slider qui change la valeur du textfield, avec la méthode takeDoubleValueFrom: (par exemple, si ta valeur est un double). Dans IB, tu relies ton slider à ton textfield, et ensuite dans l'info panel du slider, il faut utiliser comme target/action takeFloatValueFrom:
Ainsi le slider est configuré pour envoyer un message au textfield quand la valeur du slider change. Puis ensuite la notification qui surveille le textfield se charge d'appeler ta méthode de calcul et de mise à jour...
Je parlais pour - (void)textDidEndEditing:(NSNotification *)aNotification....
Oui c'est tout à fait réalisable avec le KeyValueCoding et Observing des bindings.
Plus précisemment jettes un oeil sur: Registering Dependent Keys
et ça fonctionne parfaitement :brule:
Mais voila qui lie sacrément le Modèle à l'interface non?
Par ailleurs le titre de ce sujet et le premier et le dernier post d'AlfAlf me laissent penser qu'il cherchait une façon de concevoir une classe qui gère elle même l'intégrité de ses données et ce quelque soit l'origine (interface ou programmation) des modifications apportées aux variables d'instances.
De ce point de vue je ne vois que l'utilisation d'accesseurs Key Value Compliants permettant d'utiliser le KV Observing et, accessoirement la notion d'interdépendance de propriétés (le fameux chapitre sur le Registering Dependent Keys)
c'est exactement ça ClicCool, je vais regarder de ce pas le lien que tu m'indiques.