Diría que el blog de Noel Llopis es probablemente la mejor instrucción para una combinación de programación orientada a objetos y diseño orientado a datos. Es uno de los creadores del término DOD, es un fuerte programador de C ++ y ha escrito mucho sobre su estilo y cómo aprovecha las características OO de C ++.
Supongo que si tuviera que mencionar los elementos clave para combinarlos, según Noel:
- Utilice POD y funciones que no sean miembros ni amigos tanto como sea posible. Las funciones que no son miembros ni amigos mejoran la encapsulación y son una parte clave de la orientación de datos porque mantienen los datos, datos.
- Evite almacenar el estado "temporal" en sus objetos. El estado temporal obstruye sus datos. Si necesita almacenar en caché algo (por ejemplo, para el rendimiento), entonces eso pertenece a una nueva clase, con funciones que no son miembros y que no son amigos que vinculan los dos tipos, no una relación is-a ni has-a.
- Evite los objetos que pueden estar en el estado A o en el estado B. Prefiera cambiar entre dos objetos, uno de los cuales es A y uno de ellos es B.
- Evite el polimorfismo, evite funciones virtuales, evite plantillas, evite cualquier cosa que haga que sus datos tengan la apariencia sintáctica de similitud en lugar de similitud real .
El otro gran nombre en la propaganda del Departamento de Defensa en este momento es Mike Acton de Insomniac, pero leyendo lo que ha escrito, diría que no es realmente pro-OO (o anti-OO, siempre y cuando todavía esté orientado a datos).