Programación por capas: Capa de Clases
description
Transcript of Programación por capas: Capa de Clases
![Page 1: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/1.jpg)
Programación por capas:Capa de Clases
Diseño y Construcción de Productos de SoftwareDaniel Correa Botero
Jeferson David OssaUniversidad Nacional de Colombia
Sede Medellín 2013
![Page 2: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/2.jpg)
Resumen CapasEl triangulo rojo superior es lo visto hasta el momento, ahora continuaremos con la capa de clases.
![Page 3: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/3.jpg)
Capa Clases
Esta capa contiene el equivalente a la base de datos pero en forma objetual, guarda y recoge la información de los objetos, sus atributos, sus funciones, sus métodos, entre otros.
Muchos desarrollos se basan en el diagrama de clases y la programación orientada a objetos (POO) permite codificar fácilmente toda la información de este diagrama.
![Page 4: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/4.jpg)
Reglas de la Capa de Clases1) Todas las clases se deben encontrar en la carpeta glight/classes/*.
2) El nombre de las clases debe ser en minúscula, singular y en caso de que contenga 2 o más palabras se debe usar el guión bajo y finalmente deben terminar con la extensión .php (ejemplo: user.php - person.php - doc.php).
3) Si una clase hace referencia a una tabla, entonces ambas deben llamarse igual. Por ejemplo: Si se creo la tabla user, entonces la clase que referencia esta tabla también se debe llamar user.
4) Todos las clases deben extender (o heredar) de la clase 'object_standart' (clase que se definirá más adelante).
5) Todos las variables o atributos principales de cada clase deben ser protegidos, y solo se podrá acceder a ellos mediante las funciones get y set definidas en el objeto estándar.
![Page 5: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/5.jpg)
Objeto Estándar
• Recoge las funciones en común (get – set – assign - components - construct).
• Se encuentra en la ruta glight/modules/object_standart.php
• Esta archivo no debe ser modificado.
![Page 6: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/6.jpg)
Caso de Estudio
-ID : int-Name : string-Charge : string
Boss
1..* 0..*
-ID : int-Name : string-Salary : double
Clerk
![Page 7: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/7.jpg)
classes/boss.php
![Page 8: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/8.jpg)
classes/clerk.php
![Page 9: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/9.jpg)
classes/clerk.php (continuación): Relational Keys
![Page 10: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/10.jpg)
ConstructorEl constructor es llamado automáticamente una vez se hace una creación de un objeto de una clase: $person = new person();
El constructor recibe 4 parámetros TODOS OPCIONALES:
- $data: es un objeto (no puede ser un array debe ser un objeto) que contiene la información de los atributos que se deseen establecer por primera vez.- $components: es una lista opcional de las relacionales de la clase (será profundizado más adelante).- $orm: es un objeto de clase ORM con información importante que se utiliza cuando se quiere asignar un componente (será profundizado más adelante).- $auxiliars: esta variable se usa cuando se quiere establecer atributos adicionales a los propios de la clase (más adelante se profundiza)
![Page 11: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/11.jpg)
EjemploConstructor
(constructor.php)Nota: las clases no necesitan ser incluidas en la zona de inclusión, en functions.php existe una función autoload que carga estos archivos automáticamente.
![Page 12: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/12.jpg)
Get y SetGET: Permite obtener el valor de alguno de los atributos del objeto
(se recomienda usar solo con atributos y no con componentes o con auxiliares).
- Recibe un solo parámetro que es el atributo que queremos obtener.
SET: Permite modificar el valor de alguno de los atributos del objeto.
- Recibe 2 parámetros el atributo que se desea modificar y el valor que se le desea asignar.
![Page 13: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/13.jpg)
Ejemplo Get y Set (get_set.php)
![Page 14: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/14.jpg)
Secciones de una claseAttribute variables: son los atributos de cada
clase (en caso de tener base de datos: cada atributo debe representar una columna de la tabla correspondiente).
Primary key: Esta función retorna el nombre de el ó los atributos los cuales representan la clave primaria de cada clase.
![Page 15: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/15.jpg)
Secciones de una clase Attribute Info: Nos permite obtener información acerca de los atributos de cada
clase, su nombre y si representa una clave foránea o no.
- "foreign name": (sólo usado cuando el atributo representa una clave foránea) representa el nombre de la relación a la cual hace referencia. En el ejemplo anterior el nombre de la relación seria "b_p" (más adelante se detallará información sobre los nombres de las relaciones).
- "foreign": (sólo usado cuando el atributo representa una clave foránea) representa el nombre de la clase con la cual se relaciona, en este caso “boss”.
- "foreign attribute": (sólo usado cuando el atributo representa una clave foránea) representa el nombre del atributo de la clase "boss" (en este caso) con el cual se relaciona y con el cual se debe comparar para verificar que si pertenezca a la relación.
![Page 16: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/16.jpg)
Secciones de una Clase
Relational Keys: Las claves relacionales, representan relaciones entre las diferentes clases, se usan para saber en base a que atributos se dan estas relaciones.
![Page 17: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/17.jpg)
Secciones de una Clase Class functions and methods: Esta zona esta destinada para métodos y
funciones propias de cada clase, cada desarrollador podrá programar en esta zona las funciones que considere necesarias para su software y que se encuentren en el diagrama de clases.
• Agregar la función aumento, la cual aumenta el sueldo en 10%.
![Page 18: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/18.jpg)
Ejemplo función de una clase
(func.php)
Se puede adicionar antes de $data->document = “1001”;
La línea:settype($data,’object’);
Para evitar unas alertas que a veces aparecen por crear un objeto sin instanciar.
![Page 19: Programación por capas: Capa de Clases](https://reader036.fdocuments.ec/reader036/viewer/2022081417/56813bf1550346895da5275e/html5/thumbnails/19.jpg)
Actividad:
A) Crear 5 personas en memoria.B) Crear una función de la clase clerk que permita encontrar la persona con menor salario.C) Crear una función estática (de modo tal que sea pertinente) de la clase clerk que permita encontrar el promedio de los salarios.D) Mostrar la información de las 5 personas, el promedio de salarios y el menor salario en un template.
Ayuda: Operador de Resolución de Ámbito (::):Class::staticFunc();