Está en la página 1de 26

Libreras e Interfaces

Fundamentos de Programacin
Introduccin
Qu es una interfaz?
Qu es una librera?
Cmo funciona una librera?

Interfaz
Representa el lmite entre dos entidades
distintas.
Al utilizar libreras debes de tener en cuenta 2
componentes:
Los programas clientes, los mismos que usan las
libreras
La implementacin de las libreras, en donde se
especifica como funciona internamente cada
funcin que esta implementa
La interfaz se refiere al limite entre la
implementacin y los programas clientes

Interfaz
Al invocar o llamar a una funcin de una
librera desde nuestro cdigo fuente (cliente), se
pasa informacin(argumentos) a su
implementacin a travs de la interfaz.
Una interfaz es el medio a travs del cual el
programa cliente y la librera se comunican
Programa
I
n
t
e
r
f
a
z

Librera
Enva argumentos
Enva resultados
Archivos de Cabecera (header
files)
Al usar una funcin de librera, el cliente debe
conocer ciertos datos de la misma:
Nombre
Argumentos (tipos y cuantos)
Tipo de resultado que genera
Toda esta informacin se encuentra disponible en
el prototipo
El prototipo de una funcin de librera se puede
encontrar en la interfaz de la misma
En este punto podemos deducir, que en C, el
concepto de interfaz se materializa en los
archivos de cabecera(*.h)
La interfaz entonces es la cara que la librera le
da al cliente
Paquetes
Las libreras siempre tienen un archivo de
cabecera
Pero esto no lo es todo
En la interfaz SOLO van los prototipos y
declaraciones
La implementacin debe ir en un archivo
fuente(*.c)
Para libreras muy completas y complejas se
necesitan mas de un archivo fuente
En conjunto todos estos archivos se conocen como
un paquete

Fundamentos de Programacin
Creando Una Librera
Introduccin
El uso de libreras es una herramienta poderosa
con la cual contamos como parte del lenguaje C
Estamos listos para disear nuestras propias
interfaces y crear nuestras libreras
Lo importante aqu no es tanto el como, es mas
el hacerlo bien

Diseo De Una Interfaz
Las funciones y los procedimientos nos ayudan a
reducir la complejidad de los programas
Una interfaz le da a un programa, acceso a un
grupo de funciones
Para aadir una funcin a una interfaz, debemos
hacerlo con un cierto criterio

Criterios Para Disear una
interfaz
Una interfaz bien diseada, debe cumplir los
siguientes requisitos:
Unificacin
Simplicidad
Suficiencia
Generalidad
Estabilidad

Unificacin
Las funciones dentro de una librera, deben
ser escogidas, de acuerdo a un cierto tema
No seria lgico buscar sqrt en la librera
string.h, pues esta va mas acorde con el
enfoque de una librera matemtica
La unificacin tambin se refiere al enfoque
que se le da a un problema dentro de la
misma librera.
Simplicidad
Al disear una interfaz, el objetivo principal es reducir
la complejidad, a travs del uso de ciertas funciones
Se trata de proteger al cliente de los detalles
complicados
La complejidad de la implementacin se queda en el
lado del creador de la librera
Se esconde informacion del cliente, no se
mencionan detalles en la interfaz, ni siquiera a traves
de comentarios
Las funciones tambin deben ser diseadas lo mas
simples posibles:
Reduciendo el numero de parmetros al mnimo
Limitando el total de funciones de la interfaz, para no abrumar
al cliente y confundirlo
Suficiencia
Que exista simplicidad, no implica que se debe
sacrificar la suficiencia
Al cliente se lo debe proveer de la mayor cantidad de
posibilidades de trabajo
Negarle a un cliente una posibilidad de trabajo es
fracasar en el diseo de una interfaz
Adems de que las posibilidades estn disponibles,
estas deben funcionar eficientemente
El cliente debe poder confiar en que los resultados
dados por una librera, siempre sern correctos, y
que llegaran a el a tiempo
Estos detalles tienen mas que ver con la implantacin
que con la interfaz, pero son estrategias que no
debemos pasar por alto
Generalidad
Una interfaz que solo se adapta a las
necesidades de un cliente en particular,
puede que no sirva para otros
Una interfaz debe ser lo suficientemente
general, para resolver un buen grupo de
posibilidades
Al crear una interfaz debemos olvidarnos de
nuestro punto de vista y ponernos en el lugar
de todos los posibles clientes
Estabilidad
Si la interfaz no cambia, los clientes no tienen porque
cambiar sus programas
Un creador puede perfectamente hacer cambios a su librera,
y si diseo correctamente su interfaz, estos cambios no
afectaran a los clientes
Los cambios que haga el creador se harn en la
implementacin de la librera
Cuando se haga un cambio en la interfaz, todos los clientes
debern cambiar sus programas
Usualmente estos cambios son profundos y no se hacen
frecuentemente
Construccin de una Librera Propia
Cuando poseemos un conjunto propio de funciones, las cuales
podemos podamos reutilizar en otros programas que creemos, lo
ideal es crear nuestra propia librera
Las libreras que crearemos, son archivos de extensin .lib
Para lograrlo se deben seguir ciertos pasos:
Crear un proyecto, de tipo Librera esttica
Aadir al proyecto un archivo de cabecera (para la interfaz). Aqu se
aadirn:
Prototipos
Declaraciones de constantes
Nuevos tipos de datos
Aadir al proyecto un archivo .c que contendr la implementacin de las
herramientas declaradas en la interfaz
Al terminar, se creara un archivo de extensin .lib, que ser nuestra
nueva librera
Construccin de una Librera Propia
Creando la interfaz
La interfaz es la cara que una librera expone a un cliente
En una interfaz se pueden incluir:
Prototipos de funciones
Declaraciones de constantes(usando #define)
Declaraciones de nuevos tipos de datos(veremos como mas
adelante)
Esto quiere decir que jams se incluir implementacin en una
interfaz
El formato general de una interfaz es:

La Implementacin
Usando la librera
Usando la librera
Usando la librera
Fundamentos de Programacin
Uso de variables globales
Cuando realizamos la implementacin de un
mdulo debemos prever si es necesario conocer
y mantener el rastro de su estado interno.
Siendo este estado preservado entre las
llamadas a las funciones.
Para ello se utilizan variables globales.

int numeros_encontrados;
bool BuscarNumero (int arreglo, int numero, int posicion, int sentido)
{
int i;
......
numeros_encontrados++;
}

La variable posicion_actual es global y existe todo el tiempo, variable i es
local existe durante la llamada al procedimiento
Estado de un mdulo
El uso de variables globales plantea serios
problemas que deben de ser tomados en
consideracin por el BUEN programador
Hace ms difcil la lectura de cdigo
Se hace difcil ubicar el cambio del valor de la variable,
debido a que muchas funciones acceden a ella (incluso
desde otros mdulos).
Para evitar problemas son muy poco usadas en buenos
programas estructurados.
Para evitar la referencia con varios mdulos, se
usa la palabra reservada STATIC al inicio de la
declaracin Ej:
static int cpos;
Declara a cpos como variable global entera, que puede
ser accesada por cualquier funcin dentro del mdulo
definido
Al declararse static , se mantiene privada a la
abstraccin definida.
Variables globales
Inicializacin esttica
Se le asigna el valor mucho antes de ser utilizada por
alguna funcin.
Se utiliza en variables que usualmente tiene un valor
inicial en particular y que pocas funciones quisieran
cambiarlo.
Estos valores se conocen como valores default.
Inicializacin Dinmica
Se le asigna valor justo antes de ser utilizada.
Se lo hace mediante un llamado a una funcin de
inicializacin
Si stas variables representan estado interno de un
mdulo, muy probablemente sus valores cambien
durante la ejecucin del programa.
Initializacin de Variables Globales

También podría gustarte