El TAPCP, es para aprender algoritmos, a nivel de super detalle en ensamblador, la mayoría de los algoritmos ya vienen implementados por defecto en la mayoría de lenguajes de alto nivel. tú lo que quieres es aprender a organizar tu código.
Primero y antes de nada creo que deberías aprender sobre patrones arquitectónicos (Architectural patterns) que digamos van a dar la estructura a tu aplicación. Según lo que estes haciendo hay que elegir entre uno y otro, por lo general, un tipo de arquitectura muy utilizado es de 3 capas (3-tier layer) compuesta de una capa de datos, una capa de lógica de negocio y una capa de presentación:
Derivados de esta arquitectura sirven para aplicaciones de escritorio o aplicaciones web (MVC, etc.)
Si por ejemplo, quieres hacer un chat, tendrás que elegir una arquitectura cliente-servidor separando el código entre uno y otro, aunque compartirán funcionalidad común, y tanto el cliente como el servidor utilizarán una arquitectura de 3 capas.
Un framework es una librería que además tiene incluido por defecto, uno o varios patrones arquitectónico. Pensemos por ejemplo, en Express de Node.js o Django de Python, ambos son frameworks web especificos, que te ayudan a estructurar bien el código.
Una vez que ya tienes planificado los patrones arquitectónicos que vas a utilizar, ya te vas a lo específico, y como ya te han comentado arriba, utilizando patrones de diseño (Design patterns), esto son abstracciones de mejores prácticas ya utilizadas anteriormente con éxito por muchas personas.
Supongamos que tenemos una aplicación gráfica de escritorio estándar con conexión a una base de datos, utilizaría arquitectura de 3 capas y para cada capa podría utilizar los siguientes patrones (aunque podrían ser otros):
Patrones de diseño para capa de datos:
-
Modelos: datos estructurados que se corresponderian con la base de datos
-
ORM: abstracción entre el modelo de la aplicación y la base de datos.
-
DAO: Clase de ayuda (fachada) que facilita la manipulación entre los modelos y el ORM
Patrones de diseño para capa de lógica de negocio:
-
Controller/Fachada: representa las acciones del usuario, 1 método por cada acción de usuario y estos métodos pueden ir en 1 o más controladores. Ejemplo: un usuario hace click en guardar cambios del contenido de una ventana, un método de un se encargaría de su tratamiento que enviaría los datos del modelo cambiados al DAO.
Patrones de diseño para capa de presentación:
Espero que con esto te halla podido ayudar .