Discussion:
Sens de conversion d'objets ....
(trop ancien pour répondre)
Jérémie
2006-12-21 16:02:43 UTC
Permalink
Bonjour à tous,

Mon post sera peut-être plus pertinent sur un espace Java, je m''excuse si
c'est le cas.

Ma question est :
Lors de la conversion d'un objet en un autre objet (cast), celle -ci ne
peut-elle se faire que dans le sens "généralisation", ou bien bien aussi
dans le sens "spécialisation" ?


Merci pour votre réponse.

Jérémie
Bruno Desthuilliers
2006-12-21 23:01:38 UTC
Permalink
Post by Jérémie
Bonjour à tous,
Mon post sera peut-être plus pertinent sur un espace Java, je m''excuse si
c'est le cas.
Lors de la conversion d'un objet en un autre objet (cast),
Lors de la conversion d'une variable d'un type en un autre type... Ca
n'implique pas forcément de modification de l'"objet" (en tant que
structure de donnée stockée en mémoire) lui-même.
Post by Jérémie
celle -ci ne
peut-elle se faire que dans le sens "généralisation", ou bien bien aussi
dans le sens "spécialisation" ?
Effectivement, ta question serait plus à sa place sur fr.comp.lang.java.

<HS mode="reprenez-moi si je dis une couennerie">
Tu peux caster vers une sous-classe, *à condition* que l'objet référencé
par ta variable soit bien en réalité une instance de cette sous-classe
(ce qui peut sembler logique...).

// nb : plus très sûr de la syntaxe exacte
class Foo {
//
}

class Bar extend Foo {
//
}

class Bak extend Foo {
//
}

class Baaz extend Foo {
//
}


// dans le main:
Foo real_foo = new Foo();
Foo some_bar = new Bar();
Foo some_bak = new Bak();
Foo some_baaz = new Baaz();

Bar test = (Bar) some_bar; // ok
test = (Bar) some_bak; // ok
test = (Bar) real_foo; // PAS ok
test = (Bar) some_baaz; // PAS ok

</HS>
jacti
2007-01-12 18:02:13 UTC
Permalink
Post by Bruno Desthuilliers
Post by Jérémie
Bonjour à tous,
Mon post sera peut-être plus pertinent sur un espace Java, je m''excuse si
c'est le cas.
Ma question est : Lors de la conversion d'un objet en un autre objet
(cast),
Lors de la conversion d'une variable d'un type en un autre type... Ca
n'implique pas forcément de modification de l'"objet" (en tant que
structure de donnée stockée en mémoire) lui-même.
Post by Jérémie
celle -ci ne
peut-elle se faire que dans le sens "généralisation", ou bien bien aussi
dans le sens "spécialisation" ?
Effectivement, ta question serait plus à sa place sur fr.comp.lang.java.
Et pourquoi ?, le downcasting existe aussi en C++ avec le dynamic_cast.
Voir : http://www.objectfaq.com/oofaq2/body/langspec.htm pour une
explication en C++ et en Java.
Le downcasting n'est pas une conversion, c'est seulement une promesse
faite au compilateur que l'objet "downcasté" est bien de la "bonne
sous-classe".
Souvent (mais pas toujours), le fait d'être obligé, à un moment donné,
d'utiliser le downcasting, révèle une faiblesse de conception...

Jacti
Post by Bruno Desthuilliers
<HS mode="reprenez-moi si je dis une couennerie">
Tu peux caster vers une sous-classe, *à condition* que l'objet référencé
par ta variable soit bien en réalité une instance de cette sous-classe
(ce qui peut sembler logique...).
// nb : plus très sûr de la syntaxe exacte
class Foo {
//
}
class Bar extend Foo {
//
}
class Bak extend Foo {
//
}
class Baaz extend Foo {
//
}
Foo real_foo = new Foo();
Foo some_bar = new Bar();
Foo some_bak = new Bak();
Foo some_baaz = new Baaz();
Bar test = (Bar) some_bar; // ok
test = (Bar) some_bak; // ok
test = (Bar) real_foo; // PAS ok
test = (Bar) some_baaz; // PAS ok
</HS>
Bruno Desthuilliers
2007-01-12 22:03:01 UTC
Permalink
jacti a écrit :

<HS>
Tiens, un revenant !-) Ca marche la musique ?
</HS>
Post by jacti
Post by Bruno Desthuilliers
Post by Jérémie
Bonjour à tous,
Mon post sera peut-être plus pertinent sur un espace Java, je m''excuse si
c'est le cas.
Ma question est : Lors de la conversion d'un objet en un autre objet
(cast),
Lors de la conversion d'une variable d'un type en un autre type... Ca
n'implique pas forcément de modification de l'"objet" (en tant que
structure de donnée stockée en mémoire) lui-même.
Post by Jérémie
celle -ci ne
peut-elle se faire que dans le sens "généralisation", ou bien bien aussi
dans le sens "spécialisation" ?
Effectivement, ta question serait plus à sa place sur fr.comp.lang.java.
Et pourquoi ?, le downcasting existe aussi en C++ avec le dynamic_cast.
Oui, et probablement dans tous les langages objets à typage statique
déclaratif - mais pas forcément avec toujours des règles strictement
équivalentes, d'où ma remarque - l'OP ayant précisé que sa question
portait sur les casts en Java (pas en C++).
Post by jacti
Le downcasting n'est pas une conversion, c'est seulement une promesse
faite au compilateur que l'objet "downcasté" est bien de la "bonne
sous-classe".
Souvent (mais pas toujours), le fait d'être obligé, à un moment donné,
d'utiliser le downcasting, révèle une faiblesse de conception...
<troll mode="un petit dernier pour la route ?">
Une faiblesse de conception du langage ?-)
</troll>
jacti
2007-02-03 09:47:26 UTC
Permalink
Post by Bruno Desthuilliers
<HS>
Tiens, un revenant !-) Ca marche la musique ?
Oui ça marche (cf. mon site www.jacti.fr)
Post by Bruno Desthuilliers
</HS>
Post by jacti
Post by Bruno Desthuilliers
Post by Jérémie
Bonjour à tous,
Mon post sera peut-être plus pertinent sur un espace Java, je m''excuse si
c'est le cas.
Ma question est : Lors de la conversion d'un objet en un autre objet
(cast),
Lors de la conversion d'une variable d'un type en un autre type... Ca
n'implique pas forcément de modification de l'"objet" (en tant que
structure de donnée stockée en mémoire) lui-même.
Post by Jérémie
celle -ci ne
peut-elle se faire que dans le sens "généralisation", ou bien bien aussi
dans le sens "spécialisation" ?
Effectivement, ta question serait plus à sa place sur fr.comp.lang.java.
Et pourquoi ?, le downcasting existe aussi en C++ avec le dynamic_cast.
Oui, et probablement dans tous les langages objets à typage statique
déclaratif - mais pas forcément avec toujours des règles strictement
équivalentes, d'où ma remarque - l'OP ayant précisé que sa question
portait sur les casts en Java (pas en C++).
Post by jacti
Le downcasting n'est pas une conversion, c'est seulement une promesse
faite au compilateur que l'objet "downcasté" est bien de la "bonne
sous-classe".
Souvent (mais pas toujours), le fait d'être obligé, à un moment donné,
d'utiliser le downcasting, révèle une faiblesse de conception...
<troll mode="un petit dernier pour la route ?">
Une faiblesse de conception du langage ?-)
<re-troll mode="pour qui sont ces serpents...">
Python peut-être :-)
</re-troll>
Post by Bruno Desthuilliers
</troll>
Jacti

Aurélien Campéas
2007-01-01 16:00:13 UTC
Permalink
Post by Jérémie
Bonjour à tous,
Mon post sera peut-être plus pertinent sur un espace Java, je m''excuse si
c'est le cas.
Lors de la conversion d'un objet en un autre objet (cast), celle -ci ne
Un cast n'est pas une conversion. C'est une assertion donnée par le
programmeur au compilateur sur le type d'un objet. L'objet n'est pas
modifié, aucun nouvel objet n'est créé.
Post by Jérémie
peut-elle se faire que dans le sens "généralisation", ou bien bien aussi
Quel serait l'intérêt ?
Post by Jérémie
dans le sens "spécialisation" ?
Merci pour votre réponse.
Jérémie
Continuer la lecture sur narkive:
Loading...