Apuntes: "Principios de Diseño Orientado a Objetos"

Volviendo a mis inicios, retomaremos el camino de los artículos que buscan reforzar determinados conocimientos o conceptos que en otras arquitecturas o lenguajes son tan comunes pero que muchas veces son desconocidos en el mundo PHP.

Teniendo en cuenta que PHP5 es una realidad que nos permite pasar a desarrollos más elaborados, con una Orientación a Objetos más robusta, es fundamental saber que existen "principios de diseño" que nos marcan el rumbo.

Aquí mis apuntes sobre estos temas (que en un futuro espero extenderme en detalle):

Principios de Diseño Orientado a Objetos
  1. SRP - Single Responsibility Principle (Principio de Responsabilidad Única)
  2. OCP - Open/Closed Principle (Principio Abierto / Cerrado)
  3. LSP - Liskov Substitution Principle (Principio de Sustitución de Liskov)
  4. DIP - Dependency Inversion Principle (Principio de Inversión de Dependencias)
  5. ISP - Interface Segregation Principle (Principio de Segregación de Interfaces)
Algunos apuntes encontrados en Wikipedia (inglés)
http://en.wikipedia.org/wiki/Single_responsibility_principle
http://en.wikipedia.org/wiki/Open/closed_principle
http://en.wikipedia.org/wiki/Liskov_substitution_principle

1. SRP - Single Responsibility Principle (Principio de Responsabilidad Única)


Enunciado formal: "Una clase debería tener solo una razón para cambiar"

2. OCP - Open/Closed Principle (Principio Abierto / Cerrado)


Enunciado formal: "Entidades de Software (clases, módulos, funciones, etc) deberían ser abiertas para la extensión y cerradas para la modificación"

3. LSP - Liskov Substitution Principle (Principio de Sustitución de Liskov)


Enunciado formal: "Subtipos deben ser sustituibles por sus clases bases"

4. DIP - Dependency Inversion Principle (Principio de Inversión de Dependencias)


Enunciado formal: "los clientes tienden a ser propietarios de las interfaces y aquellos que ofrecen los servicios las implementan"

5. ISP - Interface Segregation Principle (Principio de Segregación de Interfaces)

Enunciado formal: "Clientes no deberían depender de métodos que no utilizan"

Taller: concluida la segunda etapa - Proyecto "Clases Bases"

Cuando empezamos este "taller piloto" claramente no sabía cómo iba resultar ni todos los problemas que iban a surgir... aunque siempre supe por donde debía transitar y que sería evidente que cambiaría constantemente para ir ajustándome a los acontecimientos.

Esta segunda etapa estuvo concentrada en el trabajo en equipo, con teamleaders a cargo de pequeños grupos de desarrolladores y con un especial aditamento: la falta de experiencia en gestión de los líderes como a su vez en desarrollo POO de los dirigidos, y para peor, todos "a distancia".

El proceso fue lento y existieron muchos problemas que tuvimos que ir solucionando, pero finalmente llegamos al cometido: afirmar conocimientos a los novatos sobre los temas de programación orientada a objetos usando PHP5.

Todos sacamos -directa o indirectamente- conclusiones y adquirimos experiencia en muchos temas: trabajo a distancia, educación a distancia, gestión a distancia, colaboración, versionado, comunicación, herramientas colaborativas, etc.

Como "producto" de ese proceso tenemos un proyecto libre llamado "Clases Bases", que obviamente están invitados a probarlo, estudiarlo, preguntar, criticar y hasta continuar desarrollando.

Próximamente comentaré la tercer y última etapa del taller (serán los últimos 3 meses del mismo): desarrollar un proyecto libre todos los equipos juntos y usando Zend Framework.


¡Felicitaciones a todos! ¡Excelente trabajo!

A estar atentos de las novedades ;-)

Por fin: campañas para migrar definitivamente a PHP5

Hace un tiempo ya que critico nuestra propia actitud pasiva cuando argumentamos que no usamos PHP5 porque en la mayoría de los servidores de hosting solo tienen instalado PHP4.

Hay que entender que siempre "somos parte del problema o parte de la solución", por consiguiente, si quieres que la situación cambie, no consumas sus productos, quéjate, solicita cambios, nuevas características, has proselitismo, crea una "causa"... como sucedió ahora.

"Debemos pasar de los dichos a los hechos

De la misma forma, creo que nos hace falta tener más
"sentimiento de comunidad", como sucede habitualmente -hasta de forma exagerada- en el mundo GNU/Linux. No es posible que nos sigamos quejando que los proveedores de hosting siguen usando PHP4. Deberíamos hacer campañas para promover la migración a las nuevas versiones de PHP, pero fundamentalmente, incorporar en nuestros desarrollos las características avanzadas del lenguaje, e invitar a usarlo como si fuera una arquitectura, actualizar a nuestro equipo de desarrolladores, visitar empresas, universidades, etc."

Artículo escrito en Nov / 2006 - "debemos profesionalizarnos"


No me canso de hablar del tema, de lo importante que es migrar a la versión 5 del lenguaje, pero fundamentalmente "migrar" la mentalidad de los programadores clásicos de PHP hacia niveles similares de madurez que cuentan los desarrolladores en arquitecturas como Java o .Net (no sirve si cambiamos de lenguaje pero seguimos programando igual, seguir rechazando la programación orientada a objetos... ya ni se discute que sirve).

Hace pocos días parece que el mundo se puso de acuerdo y han surgido dos noticias muy importantes. Primero, la creación de un movimiento que empuja la migración definitiva hacia PHP5 (exponiendo todas sus ventajas, buscando el apoyo de empresas, colocando una fecha límite, etc) y segundo, la noticia oficial de que PHP4 dejará de ser desarrollado (este será el último año).

Contundente la frase final del anuncio: "Por favor, dedica lo que queda del año para hacer que tus aplicaciones puedan funcionar sobre PHP5"

Claro, si PHP5 hace varios años que está disponible como una versión estable y ahora se anuncia que en el correr del fin de este año -principios del próximo- estaría disponible la primer versión 6 (PHP6)... ¿como puede ser que todavía se maneje la excusa de usar PHP4 porque "es más estable, seguro y probado"?


Espero que cuando solo exista PHP5 y PHP6 empiece a usarse, la comunidad no cometa el mismo error con el cambio a PHP7.

Debemos madurar, lo único constante es el cambio (y hay que asumir riesgos).



PD: hace pocas semanas también fue lanzado Zend Framework 1.0. Me pregunto, tú, desarrollador profesional de PHP... lo empezaste a probar? Donde quieres estar hoy? y mañana?

Entradas populares