Discussion:
objets et attributs
(trop ancien pour répondre)
Mihamina Rakotomandimby
2007-10-30 18:40:57 UTC
Permalink
Bonjour,
En OCaml, je n'ai pas trouvé comment on fait pour acceder à un attribut
d'une instance.
D'apres mes lectures, c'est seulement via une méthode qu'on peut/devrait
le faire.
C'est bien ça, ou j'ai mal lu?

De plus, si on a une méthode assez compliquée à mettre dans une
déclaration de classe, la bonne pratique est peut-etre de définir la
méthode à l'extérieur de la classe, non?
Parceque la syntaxe est un peu compliquée. Surtout si c'est une méthode
qui doit modifier plusieurs attributs en meme temps.

Sinon, si vous avez des exemples de declaration de classes avec des
méthodes farfelues, je suis iinteressé, ne serait-ce que pour voir
comment on s'en sort quand on a des choses farfelues à faire.

Merci.
Mihamina Rakotomandimby
2007-10-31 12:58:05 UTC
Permalink
Post by Mihamina Rakotomandimby
Bonjour,
En OCaml, je n'ai pas trouvé comment on fait pour acceder à un attribut
d'une instance.
D'apres mes lectures, c'est seulement via une méthode qu'on peut/devrait
le faire.
C'est bien ça, ou j'ai mal lu?
De plus, si on a une méthode assez compliquée à mettre dans une
déclaration de classe, la bonne pratique est peut-etre de définir la
méthode à l'extérieur de la classe, non?
Parceque la syntaxe est un peu compliquée. Surtout si c'est une méthode
qui doit modifier plusieurs attributs en meme temps.
Je donne un exemple: Soit la table SQL suivante

+---------+----------+-----------+----------------------+
| User_Id | Nom | Prenom | Mail |
+---------+----------+-----------+----------------------+
| 49 | Dsdffd | Bruno | |
| 37 | | Flore | ***@l tf u.net |
| 86 | lcs,l | Jean Yves | |
| 88 | Ledsfsd | Roselyne | |
| 87 | dddddddd | Thierry | |
| 89 | | Delphine | delphine@ re.net |
| 90 | | | |
| 95 | | Fredecric | |
| 96 | | | |
| 29 | Bidddddd | Marc | |
| 97 | | Frank | |
| 98 | | Anna | |
| 99 | | Nadege | |
| 101 | Padddd | Bruno | |
| 50 | | Rodolphe | |
| 103 | Cadddd | Amandine | a. @voila.fr |
+---------+----------+-----------+----------------------+


Je veux faire un objet de chaque enregistrement.
Ce qui m'embete: si je fetche une fois j'ai le premier enregistrement.
Le prochain fetch me donnera le second. C'est normal. Avec _un_ fetch,
donc, il me faut pouvoir affecter _les_ valeurs _aux_ attributs.

Ici, les atributs en questions seront User_Id, Nom, Prenom, Mail.

Le fetch renvoie un Array. Evidemment, je peux toujours trouver une
solution de bricolage tres crade. Mais si vous aviez à faire ça, comment
serait la methode propre?

Merci.
Samuel Colin
2007-11-01 16:14:10 UTC
Permalink
Post by Mihamina Rakotomandimby
+---------+----------+-----------+----------------------+
| User_Id | Nom | Prenom | Mail |
+---------+----------+-----------+----------------------+
+---------+----------+-----------+----------------------+
Je veux faire un objet de chaque enregistrement.
Ce qui m'embete: si je fetche une fois j'ai le premier enregistrement.
Le prochain fetch me donnera le second. C'est normal. Avec _un_ fetch,
donc, il me faut pouvoir affecter _les_ valeurs _aux_ attributs.
Ici, les atributs en questions seront User_Id, Nom, Prenom, Mail.
Le fetch renvoie un Array. Evidemment, je peux toujours trouver une
solution de bricolage tres crade. Mais si vous aviez à faire ça, comment
serait la methode propre?
Si j'ai bien compris, à chaque fetch tu créeras un objet dont les
attributs seront les champs de la table.
Ben, je propose de paramétrer la classe par tous les trucs que tu veux
lui passer. Si c'est un tableau de taille 4 (User_Id, Nom,etc) qui est
renvoyé, tu peux toujours paramétrer la classe par le tableau en
question et mettre les attributs aux valeurs qu'il y a dans le tableau.
Comme là, quoi:
http://caml.inria.fr/pub/docs/manual-ocaml/manual005.html#ss:initializers
Ainsi chaque fetch sera suivi d'un «new» avec comme paramètre le tableau
renvoyé. Mais je ne sais pas si c'est ce que tu cherches.
Mihamina Rakotomandimby
2008-01-31 10:26:16 UTC
Permalink
Post by Samuel Colin
http://caml.inria.fr/pub/docs/manual-ocaml/manual005.html#ss:initializers
Ainsi chaque fetch sera suivi d'un «new» avec comme paramètre le tableau
renvoyé. Mais je ne sais pas si c'est ce que tu cherches.
C'est ce que je recherche.
Et ça, ça me va aussi:

"Let-bindings within class definitions are evaluated before the object
is constructed.

Merci Samuel.

Loading...