Mitos e realidade de POO


( 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, .

, , , . : « — ». , - , , , . : - . , . (, , : , , , .) — , , , , .

Source: https://habr.com/ru/post/pt453836/


All Articles