SlideShare una empresa de Scribd logo
1 de 9
Descargar para leer sin conexión
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Sumario
Cuando para el desarrollo de una aplicación se decide utilizar un lenguaje de programación orientado a
objetos, para representar de forma visual tanto las clases que serán utilizadas como las relaciones existentes
entre ellas se usa el lenguaje UML (Unified Modeling Language, o Lenguaje de Modelado Unificado en
español), que define una serie de reglas para crear diagramas UML.
Diagrama de Clases
Representación de una clase
Una clase se representa con un "rectángulo" dividido en 3 zonas horizontales:
La primera zona se utiliza para colocar el nombre de la clase. Por convención los nombres de las clases
inician con la primera letra en mayúsculas, y todas en singular (Persona, Cliente, Vendedor, Perro, Fruta, etc)
 La segunda zona se utiliza para colocar la lista de atributos. Cada atributo iniciará con un símbolo que
representará la "visibilidad" del mismo, que podrá ser "público" (+), "privado" (-) o "reservado" (#).
 La tercera zona se utiliza para colocar los métodos de la clase. Cada método, igual que sucede con los
atributos, deberá tener los mismos símbolos de "visibilidad" que se aplican con los atributos.
Nivel de acceso
 Público: +
 Privado: -
 Protegido: #
Introducción
Como bien dice la frase, los diagramas UML son el medio y no el fin, sirven para simplificar notablemente las
discusiones sobre “abstracciones” y mejoran la comunicación entre personas, ya sean desarrolladores como
otros roles dentro de un mismo proyecto. Otra de las ventajas es que atrasa la “codificación temprana” y
facilita estar más tiempo en la etapa de diseño.
Un equipo con experiencia en UML debería poder recibir cualquier diagrama e implementarlo de forma
mecánica sin tener siquiera que razonar el diseño, lo cual significa que el diagrama siempre se traduce de la
misma forma, un elemento del diagrama siempre tendrá la misma traducción en código, no importa el lenguaje
que usemos.
Objetivo.
Analizar e interpretar diagramas UML (Clase) y Traducirlos a código PHP concretos y Ejecutables
Requerimientos.
Se debe contar con: Un (1) computador teniendo como mínimo el Sistema Operativo Libre ( Canaima/Ubuntu), Diseño de
Sistema Diagramas UML, Programación Orientado Objeto
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Relaciones
Además de establecer la definición de la estructura de las clases, el diagrama de clases define las relaciones que
pueden existir entre dichas clases. Entre las relaciones más conocidas tenemos:
Herencia Dependencia Composición Asociación Agregación
Cardinalidad o multiplicidad
La cardinalidad es el número de instancias de una clase que se relacionan con una instancia de otra clase. Cada
relación tiene dos multiplicidades, por cada objeto al extremo de la relación.
Tipos de Multiplicidad.
Cuando la multiplicidad mínima es cero, indica que la relación es opcional. Cuando es uno, la multiplicidad
mínima es mayor o igual a uno indica que la relación es obligatoria.
Dirección
En las relaciones de asociación se puede establecer que los objetos que están al extremo de una relación puede
“conocerse” entre sí (relación bidireccional), o que solamente uno de ellos “conoce” a otro (relación
unidireccional).
Qué un objeto conozca a otro, indica que dentro de los atributos del objeto o en el uso de sus métodos, está
contenido el otro objeto. En relaciones bidireccionales ambos objetos están contenidos entre sí.
Dirección y cardinalidad entre dos objetos
En el primer ejemplo, podemos notar que un
objeto Cuenta conoce al objeto Dinero, sin embargo
el objeto Dinero desconoce a qué objeto Cuenta está
asignado.
En el segundo caso, tanto Cuenta como Cliente, se
conocen mutuamente.
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
“Cómo representar las Relaciones entre clases en UML”
Definir las relaciones entre las clases es la parte medular de la POO y donde verdaderamente construimos el
Diseño OO. Es importante hacer un buen diseño individual de clases, pero más aún saber qué significa cada
relación, cuando se deben usar y que impacto tiene sobre todo el sistema.
Empecemos con las relaciones más básicas y fundamentales: “la dependencia y la asociación”
La Relación de Dependencia
Definición: “es una relación de uso entre dos entidades” (una usa a la otra)
La relación de dependencia es cuando una clase depende de la funcionalidad que ofrece otra clase. Si lo
vemos del punto de vista “Cliente / Servidor” (existe una entidad que necesita de un “servicio” y otra entidad
que lo provee), se puede decir que una clase es “cliente” del servicio de otra clase.
Esta es la relación más básica entre clases y a su vez comparada con otro tipos de relaciones, la más débil.
Representación UML
La representación en UML es una “flecha punteada” o “discontinua” que va desde la clase “cliente” del
servicio/funcionalidad hasta la clase que ofrece el “servicio/funcionalidad”.
Un diagrama genérico sería:
Todos los diagramas tienen varias interpretaciones, este en concreto nos dice que:
que significa el sentido de la flecha)
Por eso también se le dice “relación de uso”, la clase A “usa” la clase B.
Cómo se traduce a código
Solo existen dos situaciones posibles
1. En un método de la clase A instancio un objeto de tipo B y posteriormente lo uso.
2. En un método de la clase A recibo por parámetro un objeto de tipo B y posteriormente lo uso.
Por consiguiente, completemos los diagramas de ejemplo:
Caso 1 – instancio un objeto B dentro de un método de A
Y traducido a código será:
A.php:
<?php require_once 'B.php';
class A {
public function mostrar(){
$b = new B(); /* etc */
}
}
Caso 2 – recibo por parámetro de un método de A un objeto B
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
En el diagrama UML se representa el parámetro de esta forma b : B, lo cual debe ser leído en el orden
variable : Tipo, pero dependiendo del lenguaje, la traducción generalmente es al revés: Tipo $variable (como
se puede observar en el ejemplo con el método “mostrar(B $b)”).
La Relación de Asociación
Definición: “es una relación estructural entre entidades” (una entidad se construye a partir de otras entidades)
La relación de asociación es cuando una clase tiene en su estructura a otra clase, o se puede decir también
que se construye una clase a partir de otros elementos u objetos. Si lo codificáramos esto se representa como
un atributo que es una instancia de otra clase.
Esta relación se debe entender como la actividad de construir elementos complejos a partir de otros elementos
más simples, y justamente, la verdadera esencia de la POO.
En este caso el objeto no es creado dentro del objeto compuesto, es adherido mediante algún método que lo
permita.
<?php
class A
{
// Definición de clase A
}
class B
{
private $coleccionA;
public function __construct()
{
}
public agregar()
{
$this->coleccionA[] = new A;
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
}
}
Por ejemplo
Un auto está compuesto por un motor, un tanque de combustible y una antena de radio, por lo tanto
tendríamos:
íamos los objetos Motor, Tanque y Antena.
Representación UML
La representación en UML es una “flecha continua” que va apuntando desde la clase “compuesto” hasta la o
las clases “componentes”.
Un diagrama genérico será:
Nuevamente, los diagramas tienen varios mensajes que nos transmiten:
de la flecha)
e haga en la clase B, por la relación que hay con la clase A, podrá afectar a la clase A.
Cómo se traduce a código
Creando una clase A que tiene como atributo un objeto de tipo clase B.
A.php
<?php require_once 'B.php';
class A { private $_b;
public function __construct(){
$this->_b = new B(); }
}
$a = new A();
PHP no soporta la creación de
instancias en la definición de
atributos, solo podríamos hacer una
asignación directa si el atributo es un
array, pero no crear una instancia
(con “new”). Solo podremos crear las
instancias de nuestros atributos en el
constructor o dentro de los métodos
de la clase
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
UML del ejemplo del Auto
Auto.php
<?php require_once 'Motor.php';
require_once 'TanqueCombustible.php';
require_once 'AntenaRadio.php';
class Auto {
private $_motor;
private $_tanqueCombustible;
private $_antenaRadio;
public function __construct(){
$this->_motor = new Motor();
$this->_tanqueCombustible = new TanqueCombustible();
$this->_antenaRadio = new AntenaRadio();
}//fin del constructor
} // fin de la clase
$auto = new Auto();
Los comentarios sobre la lectura de
las flechas y los sentidos son los
mismos que en los casos
anteriores:
Según el sentido de las
flechas, el Auto conoce a sus
componentes y los componentes
no conocen al Auto.
Si los componentes
cambian, afectan al Auto, ya
que este está asociado a ellos, no
así al revés.
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Variaciones de Asociación: Relación de Agregación y Relación de Composición
Se puede especializar la relación “asociación” en dos tipos más (note que las flechas siguen siendo continuas
pero agrega un rombo en su inicio).
Relación de Agregación
Es una relación de asociación pero en vez de ser “1 a 1” es de “1 a muchos”, la clase A agrega muchos
elementos de tipo clase B
Relación de Composición
Similar a la agregación, solo aporta semántica a la relación al decir que además de “agregar”, existe una
relación de vida, donde elementos de B no pueden existir sin la relación con A.
Desde el punto de vista de muchos lenguajes (como Java o PHP) esto no necesariamente genera ningún
cambio en el código, pero puede ser tomado como parte de la documentación conceptual de cómo debería ser
el diseño del sistema.
En el caso de la composición, es necesario crear dentro del objeto compuesto los objetos que serán parte del
mismo.
<?php
class A
{
// Definición de clase A
}
class B
{
private $parteA;
public function __construct()
{
$this->parteA = new A();
}
}
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Ejemplos de Agregación y de Composición
Ejemplo de traducción a código
La forma de representar ambas variantes es simple y como en todos los casos, mecánica.
El elemento del lenguaje que por defecto nos permite contener varios elementos es el array, por lo tanto
del diagrama se desprenden (aunque no esté explícitamente) que tendremos:
1) Un atributo de tipo array para contener todos los elementos
2) Por lo menos un método para agregar los elementos al array, que generalmente se representa con un
simple “add” (que como siempre queda sujeto a variar según nuestro criterio).
Teniendo en cuenta lo anterior, podría apuntar mi diagrama a un público que no le fuera evidente su
implementación, por lo tanto podría ser tan específico cómo:
Universidad Politécnica Territorial Andrés Eloy Blanco
Programa Nacional de Formación en Informática
Ing. Lissette Torrealba
Ejemplo de traducción a código
Universidad.php
Actividad a Realizar
. Construye el Diagrama de Clases del sistema propuesto en Proyecto Socio tecnológico II
Referencias Bibliográficas
Enrique Place. Programación Orientada a Objeto para PHP5
Un sitio clave para quienes programamos en PHP orientado a objetos es PHPClasses:
http://www.phpclasses.org

Más contenido relacionado

La actualidad más candente

Conociendo el Patron Modelo Vista Controlador
Conociendo el Patron   Modelo Vista ControladorConociendo el Patron   Modelo Vista Controlador
Conociendo el Patron Modelo Vista Controladorlissette_torrealba
 
Guía Teórica unidad III, Interfaz Gráficas de Usuarios
Guía Teórica unidad III, Interfaz Gráficas de UsuariosGuía Teórica unidad III, Interfaz Gráficas de Usuarios
Guía Teórica unidad III, Interfaz Gráficas de Usuarioslissette_torrealba
 
Programacion 3 unidad ii
Programacion 3   unidad iiProgramacion 3   unidad ii
Programacion 3 unidad iiIrving Trigo
 
Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)KareliaRivas
 
Programación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UMLProgramación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UMLGabriel Cortez
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetoschutas666
 
Metodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevMetodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevjtk1
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de javainnovalabcun
 
Programación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevjtk1
 
Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1Ezer Ayala Mutul
 
U.T. 3.- Programación Orientada a Objetos. Programación JAVA
U.T. 3.- Programación Orientada a Objetos. Programación JAVAU.T. 3.- Programación Orientada a Objetos. Programación JAVA
U.T. 3.- Programación Orientada a Objetos. Programación JAVAiessanjuanbosco
 

La actualidad más candente (18)

Introduccion mvc
Introduccion mvcIntroduccion mvc
Introduccion mvc
 
Conociendo el Patron Modelo Vista Controlador
Conociendo el Patron   Modelo Vista ControladorConociendo el Patron   Modelo Vista Controlador
Conociendo el Patron Modelo Vista Controlador
 
Guia programacionwebbasicophp
Guia programacionwebbasicophpGuia programacionwebbasicophp
Guia programacionwebbasicophp
 
Guía Teórica unidad III, Interfaz Gráficas de Usuarios
Guía Teórica unidad III, Interfaz Gráficas de UsuariosGuía Teórica unidad III, Interfaz Gráficas de Usuarios
Guía Teórica unidad III, Interfaz Gráficas de Usuarios
 
Programacion 3 unidad ii
Programacion 3   unidad iiProgramacion 3   unidad ii
Programacion 3 unidad ii
 
Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)
 
Programación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UMLProgramación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UML
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Metodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevMetodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prev
 
Tutorial C++
Tutorial C++Tutorial C++
Tutorial C++
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 
Programacion en C#
Programacion en C#Programacion en C#
Programacion en C#
 
Programacion orientada a objetos Java
Programacion orientada a objetos JavaProgramacion orientada a objetos Java
Programacion orientada a objetos Java
 
Programación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prev
 
Diapositivas de la poo
Diapositivas de la pooDiapositivas de la poo
Diapositivas de la poo
 
Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
U.T. 3.- Programación Orientada a Objetos. Programación JAVA
U.T. 3.- Programación Orientada a Objetos. Programación JAVAU.T. 3.- Programación Orientada a Objetos. Programación JAVA
U.T. 3.- Programación Orientada a Objetos. Programación JAVA
 

Similar a UML traducción código PHP

Similar a UML traducción código PHP (20)

U1 s3 introducción a uml parte 1
U1 s3 introducción a uml parte 1U1 s3 introducción a uml parte 1
U1 s3 introducción a uml parte 1
 
UML Java
UML JavaUML Java
UML Java
 
Uml java
Uml javaUml java
Uml java
 
Diagramas de clases y aplicaciones JAVA en NetBeans 6.9.1
Diagramas de clases y aplicaciones  JAVA en NetBeans 6.9.1Diagramas de clases y aplicaciones  JAVA en NetBeans 6.9.1
Diagramas de clases y aplicaciones JAVA en NetBeans 6.9.1
 
Diagrama de casos
Diagrama de casosDiagrama de casos
Diagrama de casos
 
Uml java
Uml javaUml java
Uml java
 
Conceptos poo
Conceptos pooConceptos poo
Conceptos poo
 
Generación de codigo c++ a partir de modelos uml
Generación de codigo c++ a partir de modelos umlGeneración de codigo c++ a partir de modelos uml
Generación de codigo c++ a partir de modelos uml
 
Tutorial c (3)
Tutorial c (3)Tutorial c (3)
Tutorial c (3)
 
Tutorial C++
Tutorial C++Tutorial C++
Tutorial C++
 
Introducción a la progrogramación orientada a objetos - UML
Introducción a la progrogramación orientada a objetos - UMLIntroducción a la progrogramación orientada a objetos - UML
Introducción a la progrogramación orientada a objetos - UML
 
D clase
D claseD clase
D clase
 
Diagrama de clases y diagrama de objetos
Diagrama de clases y diagrama de objetosDiagrama de clases y diagrama de objetos
Diagrama de clases y diagrama de objetos
 
Guía Didáctica 2.-UML
Guía Didáctica 2.-UMLGuía Didáctica 2.-UML
Guía Didáctica 2.-UML
 
Clase numero 6
Clase numero 6Clase numero 6
Clase numero 6
 
Comprendiendo UML para el área de desarrollo
Comprendiendo UML para el área de desarrollo Comprendiendo UML para el área de desarrollo
Comprendiendo UML para el área de desarrollo
 
Lenguaje Unificado de Modelado
Lenguaje Unificado de ModeladoLenguaje Unificado de Modelado
Lenguaje Unificado de Modelado
 
Metamodelado
MetamodeladoMetamodelado
Metamodelado
 
Guía Didáctica 1.-UML
Guía Didáctica 1.-UMLGuía Didáctica 1.-UML
Guía Didáctica 1.-UML
 
Diagrama uml ing software i promecys
Diagrama uml ing software i promecysDiagrama uml ing software i promecys
Diagrama uml ing software i promecys
 

Más de lissette_torrealba (20)

Guia reportes
Guia reportesGuia reportes
Guia reportes
 
Guiajquery
GuiajqueryGuiajquery
Guiajquery
 
Plan de evaluación proyecto i 2 teoría
Plan de evaluación proyecto i 2 teoríaPlan de evaluación proyecto i 2 teoría
Plan de evaluación proyecto i 2 teoría
 
Plan de evaluación proyecto i 2 metodología
Plan de evaluación proyecto i 2 metodologíaPlan de evaluación proyecto i 2 metodología
Plan de evaluación proyecto i 2 metodología
 
Plan de evaluacion proyecto i 2 práctica
Plan de evaluacion proyecto i 2 prácticaPlan de evaluacion proyecto i 2 práctica
Plan de evaluacion proyecto i 2 práctica
 
Guiajsvalidacion
GuiajsvalidacionGuiajsvalidacion
Guiajsvalidacion
 
Guiajs2
Guiajs2Guiajs2
Guiajs2
 
Rubrica 2021 electiva 2
Rubrica 2021 electiva 2Rubrica 2021 electiva 2
Rubrica 2021 electiva 2
 
Mapa Tecnopedagogia
Mapa TecnopedagogiaMapa Tecnopedagogia
Mapa Tecnopedagogia
 
Matriz DOFA lissette
Matriz DOFA lissetteMatriz DOFA lissette
Matriz DOFA lissette
 
Planevaluacionproyectoivpractica
PlanevaluacionproyectoivpracticaPlanevaluacionproyectoivpractica
Planevaluacionproyectoivpractica
 
Rubrica bd 2021
Rubrica  bd  2021Rubrica  bd  2021
Rubrica bd 2021
 
Proyecto formativo iv metodologia
Proyecto formativo iv metodologiaProyecto formativo iv metodologia
Proyecto formativo iv metodologia
 
Plan evaluacion teoria
Plan evaluacion teoriaPlan evaluacion teoria
Plan evaluacion teoria
 
Plan de Evaluacion
Plan de EvaluacionPlan de Evaluacion
Plan de Evaluacion
 
Ejemplos de interfaz grafica
Ejemplos de  interfaz grafica Ejemplos de  interfaz grafica
Ejemplos de interfaz grafica
 
Rubrica bd 2021
Rubrica bd 2021 Rubrica bd 2021
Rubrica bd 2021
 
Rubrica Programación II 2021
Rubrica Programación II 2021 Rubrica Programación II 2021
Rubrica Programación II 2021
 
Rup
RupRup
Rup
 
Documentosistema
DocumentosistemaDocumentosistema
Documentosistema
 

Último

LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuelacocuyelquemao
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 

Último (20)

LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Movimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en VenezuelaMovimientos Precursores de La Independencia en Venezuela
Movimientos Precursores de La Independencia en Venezuela
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 

UML traducción código PHP

  • 1. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba Sumario Cuando para el desarrollo de una aplicación se decide utilizar un lenguaje de programación orientado a objetos, para representar de forma visual tanto las clases que serán utilizadas como las relaciones existentes entre ellas se usa el lenguaje UML (Unified Modeling Language, o Lenguaje de Modelado Unificado en español), que define una serie de reglas para crear diagramas UML. Diagrama de Clases Representación de una clase Una clase se representa con un "rectángulo" dividido en 3 zonas horizontales: La primera zona se utiliza para colocar el nombre de la clase. Por convención los nombres de las clases inician con la primera letra en mayúsculas, y todas en singular (Persona, Cliente, Vendedor, Perro, Fruta, etc)  La segunda zona se utiliza para colocar la lista de atributos. Cada atributo iniciará con un símbolo que representará la "visibilidad" del mismo, que podrá ser "público" (+), "privado" (-) o "reservado" (#).  La tercera zona se utiliza para colocar los métodos de la clase. Cada método, igual que sucede con los atributos, deberá tener los mismos símbolos de "visibilidad" que se aplican con los atributos. Nivel de acceso  Público: +  Privado: -  Protegido: # Introducción Como bien dice la frase, los diagramas UML son el medio y no el fin, sirven para simplificar notablemente las discusiones sobre “abstracciones” y mejoran la comunicación entre personas, ya sean desarrolladores como otros roles dentro de un mismo proyecto. Otra de las ventajas es que atrasa la “codificación temprana” y facilita estar más tiempo en la etapa de diseño. Un equipo con experiencia en UML debería poder recibir cualquier diagrama e implementarlo de forma mecánica sin tener siquiera que razonar el diseño, lo cual significa que el diagrama siempre se traduce de la misma forma, un elemento del diagrama siempre tendrá la misma traducción en código, no importa el lenguaje que usemos. Objetivo. Analizar e interpretar diagramas UML (Clase) y Traducirlos a código PHP concretos y Ejecutables Requerimientos. Se debe contar con: Un (1) computador teniendo como mínimo el Sistema Operativo Libre ( Canaima/Ubuntu), Diseño de Sistema Diagramas UML, Programación Orientado Objeto
  • 2. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba Relaciones Además de establecer la definición de la estructura de las clases, el diagrama de clases define las relaciones que pueden existir entre dichas clases. Entre las relaciones más conocidas tenemos: Herencia Dependencia Composición Asociación Agregación Cardinalidad o multiplicidad La cardinalidad es el número de instancias de una clase que se relacionan con una instancia de otra clase. Cada relación tiene dos multiplicidades, por cada objeto al extremo de la relación. Tipos de Multiplicidad. Cuando la multiplicidad mínima es cero, indica que la relación es opcional. Cuando es uno, la multiplicidad mínima es mayor o igual a uno indica que la relación es obligatoria. Dirección En las relaciones de asociación se puede establecer que los objetos que están al extremo de una relación puede “conocerse” entre sí (relación bidireccional), o que solamente uno de ellos “conoce” a otro (relación unidireccional). Qué un objeto conozca a otro, indica que dentro de los atributos del objeto o en el uso de sus métodos, está contenido el otro objeto. En relaciones bidireccionales ambos objetos están contenidos entre sí. Dirección y cardinalidad entre dos objetos En el primer ejemplo, podemos notar que un objeto Cuenta conoce al objeto Dinero, sin embargo el objeto Dinero desconoce a qué objeto Cuenta está asignado. En el segundo caso, tanto Cuenta como Cliente, se conocen mutuamente.
  • 3. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba “Cómo representar las Relaciones entre clases en UML” Definir las relaciones entre las clases es la parte medular de la POO y donde verdaderamente construimos el Diseño OO. Es importante hacer un buen diseño individual de clases, pero más aún saber qué significa cada relación, cuando se deben usar y que impacto tiene sobre todo el sistema. Empecemos con las relaciones más básicas y fundamentales: “la dependencia y la asociación” La Relación de Dependencia Definición: “es una relación de uso entre dos entidades” (una usa a la otra) La relación de dependencia es cuando una clase depende de la funcionalidad que ofrece otra clase. Si lo vemos del punto de vista “Cliente / Servidor” (existe una entidad que necesita de un “servicio” y otra entidad que lo provee), se puede decir que una clase es “cliente” del servicio de otra clase. Esta es la relación más básica entre clases y a su vez comparada con otro tipos de relaciones, la más débil. Representación UML La representación en UML es una “flecha punteada” o “discontinua” que va desde la clase “cliente” del servicio/funcionalidad hasta la clase que ofrece el “servicio/funcionalidad”. Un diagrama genérico sería: Todos los diagramas tienen varias interpretaciones, este en concreto nos dice que: que significa el sentido de la flecha) Por eso también se le dice “relación de uso”, la clase A “usa” la clase B. Cómo se traduce a código Solo existen dos situaciones posibles 1. En un método de la clase A instancio un objeto de tipo B y posteriormente lo uso. 2. En un método de la clase A recibo por parámetro un objeto de tipo B y posteriormente lo uso. Por consiguiente, completemos los diagramas de ejemplo: Caso 1 – instancio un objeto B dentro de un método de A Y traducido a código será: A.php: <?php require_once 'B.php'; class A { public function mostrar(){ $b = new B(); /* etc */ } } Caso 2 – recibo por parámetro de un método de A un objeto B
  • 4. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba En el diagrama UML se representa el parámetro de esta forma b : B, lo cual debe ser leído en el orden variable : Tipo, pero dependiendo del lenguaje, la traducción generalmente es al revés: Tipo $variable (como se puede observar en el ejemplo con el método “mostrar(B $b)”). La Relación de Asociación Definición: “es una relación estructural entre entidades” (una entidad se construye a partir de otras entidades) La relación de asociación es cuando una clase tiene en su estructura a otra clase, o se puede decir también que se construye una clase a partir de otros elementos u objetos. Si lo codificáramos esto se representa como un atributo que es una instancia de otra clase. Esta relación se debe entender como la actividad de construir elementos complejos a partir de otros elementos más simples, y justamente, la verdadera esencia de la POO. En este caso el objeto no es creado dentro del objeto compuesto, es adherido mediante algún método que lo permita. <?php class A { // Definición de clase A } class B { private $coleccionA; public function __construct() { } public agregar() { $this->coleccionA[] = new A;
  • 5. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba } } Por ejemplo Un auto está compuesto por un motor, un tanque de combustible y una antena de radio, por lo tanto tendríamos: íamos los objetos Motor, Tanque y Antena. Representación UML La representación en UML es una “flecha continua” que va apuntando desde la clase “compuesto” hasta la o las clases “componentes”. Un diagrama genérico será: Nuevamente, los diagramas tienen varios mensajes que nos transmiten: de la flecha) e haga en la clase B, por la relación que hay con la clase A, podrá afectar a la clase A. Cómo se traduce a código Creando una clase A que tiene como atributo un objeto de tipo clase B. A.php <?php require_once 'B.php'; class A { private $_b; public function __construct(){ $this->_b = new B(); } } $a = new A(); PHP no soporta la creación de instancias en la definición de atributos, solo podríamos hacer una asignación directa si el atributo es un array, pero no crear una instancia (con “new”). Solo podremos crear las instancias de nuestros atributos en el constructor o dentro de los métodos de la clase
  • 6. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba UML del ejemplo del Auto Auto.php <?php require_once 'Motor.php'; require_once 'TanqueCombustible.php'; require_once 'AntenaRadio.php'; class Auto { private $_motor; private $_tanqueCombustible; private $_antenaRadio; public function __construct(){ $this->_motor = new Motor(); $this->_tanqueCombustible = new TanqueCombustible(); $this->_antenaRadio = new AntenaRadio(); }//fin del constructor } // fin de la clase $auto = new Auto(); Los comentarios sobre la lectura de las flechas y los sentidos son los mismos que en los casos anteriores: Según el sentido de las flechas, el Auto conoce a sus componentes y los componentes no conocen al Auto. Si los componentes cambian, afectan al Auto, ya que este está asociado a ellos, no así al revés.
  • 7. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba Variaciones de Asociación: Relación de Agregación y Relación de Composición Se puede especializar la relación “asociación” en dos tipos más (note que las flechas siguen siendo continuas pero agrega un rombo en su inicio). Relación de Agregación Es una relación de asociación pero en vez de ser “1 a 1” es de “1 a muchos”, la clase A agrega muchos elementos de tipo clase B Relación de Composición Similar a la agregación, solo aporta semántica a la relación al decir que además de “agregar”, existe una relación de vida, donde elementos de B no pueden existir sin la relación con A. Desde el punto de vista de muchos lenguajes (como Java o PHP) esto no necesariamente genera ningún cambio en el código, pero puede ser tomado como parte de la documentación conceptual de cómo debería ser el diseño del sistema. En el caso de la composición, es necesario crear dentro del objeto compuesto los objetos que serán parte del mismo. <?php class A { // Definición de clase A } class B { private $parteA; public function __construct() { $this->parteA = new A(); } }
  • 8. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba Ejemplos de Agregación y de Composición Ejemplo de traducción a código La forma de representar ambas variantes es simple y como en todos los casos, mecánica. El elemento del lenguaje que por defecto nos permite contener varios elementos es el array, por lo tanto del diagrama se desprenden (aunque no esté explícitamente) que tendremos: 1) Un atributo de tipo array para contener todos los elementos 2) Por lo menos un método para agregar los elementos al array, que generalmente se representa con un simple “add” (que como siempre queda sujeto a variar según nuestro criterio). Teniendo en cuenta lo anterior, podría apuntar mi diagrama a un público que no le fuera evidente su implementación, por lo tanto podría ser tan específico cómo:
  • 9. Universidad Politécnica Territorial Andrés Eloy Blanco Programa Nacional de Formación en Informática Ing. Lissette Torrealba Ejemplo de traducción a código Universidad.php Actividad a Realizar . Construye el Diagrama de Clases del sistema propuesto en Proyecto Socio tecnológico II Referencias Bibliográficas Enrique Place. Programación Orientada a Objeto para PHP5 Un sitio clave para quienes programamos en PHP orientado a objetos es PHPClasses: http://www.phpclasses.org