
(
Fuente )
Quiero contribuir con mis "5 centavos" a la incesante disputa entre opositores y simpatizantes de la OLP. A partir de publicaciones recientes sobre este tema, se puede observar un titular claramente negativo:
"Cuanto más rápido se olvide de OOP, mejor para usted y sus programas" , más pacífico
"Deje de discutir sobre programación funcional y OOP" y la moderadamente positiva
"Programación orientada a objetos en lenguajes gráficos" .
Pero la idea de este artículo me llevó a
comentar sobre otro artículo:
Un gran ejemplo para OOP es simplemente horrible. El sistema de rasgos implementa perfectamente su caso, y no requiere en absoluto responder la pregunta existencial de la programación de objetos: "¿Qué es un objeto?". [...] Olvídate de la OOP, fue una metáfora exitosa de la GUI, que intentaron elevar al estatus de religión.
En mi opinión, este es un comentario típico muy revelador, donde el enfoque de OO no es criticado (incluso se da debido a OOP en la GUI), pero los mitos que surgieron alrededor de OOP. Por lo tanto, en mi opinión, todos tienen razón: tanto los partidarios cuando señalan la conveniencia de OOP, por ejemplo, cuando programan la GUI, como los oponentes cuando están indignados por aumentar OOP en el estado de una bala de plata, un arma absoluta.
Debe notarse de inmediato que en cada OO PL hay un enfoque de OO diferente, a veces muy, a veces no muy diferente de otros enfoques de OO. Procederé del enfoque moderado y simple de OO Pascal, que ya se estableció en Turbo Pascal 5.5 y finalmente tomó forma para Delphi 7 (podemos observar los lenguajes conceptuales de otros fabricantes, por ejemplo, Think Pascal para MacOS). Hay principios fundamentales en este enfoque OO: encapsulación, herencia (simple), polimorfismo; y limitaciones significativas: por ejemplo, esencialmente no existe una
herencia múltiple muy complicada.
Como ya escribí en el
comentario al artículo mencionado anteriormente, la transición de Pascal clásico a OO Pascal parecía, en mi opinión, muy clara y justificada:
La encapsulación más simple ya está en los registros. Además, el concepto de herencia viene en ejemplos tan simples:
type
TCoord = record //
x, y : integer
end;
TRect = record //
leftTop, RBot : TCoord;
end;
«record» «class» ( ), «» .
— , , GUI. « „ ?“». — , — — . . , , ! ( ). — , , . — . , , , , , — , . , . , — . , . ? — : . , . .:
.., .., .. . .
. ., . . 3-, . .: , 2007, . 3 , , . , . . , . : , . , - ;)
,
,
,
., , , . , . — . — , , :
[...] , .. IDE GUI, .
, , , . : « — ». , - , , , . : - . , . (
, , : , , , .) — , , , , .