Je commence à lire quelques doc sur l'Obj-C afin de commencer
(peut-être) à découvrir Cocoa. (Jusqu'à présent, je n'ai toujours
programmé qu'avec InterfaceLib puis Carbon)
Je n'ai pas trouvé de forum fr dédié à l'Obj-C. Je poste donc ici.
Question :
Peut-on définir pour un objet des opérateurs +, *, etc. comme en C++ ?
Si oui, comment ?
SI non, la solution usuelle est-elle Obj-C++ ?
--
R: Parce que ça renverse bêtement l'ordre naturel de lecture!
Q: Mais pourquoi citer en fin d'article est-il si effroyable?
R: Citer en fin d'article
Q: Quelle est la chose la plus désagréable sur les groupes de news?
Question : Peut-on définir pour un objet des opérateurs +, *, etc. comme en C++ ?
non.
SI non, la solution usuelle est-elle Obj-C++ ?
Connais-tu d'autres usages de cette redéfinition d'opération autre que les opérations sur vecteurs ou matrice ?
Personnellement, je trouve que redéfinir ces opérateurs rendu un peu difficile la compréhension du code. La sémantique des opérateurs est du coup un petit peu trop "riche" à mon goût.
la solution usuelle est de définir des méthodes "addition", "multiplication", etc.
-- DINH V. Hoa,
"on dirait un gamin de 2 ans" -- coin-coin
Question :
Peut-on définir pour un objet des opérateurs +, *, etc. comme en C++ ?
non.
SI non, la solution usuelle est-elle Obj-C++ ?
Connais-tu d'autres usages de cette redéfinition d'opération autre que
les opérations sur vecteurs ou matrice ?
Personnellement, je trouve que redéfinir ces opérateurs rendu un peu
difficile la compréhension du code.
La sémantique des opérateurs est du coup un petit peu trop "riche" à mon
goût.
la solution usuelle est de définir des méthodes "addition",
"multiplication", etc.
Question : Peut-on définir pour un objet des opérateurs +, *, etc. comme en C++ ?
non.
SI non, la solution usuelle est-elle Obj-C++ ?
Connais-tu d'autres usages de cette redéfinition d'opération autre que les opérations sur vecteurs ou matrice ?
Personnellement, je trouve que redéfinir ces opérateurs rendu un peu difficile la compréhension du code. La sémantique des opérateurs est du coup un petit peu trop "riche" à mon goût.
la solution usuelle est de définir des méthodes "addition", "multiplication", etc.
-- DINH V. Hoa,
"on dirait un gamin de 2 ans" -- coin-coin
Gilles
Je n'ai pas trouvé de forum fr dédié à l'Obj-C. Je poste donc ici. si tu tapes ObjC dans Google....
Question : Peut-on définir pour un objet des opérateurs +, *, etc. comme en C++ ?
je ne crois pas...
Si oui, comment ? SI non, la solution usuelle est-elle Obj-C++ ?
je sais pas le faire mais on peu inclure du C++ dans du code ObjC
Pour info intialement ça parait imbuvable, et ça l'est, mais finalement on s'y fait
en tout ca Cocoa c'est presque le rève...
lists
Gilles wrote:
Pour info intialement ça parait imbuvable,
Je suis d'acccord. J'ai lu la doc du « CurrencyConverter ». Ils disent « it is amazingly easy ». Franchement, je trouve que c'est quand même assez compliqué pour un simple convertisseur de devises. C'est peut-être parce que je suis encore très habitué à Carbon.
Je trouve assez déroutant de définir des tas de trucs dans InterfaceBuilder que j'aurais eu tendance à vouloir déclarer dans le code.
et ça l'est, mais finalement on s'y fait
en tout ca Cocoa c'est presque le rève...
J'admets que je suis séduit par le design de Obj-C/Cocoa. Ce qui m'ennuie, c'est que je suis obligé de tout réapprendre... Avec Carbon, je savais (presque) tout faire. Mais bon, c'est amusant d'apprendre un nouveau truc.
-- R: Parce que ça renverse bêtement l'ordre naturel de lecture! Q: Mais pourquoi citer en fin d'article est-il si effroyable? R: Citer en fin d'article Q: Quelle est la chose la plus désagréable sur les groupes de news?
Gilles <gilles-.robert@wanadoo.fr> wrote:
Pour info intialement ça parait imbuvable,
Je suis d'acccord.
J'ai lu la doc du « CurrencyConverter ».
Ils disent « it is amazingly easy ».
Franchement, je trouve que c'est quand même assez compliqué pour un
simple convertisseur de devises.
C'est peut-être parce que je suis encore très habitué à Carbon.
Je trouve assez déroutant de définir des tas de trucs dans
InterfaceBuilder que j'aurais eu tendance à vouloir déclarer dans le
code.
et ça l'est, mais finalement
on s'y fait
en tout ca Cocoa c'est presque le rève...
J'admets que je suis séduit par le design de Obj-C/Cocoa.
Ce qui m'ennuie, c'est que je suis obligé de tout réapprendre...
Avec Carbon, je savais (presque) tout faire.
Mais bon, c'est amusant d'apprendre un nouveau truc.
--
R: Parce que ça renverse bêtement l'ordre naturel de lecture!
Q: Mais pourquoi citer en fin d'article est-il si effroyable?
R: Citer en fin d'article
Q: Quelle est la chose la plus désagréable sur les groupes de news?
Je suis d'acccord. J'ai lu la doc du « CurrencyConverter ». Ils disent « it is amazingly easy ». Franchement, je trouve que c'est quand même assez compliqué pour un simple convertisseur de devises. C'est peut-être parce que je suis encore très habitué à Carbon.
Je trouve assez déroutant de définir des tas de trucs dans InterfaceBuilder que j'aurais eu tendance à vouloir déclarer dans le code.
et ça l'est, mais finalement on s'y fait
en tout ca Cocoa c'est presque le rève...
J'admets que je suis séduit par le design de Obj-C/Cocoa. Ce qui m'ennuie, c'est que je suis obligé de tout réapprendre... Avec Carbon, je savais (presque) tout faire. Mais bon, c'est amusant d'apprendre un nouveau truc.
-- R: Parce que ça renverse bêtement l'ordre naturel de lecture! Q: Mais pourquoi citer en fin d'article est-il si effroyable? R: Citer en fin d'article Q: Quelle est la chose la plus désagréable sur les groupes de news?
lists
DINH Viêt Hoà wrote:
Connais-tu d'autres usages de cette redéfinition d'opération autre que les opérations sur vecteurs ou matrice ?
Justement, je voulais définir les nombres complexes. Mais j'avoue que j'aimais bien le côté algébriste du C++.
On peut, en outre, définir l'opérateur << pour les streams, ce qui est assez pratique (et joli) quand même.
Il y a aussi les opérateur =, ==, != et < dont je me servais assez souvent. Ils sont très utiles dès que l'on veut utiliser les algos de la libc++ sur des objets. Par exemple, je définis un objet quelconque Objet. Je peux faire un tableau avec std::vector<Objet>. Les algos de tri (par exemple) se basent sur la présence des opérateurs Objet::operator< et Objet::operator=. Ainsi les algos de la libc++ peuvent marcher avec *n'importe* quel objet de façon totalement transparente.
Si on est obligé de définir une méthode. L'un pourra l'appeler « compare » l'autre « cmpobject », un autre « compobj », etc. Comment alors faire un algo qui marche avec tout le monde ?
-- R: Parce que ça renverse bêtement l'ordre naturel de lecture! Q: Mais pourquoi citer en fin d'article est-il si effroyable? R: Citer en fin d'article Q: Quelle est la chose la plus désagréable sur les groupes de news?
DINH Viêt Hoà <dinh.viet.hoa@free.fr> wrote:
Connais-tu d'autres usages de cette redéfinition d'opération autre que
les opérations sur vecteurs ou matrice ?
Justement, je voulais définir les nombres complexes.
Mais j'avoue que j'aimais bien le côté algébriste du C++.
On peut, en outre, définir l'opérateur << pour les streams, ce qui est
assez pratique (et joli) quand même.
Il y a aussi les opérateur =, ==, != et < dont je me servais assez
souvent.
Ils sont très utiles dès que l'on veut utiliser les algos de la libc++
sur des objets.
Par exemple, je définis un objet quelconque Objet. Je peux faire un
tableau avec std::vector<Objet>.
Les algos de tri (par exemple) se basent sur la présence des opérateurs
Objet::operator< et Objet::operator=.
Ainsi les algos de la libc++ peuvent marcher avec *n'importe* quel objet
de façon totalement transparente.
Si on est obligé de définir une méthode. L'un pourra l'appeler
« compare » l'autre « cmpobject », un autre « compobj », etc. Comment
alors faire un algo qui marche avec tout le monde ?
--
R: Parce que ça renverse bêtement l'ordre naturel de lecture!
Q: Mais pourquoi citer en fin d'article est-il si effroyable?
R: Citer en fin d'article
Q: Quelle est la chose la plus désagréable sur les groupes de news?
Connais-tu d'autres usages de cette redéfinition d'opération autre que les opérations sur vecteurs ou matrice ?
Justement, je voulais définir les nombres complexes. Mais j'avoue que j'aimais bien le côté algébriste du C++.
On peut, en outre, définir l'opérateur << pour les streams, ce qui est assez pratique (et joli) quand même.
Il y a aussi les opérateur =, ==, != et < dont je me servais assez souvent. Ils sont très utiles dès que l'on veut utiliser les algos de la libc++ sur des objets. Par exemple, je définis un objet quelconque Objet. Je peux faire un tableau avec std::vector<Objet>. Les algos de tri (par exemple) se basent sur la présence des opérateurs Objet::operator< et Objet::operator=. Ainsi les algos de la libc++ peuvent marcher avec *n'importe* quel objet de façon totalement transparente.
Si on est obligé de définir une méthode. L'un pourra l'appeler « compare » l'autre « cmpobject », un autre « compobj », etc. Comment alors faire un algo qui marche avec tout le monde ?
-- R: Parce que ça renverse bêtement l'ordre naturel de lecture! Q: Mais pourquoi citer en fin d'article est-il si effroyable? R: Citer en fin d'article Q: Quelle est la chose la plus désagréable sur les groupes de news?
DINH Viêt Hoà
Justement, je voulais définir les nombres complexes. Mais j'avoue que j'aimais bien le côté algébriste du C++.
On peut, en outre, définir l'opérateur << pour les streams, ce qui est assez pratique (et joli) quand même.
en objective C, tu le fais en redéfinissant l'appel "description".
Il y a aussi les opérateur =, ==, != et < dont je me servais assez souvent. Ils sont très utiles dès que l'on veut utiliser les algos de la libc++ sur des objets. Par exemple, je définis un objet quelconque Objet. Je peux faire un tableau avec std::vector<Objet>. Les algos de tri (par exemple) se basent sur la présence des opérateurs Objet::operator< et Objet::operator=. Ainsi les algos de la libc++ peuvent marcher avec *n'importe* quel objet de façon totalement transparente.
(la libc++ est-elle définie par un standard ? ou parles-tu de la STL ?)
même chose en C, en bibliothèque standard C, il existe un appel permettant de trier un tableau contenant des objets dont on peut choisir le type. ( qsort() )
Si on est obligé de définir une méthode. L'un pourra l'appeler « compare » l'autre « cmpobject », un autre « compobj », etc. Comment alors faire un algo qui marche avec tout le monde ?
de même que le tri de "la libc++" oblige le programmeur à redéfinir les opérateurs < > <= >= == !=, une fonction de tri peut obliger le programmeur à définir une méthode de comparaison de deux objets.
C'est d'ailleurs le cas de NSMutableArray dans Foundation avec les différents usages possibles :
Justement, je voulais définir les nombres complexes.
Mais j'avoue que j'aimais bien le côté algébriste du C++.
On peut, en outre, définir l'opérateur << pour les streams, ce qui est
assez pratique (et joli) quand même.
en objective C, tu le fais en redéfinissant l'appel "description".
Il y a aussi les opérateur =, ==, != et < dont je me servais assez
souvent.
Ils sont très utiles dès que l'on veut utiliser les algos de la libc++
sur des objets.
Par exemple, je définis un objet quelconque Objet. Je peux faire un
tableau avec std::vector<Objet>.
Les algos de tri (par exemple) se basent sur la présence des opérateurs
Objet::operator< et Objet::operator=.
Ainsi les algos de la libc++ peuvent marcher avec *n'importe* quel objet
de façon totalement transparente.
(la libc++ est-elle définie par un standard ? ou parles-tu de la STL ?)
même chose en C, en bibliothèque standard C, il existe un appel
permettant de trier un tableau contenant des objets dont on peut choisir
le type. ( qsort() )
Si on est obligé de définir une méthode. L'un pourra l'appeler
« compare » l'autre « cmpobject », un autre « compobj », etc. Comment
alors faire un algo qui marche avec tout le monde ?
de même que le tri de "la libc++" oblige le programmeur à
redéfinir les opérateurs < > <= >= == !=, une fonction de tri peut
obliger le programmeur à définir une méthode de comparaison de deux
objets.
C'est d'ailleurs le cas de NSMutableArray dans Foundation avec les
différents usages possibles :
Justement, je voulais définir les nombres complexes. Mais j'avoue que j'aimais bien le côté algébriste du C++.
On peut, en outre, définir l'opérateur << pour les streams, ce qui est assez pratique (et joli) quand même.
en objective C, tu le fais en redéfinissant l'appel "description".
Il y a aussi les opérateur =, ==, != et < dont je me servais assez souvent. Ils sont très utiles dès que l'on veut utiliser les algos de la libc++ sur des objets. Par exemple, je définis un objet quelconque Objet. Je peux faire un tableau avec std::vector<Objet>. Les algos de tri (par exemple) se basent sur la présence des opérateurs Objet::operator< et Objet::operator=. Ainsi les algos de la libc++ peuvent marcher avec *n'importe* quel objet de façon totalement transparente.
(la libc++ est-elle définie par un standard ? ou parles-tu de la STL ?)
même chose en C, en bibliothèque standard C, il existe un appel permettant de trier un tableau contenant des objets dont on peut choisir le type. ( qsort() )
Si on est obligé de définir une méthode. L'un pourra l'appeler « compare » l'autre « cmpobject », un autre « compobj », etc. Comment alors faire un algo qui marche avec tout le monde ?
de même que le tri de "la libc++" oblige le programmeur à redéfinir les opérateurs < > <= >= == !=, une fonction de tri peut obliger le programmeur à définir une méthode de comparaison de deux objets.
C'est d'ailleurs le cas de NSMutableArray dans Foundation avec les différents usages possibles :
Ce qui m'ennuie, c'est que je suis obligé de tout réapprendre... Avec Carbon, je savais (presque) tout faire. Mais bon, c'est amusant d'apprendre un nouveau truc.
moui, enfin, en mettant de côté l'aspect langage, tu retrouves la même chose que ce que tu as d'habitude, non ?
-- DINH V. Hoa,
"on dirait un gamin de 2 ans" -- coin-coin
Ce qui m'ennuie, c'est que je suis obligé de tout réapprendre...
Avec Carbon, je savais (presque) tout faire.
Mais bon, c'est amusant d'apprendre un nouveau truc.
moui, enfin, en mettant de côté l'aspect langage, tu retrouves la même
chose que ce que tu as d'habitude, non ?
Ce qui m'ennuie, c'est que je suis obligé de tout réapprendre... Avec Carbon, je savais (presque) tout faire. Mais bon, c'est amusant d'apprendre un nouveau truc.
moui, enfin, en mettant de côté l'aspect langage, tu retrouves la même chose que ce que tu as d'habitude, non ?
-- DINH V. Hoa,
"on dirait un gamin de 2 ans" -- coin-coin
Éric Lévénez
Le 29/05/04 18:36, dans <1gek8l5.v3q09w10jq22oN%, « Julien Salort » a écrit :
Justement, je voulais définir les nombres complexes.
Rappel : les nombres complexes sont intégrés dans la norme C depuis déjà quelques années et par le fait ils sont intégrés dans Objective-C :
return 0; } HAL3:~/tmp eric$ cc test.m -o test -lmx HAL3:~/tmp eric$ ./test z = 1.000000 + I * 1.000000 ph = PI / 4.000000
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
lists
DINH Viêt Hoà wrote:
moui, enfin, en mettant de côté l'aspect langage, tu retrouves la même chose que ce que tu as d'habitude, non ?
Ce dont j'ai l'habitude, ce sont les API, les managers, etc. Bref, tout ce qui fait Carbon.
Bien sûr, on retrouve des points communs.
Ce que je veux dire, c'est qu'avec Carbon, je n'ai pas besoin d'aller chercher une documentation pour ouvrir un fichier, afficher une image, ouvrir une fenêtre, désactiver un menu, imprimer un fichier, etc. alors qu'avec Cocoa qui est nouveau pour moi, la moindre petite chose demande de consulter la doc.
-- R: Parce que ça renverse bêtement l'ordre naturel de lecture! Q: Mais pourquoi citer en fin d'article est-il si effroyable? R: Citer en fin d'article Q: Quelle est la chose la plus désagréable sur les groupes de news?
DINH Viêt Hoà <dinh.viet.hoa@free.fr> wrote:
moui, enfin, en mettant de côté l'aspect langage, tu retrouves la même
chose que ce que tu as d'habitude, non ?
Ce dont j'ai l'habitude, ce sont les API, les managers, etc. Bref, tout
ce qui fait Carbon.
Bien sûr, on retrouve des points communs.
Ce que je veux dire, c'est qu'avec Carbon, je n'ai pas besoin d'aller
chercher une documentation pour ouvrir un fichier, afficher une image,
ouvrir une fenêtre, désactiver un menu, imprimer un fichier, etc. alors
qu'avec Cocoa qui est nouveau pour moi, la moindre petite chose demande
de consulter la doc.
--
R: Parce que ça renverse bêtement l'ordre naturel de lecture!
Q: Mais pourquoi citer en fin d'article est-il si effroyable?
R: Citer en fin d'article
Q: Quelle est la chose la plus désagréable sur les groupes de news?
moui, enfin, en mettant de côté l'aspect langage, tu retrouves la même chose que ce que tu as d'habitude, non ?
Ce dont j'ai l'habitude, ce sont les API, les managers, etc. Bref, tout ce qui fait Carbon.
Bien sûr, on retrouve des points communs.
Ce que je veux dire, c'est qu'avec Carbon, je n'ai pas besoin d'aller chercher une documentation pour ouvrir un fichier, afficher une image, ouvrir une fenêtre, désactiver un menu, imprimer un fichier, etc. alors qu'avec Cocoa qui est nouveau pour moi, la moindre petite chose demande de consulter la doc.
-- R: Parce que ça renverse bêtement l'ordre naturel de lecture! Q: Mais pourquoi citer en fin d'article est-il si effroyable? R: Citer en fin d'article Q: Quelle est la chose la plus désagréable sur les groupes de news?
lists
Éric Lévénez wrote:
Rappel : les nombres complexes sont intégrés dans la norme C depuis déjà quelques années et par le fait ils sont intégrés dans Objective-C :
Je ne savais pas. Merci pour l'info. Ça m'évitera de devoir réinventer la roue. (même si ce n'est pas une roue très compliquée)
-- R: Parce que ça renverse bêtement l'ordre naturel de lecture! Q: Mais pourquoi citer en fin d'article est-il si effroyable? R: Citer en fin d'article Q: Quelle est la chose la plus désagréable sur les groupes de news?
Éric Lévénez <news@levenez.com> wrote:
Rappel : les nombres complexes sont intégrés dans la norme C depuis déjà
quelques années et par le fait ils sont intégrés dans Objective-C :
Je ne savais pas.
Merci pour l'info.
Ça m'évitera de devoir réinventer la roue.
(même si ce n'est pas une roue très compliquée)
--
R: Parce que ça renverse bêtement l'ordre naturel de lecture!
Q: Mais pourquoi citer en fin d'article est-il si effroyable?
R: Citer en fin d'article
Q: Quelle est la chose la plus désagréable sur les groupes de news?
Rappel : les nombres complexes sont intégrés dans la norme C depuis déjà quelques années et par le fait ils sont intégrés dans Objective-C :
Je ne savais pas. Merci pour l'info. Ça m'évitera de devoir réinventer la roue. (même si ce n'est pas une roue très compliquée)
-- R: Parce que ça renverse bêtement l'ordre naturel de lecture! Q: Mais pourquoi citer en fin d'article est-il si effroyable? R: Citer en fin d'article Q: Quelle est la chose la plus désagréable sur les groupes de news?