Programación por capas Capa de Clases

Download Report

Transcript Programación por capas Capa de Clases

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.
Caso de Estudio
Boss
Clerk
-ID : int
-Name : string
-Charge : string
-ID : int
-Name : string
-Salary : double
1..*
0..*
classes/boss.php
classes/clerk.php
classes/clerk.php (continuación): Relational Keys
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)
Ejemplo
Constructor
(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.
Ejemplo Get y Set
(get_set.php)
Secciones de una clase
Attribute 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.
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.
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.
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%.
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 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();