¿Cuáles son algunos recursos para ilustrar un diseño de programa bueno (y de tamaño decente) con varias clases, preferiblemente en Java?

Oh no.

Por favor no hagas eso. No piense que “buen diseño de programa” es igual a “clases”.

La programación orientada a objetos (OOP, por sus siglas en inglés), que introdujo clases hace mucho tiempo (parece que ya eran cientos de años), no es la única forma de hacer las cosas.

Lo que es peor, todos los lenguajes listos para OOP interpretan OOP de manera diferente, mezclando conceptos, permitiendo y rechazando la herencia múltiple, presentando una sobrecarga del método como una característica, mientras que en realidad es un error que puede resolverse permitiendo argumentos con valores predeterminados. Saber cómo se implementa OOP en Java no significa que podrá cambiar fácilmente a Python o C ++ o Smalltalk (¿alguien lo usa ahora?).

En algunos lugares, OOP está estrictamente prohibido! Al igual que la asignación de la base de datos en objetos con varias capas que separan su código de la base de datos, simplemente escuche esta cadena de clases para leer simplemente desde la base de datos: dominio, entidad, DAO, DBSpecificDAOImplementaion, repositorio, inyector. ¡Ahora trata de asignar una consulta compleja a esta locura! Wow, SQL no era tan malo después de todo, ¿verdad? 🙂

No digo que no debas aprender OOP. Si todo lo que harías en tu carrera de programación es implementar la jerarquía del reino animal o las marcas / piezas de automóviles, entonces, claro, ¡OOP es una característica de muerte para ti! Pero no, aprenda la POO de todos modos, de lo contrario, ¿cómo entenderías que no cabe en ningún otro lugar fuera de los ejemplos de libros de texto?

¿Cuál es la alternativa a la POO?

Programación funcional. Objetos inmutables. Mapa reducido. Expresiones generadoras. Async IO. Algoritmos y estructuras de datos. ML. IoT. AI. Esas son cosas buenas para empezar. Y es (en su mayoría) libre de OOP.

Si eres perezoso / demasiado joven para hacer eso, comienza con los rompecabezas. Realmente entrenan tu cerebro y te entretienen al mismo tiempo, revisa este por ejemplo:

Recursos en OOP + Java?

¿Aún no estás convencido de que la POO sea la raíz de todo mal (o al menos en el segundo lugar después de la Optimización prematura)? Entonces revisa este curso de Coursera. En general, los cursos combinados con algo de práctica son el mejor combo para aprender algo.

O abandone este curso y siga adelante e intente crear su aplicación Java. Encontrarás muchos problemas, pero los superarás, y aprenderás al hacerlo.

Algunos recursos más: uno de los que debe leerse en la cuadrilla de cuatro personas: Amazon.com: Patrones de diseño: Elementos de software orientado a objetos reutilizables (Adobe Reader) Libro electrónico: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Grady Booch : Tienda Kindle

¡Feliz codificación!