200 likes | 403 Views
Programación por capas: Capa de Clases. Diseño y Construcción de Productos de Software Daniel Correa Botero Jeferson David Ossa Universidad Nacional de Colombia Sede Medellín 2013. Resumen Capas.
E N D
Programación por capas:Capa de Clases Diseño y Construcción de Productos de Software Daniel Correa Botero Jeferson David Ossa Universidad Nacional de Colombia Sede Medellín 2013
Resumen Capas El triangulo rojo superior es lo visto hasta el momento, ahora continuaremos con la capa de clases.
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.
Reglas de la Capa de Clases 1) 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.
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.
Constructor El 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)
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.
Get y Set GET: 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.
Secciones de una clase • Attribute variables: son los atributos de cadaclase (en caso de tener base de datos: cadaatributodeberepresentarunacolumna de la tablacorrespondiente). • Primary key: Esta función retorna el nombre de el ó los atributos los cuales representan la clave primaria de cada clase.
Secciones de una clase • AttributeInfo: Nos permite obtener información acerca de los atributos de cada clase, su nombre y si representa una clave foránea o no. • "foreignname": (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”. • "foreignattribute": (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.
Secciones de una Clase • RelationalKeys: Las claves relacionales, representan relaciones entre las diferentes clases, se usan para saber en base a que atributos se dan estas relaciones.
Secciones de una Clase • Classfunctions 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%.
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.
Actividad: A) Crear 5 personas en memoria.B) Crear una función de la clase clerkque permita encontrar la persona con menor salario.C) Crear una función estática (de modo tal que sea pertinente) de la clase clerkque 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();