On Mar 5, 12:13 pm, (Pascal J. Bourguignon)
wrote:James Kanze writes:
> On Mar 4, 4:27 pm, (Pascal J. Bourguignon)
> wrote:
>> Alexis Guillaume writes:
>> >> Il y a le pattern "chaine de responsabilité" que tu peux
>> >> employer. Ca a l'air d'en être une forme (je ne peux pas
>> >> dire avec les éléments que tu donnes).>> > En effet je me renseigne sur ce pattern et ça a l'air d'être
>> > ce que je veux faire. Merci beaucoup ! :-)>> Oui, enfin, c'est le fonctionnement normal en programmation
>> objet quand on surcharge une méthode, d'appeler la méthode de
>> la superclass.> Je dirais plutôt que c'est une symptome d'une mauvaise
> conception. En général, on ne supplante que des fonctions
> virtuelles pures.Pas en POO. L'héritage est un élément essentiel de la POO.
Oui, mais l'héritage de quoi ? De l'interface, ou de
l'implémentation ? En C++, on fait la distinction.OO = {héritage, encapsulation, polymorphisme, abstraction}.Si on se contente de définir des interfaces d'un côté, et de
les implémenter d'un autre, on exclu l'héritage, et on ne
programme pas en OO.
Qu'est-ce que tu racontes là ? L'implémentation d'une
interface, c'est bien l'héritage.
C'est vrai qu'il y a un certain temps, au début, quand il n'y
avait que du Smalltalk, la situation était différente. Mais
notre compréhension a évolué depuis. Ainsi que des démandes de
robustesse et de la vérification statique des types.
Ce qui est très beau, mais il ignore l'essentiel de l'idiome
consacré. Dans l'idiome consacré, attachWheel ne serait pas
virtuelle, mais appelerait une fonction privée (doAttachWheel)
qui elle serait virtuelle. Si on appelle attachWheel à travers
l'interface Automobile, on doit respecter le contrat de
Automobile::attachWheel ; il n'y a que si on l'appelle à
travers l'interface RusticAutomobile qu'on a droit d'attacher
une roue carrée.
On Mar 5, 12:13 pm, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
James Kanze <james.ka...@gmail.com> writes:
> On Mar 4, 4:27 pm, p...@informatimago.com (Pascal J. Bourguignon)
> wrote:
>> Alexis Guillaume <a...@free.fr> writes:
>> >> Il y a le pattern "chaine de responsabilité" que tu peux
>> >> employer. Ca a l'air d'en être une forme (je ne peux pas
>> >> dire avec les éléments que tu donnes).
>> > En effet je me renseigne sur ce pattern et ça a l'air d'être
>> > ce que je veux faire. Merci beaucoup ! :-)
>> Oui, enfin, c'est le fonctionnement normal en programmation
>> objet quand on surcharge une méthode, d'appeler la méthode de
>> la superclass.
> Je dirais plutôt que c'est une symptome d'une mauvaise
> conception. En général, on ne supplante que des fonctions
> virtuelles pures.
Pas en POO. L'héritage est un élément essentiel de la POO.
Oui, mais l'héritage de quoi ? De l'interface, ou de
l'implémentation ? En C++, on fait la distinction.
OO = {héritage, encapsulation, polymorphisme, abstraction}.
Si on se contente de définir des interfaces d'un côté, et de
les implémenter d'un autre, on exclu l'héritage, et on ne
programme pas en OO.
Qu'est-ce que tu racontes là ? L'implémentation d'une
interface, c'est bien l'héritage.
C'est vrai qu'il y a un certain temps, au début, quand il n'y
avait que du Smalltalk, la situation était différente. Mais
notre compréhension a évolué depuis. Ainsi que des démandes de
robustesse et de la vérification statique des types.
Ce qui est très beau, mais il ignore l'essentiel de l'idiome
consacré. Dans l'idiome consacré, attachWheel ne serait pas
virtuelle, mais appelerait une fonction privée (doAttachWheel)
qui elle serait virtuelle. Si on appelle attachWheel à travers
l'interface Automobile, on doit respecter le contrat de
Automobile::attachWheel ; il n'y a que si on l'appelle à
travers l'interface RusticAutomobile qu'on a droit d'attacher
une roue carrée.
On Mar 5, 12:13 pm, (Pascal J. Bourguignon)
wrote:James Kanze writes:
> On Mar 4, 4:27 pm, (Pascal J. Bourguignon)
> wrote:
>> Alexis Guillaume writes:
>> >> Il y a le pattern "chaine de responsabilité" que tu peux
>> >> employer. Ca a l'air d'en être une forme (je ne peux pas
>> >> dire avec les éléments que tu donnes).>> > En effet je me renseigne sur ce pattern et ça a l'air d'être
>> > ce que je veux faire. Merci beaucoup ! :-)>> Oui, enfin, c'est le fonctionnement normal en programmation
>> objet quand on surcharge une méthode, d'appeler la méthode de
>> la superclass.> Je dirais plutôt que c'est une symptome d'une mauvaise
> conception. En général, on ne supplante que des fonctions
> virtuelles pures.Pas en POO. L'héritage est un élément essentiel de la POO.
Oui, mais l'héritage de quoi ? De l'interface, ou de
l'implémentation ? En C++, on fait la distinction.OO = {héritage, encapsulation, polymorphisme, abstraction}.Si on se contente de définir des interfaces d'un côté, et de
les implémenter d'un autre, on exclu l'héritage, et on ne
programme pas en OO.
Qu'est-ce que tu racontes là ? L'implémentation d'une
interface, c'est bien l'héritage.
C'est vrai qu'il y a un certain temps, au début, quand il n'y
avait que du Smalltalk, la situation était différente. Mais
notre compréhension a évolué depuis. Ainsi que des démandes de
robustesse et de la vérification statique des types.
Ce qui est très beau, mais il ignore l'essentiel de l'idiome
consacré. Dans l'idiome consacré, attachWheel ne serait pas
virtuelle, mais appelerait une fonction privée (doAttachWheel)
qui elle serait virtuelle. Si on appelle attachWheel à travers
l'interface Automobile, on doit respecter le contrat de
Automobile::attachWheel ; il n'y a que si on l'appelle à
travers l'interface RusticAutomobile qu'on a droit d'attacher
une roue carrée.
Et donc tu ne peux pas substituer une RusticAutomobile avec roues
carrées à une Automobile, puisque Automobile::attachWheel refuse les
roues carrés.
Et donc tu ne peux pas substituer une RusticAutomobile avec roues
carrées à une Automobile, puisque Automobile::attachWheel refuse les
roues carrés.
Et donc tu ne peux pas substituer une RusticAutomobile avec roues
carrées à une Automobile, puisque Automobile::attachWheel refuse les
roues carrés.
Bref, C++, ce n'est pas un progrès.
Bref, C++, ce n'est pas un progrès.
Bref, C++, ce n'est pas un progrès.
On Thu, 05 Mar 2009 15:10:08 +0100, (Pascal J.
Bourguignon):Et donc tu ne peux pas substituer une RusticAutomobile avec roues
carrées à une Automobile, puisque Automobile::attachWheel refuse les
roues carrés.
Ce qui est une bonne chose : si on met comme condition que les roues
sont rondes, ce fait est probablement utilisé un peu partout dans le
code d'Automobile (ou de ses dérivées). Si tout à coup tu supprimes
cette condition, il faut bien revoir tout ton code -- ou créer une
nouvelle hiérarchie "voitures à roues carrées".
On Thu, 05 Mar 2009 15:10:08 +0100, pjb@informatimago.com (Pascal J.
Bourguignon):
Et donc tu ne peux pas substituer une RusticAutomobile avec roues
carrées à une Automobile, puisque Automobile::attachWheel refuse les
roues carrés.
Ce qui est une bonne chose : si on met comme condition que les roues
sont rondes, ce fait est probablement utilisé un peu partout dans le
code d'Automobile (ou de ses dérivées). Si tout à coup tu supprimes
cette condition, il faut bien revoir tout ton code -- ou créer une
nouvelle hiérarchie "voitures à roues carrées".
On Thu, 05 Mar 2009 15:10:08 +0100, (Pascal J.
Bourguignon):Et donc tu ne peux pas substituer une RusticAutomobile avec roues
carrées à une Automobile, puisque Automobile::attachWheel refuse les
roues carrés.
Ce qui est une bonne chose : si on met comme condition que les roues
sont rondes, ce fait est probablement utilisé un peu partout dans le
code d'Automobile (ou de ses dérivées). Si tout à coup tu supprimes
cette condition, il faut bien revoir tout ton code -- ou créer une
nouvelle hiérarchie "voitures à roues carrées".
On Thu, 05 Mar 2009 15:10:08 +0100, (Pascal J.
Bourguignon):Bref, C++, ce n'est pas un progrès.
Stroustrup est un vicieux : il a conçu C++ dans le but de faire hurler
les puristes.
(Quoique... les puristes doivent râler encore plus en voyant PHP,
langage mal conçu (voire pas conçu du tout), fait de bric et de broc,
mais qui a su s'imposer malgré l'absence de moyens marketing façon Sun
ou Microsoft...
PHP, le paratonnerre de C++ ! :-p )
On Thu, 05 Mar 2009 15:10:08 +0100, pjb@informatimago.com (Pascal J.
Bourguignon):
Bref, C++, ce n'est pas un progrès.
Stroustrup est un vicieux : il a conçu C++ dans le but de faire hurler
les puristes.
(Quoique... les puristes doivent râler encore plus en voyant PHP,
langage mal conçu (voire pas conçu du tout), fait de bric et de broc,
mais qui a su s'imposer malgré l'absence de moyens marketing façon Sun
ou Microsoft...
PHP, le paratonnerre de C++ ! :-p )
On Thu, 05 Mar 2009 15:10:08 +0100, (Pascal J.
Bourguignon):Bref, C++, ce n'est pas un progrès.
Stroustrup est un vicieux : il a conçu C++ dans le but de faire hurler
les puristes.
(Quoique... les puristes doivent râler encore plus en voyant PHP,
langage mal conçu (voire pas conçu du tout), fait de bric et de broc,
mais qui a su s'imposer malgré l'absence de moyens marketing façon Sun
ou Microsoft...
PHP, le paratonnerre de C++ ! :-p )
James Kanze writes:
> On Mar 5, 12:13 pm, (Pascal J. Bourguignon)
> wrote:
>> James Kanze writes:
>> > On Mar 4, 4:27 pm, (Pascal J. Bourguignon)
>> > wrote:
>> >> Alexis Guillaume writes:
>> >> >> Il y a le pattern "chaine de responsabilité" que tu
>> >> >> peux employer. Ca a l'air d'en être une forme (je ne
>> >> >> peux pas dire avec les éléments que tu donnes).
>> >> > En effet je me renseigne sur ce pattern et ça a l'air
>> >> > d'être ce que je veux faire. Merci beaucoup ! :-)
>> >> Oui, enfin, c'est le fonctionnement normal en
>> >> programmation objet quand on surcharge une méthode,
>> >> d'appeler la méthode de la superclass.
>> > Je dirais plutôt que c'est une symptome d'une mauvaise
>> > conception. En général, on ne supplante que des fonctions
>> > virtuelles pures.
>> Pas en POO. L'héritage est un élément essentiel de la POO.
> Oui, mais l'héritage de quoi ? De l'interface, ou de
> l'implémentation ? En C++, on fait la distinction.
>> OO = {héritage, encapsulation, polymorphisme, abstraction}.
>> Si on se contente de définir des interfaces d'un côté, et
>> de les implémenter d'un autre, on exclu l'héritage, et on
>> ne programme pas en OO.
> Qu'est-ce que tu racontes là ? L'implémentation d'une
> interface, c'est bien l'héritage.
Non. On peut définir des interfaces, et les implémenter dans
des langages qui ne sont pas orientés objets.
> C'est vrai qu'il y a un certain temps, au début, quand il
> n'y avait que du Smalltalk, la situation était différente.
> Mais notre compréhension a évolué depuis. Ainsi que des
> démandes de robustesse et de la vérification statique des
> types.
C++ n'est pas un progrès, c'est une régression. La référence
en pur OO (héritage simple) c'est Smalltalk, et CLOS pour la
richesse du système OO (incluant héritage multiple).
> Ce qui est très beau, mais il ignore l'essentiel de l'idiome
> consacré. Dans l'idiome consacré, attachWheel ne serait pas
> virtuelle, mais appelerait une fonction privée
> (doAttachWheel) qui elle serait virtuelle. Si on appelle
> attachWheel à travers l'interface Automobile, on doit
> respecter le contrat de Automobile::attachWheel ; il n'y a
> que si on l'appelle à travers l'interface RusticAutomobile
> qu'on a droit d'attacher une roue carrée.
Et donc tu ne peux pas substituer une RusticAutomobile avec
roues carrées à une Automobile, puisque
Automobile::attachWheel refuse les roues carrés. Donc tu ne
peux pas étendre ton programme, donc tu ne peux pas le
réutiliser. Bravo.
Enfin, ceci dit, c'est une difficulté constante avec C++, et
dans avec les discussions que l'on peut avoir à propose de
C++ : C++ n'est pas un langage fini.
Il faut que l'on specifie le type de système objet que l'on
veut, le type de gestion de mémoire que l'on veut, etc, et
qu'on implémente les bibliothèques et templates nécessaires
pour terminer le langage selon ces spécifications, et enfin
que l'on s'abstienne d'utiliser ce qui est imcompatible avec
nos spécifications, mais qui reste dans le langage.
Si je spécifie comme système OO un système similaire à
Smalltalk,
il ne faudra bien sur jamais utiliser de fonctions membre non
virtuelles.
Si je spécifie une gestion de la mémoire à base de smart
pointers, il ne faudra pas utiliser de pointeurs normaux.
Finalement chaque application et chaque bibliothèque écrits en
C++ défini son propre dialect, et risque d'être incompatible
avec les autres. Ça n'aide pas à la réutilisation, mais pour
ce qui nous concerne, ça n'aide pas non plus à la discussion
car manifestement nous parlons de langages et de notions
différentes.
Bref, C++, ce n'est pas un progrès.
James Kanze <james.ka...@gmail.com> writes:
> On Mar 5, 12:13 pm, p...@informatimago.com (Pascal J. Bourguignon)
> wrote:
>> James Kanze <james.ka...@gmail.com> writes:
>> > On Mar 4, 4:27 pm, p...@informatimago.com (Pascal J. Bourguignon)
>> > wrote:
>> >> Alexis Guillaume <a...@free.fr> writes:
>> >> >> Il y a le pattern "chaine de responsabilité" que tu
>> >> >> peux employer. Ca a l'air d'en être une forme (je ne
>> >> >> peux pas dire avec les éléments que tu donnes).
>> >> > En effet je me renseigne sur ce pattern et ça a l'air
>> >> > d'être ce que je veux faire. Merci beaucoup ! :-)
>> >> Oui, enfin, c'est le fonctionnement normal en
>> >> programmation objet quand on surcharge une méthode,
>> >> d'appeler la méthode de la superclass.
>> > Je dirais plutôt que c'est une symptome d'une mauvaise
>> > conception. En général, on ne supplante que des fonctions
>> > virtuelles pures.
>> Pas en POO. L'héritage est un élément essentiel de la POO.
> Oui, mais l'héritage de quoi ? De l'interface, ou de
> l'implémentation ? En C++, on fait la distinction.
>> OO = {héritage, encapsulation, polymorphisme, abstraction}.
>> Si on se contente de définir des interfaces d'un côté, et
>> de les implémenter d'un autre, on exclu l'héritage, et on
>> ne programme pas en OO.
> Qu'est-ce que tu racontes là ? L'implémentation d'une
> interface, c'est bien l'héritage.
Non. On peut définir des interfaces, et les implémenter dans
des langages qui ne sont pas orientés objets.
> C'est vrai qu'il y a un certain temps, au début, quand il
> n'y avait que du Smalltalk, la situation était différente.
> Mais notre compréhension a évolué depuis. Ainsi que des
> démandes de robustesse et de la vérification statique des
> types.
C++ n'est pas un progrès, c'est une régression. La référence
en pur OO (héritage simple) c'est Smalltalk, et CLOS pour la
richesse du système OO (incluant héritage multiple).
> Ce qui est très beau, mais il ignore l'essentiel de l'idiome
> consacré. Dans l'idiome consacré, attachWheel ne serait pas
> virtuelle, mais appelerait une fonction privée
> (doAttachWheel) qui elle serait virtuelle. Si on appelle
> attachWheel à travers l'interface Automobile, on doit
> respecter le contrat de Automobile::attachWheel ; il n'y a
> que si on l'appelle à travers l'interface RusticAutomobile
> qu'on a droit d'attacher une roue carrée.
Et donc tu ne peux pas substituer une RusticAutomobile avec
roues carrées à une Automobile, puisque
Automobile::attachWheel refuse les roues carrés. Donc tu ne
peux pas étendre ton programme, donc tu ne peux pas le
réutiliser. Bravo.
Enfin, ceci dit, c'est une difficulté constante avec C++, et
dans avec les discussions que l'on peut avoir à propose de
C++ : C++ n'est pas un langage fini.
Il faut que l'on specifie le type de système objet que l'on
veut, le type de gestion de mémoire que l'on veut, etc, et
qu'on implémente les bibliothèques et templates nécessaires
pour terminer le langage selon ces spécifications, et enfin
que l'on s'abstienne d'utiliser ce qui est imcompatible avec
nos spécifications, mais qui reste dans le langage.
Si je spécifie comme système OO un système similaire à
Smalltalk,
il ne faudra bien sur jamais utiliser de fonctions membre non
virtuelles.
Si je spécifie une gestion de la mémoire à base de smart
pointers, il ne faudra pas utiliser de pointeurs normaux.
Finalement chaque application et chaque bibliothèque écrits en
C++ défini son propre dialect, et risque d'être incompatible
avec les autres. Ça n'aide pas à la réutilisation, mais pour
ce qui nous concerne, ça n'aide pas non plus à la discussion
car manifestement nous parlons de langages et de notions
différentes.
Bref, C++, ce n'est pas un progrès.
James Kanze writes:
> On Mar 5, 12:13 pm, (Pascal J. Bourguignon)
> wrote:
>> James Kanze writes:
>> > On Mar 4, 4:27 pm, (Pascal J. Bourguignon)
>> > wrote:
>> >> Alexis Guillaume writes:
>> >> >> Il y a le pattern "chaine de responsabilité" que tu
>> >> >> peux employer. Ca a l'air d'en être une forme (je ne
>> >> >> peux pas dire avec les éléments que tu donnes).
>> >> > En effet je me renseigne sur ce pattern et ça a l'air
>> >> > d'être ce que je veux faire. Merci beaucoup ! :-)
>> >> Oui, enfin, c'est le fonctionnement normal en
>> >> programmation objet quand on surcharge une méthode,
>> >> d'appeler la méthode de la superclass.
>> > Je dirais plutôt que c'est une symptome d'une mauvaise
>> > conception. En général, on ne supplante que des fonctions
>> > virtuelles pures.
>> Pas en POO. L'héritage est un élément essentiel de la POO.
> Oui, mais l'héritage de quoi ? De l'interface, ou de
> l'implémentation ? En C++, on fait la distinction.
>> OO = {héritage, encapsulation, polymorphisme, abstraction}.
>> Si on se contente de définir des interfaces d'un côté, et
>> de les implémenter d'un autre, on exclu l'héritage, et on
>> ne programme pas en OO.
> Qu'est-ce que tu racontes là ? L'implémentation d'une
> interface, c'est bien l'héritage.
Non. On peut définir des interfaces, et les implémenter dans
des langages qui ne sont pas orientés objets.
> C'est vrai qu'il y a un certain temps, au début, quand il
> n'y avait que du Smalltalk, la situation était différente.
> Mais notre compréhension a évolué depuis. Ainsi que des
> démandes de robustesse et de la vérification statique des
> types.
C++ n'est pas un progrès, c'est une régression. La référence
en pur OO (héritage simple) c'est Smalltalk, et CLOS pour la
richesse du système OO (incluant héritage multiple).
> Ce qui est très beau, mais il ignore l'essentiel de l'idiome
> consacré. Dans l'idiome consacré, attachWheel ne serait pas
> virtuelle, mais appelerait une fonction privée
> (doAttachWheel) qui elle serait virtuelle. Si on appelle
> attachWheel à travers l'interface Automobile, on doit
> respecter le contrat de Automobile::attachWheel ; il n'y a
> que si on l'appelle à travers l'interface RusticAutomobile
> qu'on a droit d'attacher une roue carrée.
Et donc tu ne peux pas substituer une RusticAutomobile avec
roues carrées à une Automobile, puisque
Automobile::attachWheel refuse les roues carrés. Donc tu ne
peux pas étendre ton programme, donc tu ne peux pas le
réutiliser. Bravo.
Enfin, ceci dit, c'est une difficulté constante avec C++, et
dans avec les discussions que l'on peut avoir à propose de
C++ : C++ n'est pas un langage fini.
Il faut que l'on specifie le type de système objet que l'on
veut, le type de gestion de mémoire que l'on veut, etc, et
qu'on implémente les bibliothèques et templates nécessaires
pour terminer le langage selon ces spécifications, et enfin
que l'on s'abstienne d'utiliser ce qui est imcompatible avec
nos spécifications, mais qui reste dans le langage.
Si je spécifie comme système OO un système similaire à
Smalltalk,
il ne faudra bien sur jamais utiliser de fonctions membre non
virtuelles.
Si je spécifie une gestion de la mémoire à base de smart
pointers, il ne faudra pas utiliser de pointeurs normaux.
Finalement chaque application et chaque bibliothèque écrits en
C++ défini son propre dialect, et risque d'être incompatible
avec les autres. Ça n'aide pas à la réutilisation, mais pour
ce qui nous concerne, ça n'aide pas non plus à la discussion
car manifestement nous parlons de langages et de notions
différentes.
Bref, C++, ce n'est pas un progrès.
On Mar 5, 3:10 pm, (Pascal J. Bourguignon)
wrote:James Kanze writes:On Mar 5, 12:13 pm, (Pascal J. Bourguignon)
wrote:James Kanze writes:On Mar 4, 4:27 pm, (Pascal J. Bourguignon)
wrote:Alexis Guillaume writes:Il y a le pattern "chaine de responsabilité" que tu
peux employer. Ca a l'air d'en être une forme (je ne
peux pas dire avec les éléments que tu donnes).En effet je me renseigne sur ce pattern et ça a l'air
d'être ce que je veux faire. Merci beaucoup ! :-)Oui, enfin, c'est le fonctionnement normal en
programmation objet quand on surcharge une méthode,
d'appeler la méthode de la superclass.Je dirais plutôt que c'est une symptome d'une mauvaise
conception. En général, on ne supplante que des fonctions
virtuelles pures.Pas en POO. L'héritage est un élément essentiel de la POO.Oui, mais l'héritage de quoi ? De l'interface, ou de
l'implémentation ? En C++, on fait la distinction.OO = {héritage, encapsulation, polymorphisme, abstraction}.Si on se contente de définir des interfaces d'un côté, et
de les implémenter d'un autre, on exclu l'héritage, et on
ne programme pas en OO.Qu'est-ce que tu racontes là ? L'implémentation d'une
interface, c'est bien l'héritage.Non. On peut définir des interfaces, et les implémenter dans
des langages qui ne sont pas orientés objets.
Pas de la même façon. (C'est sûr que le concepte d'interface
dépasse largement les bornes de OO. Quelque soit ces bornes
exactement.)C'est vrai qu'il y a un certain temps, au début, quand il
n'y avait que du Smalltalk, la situation était différente.
Mais notre compréhension a évolué depuis. Ainsi que des
démandes de robustesse et de la vérification statique des
types.C++ n'est pas un progrès, c'est une régression. La référence
en pur OO (héritage simple) c'est Smalltalk, et CLOS pour la
richesse du système OO (incluant héritage multiple).
Le concepte d'OO a bien ses origines dans Smalltalk. Depuis, on
a évolué, voir Eiffel, par exemple (qui lui aussi commence à
montrer son âge). (Et évidemment, ce que c'est exactement le OO
dépend bien à qui on démande. Alan Kay en donnerait bien une
autre définition que Bertrand Meyer.)
Enfin, je suis moins intéressé par le nom qu'on donne (ou non)
au concepte. Ce qui m'intéresse, c'est de pouvoir écrire du code
robuste et facilement maintenable. Dans l'ensemble, mes idées
sur le OO coïncide assez avec ce de Bertrand Meyer ; c-à-d que
j'y integre la programmation par contrat.
On Mar 5, 3:10 pm, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
James Kanze <james.ka...@gmail.com> writes:
On Mar 5, 12:13 pm, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
James Kanze <james.ka...@gmail.com> writes:
On Mar 4, 4:27 pm, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
Alexis Guillaume <a...@free.fr> writes:
Il y a le pattern "chaine de responsabilité" que tu
peux employer. Ca a l'air d'en être une forme (je ne
peux pas dire avec les éléments que tu donnes).
En effet je me renseigne sur ce pattern et ça a l'air
d'être ce que je veux faire. Merci beaucoup ! :-)
Oui, enfin, c'est le fonctionnement normal en
programmation objet quand on surcharge une méthode,
d'appeler la méthode de la superclass.
Je dirais plutôt que c'est une symptome d'une mauvaise
conception. En général, on ne supplante que des fonctions
virtuelles pures.
Pas en POO. L'héritage est un élément essentiel de la POO.
Oui, mais l'héritage de quoi ? De l'interface, ou de
l'implémentation ? En C++, on fait la distinction.
OO = {héritage, encapsulation, polymorphisme, abstraction}.
Si on se contente de définir des interfaces d'un côté, et
de les implémenter d'un autre, on exclu l'héritage, et on
ne programme pas en OO.
Qu'est-ce que tu racontes là ? L'implémentation d'une
interface, c'est bien l'héritage.
Non. On peut définir des interfaces, et les implémenter dans
des langages qui ne sont pas orientés objets.
Pas de la même façon. (C'est sûr que le concepte d'interface
dépasse largement les bornes de OO. Quelque soit ces bornes
exactement.)
C'est vrai qu'il y a un certain temps, au début, quand il
n'y avait que du Smalltalk, la situation était différente.
Mais notre compréhension a évolué depuis. Ainsi que des
démandes de robustesse et de la vérification statique des
types.
C++ n'est pas un progrès, c'est une régression. La référence
en pur OO (héritage simple) c'est Smalltalk, et CLOS pour la
richesse du système OO (incluant héritage multiple).
Le concepte d'OO a bien ses origines dans Smalltalk. Depuis, on
a évolué, voir Eiffel, par exemple (qui lui aussi commence à
montrer son âge). (Et évidemment, ce que c'est exactement le OO
dépend bien à qui on démande. Alan Kay en donnerait bien une
autre définition que Bertrand Meyer.)
Enfin, je suis moins intéressé par le nom qu'on donne (ou non)
au concepte. Ce qui m'intéresse, c'est de pouvoir écrire du code
robuste et facilement maintenable. Dans l'ensemble, mes idées
sur le OO coïncide assez avec ce de Bertrand Meyer ; c-à-d que
j'y integre la programmation par contrat.
On Mar 5, 3:10 pm, (Pascal J. Bourguignon)
wrote:James Kanze writes:On Mar 5, 12:13 pm, (Pascal J. Bourguignon)
wrote:James Kanze writes:On Mar 4, 4:27 pm, (Pascal J. Bourguignon)
wrote:Alexis Guillaume writes:Il y a le pattern "chaine de responsabilité" que tu
peux employer. Ca a l'air d'en être une forme (je ne
peux pas dire avec les éléments que tu donnes).En effet je me renseigne sur ce pattern et ça a l'air
d'être ce que je veux faire. Merci beaucoup ! :-)Oui, enfin, c'est le fonctionnement normal en
programmation objet quand on surcharge une méthode,
d'appeler la méthode de la superclass.Je dirais plutôt que c'est une symptome d'une mauvaise
conception. En général, on ne supplante que des fonctions
virtuelles pures.Pas en POO. L'héritage est un élément essentiel de la POO.Oui, mais l'héritage de quoi ? De l'interface, ou de
l'implémentation ? En C++, on fait la distinction.OO = {héritage, encapsulation, polymorphisme, abstraction}.Si on se contente de définir des interfaces d'un côté, et
de les implémenter d'un autre, on exclu l'héritage, et on
ne programme pas en OO.Qu'est-ce que tu racontes là ? L'implémentation d'une
interface, c'est bien l'héritage.Non. On peut définir des interfaces, et les implémenter dans
des langages qui ne sont pas orientés objets.
Pas de la même façon. (C'est sûr que le concepte d'interface
dépasse largement les bornes de OO. Quelque soit ces bornes
exactement.)C'est vrai qu'il y a un certain temps, au début, quand il
n'y avait que du Smalltalk, la situation était différente.
Mais notre compréhension a évolué depuis. Ainsi que des
démandes de robustesse et de la vérification statique des
types.C++ n'est pas un progrès, c'est une régression. La référence
en pur OO (héritage simple) c'est Smalltalk, et CLOS pour la
richesse du système OO (incluant héritage multiple).
Le concepte d'OO a bien ses origines dans Smalltalk. Depuis, on
a évolué, voir Eiffel, par exemple (qui lui aussi commence à
montrer son âge). (Et évidemment, ce que c'est exactement le OO
dépend bien à qui on démande. Alan Kay en donnerait bien une
autre définition que Bertrand Meyer.)
Enfin, je suis moins intéressé par le nom qu'on donne (ou non)
au concepte. Ce qui m'intéresse, c'est de pouvoir écrire du code
robuste et facilement maintenable. Dans l'ensemble, mes idées
sur le OO coïncide assez avec ce de Bertrand Meyer ; c-à-d que
j'y integre la programmation par contrat.
Le concepte d'OO a bien ses origines dans Smalltalk. Depuis, on
a évolué, voir Eiffel, par exemple (qui lui aussi commence à
montrer son âge). (Et évidemment, ce que c'est exactement le OO
dépend bien à qui on démande. Alan Kay en donnerait bien une
autre définition que Bertrand Meyer.)
La programmation objet n'a pas ses origines dans Smalltalk mais dans
SIMULA, et ce, dès 1962 !
Voir, par exemple :
http://heim.ifi.uio.no/~kristen/FORSKNINGSDOK_MAPPE/F_OO_start.html
Enfin, je suis moins intéressé par le nom qu'on donne (ou non)
au concepte. Ce qui m'intéresse, c'est de pouvoir écrire du code
robuste et facilement maintenable. Dans l'ensemble, mes idées
sur le OO coïncide assez avec ce de Bertrand Meyer ; c-à-d que
j'y integre la programmation par contrat.
Très bonne remarque. Ce qu'a écrit Bertrand Meyer sur l'objet est ce
qu'il y a de mieux, à mon avis.
Le concepte d'OO a bien ses origines dans Smalltalk. Depuis, on
a évolué, voir Eiffel, par exemple (qui lui aussi commence à
montrer son âge). (Et évidemment, ce que c'est exactement le OO
dépend bien à qui on démande. Alan Kay en donnerait bien une
autre définition que Bertrand Meyer.)
La programmation objet n'a pas ses origines dans Smalltalk mais dans
SIMULA, et ce, dès 1962 !
Voir, par exemple :
http://heim.ifi.uio.no/~kristen/FORSKNINGSDOK_MAPPE/F_OO_start.html
Enfin, je suis moins intéressé par le nom qu'on donne (ou non)
au concepte. Ce qui m'intéresse, c'est de pouvoir écrire du code
robuste et facilement maintenable. Dans l'ensemble, mes idées
sur le OO coïncide assez avec ce de Bertrand Meyer ; c-à-d que
j'y integre la programmation par contrat.
Très bonne remarque. Ce qu'a écrit Bertrand Meyer sur l'objet est ce
qu'il y a de mieux, à mon avis.
Le concepte d'OO a bien ses origines dans Smalltalk. Depuis, on
a évolué, voir Eiffel, par exemple (qui lui aussi commence à
montrer son âge). (Et évidemment, ce que c'est exactement le OO
dépend bien à qui on démande. Alan Kay en donnerait bien une
autre définition que Bertrand Meyer.)
La programmation objet n'a pas ses origines dans Smalltalk mais dans
SIMULA, et ce, dès 1962 !
Voir, par exemple :
http://heim.ifi.uio.no/~kristen/FORSKNINGSDOK_MAPPE/F_OO_start.html
Enfin, je suis moins intéressé par le nom qu'on donne (ou non)
au concepte. Ce qui m'intéresse, c'est de pouvoir écrire du code
robuste et facilement maintenable. Dans l'ensemble, mes idées
sur le OO coïncide assez avec ce de Bertrand Meyer ; c-à-d que
j'y integre la programmation par contrat.
Très bonne remarque. Ce qu'a écrit Bertrand Meyer sur l'objet est ce
qu'il y a de mieux, à mon avis.
James Kanze a écrit :
> Le concepte d'OO a bien ses origines dans Smalltalk. Depuis,
> on a évolué, voir Eiffel, par exemple (qui lui aussi
> commence à montrer son âge). (Et évidemment, ce que c'est
> exactement le OO dépend bien à qui on démande. Alan Kay en
> donnerait bien une autre définition que Bertrand Meyer.)
La programmation objet n'a pas ses origines dans Smalltalk
mais dans SIMULA, et ce, dès 1962 ! Voir, par exemple
:http://heim.ifi.uio.no/~kristen/FORSKNINGSDOK_MAPPE/F_OO_start.html
James Kanze a écrit :
> Le concepte d'OO a bien ses origines dans Smalltalk. Depuis,
> on a évolué, voir Eiffel, par exemple (qui lui aussi
> commence à montrer son âge). (Et évidemment, ce que c'est
> exactement le OO dépend bien à qui on démande. Alan Kay en
> donnerait bien une autre définition que Bertrand Meyer.)
La programmation objet n'a pas ses origines dans Smalltalk
mais dans SIMULA, et ce, dès 1962 ! Voir, par exemple
:http://heim.ifi.uio.no/~kristen/FORSKNINGSDOK_MAPPE/F_OO_start.html
James Kanze a écrit :
> Le concepte d'OO a bien ses origines dans Smalltalk. Depuis,
> on a évolué, voir Eiffel, par exemple (qui lui aussi
> commence à montrer son âge). (Et évidemment, ce que c'est
> exactement le OO dépend bien à qui on démande. Alan Kay en
> donnerait bien une autre définition que Bertrand Meyer.)
La programmation objet n'a pas ses origines dans Smalltalk
mais dans SIMULA, et ce, dès 1962 ! Voir, par exemple
:http://heim.ifi.uio.no/~kristen/FORSKNINGSDOK_MAPPE/F_OO_start.html
Mais est-ce qu'ils l'ont appelé OO ? J'avais bien connaissance
de SIMULA, et sa rôle, mais j'ai toujours cru que c'était Alan
Kay qui a créé l'expression « object oriented » pour Smalltalk.
Il me semble que Simula utilisait le typage statique, comme C++,
Eiffel, Java..., et non le typage dynamique de Smalltalk.
Mais est-ce qu'ils l'ont appelé OO ? J'avais bien connaissance
de SIMULA, et sa rôle, mais j'ai toujours cru que c'était Alan
Kay qui a créé l'expression « object oriented » pour Smalltalk.
Il me semble que Simula utilisait le typage statique, comme C++,
Eiffel, Java..., et non le typage dynamique de Smalltalk.
Mais est-ce qu'ils l'ont appelé OO ? J'avais bien connaissance
de SIMULA, et sa rôle, mais j'ai toujours cru que c'était Alan
Kay qui a créé l'expression « object oriented » pour Smalltalk.
Il me semble que Simula utilisait le typage statique, comme C++,
Eiffel, Java..., et non le typage dynamique de Smalltalk.