Pages Menu
Categories Menu

Posted by on May 20, 2013 in General | 8 comments

Lo mejor que puedes leer para aprender diseño orientado a objetos (mi top 3 de libros)

Ya os he comentado alguna vez de mi época leyendo todo lo que encontraba sobre diseño software, llevado a ello por razones laborales, que coincidieron mientras hacía la tesis. Como por aquellos tiempos el blog no era tan frecuentado, ni siquiera por mi, la gran parte de la información que recopilé no está en estas páginas.

Pero de vez en cuando me encuentro por algún disco duro algún resumen de algún libro, alguna cita, etc. Y hace poco encontré resúmenes de libros sobre diseño OO, de los que he querido extraer los que en mi opinión son los 3 mejores libros que puedes leer para aprender diseño orientado a objetos.

1 – Object-Oriented Software Construction de Meyer (aquí el enlace al libro en Amazon)

Si sólo tienes tiempo para leer un libro de los que aquí te recomiendo… léete este. Y si te propones leer los tres que yo te recomiendo… lee este primero. En serio. Eso sí, son 1250 páginas, así que te da para varios días en la playa, ahora que viene el buen tiempo. También te aviso que hay partes difíciles, a leer varias veces y dejarlas sopesar en la mente.

Es un libro que te cuenta las bases de la OO, vamos lo que a más gente se le olvida. Y lo cuenta muy bien, muy sólidamente. ¿Qué es la herencia bien entendida? ¿Por qué se aplica mal? ¿Para qué se inventó? ¿Por qué ocultar información interna de un objeto?, ¿Polimorfismo?, etc.

Yo creo, es sólo mi opinión, que no se ha escrito nada comparable “la Meyer” en lo que refiere a OO.

2- Design Patterns de Gamma (aquí el enlace al libro en Amazon)

Un clásico. Se han hecho 32 ediciones del libro. Libro que yo no leería sin tener muy solidas las bases de la OO, especialmente el polimorfismo, porque algunas partes son complicadas de entender.

El libro que puso de moda los patrones, buenas soluciones a problemas típicos, que luego se aplicarían a todo (patrones de BBDD, de arquitectura, requisitos, etc.). Y en él vas a encontrar eso, buenos diseños OO que solucionan problemas típicos.

Originariamente, el libro contiene los ejemplos en C++, pero si te ves flojo en C++ puedes encontrar decenas de adaptaciones de los patrones a Java y otros tantos lenguajes.

Te recomiendo además que mientras lees el libro imprimas la implementación del patrón, el código de las clases, y vayas siguiéndolo.

El autor principal es Gamma (el líder del desarrollo de Eclipse y del JUnit con Kent Beck), los coautores Helm, Johnson y Vlissides.

3 – Object-Oriented Design Heuristics de Riel (aquí el enlace al libro en Amazon)

Mucho menos conocido y popular que los anteriores, pero a mí me pareció una joya. Son 60 heurísticas, consejos, buenas prácticas, a tener en la cabeza a la hora de diseñar (o evaluar un diseño), como que:

– Debería ser ilegal para una clase hija sobre-escribir un método de la clase padre con otro método que no hace nada

– Minimiza el número de mensajes enviados entre una clase y sus colaboradoras

– Todos los datos en una clase base deberían ser privados, no protegidos.

– Datos relacionados deben estar en un único lugar.

– Elimina clases irrelevantes.

– Una clase debe conocer lo que contiene, pero no quién la contiene.

– La herencia debería ser usada solo para modelar jerarquías de especialización.

– …

Javier Garzás

Javier Garzás

Ph.D. en informática, Postdoctorado en la Carnegie Mellon (EE.UU) e Ingeniero en Informática.

Primera vez que me tocó hacer una gestión Ágil en una empresa... año 2001. Desde entonces he trabajado en, o para, más de 90. Y he formado a más de 2000 alumnos.

También soy profe de la Universidad Rey Juan Carlos.
Javier Garzás

8 Comments

  1. Hola, conoces libros en español sobre el tema, y si en alguno de ellos, hay algún caso práctico para ir siguiendo?

    Saludos y Gracias

    • En español poco, quizás el único relacionado sería el «UML Destilado»

  2. Gracias, acabo de comprar «la Meyer», a ver que tal…

  3. ¿Puede alguien opinar especificamente acerca de la edicion española del de Meyer? ¿Fueron los traductores tan rigurosos como el propio Meyer :D?

    Aún no decido si buscar la edición española (algo dificil) o ir a por la original inglesa: no me hago problemas con tal idioma, pero con tal bestia de libro cualquier ayuda vale oro, pero si la traducción también tiene sus mañas… uff…

  4. Hola Carlos:

    Yo lo tengo en inglés y por lo que recuerdo te puedo decir que es un nivel inglés muy sencillo en cuanto a estructuras y vocabulario.
    Respecto al libro, si estás estudiando te animo a leertelo. Si ya estás en el mundo profesional y no tienes mucho tiempo libre creo que hay libros más prácticos. Yo me lo leí en mi 3er o 4o año de carrera y me alegro mucho de haberlo leido pero hoy en día considero que hay libros más importantes, por ejemplo el Clean Code de Robert C. Martin.

    Saludos.

    • Le he echado un ojeada a los capitulos de muestra disponibles en la antigua original web del libro, y sí, parece un inglés facil de tratar… iré por ella, gracias.

  5. En donde puedo conseguir el libro de Meyer en versión española.

    Gracias.

Post a Reply

Tu dirección de correo electrónico no será publicada.

Share This