
(
Source )
Je veux contribuer mes «5 cents» au conflit incessant entre opposants et partisans de l'OLP. Des publications récentes sur ce sujet, on peut noter un titre très négatif
"Plus vite vous oubliez la POO, mieux c'est pour vous et vos programmes" , plus pacifique
"Arrêtez de discuter de la programmation fonctionnelle et de la POO" et modérément positif
"Programmation orientée objet dans les langages graphiques" .
Mais l'idĂ©e de cet article m'a incitĂ© Ă
commenter un autre article:
Un excellent exemple pour la POO est tout simplement horrible. Le système de traits implémente parfaitement votre cas, et ne nécessite pas du tout de répondre à la question existentielle de la programmation d'objets - "Qu'est-ce qu'un objet?". [...] Oubliez la POO, c'était une métaphore réussie pour l'interface graphique, qu'ils ont essayé d'élever au statut de religion.
À mon avis, il s'agit d'un commentaire typique très révélateur, où l'approche OO n'est pas critiquée (même OOP dans l'interface graphique est due), mais les mythes qui ont surgi autour de OOP. Ainsi, à mon avis, tout le monde a raison: à la fois les partisans quand ils soulignent la commodité de la POO, par exemple, lors de la programmation de l'interface graphique, et les adversaires quand ils sont indignés d'élever la POO dans le statut d'une balle d'argent, une arme absolue.
Il convient de noter tout de suite que chaque OO PL a sa propre approche OO, parfois très, parfois pas très différente des autres approches OO. Je partirai de l'approche modérée et simple d'OO Pascal, déjà prévue dans Turbo Pascal 5.5 et qui a finalement pris forme pour Delphi 7 (on peut noter les langages conceptuels d'autres constructeurs, par exemple Think Pascal pour MacOS). Il existe des principes fondamentaux dans cette approche OO: encapsulation, héritage (simple), polymorphisme; et des limitations importantes: par exemple, il n'y a essentiellement pas d'
héritage multiple très compliqué.
Comme je l'ai déjà écrit dans le
commentaire de l'article mentionné ci-dessus, le passage du Pascal classique à l'OO Pascal m'a paru très clair et justifié:
L'encapsulation la plus simple se trouve déjà dans les enregistrements. De plus, le concept d'héritage se présente dans des exemples aussi simples:
type
TCoord = record //
x, y : integer
end;
TRect = record //
leftTop, RBot : TCoord;
end;
«record» «class» ( ), «» .
— , , GUI. « „ ?“». — , — — . . , , ! ( ). — , , . — . , , , , , — , . , . , — . , . ? — : . , . .:
.., .., .. . .
. ., . . 3-, . .: , 2007, . 3 , , . , . . , . : , . , - ;)
,
,
,
., , , . , . — . — , , :
[...] , .. IDE GUI, .
, , , . : « — ». , - , , , . : - . , . (
, , : , , , .) — , , , , .