j'essaye d'obtenir une structure de classe assez simple (en tous cas
sur le papier) mais je bloque dessus:
j'aimerais avoir une classe parente abstraite qui contiendait (au
moins) une méthode statique permettant (entre autre) de créer puis
d'initialiser une instance de la classe enfant
mon deuxième mais moins important problème est que l'une des classes
enfant necessite des paramètres supplémentaires
en gros, avoir ça mais je bloque sur le codage de init():
public abstract class parent
{
public virtual void Fill(object param1)
{
}
static public ????? init(object param1)
{
// creation de l'objet de classe enfant
???? tmp = new ????();
// initialisation
tmp.Fill(param1);
return tmp;
}
}
public class enfant1 : parent
{
public override void Fill(object param1)
{
// initialisation propre à la classe enfant1
}
}
public class enfant2 : parent
{
public override void Fill(object param1, object param2)
{
// initialisation propre à la classe enfant2
}
}
typeof( Test1 ), c'est pareil que GetType() sur un objet cree par new Test1(...)
Faust
/_Ambassadeur Kosh_ a émis l'idée suivante/ :
classes et donc point de this.GetType() )
ça, c'est typeof
typeof( Test1 ), c'est pareil que GetType() sur un objet cree par new Test1(...)
vivi chais bien, mais l'un comme l'autre (GetType et typeof) ne sont pas utilisables dans la méthode de classe
en fait, je n'ai rien trouvé qui soit utilisable dans la méthode de classe qui permette de connaitre, par exemple, le nom de la classe dans laquelle on est... c'est peut-être pas pour rien que les méthodes de classes ne peuvent pas être virtual (donc override) (je trouve ça assez dommage d'ailleurs)
-- */Teträm/* http://www.tetram.org
"Mange d'abord, defeque ensuite: tu réfléchiras plus tard" - Proverbe Troll
/_Ambassadeur Kosh_ a émis l'idée suivante/ :
classes et donc point de this.GetType() )
ça, c'est typeof
typeof( Test1 ), c'est pareil que GetType() sur un objet cree par new
Test1(...)
vivi chais bien, mais l'un comme l'autre (GetType et typeof) ne sont
pas utilisables dans la méthode de classe
en fait, je n'ai rien trouvé qui soit utilisable dans la méthode de
classe qui permette de connaitre, par exemple, le nom de la classe dans
laquelle on est...
c'est peut-être pas pour rien que les méthodes de classes ne peuvent
pas être virtual (donc override) (je trouve ça assez dommage
d'ailleurs)
--
*/Teträm/*
http://www.tetram.org
"Mange d'abord, defeque ensuite: tu réfléchiras plus tard" - Proverbe
Troll
typeof( Test1 ), c'est pareil que GetType() sur un objet cree par new Test1(...)
vivi chais bien, mais l'un comme l'autre (GetType et typeof) ne sont pas utilisables dans la méthode de classe
en fait, je n'ai rien trouvé qui soit utilisable dans la méthode de classe qui permette de connaitre, par exemple, le nom de la classe dans laquelle on est... c'est peut-être pas pour rien que les méthodes de classes ne peuvent pas être virtual (donc override) (je trouve ça assez dommage d'ailleurs)
-- */Teträm/* http://www.tetram.org
"Mange d'abord, defeque ensuite: tu réfléchiras plus tard" - Proverbe Troll
Faust
/_Ambassadeur Kosh_ a exposé/ :
bah c'est pas que je persiste mais j'arrive pas à percuter comment l'utiliser.... mais pour le moment j'arrive pas comprendre à quelle classe (parent ou factory/enfant1/enfant2) correspond ta classe Test
Test, c'est Parent. Test1, Test2, c'est les Enfants chez toi. et ma foi, Factory, c'est Factory...
oki
c'est effectivement ce que j'ai fait pour le moment
ouaih bon, ça craint...
si tu n'as pas de genericité, tu peux aussi faire ça, peut être que c'est un modele qui va mieux te parler. c'est séduisant, mais ça se rapproche de l'heritage d'implantation, et c'est pas terrible.
[snip] chuis du même avis, c'est pas top
ceci dit, en y reflechissant, je peux peut-être tourner ma hiérarchie de classe autrement ce qui solutionnerait ce problème (mais en créerait d'autre pour le coup :-/)
dommage qu'on puisse pas utiliser le FW2 avec VS2003 :(
-- */Teträm/* http://www.tetram.org
"Le monde est rond comme le cul d'une pucelle. On ne peut pas s'y perdre" Chevalier Or-Azur
/_Ambassadeur Kosh_ a exposé/ :
bah c'est pas que je persiste mais j'arrive pas à percuter comment
l'utiliser.... mais pour le moment j'arrive pas comprendre à quelle classe
(parent ou factory/enfant1/enfant2) correspond ta classe Test
Test, c'est Parent.
Test1, Test2, c'est les Enfants chez toi.
et ma foi, Factory, c'est Factory...
oki
c'est effectivement ce que j'ai fait pour le moment
ouaih bon, ça craint...
si tu n'as pas de genericité, tu peux aussi faire ça, peut être que c'est un
modele qui va mieux te parler.
c'est séduisant, mais ça se rapproche de l'heritage d'implantation, et c'est
pas terrible.
[snip]
chuis du même avis, c'est pas top
ceci dit, en y reflechissant, je peux peut-être tourner ma hiérarchie
de classe autrement ce qui solutionnerait ce problème (mais en créerait
d'autre pour le coup :-/)
dommage qu'on puisse pas utiliser le FW2 avec VS2003 :(
--
*/Teträm/*
http://www.tetram.org
"Le monde est rond comme le cul d'une pucelle. On ne peut pas s'y
perdre"
Chevalier Or-Azur
bah c'est pas que je persiste mais j'arrive pas à percuter comment l'utiliser.... mais pour le moment j'arrive pas comprendre à quelle classe (parent ou factory/enfant1/enfant2) correspond ta classe Test
Test, c'est Parent. Test1, Test2, c'est les Enfants chez toi. et ma foi, Factory, c'est Factory...
oki
c'est effectivement ce que j'ai fait pour le moment
ouaih bon, ça craint...
si tu n'as pas de genericité, tu peux aussi faire ça, peut être que c'est un modele qui va mieux te parler. c'est séduisant, mais ça se rapproche de l'heritage d'implantation, et c'est pas terrible.
[snip] chuis du même avis, c'est pas top
ceci dit, en y reflechissant, je peux peut-être tourner ma hiérarchie de classe autrement ce qui solutionnerait ce problème (mais en créerait d'autre pour le coup :-/)
dommage qu'on puisse pas utiliser le FW2 avec VS2003 :(
-- */Teträm/* http://www.tetram.org
"Le monde est rond comme le cul d'une pucelle. On ne peut pas s'y perdre" Chevalier Or-Azur
Ambassadeur Kosh
> en fait, je n'ai rien trouvé qui soit utilisable dans la méthode de classe qui permette de connaitre, par exemple, le nom de la classe dans laquelle on est... c'est peut-être pas pour rien que les méthodes de classes ne peuvent pas être virtual (donc override) (je trouve ça assez dommage d'ailleurs)
ok. mettons les choses au point. le C++ à la mode 1980 et les economies à deux francs, ça sert plus à rien. oublie static comme tu le connais.
prenons le cas d'un tri. tout bon CMen va ecrire une fonction et donc la mettre dans une methode static. il suffirait de faire
public abstract class SortAlgorithm { public void abstract Execute(double [] v) ;
public static readonly SortAlgorithm Bubble = new BubbleSortAlgorithm() ; public static readonly SortAlgorithm Heap = new HeapSortAlgorithm() ; public static readonly SortAlgorithm Quick = new QuickSortAlgorithm() ; }
// au choix, nested ou pas public sealed class BubbleSortAlgorithm....
maintenant, tu as besoin d'un tri, pas de methode static, tu as une instance. et c'est pas ce que ça coute de faire un new BubbleSortAlgorithm avant de s'en servir. donc pas de problemes de type
> en fait, je n'ai rien trouvé qui soit utilisable dans la méthode de classe
qui permette de connaitre, par exemple, le nom de la classe dans laquelle
on est...
c'est peut-être pas pour rien que les méthodes de classes ne peuvent pas
être virtual (donc override) (je trouve ça assez dommage d'ailleurs)
ok. mettons les choses au point. le C++ à la mode 1980 et les economies à
deux francs, ça sert plus à rien.
oublie static comme tu le connais.
prenons le cas d'un tri. tout bon CMen va ecrire une fonction et donc la
mettre dans une methode static.
il suffirait de faire
public abstract class SortAlgorithm
{
public void abstract Execute(double [] v) ;
public static readonly SortAlgorithm Bubble = new BubbleSortAlgorithm()
;
public static readonly SortAlgorithm Heap = new HeapSortAlgorithm() ;
public static readonly SortAlgorithm Quick = new QuickSortAlgorithm() ;
}
// au choix, nested ou pas
public sealed class BubbleSortAlgorithm....
maintenant, tu as besoin d'un tri, pas de methode static, tu as une
instance. et c'est pas ce que ça coute de faire un new BubbleSortAlgorithm
avant de s'en servir.
donc pas de problemes de type
> en fait, je n'ai rien trouvé qui soit utilisable dans la méthode de classe qui permette de connaitre, par exemple, le nom de la classe dans laquelle on est... c'est peut-être pas pour rien que les méthodes de classes ne peuvent pas être virtual (donc override) (je trouve ça assez dommage d'ailleurs)
ok. mettons les choses au point. le C++ à la mode 1980 et les economies à deux francs, ça sert plus à rien. oublie static comme tu le connais.
prenons le cas d'un tri. tout bon CMen va ecrire une fonction et donc la mettre dans une methode static. il suffirait de faire
public abstract class SortAlgorithm { public void abstract Execute(double [] v) ;
public static readonly SortAlgorithm Bubble = new BubbleSortAlgorithm() ; public static readonly SortAlgorithm Heap = new HeapSortAlgorithm() ; public static readonly SortAlgorithm Quick = new QuickSortAlgorithm() ; }
// au choix, nested ou pas public sealed class BubbleSortAlgorithm....
maintenant, tu as besoin d'un tri, pas de methode static, tu as une instance. et c'est pas ce que ça coute de faire un new BubbleSortAlgorithm avant de s'en servir. donc pas de problemes de type
Faust
/_Lloyd Dupont_ a pensé très fort/ :
3. utiliser les generic (C# 2.0) comme montrer dans l'exemple en fichier joint.
j'ai pas d'expérience sur les generics mais effectivement, de ce que j'en ai lu et de ce que je comprends, ça semble être ça qui est le plus proche de ce que je voudrais faire
-- */Teträm/* http://www.tetram.org
"Tape d'abord, tape ensuite, et tape pour finir" - Proverbe Troll
/_Lloyd Dupont_ a pensé très fort/ :
3. utiliser les generic (C# 2.0) comme montrer dans l'exemple en fichier
joint.
j'ai pas d'expérience sur les generics mais effectivement, de ce que
j'en ai lu et de ce que je comprends, ça semble être ça qui est le plus
proche de ce que je voudrais faire
--
*/Teträm/*
http://www.tetram.org
"Tape d'abord, tape ensuite, et tape pour finir" - Proverbe Troll
3. utiliser les generic (C# 2.0) comme montrer dans l'exemple en fichier joint.
j'ai pas d'expérience sur les generics mais effectivement, de ce que j'en ai lu et de ce que je comprends, ça semble être ça qui est le plus proche de ce que je voudrais faire
-- */Teträm/* http://www.tetram.org
"Tape d'abord, tape ensuite, et tape pour finir" - Proverbe Troll
Paul Bacelar
http://msdn.microsoft.com/msdnmag/issues/03/03/DesignPatterns/ -- Paul Bacelar
"Faust" wrote in message news:
/_Lloyd Dupont_ a pensé très fort/ : > 3. utiliser les generic (C# 2.0) comme montrer dans l'exemple en fichier > joint.
j'ai pas d'expérience sur les generics mais effectivement, de ce que j'en ai lu et de ce que je comprends, ça semble être ça qui est le plus proche de ce que je voudrais faire
-- */Teträm/* http://www.tetram.org
"Tape d'abord, tape ensuite, et tape pour finir" - Proverbe Troll
http://msdn.microsoft.com/msdnmag/issues/03/03/DesignPatterns/
--
Paul Bacelar
"Faust" <miss.me@no.where.invalid> wrote in message
news:mn.fbf87d57b795408d.16328@chez.moi.invalid...
/_Lloyd Dupont_ a pensé très fort/ :
> 3. utiliser les generic (C# 2.0) comme montrer dans l'exemple en fichier
> joint.
j'ai pas d'expérience sur les generics mais effectivement, de ce que
j'en ai lu et de ce que je comprends, ça semble être ça qui est le plus
proche de ce que je voudrais faire
--
*/Teträm/*
http://www.tetram.org
"Tape d'abord, tape ensuite, et tape pour finir" - Proverbe Troll
http://msdn.microsoft.com/msdnmag/issues/03/03/DesignPatterns/ -- Paul Bacelar
"Faust" wrote in message news:
/_Lloyd Dupont_ a pensé très fort/ : > 3. utiliser les generic (C# 2.0) comme montrer dans l'exemple en fichier > joint.
j'ai pas d'expérience sur les generics mais effectivement, de ce que j'en ai lu et de ce que je comprends, ça semble être ça qui est le plus proche de ce que je voudrais faire
-- */Teträm/* http://www.tetram.org
"Tape d'abord, tape ensuite, et tape pour finir" - Proverbe Troll
Faust
merci beaucoup, ça a l'air interressant
/_Paul Bacelar_ a écrit/ :
http://msdn.microsoft.com/msdnmag/issues/03/03/DesignPatterns/ -- Paul Bacelar
"Faust" wrote in message news:
/_Lloyd Dupont_ a pensé très fort/ :
3. utiliser les generic (C# 2.0) comme montrer dans l'exemple en fichier joint.
j'ai pas d'expérience sur les generics mais effectivement, de ce que j'en ai lu et de ce que je comprends, ça semble être ça qui est le plus proche de ce que je voudrais faire
-- */Teträm/* http://www.tetram.org
"Tape d'abord, tape ensuite, et tape pour finir" - Proverbe Troll
-- */Teträm/* http://www.tetram.org
"Entre le cerveau et la main, le médiateur doit être le coeur" - Fritz Lang
merci beaucoup, ça a l'air interressant
/_Paul Bacelar_ a écrit/ :
http://msdn.microsoft.com/msdnmag/issues/03/03/DesignPatterns/
--
Paul Bacelar
"Faust" <miss.me@no.where.invalid> wrote in message
news:mn.fbf87d57b795408d.16328@chez.moi.invalid...
/_Lloyd Dupont_ a pensé très fort/ :
3. utiliser les generic (C# 2.0) comme montrer dans l'exemple en fichier
joint.
j'ai pas d'expérience sur les generics mais effectivement, de ce que
j'en ai lu et de ce que je comprends, ça semble être ça qui est le plus
proche de ce que je voudrais faire
--
*/Teträm/*
http://www.tetram.org
"Tape d'abord, tape ensuite, et tape pour finir" - Proverbe Troll
--
*/Teträm/*
http://www.tetram.org
"Entre le cerveau et la main, le médiateur doit être le coeur" - Fritz
Lang
http://msdn.microsoft.com/msdnmag/issues/03/03/DesignPatterns/ -- Paul Bacelar
"Faust" wrote in message news:
/_Lloyd Dupont_ a pensé très fort/ :
3. utiliser les generic (C# 2.0) comme montrer dans l'exemple en fichier joint.
j'ai pas d'expérience sur les generics mais effectivement, de ce que j'en ai lu et de ce que je comprends, ça semble être ça qui est le plus proche de ce que je voudrais faire
-- */Teträm/* http://www.tetram.org
"Tape d'abord, tape ensuite, et tape pour finir" - Proverbe Troll
-- */Teträm/* http://www.tetram.org
"Entre le cerveau et la main, le médiateur doit être le coeur" - Fritz Lang