Quando sono arrivato per la prima volta a OOP (inizialmente in Java e poi in C ++) dopo anni di lavoro in C e VB, è stato fantastico. L'idea di estendere il comportamento esistente e di operare genericamente su cose di tipi correlati era molto allettante, e ho visto quasi immediatamente perché volevo questo. Cioè, la mia motivazione per OOP era sottotipizzare il polimorfismo e l'ereditarietà.
Avanziamo rapidamente fino ad oggi, e uso regolarmente soluzioni di polimorfismo ad hoc (tipografie e digitazioni di anatre) che risolvono i problemi sottotitolati che inizialmente mi interessavano in modi molto eleganti. Ho accesso al polimorfismo parametrico nella maggior parte dei miei ambienti. Programmare genericamente con questi diversi tipi di polimorfismo mi dà tutta l'estensibilità e riutilizzo dell'eredità mai e ancora.
Quindi, la mia domanda è: perché dovrei ancora preoccuparmi di OOP? Quali usi di OOP hai trovato che sono davvero grandi oltre all'ereditarietà e alla sottotipizzazione?
Inoltre, "perché è popolare e dovrai usarlo" non conta. Conosco già abbastanza bene OOP e lo utilizzo nel mio lavoro diurno perché viene utilizzato dal codice base. Per un nuovo progetto, o per me stesso, è quello che sto chiedendo.