SlideShare a Scribd company logo
1 of 70
Introducción a POO / UML / PHP5 Enrique Place (phpsenior.com / surforce.com)
{ objetivos}
{ objetivos}  Entender qué es UML Importancia de UML para POO  Traducción UML -> PHP5
1/3 - Qué es UML? U.M.L. = Lenguaje Unificado de Modelado
1/3 - Qué es UML?  “UML es documentación”
1/3 - Qué es UML?  “UML es independiente del lenguaje”
UML es similar a usar diagramas de relaciones DER / MER para diseñar una base de datos
 Lo usan todas las empresas / proyectos profesionales de desarrollo de software
Arquitecturas Java / .Net
2/3 – Importancia de UML para POO?
“Es una herramienta gráfica que permite planificar el correcto diseño de nuestros sistemas Orientados a Objetos”
Nos permite razonar mejor, sin pensar en código
Ejemplos Básicos de su aplicación UML Simplificado
Pensamiento “por lo general buscamos que nuestras clases sean estables y reusables”
Principio de Diseño “nuestras clases deberían ser cerradas al cambio y abiertas a la extensión”
A “Una clase llamada A”
A B “clase A se conoce con una clase B”
A B “Las clases entablan una relación”
A B “Las clases entablan una relación” (siempre prestar atención al sentido de las flechas)
A B Se traduce como  “La clase A usa / conoce la clase B”
A B Pero también significa  “B no sabe de la existencia de A”
A B También se concluye con: “Cualquier cambio en B afectará a A, pero no al revés”
B A C D
B A C D “A es más inestable”
B A C D “A tiende a ser estable”
“Situaciones que habría que evitar”
A B “Bidireccionalidad”
B A C “Relaciones Cíclicas”
3/3 – Traducción UML -> PHP5
“3 Zonas”
“3 Zonas” Nombre
“3 Zonas” Nombre atributos
“3 Zonas” Nombre atributos métodos
“3 Zonas”  Persona Nombre archivo: Persona.php class Persona {   private $_nombre = “”;   public function __construct($nombre)    {      $this->_nombre = $nombre;    }    public function saludar()    {      return ‘Mi nombre es ‘ . $this->_nombre;    } } - nombre : String +Persona(nombre:String) + saludar():String
“3 Zonas” Persona Nombre archivo: Persona.php class Persona {   private $_nombre = “”;   public function __construct($nombre)    {      $this->_nombre = $nombre;    }    public function saludar()    {      return ‘Mi nombre es ‘ . $this->_nombre;    } } - nombre : String +Persona(nombre:String) + saludar():String
“3 Zonas” Persona Nombre archivo: Persona.php class Persona { private $_nombre = “”;   public function __construct($nombre)    {      $this->_nombre = $nombre;    }    public function saludar()    {      return ‘Mi nombre es ‘ . $this->_nombre;    } } - nombre : String +Persona(nombre:String) + saludar():String
“3 Zonas” Persona Nombre archivo: Persona.php class Persona { private $_nombre = “”; public function __construct($nombre)    {      $this->_nombre = $nombre;    }    public function saludar()    {      return ‘Mi nombre es ‘ . $this->_nombre;    } } - nombre : String +Persona(nombre:String) + saludar():String
“3 Zonas” Persona Nombre archivo: Persona.php class Persona { private $_nombre = “”; public function __construct($nombre)    {      $this->_nombre = $nombre;    } public function saludar()    {      return ‘Mi nombre es ‘ . $this->_nombre;    } } - nombre : String +Persona(nombre:String) + saludar():String
“Lo más importante,  las Relaciones”
“Cada flecha es un require_once en la clase donde inicia la flecha”
Efecto PHP “Nunca hacer todos los require_onceen un único archivo, aunque funcione”
no es lo mismo require, include, ni include_once, solo require_once
Efecto PHP “Respetar siempre las relaciones en donde se originan”
A B <?php require_once ‘B.php’ class A { }
A B <?php require_once ‘B.php’ class A { } <?php class B { }
C A B <?php require_once ‘B.php’ class A { } <?php class B { }
C A B <?php require_once ‘B.php’ require_once ‘C.php’ class A { } <?php class B { }
C A B D <?php require_once ‘B.php’ require_once ‘C.php’ class A { } <?php require_once ‘D.php’ class B { }
C A B D <?php require_once ‘B.php’ require_once ‘C.php’ require_once ‘D.php’ class A { } Funciona, pero está MAL!
Un caso práctico “Usuario y su persistencia”
Usuario
Usuario Persistencia
Usuario Persistencia MySQL PostgreSQL
Usuario Persistencia MySQL PostgreSQL Log
Usuario Persistencia MySQL PostgreSQL Cómo se usa esto? Log
Usuario Persistencia MySQL PostgreSQL Index Log
Usuario Persistencia MySQL PostgreSQL Index Log
 El error más común de los desarrolladores PHP (por el “efecto PHP”) es colocar todos los require_once en index.php y no colocar nada en las clases que corresponde
Usuario Persistencia MySQL PostgreSQL Index Log
 Nivel de Abstracción = 0
<?php require_once ‘Usuario.php’; require_once ‘Persistencia.php’; require_once ‘MySQL.php’; require_once ‘PostgreSQL.php’; require_once ‘Log.php’; class Index { }
Usuario Persistencia MySQL PostgreSQL Index Log
 Esto hace que nuestro diseño sea débil ante la ausencia de Index, y no podamos reusar las clases porque estas no tienen correctamente implementadas sus relaciones
Usuario Persistencia MySQL PostgreSQL Index Log
Usuario Persistencia MySQL PostgreSQL Index Log
 Esto hace que nuestro diseño sea débil ante la ausencia de Index, y no podamos reusar las clases porque estas no tienen correctamente implementadas sus relaciones
En resumen, nuestro diseño apesta y no sirve. Eso es POO en PHP5  mal implementada
Se puede hacer buenos diseñossin diagramas?
Palabras Finales Para qué nos sirve UML a los desarrolladores PHP?
Fin! Preguntas? phpsenior.com / surforce.com

More Related Content

What's hot

Funciones de registro del sistema operativo
Funciones de registro del sistema operativoFunciones de registro del sistema operativo
Funciones de registro del sistema operativo
jamesconradohernandez
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008
guest02b440
 
Programacion Orientada a Objetos en php
Programacion Orientada a Objetos en phpProgramacion Orientada a Objetos en php
Programacion Orientada a Objetos en php
Samuel Piñon Garcia
 

What's hot (18)

La función MIEMBROCUBO
La función MIEMBROCUBOLa función MIEMBROCUBO
La función MIEMBROCUBO
 
Funciones del registro
Funciones del registroFunciones del registro
Funciones del registro
 
Funciones del registro
Funciones del registroFunciones del registro
Funciones del registro
 
Funciones de registro del sistema operativo
Funciones de registro del sistema operativoFunciones de registro del sistema operativo
Funciones de registro del sistema operativo
 
La función MIEMBRORANGOCUBO Excel
La función MIEMBRORANGOCUBO ExcelLa función MIEMBRORANGOCUBO Excel
La función MIEMBRORANGOCUBO Excel
 
Php y MySQL
Php y MySQLPhp y MySQL
Php y MySQL
 
Introduccion mvc
Introduccion mvcIntroduccion mvc
Introduccion mvc
 
Taller listasyeasygui
Taller listasyeasyguiTaller listasyeasygui
Taller listasyeasygui
 
Guiapractica de bd completa
Guiapractica de bd completaGuiapractica de bd completa
Guiapractica de bd completa
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. Twig
 
Manual basico de PHP
Manual basico de PHPManual basico de PHP
Manual basico de PHP
 
7 razones para usar funciones en php
7 razones para usar funciones en php7 razones para usar funciones en php
7 razones para usar funciones en php
 
Tema2 3
Tema2 3Tema2 3
Tema2 3
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008
 
2 7 ficheros_php
2 7 ficheros_php2 7 ficheros_php
2 7 ficheros_php
 
4.Programación con PHP y MySQL
4.Programación con PHP y MySQL4.Programación con PHP y MySQL
4.Programación con PHP y MySQL
 
Php
PhpPhp
Php
 
Programacion Orientada a Objetos en php
Programacion Orientada a Objetos en phpProgramacion Orientada a Objetos en php
Programacion Orientada a Objetos en php
 

Viewers also liked

Analisis Y Diseño De Sistemas Orientado A Objetos
Analisis Y Diseño De Sistemas Orientado A ObjetosAnalisis Y Diseño De Sistemas Orientado A Objetos
Analisis Y Diseño De Sistemas Orientado A Objetos
joalmerca6
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
yoiner santiago
 
conexus OpenERP Zeiterfassung
conexus OpenERP Zeiterfassungconexus OpenERP Zeiterfassung
conexus OpenERP Zeiterfassung
conexusat
 
Dividiendo El Dolor De Parto
Dividiendo El Dolor De PartoDividiendo El Dolor De Parto
Dividiendo El Dolor De Parto
paquitaguapa
 
E mag mars avril 2015
E mag mars avril 2015E mag mars avril 2015
E mag mars avril 2015
Trans-Faire
 
Angeles De Cuatro Patas
Angeles De Cuatro PatasAngeles De Cuatro Patas
Angeles De Cuatro Patas
paquitaguapa
 

Viewers also liked (20)

Analisis Y Diseño De Sistemas Orientado A Objetos
Analisis Y Diseño De Sistemas Orientado A ObjetosAnalisis Y Diseño De Sistemas Orientado A Objetos
Analisis Y Diseño De Sistemas Orientado A Objetos
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
 
Camouflage et techniques d'approche
Camouflage et techniques d'approcheCamouflage et techniques d'approche
Camouflage et techniques d'approche
 
Programas para screencasting en elearning
Programas para screencasting en elearningProgramas para screencasting en elearning
Programas para screencasting en elearning
 
conexus OpenERP Zeiterfassung
conexus OpenERP Zeiterfassungconexus OpenERP Zeiterfassung
conexus OpenERP Zeiterfassung
 
Dividiendo El Dolor De Parto
Dividiendo El Dolor De PartoDividiendo El Dolor De Parto
Dividiendo El Dolor De Parto
 
150305 - FFBB Infos 042
150305 - FFBB Infos 042150305 - FFBB Infos 042
150305 - FFBB Infos 042
 
E mag mars avril 2015
E mag mars avril 2015E mag mars avril 2015
E mag mars avril 2015
 
Angeles De Cuatro Patas
Angeles De Cuatro PatasAngeles De Cuatro Patas
Angeles De Cuatro Patas
 
Base de datos_asistente
Base de datos_asistenteBase de datos_asistente
Base de datos_asistente
 
Curs de formació de personal formador
Curs de formació de personal formadorCurs de formació de personal formador
Curs de formació de personal formador
 
Projet carrières en informatique
Projet carrières en informatiqueProjet carrières en informatique
Projet carrières en informatique
 
E sidoc 2013 2014l
E sidoc 2013 2014lE sidoc 2013 2014l
E sidoc 2013 2014l
 
FERIA DE SAN MIGUEL 2013 BENARRABÁ
FERIA DE SAN MIGUEL 2013 BENARRABÁFERIA DE SAN MIGUEL 2013 BENARRABÁ
FERIA DE SAN MIGUEL 2013 BENARRABÁ
 
L'univers
L'universL'univers
L'univers
 
Stage de tai jitsu oléron Mai 2015
Stage de tai jitsu oléron Mai 2015Stage de tai jitsu oléron Mai 2015
Stage de tai jitsu oléron Mai 2015
 
Défi choletais
Défi choletaisDéfi choletais
Défi choletais
 
Edutec 2010 Gorka J Palazio
Edutec 2010 Gorka J PalazioEdutec 2010 Gorka J Palazio
Edutec 2010 Gorka J Palazio
 
Avaluacio de la sessio
Avaluacio de la sessioAvaluacio de la sessio
Avaluacio de la sessio
 
Resultats globaux officiels
Resultats globaux officielsResultats globaux officiels
Resultats globaux officiels
 

Similar to Introducción a UML / POO / PHP5

Guía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sqlGuía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sql
Jesus Machicado Gomez
 
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptxprogramacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
Fernando Espinoza Muñoz
 
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptxprogramacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
Fernando Espinoza Muñoz
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
uts
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
uts
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
uts
 

Similar to Introducción a UML / POO / PHP5 (20)

Programacion orientada-a-objetos-poo
Programacion orientada-a-objetos-poo Programacion orientada-a-objetos-poo
Programacion orientada-a-objetos-poo
 
Fundamento de poo en php
Fundamento de poo en phpFundamento de poo en php
Fundamento de poo en php
 
0139-php-y-mysql-lenguaje-php-basico.pdf
0139-php-y-mysql-lenguaje-php-basico.pdf0139-php-y-mysql-lenguaje-php-basico.pdf
0139-php-y-mysql-lenguaje-php-basico.pdf
 
Guía práctica Herencia
Guía práctica HerenciaGuía práctica Herencia
Guía práctica Herencia
 
PHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básicoPHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básico
 
Actividad 3 . funciones en php
Actividad 3 . funciones en phpActividad 3 . funciones en php
Actividad 3 . funciones en php
 
Programacion php
Programacion phpProgramacion php
Programacion php
 
Guía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sqlGuía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sql
 
Tutorial de php
Tutorial de phpTutorial de php
Tutorial de php
 
Manual+php+básico
Manual+php+básicoManual+php+básico
Manual+php+básico
 
32773 php-basico
32773 php-basico32773 php-basico
32773 php-basico
 
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptxprogramacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
 
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptxprogramacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
programacion-orientada-a-objetos-poo_c4774196-cfdb-412e-bae5-210a97d78f8b.pptx
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Symfony 2 CMF
Symfony 2 CMFSymfony 2 CMF
Symfony 2 CMF
 
Guia poo
Guia pooGuia poo
Guia poo
 
Proyectos Web 3 Introduccion Php
Proyectos Web   3 Introduccion PhpProyectos Web   3 Introduccion Php
Proyectos Web 3 Introduccion Php
 
Ruby on rails mvc | SoyProgramador.liz.mx
Ruby on rails mvc  | SoyProgramador.liz.mxRuby on rails mvc  | SoyProgramador.liz.mx
Ruby on rails mvc | SoyProgramador.liz.mx
 

More from Enrique Place (6)

"La era de los frameworks: Ruby On Rails"
"La era de los frameworks: Ruby On Rails""La era de los frameworks: Ruby On Rails"
"La era de los frameworks: Ruby On Rails"
 
Php Unicode I18n
Php Unicode I18nPhp Unicode I18n
Php Unicode I18n
 
Analytics Phpsenior
Analytics PhpseniorAnalytics Phpsenior
Analytics Phpsenior
 
"Uruguay desde el cielo"
"Uruguay desde el cielo""Uruguay desde el cielo"
"Uruguay desde el cielo"
 
"Ruby Mola (y por que)" por The Cocktail
"Ruby Mola (y por que)" por The Cocktail"Ruby Mola (y por que)" por The Cocktail
"Ruby Mola (y por que)" por The Cocktail
 
"Introduccion a Rails" por TheCocktail
"Introduccion a Rails" por TheCocktail"Introduccion a Rails" por TheCocktail
"Introduccion a Rails" por TheCocktail
 

Recently uploaded

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Recently uploaded (11)

Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 

Introducción a UML / POO / PHP5