> la classe mère qui gère le flag
non, c'est la classe fille !
> quand c'est bien fait, le truc que tu racontes est simplement et purement faux
ben non, si c'était bien fait on aurait pas à faire toutes ces conneries de java
Allez on reprend pour ceux du fond qui ne suivent pas.
disclaimer : ceci est un exemple, pour comprendre, qu'on me sorte pas des conneries de collection ou autre c'est pour expliquer un principe, une logique, non pour écrire un exemple réel (j'suis pas sur que tout le monde ait compris ça déjà...)
Imaginons une classe de tableau : (ha oui, j'écris ni en ruby, ni en java, ni en js, etc c'est juste pour comprendre sans s'en soucier, et oui j'ai pas mis de test, de validation, etc on s'en branle)
class Array
def get index
return data_au_bon_index
end
def set index, value
data_au_bon_index = value
end
end
Maintenant j'ai deux classes utilisant ceci, en rajoutant des besoins spécifiques et non nécessaires à tous (oui les noms sont pourris je m'en fou aussi c'est un exemple) :
class ArrayWithExtraFunctionnality1 < Array
def plop
[...]
end
end
class ArrayWithMinMax <Array
def getMinMax
end
end
Version sympa :
class ArrayWithMinMax < Array
def getMinMax
[...]
return min, max
end
end
Version "java"
class ArrayWithMinMax < Array
boolean internalStateModified = false
def getMin
if internalStateModified
computeMinMax
end
return min
end
def getMax
if internalStateModified
computeMinMax
end
return max
end
def set index, value
internalStateModified = true
super.set(index, value)
end
end
Maintenant je veux rajouter la méthode concat dans ma classe mère car je sais qu'elle sera utilisée par _toutes_ les classes filles :
class Array
[...]
def concat otherArray
[...]
end
end
Avec la solution simple ... ben je change rien, je peux l'utiliser
Avec la solution "java" :
class ArrayWithMinMax < Array
[...]
Il faut donc que je maintienne ma classe fille quand je rajoute des choses dans la classe mère.
Ha oui, je veux pas que mon "internalStateModified" soit dans la classe mère, je veux juste rajouter un getMinMax qui est utile que pour ce cas précis.
En gros, comment proposer une architecture complexe juste pour rajouter le calcul et le retour de deux valeurs simultanément...
[^] # Re: javascript
Posté par CrEv (site web personnel) . En réponse au journal Perl, Javouille, Lisaac|(Ruby|SmallTalk|etc..). Évalué à 2.
Non c'est vrai !
> la classe mère qui gère le flag
non, c'est la classe fille !
> quand c'est bien fait, le truc que tu racontes est simplement et purement faux
ben non, si c'était bien fait on aurait pas à faire toutes ces conneries de java
Allez on reprend pour ceux du fond qui ne suivent pas.
disclaimer : ceci est un exemple, pour comprendre, qu'on me sorte pas des conneries de collection ou autre c'est pour expliquer un principe, une logique, non pour écrire un exemple réel (j'suis pas sur que tout le monde ait compris ça déjà...)
Imaginons une classe de tableau : (ha oui, j'écris ni en ruby, ni en java, ni en js, etc c'est juste pour comprendre sans s'en soucier, et oui j'ai pas mis de test, de validation, etc on s'en branle)
class Array
def get index
return data_au_bon_index
end
def set index, value
data_au_bon_index = value
end
end
Maintenant j'ai deux classes utilisant ceci, en rajoutant des besoins spécifiques et non nécessaires à tous (oui les noms sont pourris je m'en fou aussi c'est un exemple) :
class ArrayWithExtraFunctionnality1 < Array
def plop
[...]
end
end
class ArrayWithMinMax <Array
def getMinMax
end
end
Version sympa :
class ArrayWithMinMax < Array
def getMinMax
[...]
return min, max
end
end
Version "java"
class ArrayWithMinMax < Array
boolean internalStateModified = false
def getMin
if internalStateModified
computeMinMax
end
return min
end
def getMax
if internalStateModified
computeMinMax
end
return max
end
def set index, value
internalStateModified = true
super.set(index, value)
end
end
Maintenant je veux rajouter la méthode concat dans ma classe mère car je sais qu'elle sera utilisée par _toutes_ les classes filles :
class Array
[...]
def concat otherArray
[...]
end
end
Avec la solution simple ... ben je change rien, je peux l'utiliser
Avec la solution "java" :
class ArrayWithMinMax < Array
[...]
def concat otherArray
internalStateModified = true
super.concat otherArray
end
end
Il faut donc que je maintienne ma classe fille quand je rajoute des choses dans la classe mère.
Ha oui, je veux pas que mon "internalStateModified" soit dans la classe mère, je veux juste rajouter un getMinMax qui est utile que pour ce cas précis.
En gros, comment proposer une architecture complexe juste pour rajouter le calcul et le retour de deux valeurs simultanément...