"Jonathan Mcdougall" wrote in
news:9YDib.36894$:
C++ > table["toto"] = 4;
Java > table.putValue("toto", new Integer(4));
Il me semblait qu'il fallait tester l'existence d'une valeur pour cet
index avant. Je m'étais peut-etre trompé.
et pour la retirer
int valeur = ( (Integer) table.getValue("toto") ).intValue();
"récupérer" tu veux dire !?
"Jonathan Mcdougall" <jonathanmcdougall@DELyahoo.ca> wrote in
news:9YDib.36894$kY1.787403@weber.videotron.net:
C++ > table["toto"] = 4;
Java > table.putValue("toto", new Integer(4));
Il me semblait qu'il fallait tester l'existence d'une valeur pour cet
index avant. Je m'étais peut-etre trompé.
et pour la retirer
int valeur = ( (Integer) table.getValue("toto") ).intValue();
"récupérer" tu veux dire !?
"Jonathan Mcdougall" wrote in
news:9YDib.36894$:
C++ > table["toto"] = 4;
Java > table.putValue("toto", new Integer(4));
Il me semblait qu'il fallait tester l'existence d'une valeur pour cet
index avant. Je m'étais peut-etre trompé.
et pour la retirer
int valeur = ( (Integer) table.getValue("toto") ).intValue();
"récupérer" tu veux dire !?
jerome moliere wrote in news:bmeka1$2r07$1
@biggoron.nerim.net:Je ne qualifirai pas Java de plus haut niveau. Il suffit de voir
les pirouettes qu'il nous oblige à accomplir si on veut exprimer
des trucs comme : [...]
ou enforcer des pre- et post-conditions au niveau des interfaces.
ah bon qu'il y a t'il en C++ pour faire cela ?
Héritage multiple de classes abstraites dont l'interface publique se
résume à des fonctions non virtuelles réalisant le pattern "template
method".
tu penses pas a assert.h quand meme...
Non en effet.
jerome moliere <jmoliere@nerim.net> wrote in news:bmeka1$2r07$1
@biggoron.nerim.net:
Je ne qualifirai pas Java de plus haut niveau. Il suffit de voir
les pirouettes qu'il nous oblige à accomplir si on veut exprimer
des trucs comme : [...]
ou enforcer des pre- et post-conditions au niveau des interfaces.
ah bon qu'il y a t'il en C++ pour faire cela ?
Héritage multiple de classes abstraites dont l'interface publique se
résume à des fonctions non virtuelles réalisant le pattern "template
method".
tu penses pas a assert.h quand meme...
Non en effet.
jerome moliere wrote in news:bmeka1$2r07$1
@biggoron.nerim.net:Je ne qualifirai pas Java de plus haut niveau. Il suffit de voir
les pirouettes qu'il nous oblige à accomplir si on veut exprimer
des trucs comme : [...]
ou enforcer des pre- et post-conditions au niveau des interfaces.
ah bon qu'il y a t'il en C++ pour faire cela ?
Héritage multiple de classes abstraites dont l'interface publique se
résume à des fonctions non virtuelles réalisant le pattern "template
method".
tu penses pas a assert.h quand meme...
Non en effet.
On Tue, 14 Oct 2003 00:34:42 +0200, Luc Hermitte
wrote:C++ > table["toto"] = 4;
Java > table.putValue("toto", new Integer(4));
Il me semblait qu'il fallait tester l'existence d'une valeur pour cet
index avant.
En C++, non -- elle est créée si elle n'existe pas.
En Java, aucune idée.
On Tue, 14 Oct 2003 00:34:42 +0200, Luc Hermitte
<hermitte@free.fr.invalid> wrote:
C++ > table["toto"] = 4;
Java > table.putValue("toto", new Integer(4));
Il me semblait qu'il fallait tester l'existence d'une valeur pour cet
index avant.
En C++, non -- elle est créée si elle n'existe pas.
En Java, aucune idée.
On Tue, 14 Oct 2003 00:34:42 +0200, Luc Hermitte
wrote:C++ > table["toto"] = 4;
Java > table.putValue("toto", new Integer(4));
Il me semblait qu'il fallait tester l'existence d'une valeur pour cet
index avant.
En C++, non -- elle est créée si elle n'existe pas.
En Java, aucune idée.
Héritage multiple de classes abstraites dont l'interface publique se
résume à des fonctions non virtuelles réalisant le pattern "template
method".
J'aimerais bien qu'on s'arrête de parler du modèle template quand on
parle de la programmation par contrat. Il y a des ressemblances
supérficielles, mais le but en est bien différent. Dans le modèle
template, la classe de base a un comportement important, qui est
customisé par des fonctions virtuelles définies dans la classe dérivée
; la dérivation sert à la customisation. Dans la programmation par
contrat, la classe de base n'a pas de comportement du tout, et toute
l'implémentation se trouve dans les fonctions virtuelles définies dans
la classe dérivée.
Héritage multiple de classes abstraites dont l'interface publique se
résume à des fonctions non virtuelles réalisant le pattern "template
method".
J'aimerais bien qu'on s'arrête de parler du modèle template quand on
parle de la programmation par contrat. Il y a des ressemblances
supérficielles, mais le but en est bien différent. Dans le modèle
template, la classe de base a un comportement important, qui est
customisé par des fonctions virtuelles définies dans la classe dérivée
; la dérivation sert à la customisation. Dans la programmation par
contrat, la classe de base n'a pas de comportement du tout, et toute
l'implémentation se trouve dans les fonctions virtuelles définies dans
la classe dérivée.
Héritage multiple de classes abstraites dont l'interface publique se
résume à des fonctions non virtuelles réalisant le pattern "template
method".
J'aimerais bien qu'on s'arrête de parler du modèle template quand on
parle de la programmation par contrat. Il y a des ressemblances
supérficielles, mais le but en est bien différent. Dans le modèle
template, la classe de base a un comportement important, qui est
customisé par des fonctions virtuelles définies dans la classe dérivée
; la dérivation sert à la customisation. Dans la programmation par
contrat, la classe de base n'a pas de comportement du tout, et toute
l'implémentation se trouve dans les fonctions virtuelles définies dans
la classe dérivée.
wrote in
news::Héritage multiple de classes abstraites dont l'interface publique
se résume à des fonctions non virtuelles réalisant le pattern
"template method".
J'aimerais bien qu'on s'arrête de parler du modèle template quand on
parle de la programmation par contrat. Il y a des ressemblances
supérficielles, mais le but en est bien différent. Dans le modèle
template, la classe de base a un comportement important, qui est
customisé par des fonctions virtuelles définies dans la classe
dérivée ; la dérivation sert à la customisation. Dans la
programmation par contrat, la classe de base n'a pas de comportement
du tout, et toute l'implémentation se trouve dans les fonctions
virtuelles définies dans la classe dérivée.
Moui...
Je ne sais pas si la distinction est si importante là.
Car
l'algorithme en termes "d'opérations abstraites" reste : 1- vérifier
les pré-conditions et invariants 2- réaliser les "traitements
demandés" (j'ai pas trouvé de meilleur terme) 3- vérifier les
post-conditions et invariants
kanze@gabi-soft.fr wrote in
news:d6652001.0310140018.2b7b6d2a@posting.google.com:
Héritage multiple de classes abstraites dont l'interface publique
se résume à des fonctions non virtuelles réalisant le pattern
"template method".
J'aimerais bien qu'on s'arrête de parler du modèle template quand on
parle de la programmation par contrat. Il y a des ressemblances
supérficielles, mais le but en est bien différent. Dans le modèle
template, la classe de base a un comportement important, qui est
customisé par des fonctions virtuelles définies dans la classe
dérivée ; la dérivation sert à la customisation. Dans la
programmation par contrat, la classe de base n'a pas de comportement
du tout, et toute l'implémentation se trouve dans les fonctions
virtuelles définies dans la classe dérivée.
Moui...
Je ne sais pas si la distinction est si importante là.
Car
l'algorithme en termes "d'opérations abstraites" reste : 1- vérifier
les pré-conditions et invariants 2- réaliser les "traitements
demandés" (j'ai pas trouvé de meilleur terme) 3- vérifier les
post-conditions et invariants
wrote in
news::Héritage multiple de classes abstraites dont l'interface publique
se résume à des fonctions non virtuelles réalisant le pattern
"template method".
J'aimerais bien qu'on s'arrête de parler du modèle template quand on
parle de la programmation par contrat. Il y a des ressemblances
supérficielles, mais le but en est bien différent. Dans le modèle
template, la classe de base a un comportement important, qui est
customisé par des fonctions virtuelles définies dans la classe
dérivée ; la dérivation sert à la customisation. Dans la
programmation par contrat, la classe de base n'a pas de comportement
du tout, et toute l'implémentation se trouve dans les fonctions
virtuelles définies dans la classe dérivée.
Moui...
Je ne sais pas si la distinction est si importante là.
Car
l'algorithme en termes "d'opérations abstraites" reste : 1- vérifier
les pré-conditions et invariants 2- réaliser les "traitements
demandés" (j'ai pas trouvé de meilleur terme) 3- vérifier les
post-conditions et invariants
Ceci dit, je crois que la syntaxe Java est en fait mieux ici. Ou au
moins, pourait l'être : le problème, c'est dans des expressions du
genre :
int i = table[ "toto" ] ;
La sémantique ici n'est pas claire ; les map STL (et les hash_map
proposés) font une insertion automatique avec une valeur par
défaut. Du coup, tu ne peux pas le faire sur une table const.
Dans ce cas-ci, en ce qui concerne C++, il n'y a pas de solution
« correcte ». Alors, l'utilisation des fonctions (avec des noms)
permettraient à implémenter des sémantiques diverses, et
permettrait à l'utilisateur de choisir celle qui lui convient.
En Java, c'est moins un problème ; table.get( "toto" ) renvoie un
pointeur, qui est null si l'objet n'y était pas.
Ceci dit, je crois que la syntaxe Java est en fait mieux ici. Ou au
moins, pourait l'être : le problème, c'est dans des expressions du
genre :
int i = table[ "toto" ] ;
La sémantique ici n'est pas claire ; les map STL (et les hash_map
proposés) font une insertion automatique avec une valeur par
défaut. Du coup, tu ne peux pas le faire sur une table const.
Dans ce cas-ci, en ce qui concerne C++, il n'y a pas de solution
« correcte ». Alors, l'utilisation des fonctions (avec des noms)
permettraient à implémenter des sémantiques diverses, et
permettrait à l'utilisateur de choisir celle qui lui convient.
En Java, c'est moins un problème ; table.get( "toto" ) renvoie un
pointeur, qui est null si l'objet n'y était pas.
Ceci dit, je crois que la syntaxe Java est en fait mieux ici. Ou au
moins, pourait l'être : le problème, c'est dans des expressions du
genre :
int i = table[ "toto" ] ;
La sémantique ici n'est pas claire ; les map STL (et les hash_map
proposés) font une insertion automatique avec une valeur par
défaut. Du coup, tu ne peux pas le faire sur une table const.
Dans ce cas-ci, en ce qui concerne C++, il n'y a pas de solution
« correcte ». Alors, l'utilisation des fonctions (avec des noms)
permettraient à implémenter des sémantiques diverses, et
permettrait à l'utilisateur de choisir celle qui lui convient.
En Java, c'est moins un problème ; table.get( "toto" ) renvoie un
pointeur, qui est null si l'objet n'y était pas.
Dans news:,Ceci dit, je crois que la syntaxe Java est en fait mieux ici. Ou au
moins, pourait l'être : le problème, c'est dans des expressions du
genre :
int i = table[ "toto" ] ;
La sémantique ici n'est pas claire ; les map STL (et les hash_map
proposés) font une insertion automatique avec une valeur par
défaut. Du coup, tu ne peux pas le faire sur une table const.
En Java, tu n'as pas la syntaxe avec [].
En C++, tu peux faire pareil et utiliser les fonctions membres pour
ajouter ou chercher une valeur, si tu n'aimes pas que [] l'ajoute
automatiquement.
Je ne vois pas en quoi c'est mieux en Java, puisque tout est possible
aussi en C++ et qu'on a simplement une opération (souvent utile) en
plus.
Dans ce cas-ci, en ce qui concerne C++, il n'y a pas de solution
« correcte ». Alors, l'utilisation des fonctions (avec des noms)
permettraient à implémenter des sémantiques diverses, et
permettrait à l'utilisateur de choisir celle qui lui convient.
Mais elles sont là ces fonctions ! (je crois que je ne comprends
probablement pas bien de toi tu parles...)
En Java, c'est moins un problème ; table.get( "toto" ) renvoie un
pointeur, qui est null si l'objet n'y était pas.
Et m.find("...") renvoie un end(). C'est quoi la différence ?
Dans news:d6652001.0310140030.12390d50@posting.google.com,
Ceci dit, je crois que la syntaxe Java est en fait mieux ici. Ou au
moins, pourait l'être : le problème, c'est dans des expressions du
genre :
int i = table[ "toto" ] ;
La sémantique ici n'est pas claire ; les map STL (et les hash_map
proposés) font une insertion automatique avec une valeur par
défaut. Du coup, tu ne peux pas le faire sur une table const.
En Java, tu n'as pas la syntaxe avec [].
En C++, tu peux faire pareil et utiliser les fonctions membres pour
ajouter ou chercher une valeur, si tu n'aimes pas que [] l'ajoute
automatiquement.
Je ne vois pas en quoi c'est mieux en Java, puisque tout est possible
aussi en C++ et qu'on a simplement une opération (souvent utile) en
plus.
Dans ce cas-ci, en ce qui concerne C++, il n'y a pas de solution
« correcte ». Alors, l'utilisation des fonctions (avec des noms)
permettraient à implémenter des sémantiques diverses, et
permettrait à l'utilisateur de choisir celle qui lui convient.
Mais elles sont là ces fonctions ! (je crois que je ne comprends
probablement pas bien de toi tu parles...)
En Java, c'est moins un problème ; table.get( "toto" ) renvoie un
pointeur, qui est null si l'objet n'y était pas.
Et m.find("...") renvoie un end(). C'est quoi la différence ?
Dans news:,Ceci dit, je crois que la syntaxe Java est en fait mieux ici. Ou au
moins, pourait l'être : le problème, c'est dans des expressions du
genre :
int i = table[ "toto" ] ;
La sémantique ici n'est pas claire ; les map STL (et les hash_map
proposés) font une insertion automatique avec une valeur par
défaut. Du coup, tu ne peux pas le faire sur une table const.
En Java, tu n'as pas la syntaxe avec [].
En C++, tu peux faire pareil et utiliser les fonctions membres pour
ajouter ou chercher une valeur, si tu n'aimes pas que [] l'ajoute
automatiquement.
Je ne vois pas en quoi c'est mieux en Java, puisque tout est possible
aussi en C++ et qu'on a simplement une opération (souvent utile) en
plus.
Dans ce cas-ci, en ce qui concerne C++, il n'y a pas de solution
« correcte ». Alors, l'utilisation des fonctions (avec des noms)
permettraient à implémenter des sémantiques diverses, et
permettrait à l'utilisateur de choisir celle qui lui convient.
Mais elles sont là ces fonctions ! (je crois que je ne comprends
probablement pas bien de toi tu parles...)
En Java, c'est moins un problème ; table.get( "toto" ) renvoie un
pointeur, qui est null si l'objet n'y était pas.
Et m.find("...") renvoie un end(). C'est quoi la différence ?
En Java, tu n'as pas la syntaxe avec [].
Ce que je considère, dans ce cas-ci, un avantage:-).
En Java, tu n'as pas la syntaxe avec [].
Ce que je considère, dans ce cas-ci, un avantage:-).
En Java, tu n'as pas la syntaxe avec [].
Ce que je considère, dans ce cas-ci, un avantage:-).
"Michel Michaud" wrote in message
news:<Ziejb.7429$...Dans news:,Ceci dit, je crois que la syntaxe Java est en fait mieux ici. Ou
au moins, pourait l'être : le problème, c'est dans des
expressions du genre :
int i = table[ "toto" ] ;
La sémantique ici n'est pas claire ; les map STL (et les hash_map
proposés) font une insertion automatique avec une valeur par
défaut. Du coup, tu ne peux pas le faire sur une table const.
En Java, tu n'as pas la syntaxe avec [].
Ce que je considère, dans ce cas-ci, un avantage:-).
"Michel Michaud" <mm@gdzid.com> wrote in message
news:<Ziejb.7429$PM2.789600@news20.bellglobal.com>...
Dans news:d6652001.0310140030.12390d50@posting.google.com,
Ceci dit, je crois que la syntaxe Java est en fait mieux ici. Ou
au moins, pourait l'être : le problème, c'est dans des
expressions du genre :
int i = table[ "toto" ] ;
La sémantique ici n'est pas claire ; les map STL (et les hash_map
proposés) font une insertion automatique avec une valeur par
défaut. Du coup, tu ne peux pas le faire sur une table const.
En Java, tu n'as pas la syntaxe avec [].
Ce que je considère, dans ce cas-ci, un avantage:-).
"Michel Michaud" wrote in message
news:<Ziejb.7429$...Dans news:,Ceci dit, je crois que la syntaxe Java est en fait mieux ici. Ou
au moins, pourait l'être : le problème, c'est dans des
expressions du genre :
int i = table[ "toto" ] ;
La sémantique ici n'est pas claire ; les map STL (et les hash_map
proposés) font une insertion automatique avec une valeur par
défaut. Du coup, tu ne peux pas le faire sur une table const.
En Java, tu n'as pas la syntaxe avec [].
Ce que je considère, dans ce cas-ci, un avantage:-).
Ceci dit, je crois que la syntaxe Java est en fait mieux ici. Ou
au moins, pourait l'être : le problème, c'est dans des
expressions du genre :
int i = table[ "toto" ] ;
La sémantique ici n'est pas claire ; les map STL (et les hash_map
proposés) font une insertion automatique avec une valeur par
défaut. Du coup, tu ne peux pas le faire sur une table const.
En Java, tu n'as pas la syntaxe avec [].
Ce que je considère, dans ce cas-ci, un avantage:-).
Ah bon. Alors là évidemment... Mais je trouve la sémantique de cette
syntaxe est, au contraire, tout à fait conforme à l'idée que je me
fais d'une table associative utile.
Ceci dit, je crois que la syntaxe Java est en fait mieux ici. Ou
au moins, pourait l'être : le problème, c'est dans des
expressions du genre :
int i = table[ "toto" ] ;
La sémantique ici n'est pas claire ; les map STL (et les hash_map
proposés) font une insertion automatique avec une valeur par
défaut. Du coup, tu ne peux pas le faire sur une table const.
En Java, tu n'as pas la syntaxe avec [].
Ce que je considère, dans ce cas-ci, un avantage:-).
Ah bon. Alors là évidemment... Mais je trouve la sémantique de cette
syntaxe est, au contraire, tout à fait conforme à l'idée que je me
fais d'une table associative utile.
Ceci dit, je crois que la syntaxe Java est en fait mieux ici. Ou
au moins, pourait l'être : le problème, c'est dans des
expressions du genre :
int i = table[ "toto" ] ;
La sémantique ici n'est pas claire ; les map STL (et les hash_map
proposés) font une insertion automatique avec une valeur par
défaut. Du coup, tu ne peux pas le faire sur une table const.
En Java, tu n'as pas la syntaxe avec [].
Ce que je considère, dans ce cas-ci, un avantage:-).
Ah bon. Alors là évidemment... Mais je trouve la sémantique de cette
syntaxe est, au contraire, tout à fait conforme à l'idée que je me
fais d'une table associative utile.