LIBRO "POO para PHP5" / actualización abril 2009 - Page 1 - Primeros capítulos de muestra del libro escritor por Enrique Place de PHPSenior. Abril 2009 / Versión 1.8 PROGRAMACIÓN ORIENTADA A OBJETOS PARA PHP5 "Aprende de forma simple y definitiva POO para PHP5, deja de ser Programador de Páginas Dinámicas y empieza a convertirte en Desarrollador de Sistemas" por Enrique Place Usuario(xxx): Enrique Place 2 de 89 Programación Orientada a Objetos en PHP5 edición : abril 2009 / usuario: Enrique Place SURFORCE / FORMACIÓN www.surforce.com "LIBRO DE EJEMPLO" (CAPÍTULOS INCOMPLETOS) SURFORCE | mail: info@surforce.com | blog: http://www.surforce.com/blog/| web: surforce.com Licencia: http://creativecommons.org/licenses/by-nc/3.0/ 3 de 89 Programación Orientada a Objetos en PHP5 edición : abril 2009 / usuario: Enrique Place SURFORCE / FORMACIÓN www.surforce.com Versiones del documento Versión 1 1.1 1.2 1.3 Fecha 1/01/2009 15/01/2009 31/01/2009 01/02/2009 Descripción Primera versión Segunda revisión, recopilación de ejemplos 15 días de revisión de contenidos Se separa como un capítulo el tema “Paquetes UML” y se agrega un capítulo nuevo sobre “Excepciones” Agrega capítulo “Debemos Profesionalizarnos” (post del blog) Error: corrección capítulo 8, diseño 2, cambia echo por retorno en clase Persona Agrega nota de autor recalcando el tema de los estándares de codificación definidos por Zend y que todos los ejemplos de este libro lo seguirán Enumera los Principios que deberíamos seguir los desarrolladores Correcciones en fuentes, espacios, estética Autor enriqueplace enriqueplace enriqueplace enriqueplace 1.4 3/02/2009 enriqueplace 1.5 4/02/2009 andresfguzman (corrector) enriqueplace 1.6 6/2/2009 1.7 6/2/2009 enriqueplace 1.7.1 1.7.2 10/2/2009 28/2/2009 Dennis Tobar (lector) Cap.11: Agrega explicación sobre auto- Colabora: relación con Persona (cuadro de color verde) Antonio L. Gil (lector) Cap. 10: Agrega ejemplo y explicación extra en el caso de "qué hacer con las relaciones cíclicas / bidireccionales" Cap. 14: corrección en la redacción del resumen final Cap.11: Agrega explicación de "Confusión común" con respecto a confundir bidireccional con cíclica (cuadro "verde") Colabora: Eduardo de la Torre (lector) Colabora: Raquel Diaz (lector) enriqueplace 1.7.3 10/3/2009 1.7.4 22/3/2009 1.7.5 24/3/2009 SURFORCE | mail: info@surforce.com | blog: http://www.surforce.com/blog/| web: surforce.com Licencia: http://creativecommons.org/licenses/by-nc/3.0/ 4 de 89 Programación Orientada a Objetos en PHP5 edición : abril 2009 / usuario: Enrique Place SURFORCE / FORMACIÓN www.surforce.com 1.7.6 26/3/2009 Cap.7: el ejemplo de calcular la edad no está completo, debería retornar un integer y no el valor del atributo "_fechaNacimiento" Cap.10: amplía la explicación sobre “Multiplicidad” Colabora: Carlos Arias (lector) Colabora: Christian Tipantuña (alumno) Colabora: Carlos Arias (alumno/lector) 1.7.7 26/3/2009 1.7.8 1/4/2009 Cap. 7: ejemplo “decirEdad” tiene un parámetro de más 1.8.0 3/4/2009 Agrega Anexo: "Qué es lo nuevo en PHP5?", basado en el artículo "What's New in PHP5?" enriqueplace ¡Mis más sinceros agradecimientos a los lectores y colegas con sus aportes! SURFORCE | mail: info@surforce.com | blog: http://www.surforce.com/blog/| web: surforce.com Licencia: http://creativecommons.org/licenses/by-nc/3.0/ 5 de 89 Programación Orientada a Objetos en PHP5 edición : abril 2009 / usuario: Enrique Place SURFORCE / FORMACIÓN www.surforce.com Sobre el Autor Enrique Place (35 años), nacido en Uruguay y actualmente viviendo en Argentina (pero “ciudadano de Internet”), es uno de los tantos “emprendedores por naturaleza” que cambió a los 14 años su fanatismo por las artes marciales (algunos llegaron a pensar que sería el sucesor sudamericano del Pequeño Dragón) por el fanatismo hacia la informática. Por cuestiones que solo el destino sabrá, tuvo la oportunidad de trabajar con los antiguos y míticos dinosaurios de la informática llamados Mainframes y participó en una misión para salvar a la raza humana de su extinción migrando aplicaciones para sobrevivir al colapso del Y2K, convirtiendo a diestra y siniestra código Mantis / Mainframe a Microfocus Cobol y Windows NT / Unix AIX. Paralelamente, fundó una pequeña empresa llamada LINUXTECH, quién fue la primer importadora para Uruguay de SuSE GNU/Linux (Alemania) y que dio los primeros pasos al evangelizar usuarios y empresas brindando servicios profesionales. De profesión “Analista Programador”, estudiante y posteriormente docente en la Universidad ORT (Uruguay), aprovechó todo lo que pudo aprender de arquitecturas como .Net y Java, conocer de Patrones de Diseño (GOF), como para darse cuenta que PHP, su verdadero amor informático, tenía un gran potencial por su simplicidad y pragmatismo, y que además su comunidad carecía completamente de una visión amplia como para entender todo lo que aún faltaba recorrer (como lo habían hecho ya otras tecnologías). Finalmente, el autor no se considera “gurú” y simplemente como “en el país de los ciegos, el tuerto es rey”, de la mano a su facilidad para enseñar (radicada en que aún es “alumno de todo”), es que se inicia en el camino de tratar de transmitir nuevos conocimientos a la Comunidad PHP. Este libro se escribe con el objetivo de que los actuales Programadores PHP se conviertan en el corto plazo en Desarrolladores PHP aprobando la materia que más les cuesta: "Programación Orientada a Objetos en PHP5" "Este libro fue escrito para ti, Pequeño Saltamontes" SURFORCE | mail: info@surforce.com | blog: http://www.surforce.com/blog/| web: surforce.com Licencia: http://creativecommons.org/licenses/by-nc/3.0/ Agradecimientos A mi familia: mi amada esposa Laura, mis amadas hijas Micaela y Martina, que tantas veces soportaron que su padre estuviera ausente por tener la cabeza en otro lado. Este fue uno de los tantos proyectos que le robó tiempo a la familia, pero que espero que de alguna forma u otra lo disfruten ellas. A la Universidad ORT Uruguay, gracias a los buenos docentes (también se aprende de los malos) que me tocaron en mi carrera y que me ayudaron a tener los conocimientos suficientes como para poder trabajar con PHP “de otra forma”. Carlos Cantonnet, docente en Análisis y Diseño Orientado a Objetos y cumpliendo el rol de "Arquitecto de Sistemas" en multinacionales como TATA TCS, sus excelentes clases lograron abrir mi mente con sus explicaciones simples, directas, y con mucho humor. Ahí empecé a conocer de Patrones de Diseño y la magia de los Principios de Diseño Orientado a Objetos. Nicolás Fornaro, docente en Programación Java y Análisis y Diseño, por sus muy buenas clases que, a diferencia de Cantonnet, me permitían tener una visión menos teórica y mucho más práctica de los Objetos y los Patrones de Diseño. A muchos colegas y amigos que de alguna forma u otra siempre apoyaron o inspiraron mis locuras, pero principalmente cuando alguna vez me dijeron frases como “eso no se puede”, “no vale la pena el esfuerzo”, “no le veo sentido”, “no vas a poder con todo”. Me quedo con la frase “No sabían que era imposible, por eso lo lograron” Sin ustedes no lo hubiera logrado ¡GRACIAS A TODOS! SURFORCE | mail: info@surforce.com | blog: http://www.surforce.com/blog/ Licencia: http://creativecommons.org/licenses/by-nc/3.0/ “Revisores de este libro” Amigos y colegas que ayudarán con la revisión en busca de errores y/o sugerencias. Como es un libro que se irá actualizando mensualmente todas sus mejoras se podrán apreciar a finales de febrero 2009 (de todas formas creo que mi orgullo me impedirá hacerles caso ;-)). Christian Serrón, uno de mis mejores alumnos Uruguay http://serron.surforce.com Andrés Guzmán, blogger colega de PHP y Zend Chile http://bolsadeideas.cl/zsamer/ Christopher Valderrama , colega de PHP y Zend, Moderador en Foros del Web / Sección POO – PHP México http://web2development.blogspot.com/ SURFORCE | mail: info@surforce.com | blog: http://www.surforce.com/blog/ Licencia: http://creativecommons.org/licenses/by-nc/3.0/ Prólogo Estimados Lectores Tradicionalmente se dice que el alumno en artes marciales busca toda su vida el maestro perfecto cuando en realidad con los años y habiendo acumulado experiencia se da cuenta que siempre estuvo dentro suyo. Una de las principales razones de escribir este libro fue no haber encontrado un libro similar para poder leer y consultar. A su vez estoy convencido que se pueden escribir libros “pragmáticos”, “simples” y “directos”, evitando entrar en disertaciones complejas de “docente que no baja al nivel del alumno que no domina el tema a tratar”. El libro es el resultado de apuntes de estudios, investigaciones, experiencia personal, y materiales que fueron desarrollados para el primer taller de POO para PHP5 (edición 2008), por eso verás ejercicios, soluciones y comentarios de los errores que estadísticamente son muy probables que cometas durante el aprendizaje. Me tomé el trabajo de revisar todos los capítulos, generar nuevos y a su vez actualizar explicaciones que fueron vertidas en los foros (la discusión con los alumnos enriqueció los ejemplos y debían quedar registrados de forma permanente). Para no ser menos, acostumbrado a intentar “un paso más allá”, este libro no será comercializado solo como un archivo “pdf”, la idea es ofrecer un servicio completo e intentar asegurar al lector el máximo de valor agregado que en este momento puedo concebir. Traté de hacer el libro que yo compraría, espero satisfacer tus expectativas, y si no lo logro, aún estás a tiempo de que lo solucione, ya que el libro “está vivo” y todas las sugerencias generarán nuevas actualizaciones. Saludos! Enrique Place enriqueplace@gmail.com Blog Personal http://enriqueplace.blogspot.com Blog Técnico http://phpsenior.blogspot.com SURFORCE | mail: info@surforce.com | blog: http://www.surforce.com/blog/ Licencia: http://creativecommons.org/licenses/by-nc/3.0/ Contenido Introducción: ............................................................................................................................................... 18 ”Los Desarrolladores PHP debemos Profesionalizarnos” ........................................................................... 18 Esta reflexión se la escribo a todos los "Programadores PHP" ............................................................... 18 Enfrentar la realidad con madurez ......................................................................................................... 18 Mi experiencia personal.......................................................................................................................... 19 La culpa es enteramente nuestra ........................................................................................................... 20 Debemos pasar de los dichos a los hechos ............................................................................................. 21 Capitulo 1 - "Nuestros Principios como Desarrolladores" .......................................................................... 22 Principio 1: RTFM - "Lee el Maldito Manual".......................................................................................... 24 Principio 2: DRY - "No Te Repitas" .......................................................................................................... 24 Principio 3: KISS - "Mantenlo Simple, Estúpido!" ................................................................................... 24 Principio 4: Estándar de Codificación PHP / Zend................................................................................... 24 Capitulo 2 - “Introducción a los Objetos” ................................................................................................... 26 “Vacuidad: vaciar todos los conocimientos” .......................................................................................... 28 “La sencillez es la mejor arquitectura “ .................................................................................................. 28 “Lo más importante es detectar los objetos” ......................................................................................... 29 En resumen ............................................................................................................................................. 29 Capítulo 3 - “Cómo Pensar en Objetos” ...................................................................................................... 31 “Lo menos importante es el código” ...................................................................................................... 33 “Un niño pequeño” ................................................................................................................................. 33 “El medio de comunicación” ................................................................................................................... 34 Capítulo 3 - “POO según Wikipedia” ........................................................................................................... 35 Capítulo 4 - “POO según el manual de PHP”............................................................................................... 38 Capítulo 5 - “Empezar a plasmar los objetos en un diseNo” ...................................................................... 40 “Cómo representar la estructura de los objetos” .................................................................................. 42 En Resumen ............................................................................................................................................ 47 Capítulo 6 - “Introducción a UML” .............................................................................................................. 49 “UML, el medio y no el fin en sí mismo”................................................................................................. 51 “UML y el público objetivo” .................................................................................................................... 51 SURFORCE | mail: info@surforce.com | blog: http://www.surforce.com/blog/ Licencia: http://creativecommons.org/licenses/by-nc/3.0/ “UML es independiente del lenguaje” .................................................................................................... 52 En resumen ............................................................................................................................................. 53 Capítulo 7 - “Cómo representar una clase en UML” ................................................................................... 54 “Conceptos Generales” ........................................................................................................................... 56 Mi primer diagrama UML........................................................................................................................ 56 Cómo se traduce en código .................................................................................................................... 58 Sección #1 – nombre de la clase ......................................................................................................... 58 Sección #2 – los atributos de la clase.................................................................................................. 58 Sección #3 – los métodos de la clase .................................................................................................. 60 “El Constructor” ...................................................................................................................................... 60 Probando el objeto en un contexto determinado .................................................................................. 62 En Resumen ............................................................................................................................................ 63 Capítulo 8 - Ejercicio "Micaela y el Perro" .................................................................................................. 64 Requerimientos....................................................................................................................................... 66 Solución ................................................................................................................................................... 67 Aplicación del “Principio KISS” ................................................................................................................ 68 Sugerencias para enfrentar los diseños .................................................................................................. 68 Propuesta de Diseño 1 ............................................................................................................................ 69 Diagrama UML .................................................................................................................................... 69 Traducción de UML a PHP ................................................................................................................... 70 Propuesta de Diseño 2 ............................................................................................................................ 72 Cambios............................................................................................................................................... 72 Diagrama UML .................................................................................................................................... 72 Traducción UML a PHP ........................................................................................................................ 73 En Resumen ............................................................................................................................................ 75 Capítulo 9 - Los métodos "getter / setter" o "accesores / modificadores" ................................................ 76 Requerimiento 1 ..................................................................................................................................... 80 Requerimiento 4 .................................................................................................................................... 81 En Resumen ............................................................................................................................................ 84 Capítulo 10 - “Cómo representar las Relaciones entre clases en UML” ..................................................... 85 La Relación de Dependencia ................................................................................................................... 87 Representación UML........................................................................................................................... 87 SURFORCE | mail: info@surforce.com | blog: http://www.surforce.com/blog/ Licencia: http://creativecommons.org/licenses/by-nc/3.0/
LIBRO "POO para PHP5" / actualización abril 2009 - Page 1
LIBRO "POO para PHP5" / actualización abril 2009 - Page 2
www.wobook.com