
(
Fonte )
Eu quero contribuir com meus "5 centavos" para a disputa incessante entre oponentes e apoiadores da OLP. Em publicações recentes sobre esse assunto, pode-se observar uma manchete brilhantemente negativa:
"Quanto mais rápido você esquecer OOP, melhor para você e seus programas" , mais pacífico
"Pare de discutir sobre programação funcional e OOP" e a moderada positiva
"Programação orientada a objetos em linguagens gráficas" .
Mas a ideia deste artigo me levou a
comentar outro artigo:
Um ótimo exemplo para OOP é simplesmente horrível. O sistema de características implementa perfeitamente o seu caso e não exige absolutamente nenhuma resposta à Pergunta Existencial da Programação de Objetos - “O que é um Objeto?”. [...] Esqueça o POO, foi uma metáfora de sucesso para a GUI, que eles tentaram elevar ao status de religião.
Na minha opinião, este é um comentário típico muito revelador, em que a abordagem OO não é criticada (até o POO na GUI é devido), mas os mitos que surgiram em torno do POO. Assim, na minha opinião, todos estão certos: ambos os apoiadores quando apontam a conveniência do OOP, por exemplo, ao programar a GUI, e os oponentes quando estão indignados em aumentar o OOP no status de uma bala de prata, uma arma absoluta.
Deve-se notar imediatamente que cada PL de OO tem sua própria abordagem de OO, às vezes muito, às vezes não muito diferente de outras abordagens de OO. Vou prosseguir com a abordagem simples e moderada do OO Pascal, que já foi estabelecida no Turbo Pascal 5.5 e finalmente tomou forma no Delphi 7 (podemos observar as linguagens conceituais de outros fabricantes, por exemplo, Think Pascal para MacOS). Existem princípios fundamentais nessa abordagem OO: encapsulamento, herança (simples), polimorfismo; e limitações significativas: por exemplo, não há essencialmente
herança múltipla muito complicada.
Como já escrevi no
comentário ao artigo mencionado acima, a transição do clássico Pascal para o OO Pascal parecia, na minha opinião, muito clara e justificada:
O encapsulamento mais simples já está nos registros. Além disso, o conceito de herança vem em exemplos simples:
type
TCoord = record //
x, y : integer
end;
TRect = record //
leftTop, RBot : TCoord;
end;
«record» «class» ( ), «» .
— , , GUI. « „ ?“». — , — — . . , , ! ( ). — , , . — . , , , , , — , . , . , — . , . ? — : . , . .:
.., .., .. . .
. ., . . 3-, . .: , 2007, . 3 , , . , . . , . : , . , - ;)
,
,
,
., , , . , . — . — , , :
[...] , .. IDE GUI, .
, , , . : « — ». , - , , , . : - . , . (
, , : , , , .) — , , , , .