Docu
ument
tación
: Gest
tor de
Imáge
enes.
(G
GTK2.
0, GDK
K2Pixb
buf, Fre
eePasc
cal & M
MySQL
L)
Jose A
Alberto
o Benít
tez And
drades
s
Meto
odología y Te
ecnología de
e la Program
mación
2
º Ingeniería
Informática
a, DNI: 71454
4586A
infja
ab02@estud
diantes.unile
eon.es
Gestor de Imágenes Metodología y Tecnología de la Programación
PRÓLOGO.
Índice
1. ARQUITECTURA DE LA APLICACIÓN.
1.1. DISEÑO DE LA BASE DE DATOS.
1.1.1. Tabla Imagen.
1.1.2. Tabla Tematica.
1.1.3. Tabla SubTematica.
1.1.4. Diagrama Entidad‐Relación.
1.2. CODIFICACIÓN.
1.2.1. errorsInOut.pas
1.2.2. tad_cola.pas
1.2.3. miMysql.pas
1.2.4. GestionImagenes.pas
1.2.5. intGes.pas
1.2.6. tratadoXML.pas
1.2.7. JABAGI.pas
1.3. DICCIONARIO DE DATOS.
1.3.1. Unidad tad_cola.pas
1.3.2. Unidad miMysql.pas
1.3.3. Unidad GestionImagenes.pas
2. FUNCIONAMIENTO DEL PROGRAMA.
Jose Alberto Benítez Andrades [71454586A]
[email protected]
Página 2
Gestor de Imágenes Metodología y Tecnología de la Programación
PRÓLOGO
A la hora de realizar aplicaciones, un programador debe tener en cuenta
muchos aspectos, tales como los tipos de datos a utilizar y las operaciones para
trabajar con ellos, es decir, realizar un diseño “interno” del programa. Todo esto no le
interesa al usuario final, que únicamente pedirá como requisito que aquello que le
ofrecemos funcione correctamente, y lo haga de la mejor manera posible y además,
cuanto más sencillo mucho mejor.
Estas razones hacen necesaria la implementación de una interfaz agradable
para el usuario, que le permita realizar las tareas que solicita sin demasiado esfuerzo
(tras un simple “clic” puede haber cientos o incluso miles de líneas de código...).
La interfaz de nuestro programa es la carta de presentación del mismo, y como
tal debe ser capaz de llamar la atención. Es muy posible que la primera impresión del
usuario ante dos programas que realicen la misma tarea, haga que se incline hacia una
aplicación con interfaz gráfica frente a otra en modo texto, a pesar de no ser la que
funciona mejor.
1. ARQUITECTURA DE LA APLICACIÓN.
La elaboración de una práctica mediana conlleva una buena fase de análisis del
problema y diseño del programa, ya que si no seguimos bien las especificaciones del
programa, podemos crear una aplicación que no hace lo que el cliente nos pide.
Otro problema muy frecuente, es la mala elección de unos tipos de datos y una
mala codificación del programa, ya que eso conllevaría a un programa ineficiencia, ya
sea porque posee muchas líneas de código para hacer algo sencillo, o simplemente
porque a la hora de la ejecución, el programa funciona muy lentamente y con errores.
En este apartado voy a explicar el diseño de la base de datos que he utilizado
para hacer el programa, y también desglosaré el funcionamiento de las unidades y del
programa principal.
1.1. DISEÑO DE LA BASE DE DATOS.
Según las especificaciones del programa, debemos crear una base de datos en
la que podamos almacenar imágenes que contengan la siguiente información:
Identificador textual de la imagen (nombre descriptivo),
•
• descripción textual abierta de la imagen,
• nombre del fichero asociado,
•
Jose Alberto Benítez Andrades [71454586A]
tipo de fichero,
[email protected]
Página 3
Gestor de Imágenes Metodología y Tecnología de la Programación
tamaño en bytes,
•
• anchura y altura de la imagen,
•
•
temática principal de la imagen,
temática padre de la temática principal, (la clasificación por temáticas es
jerárquica, considerándose imagen como el término que define la raiz de la
jerarquía)
• un conjunto de etiquetas libres (texto) asociadas a la imagen.
Para ello he creado 3 tablas, imagen, tematica y subtematica.
1.1.1. Tabla Imagen.
La tabla principal, en la que almacenaremos las imágenes en sí con toda su
información, es la tabla que yo he denominado imagen. Contiene los siguientes
campos:
Id: Identificador de Imagen único para cada imagen añadida, es la clave
primaria de nuestra tabla imagen.
‐ nombre_imagen: el nombre del fichero imagen.
‐ descripcion: descripción de la imagen.
‐
almacenará
se
de
type
el mime
tipo:
(image/jpeg,image/png...).
tematica: se almacena la id de la imagen, con ella podremos obtener el
nombre de la temática y más información desde la tabla Tematica.
subtematica: al igual que tematica, almacena una id con la cual
podremos obtener el nombre de la subtematica desde la tabla
Subtematica.
imagen
la
‐
‐
‐
‐ anchura: anchura de la imagen en píxeles.
‐ altura: altura de la imagen en píxeles.
‐
‐ etiquetas: etiquetas que pertenecen a la imagen.
‐
tamano: tamaño de la imagen en bytes.
Identificador: es el id único de cada imagen que nos hará falta para la
gestión de las imágenes.
1.1.2. Tabla Tematica.
En esta tabla se almacenan todas las temáticas que puede poseer una imagen,
y además se almacenará si la temática tiene temáticas hijas, o no. Los campos que
posee son los siguientes:
‐
id: almacena la id única de cada temática, es la clave primaria de la
tabla.
‐ nombre: nombre de la temática.
‐ espadre: es un booleano que almacena TRUE si la temática tiene
temáticas hijas, o FALSE si por el contrario, no posee temáticas hijas.
Jose Alberto Benítez Andrades [71454586A]
[email protected]
Página 4
Gesto
or de Imágene
es
M
Metodología y
Tecnología d
de la Program
mación
3. Tabla S
SubTemat
1.1.3
ica.
En esta t
pos y son lo
tabla se alm
os siguiente
s:
camp
macenarán la
as relacione
es padre‐hij
jo de las tem
máticas, tie
ne 3
‐
‐
id
d_padre: se
e
el campo id
id
d_hijo: cont
e
el campo id
‐ n
nombre_hijo
4. Diagram
ma Entida
e almacena
de la tabla
tiene la id d
de la tabla
o: almacena
ad‐Relació
la id de la t
tematica.
de la temáti
tematica.
a el nombre
ón.
1.1.4
e de la temá
ática hija.
temática pa
adre, está re
elacionada c
con
ica hija, está
á también r
relacionada
con
El Diagra
ama Entidad
d‐Relación d
de la base d
de datos ant
teriormente
e explicada
sería
el sig
guiente :
1.2.
. CODIF
FICACIÓN
N.
Una vez
dar el prob
s de cómo h
rama está f
abor
ideas
prog
z pensada
blema, com
hacer funcio
formado po
la distribuc
ienza la eta
onar el prog
or 6 unidade
ción de la
apa de codi
grama, a có
es y el progr
base de d
ficación, en
ódigo. Desp
rama princi
datos, y pe
n la cual, pa
ués de hace
pal:
nsado en c
asamos nue
er la práctic
cómo
estras
ca, mi
Unid
ades:
•
•
•
•
•
•
errorsInO
tad_cola
miMysql
tratadoX
GestionI
intGes.p
Jose A
Alberto Benít
Out.pas
a.pas
l.pas
XML.pas
magenes.p
as
tez Andrades
as
[71454586A
A]
Infjab
b02@estudian
ntes.unileon.e
s
Pá
ágina 5
Gestor de Imágenes Metodología y Tecnología de la Programación
Programa principal:
•
JABAGI.pas
1.2.1. errorsInOut.pas
Esta unidad es la encargada de gestionar los errores a la hora de crear, abrir o
leer ficheros. Contiene un único procedimiento:
PROCEDURE calcError(error:integer);
Recibe como parámetro un número entero que representa el tipo de error, y
dependiendo de ese número muestra un mensaje u otro. Por ejemplo en nuestro
tratadoXML.pas al abrir el descriptor.xml tenemos el siguiente código:
{$I‐}rewrite(descriptor);{$I+}
errorF := ioresult;
if (errorF<>0) then
Begin
calcError(errorF);
End
errorF es una variable de tipo entera, en la cual se almacena el ioresult, que se obtiene
con la creación de un fichero en este caso. Cuando errorF es distinto de 0, significa que
hay un error, éste se envía al procedimiento calcError y muestra por pantalla un
mensaje. Por ejemplo si no tenemos permisos para crear el fichero errorF sería 5 y
calcError ejecutaría en su case el siguiente caso:
5 : writeln('Acceso denegado');
1.2.2. tad_cola.pas
Esta unidad está formada por 4 procedimientos y 2 funciones:
PROCEDURE ColaVacia(var C:tCola);
‐ Este procedimiento se encarga de crear una cola vacía.
FUNCTION EsVacia(C:tCola):boolean;
‐ Esta función comprueba si la cola está vacía o contiene elementos.
Jose Alberto Benítez Andrades [71454586A]
[email protected]
Página 6
Gestor de Imágenes Metodología y Tecnología de la Programación
FUNCTION Primero(C:tCola):longint;
‐ Con esta función obtenemos el primer elemento de la cola.
PROCEDURE Poner(var C:tCola; tematica:longint);
‐ Con este procedimiento insertamos elementos en la cola.
PROCEDURE Quitar(var C:tCola; var tematica:longint);
‐ Este procedimiento se utiliza para eliminar elementos de la cola.
PROCEDURE Suprimir(var C:tCola);
‐ Este procedimiento es con el que borramos realmente el elemento que
se le pasa desde el procedimiento anterior Quitar y actualizamos la cola.
Del uso de esta unidad en nuestro programa hablaremos en el punto 1.2.6. JABAGI.pas
1.2.3. miMysql.pas
Esta unidad contiene todas las rutinas que vamos a necesitar relacionadas con
la base de datos MySQL (co
Comentarios de: Documentación : Gestor de Imágenes. (GTK2.0, GDK2Pixbuf, FreePascal & MySQL) (0)
No hay comentarios