Si un ser humano quiere interactuar con una máquina necesita un medio para poder hacerlo. Ese medio es, precisamente, lo que se conoce como interfaz de usuario; la parte del sistema que interactúa con el usuario. La interfaz es un lugar de encuentro entre los bits y las personas.
2.1 Definición conceptual de componentes, paquetes / librerías.
Componente Es una clase abstracta que representa todo lo que tiene una posició n, un tamañ o, puede ser pintado en pantalla y puede recibir eventos.
Librerías La utilizació n de objetos diná micos supone dejar pendiente en el montaje de la aplicació n el enlace de dichos objetos. Cuando la aplicació n está en ejecució n, y só lo entonces, se produce el enlace (diná mico) con los objetos contenidos en la librerı́a. La creació n de librerı́as diná micas corre a cargo del enlazador o montador (en nuestro caso el ld) aunque tambié n es posible indicar al compilador las opciones necesarias para el montaje y de ese modo, será é l quien se encargue de pasá rselas al montador. Cuando se crea un objeto diná mico es necesario que dicho có digo objeto sea independiente de la posició n, para conseguir este tipo de có digo debe especificarse al compilador la opció n -fPIC (Position IndependentCode). Dicho flag debe indicarse tanto en la compilació n como en el montaje de la librerı́a. Para montar los objetos es necesario ademá s indicar la opció n -shared para que el resultado sea un fichero objeto ‘compartible’.
2.2 Uso de librerías proporcionadas por el lenguaje.
2.3 Uso de componentes (visuales y no visuales) proporcionados por el lenguaje
Un componente desde el punto de vista de programació n esta compuesto por varias secciones y el conjunto de todas ellas dan lugar a la creació n de dicho componente. Por tanto, primero para no perder el norte, vamos a empezar definiendo el convenio que es utilizado para organizar dichas secciones por TinyOs. En general, un componente posee tres grandes secciones que son: Configuration, Implementation,Modul e. Estas tres secciones han de estar obligatoriamente presentes en cualquier componente aunque puedan estar vacı́as. El está ndar de TinyOs determina, que las secciones de Configuration e Implementatió n han de ir en un fichero que recibirá el nombre del componente con la extensió n .nc y la tercera secció n de Module deberá de ir en otro fichero aparte quer ecibirá el nombre
Asignatura: Programación Lógica y Funcional.
Ing. En Sistemas Computacionales. Dr. Edgar M. Lorca Velueta; Sistemas Computacionales, PhD INSTITUTO TECNOLÓGICO SUPERIOR DE CENTLA Academia de Sistemas Computacionales y TIC´s del componente concatenado con un M mayú scula (la M da elsignificado al fichero, es el significado de Module) , este ú ltimo fichero tambié n poseerá extensió n .nc. Otra buena costumbre consiste en crear un fichero de header o cabecera con extensió n .h que contenga todas las enumeraciones, registros o tipos de datos creadospor el usuario de los que hace uso la aplicació n, y cuando se realiza esto la forma de ligar dicho fichero con los otros dos es utilizando al principio de los otros fichero la directiva includesheader; aunque como menció n especial decir que si nos fijamos mejor en este directiva se puede ver que no se incorpora la extensió n .h en la misma. Ahora que ya sabes cuales son las secciones que va a contener cada fichero vamos a empezar a explicar cada una de ellas. Implementatió n. Esta secció n se va a encargar de definir las conexiones que hay entre los diferentes componentes que utiliza la aplicació n, esto es debido a que si recordamos un poco, se ha comentado que la programació n de un componente (que se llevará a cabo en la secció n de module) se hace utilizando interfaces y dichas interfaces para poder utilizarlas las ha de proporcionar un componente, entonces bá sicamente es esta secció n se definen cuales son los componentes que proporcionan las interfaces a nuestra aplicació n (por lo general será n componentes primitivos). Una vez que conocemos la finalidad de esta secció n y llegados a este punto, vamos a insertar un concepto nuevo que es la diferencia que existe entre una aplicació n que esta ya disponible para ser ejecutada en un sensor y un componente cualquiera. La diferencia es muy poca, y consiste en que una aplicació n es un componente como cualquier cosa en este lenguaje que en su secció n de implementació n hace uso de un componente especial denominado Main.
2.4 Uso de librerías proporcionadas por el lenguaje
Java es un lenguaje de programació n desarrollado para una multitud de plataformas y procesadores.
Consideremos los dos tipos de aplicaciones grá ficas má s comunes.
Modelos de Frames y Applets, se pueden construir usando cualquiera de las dos galerı́as de componentes visuales, son:
• JAVA AWT: Es la librerı́a visual má s antigua de java usando esta librerı́a, se podrá n construir los tres tipos de programas mas comunes como son FRAME, WINDOW y APPLET.
• JAVA SWING: Es la librerı́a de componentes visuales má s nueva que proporciona java, usando esta librerı́a se podrá n construir los tres tipos de programas o aplicaciones que son JFRAME, WINDOW Y JAPPLET.
Un applet es un programa en java que se mandan a una má quina o PC remota para que los ejecuten o lo corra, cuando este applet de llegada a las má quinas remotas vı́a
Asignatura: Programación Lógica y Funcional.
Ing. En Sistemas Computacionales. Dr. Edgar M. Lorca Velueta; Sistemas Computacionales, PhD INSTITUTO TECNOLÓGICO SUPERIOR DE CENTLA Academia de Sistemas Computacionales y TIC´s browser, dicho browser es quien activa la má quina virtual de java que da la orden de compilació n y ejecució n, es decir java programa.applet. Entonces es importante que la má quina virtual de java, que se encuentra en la PC remota,tenga capacidad de incluir todas las librerı́as de java, como la de match, la de AWT, la de lang.etc.
2.5 Creación de componentes (visuales y no visuales) definidos por el usuario 2.6 Creación y uso de paquetes/librerías definidas por el usuario.
Se puede establecer muchas clasificaciones para los componentes. Una de ellas es la de visuales o controles, frente a no visuales.
Un componente es visual cuando tiene una representació n grá fica en tiempo de diseñ o y ejecució n (botones, barras de scroll, cuadros de edició n, etc.), y se dice no visual en caso contrario (temporizadores, cuadros de diá logo-no visibles en la fase de diseñ o, etc). Por lo demá s no existen má s diferencias entre ellos, excepto, claro está , las derivadas de la visualizació n del componente.
Los componentes no visuales se pueden colocar en los formularios de la misma manera que los controles, aunque en este caso su posició n es irrelevante.
Para empezar, los componentes visuales podemos dividirlos a su vez en dos tipos: - Componentes interactivos: permiten que el usuario final los manipule, ya sea introduciendo datos, seleccionado elementos, etc. De forma que estos componentes pueden recibir el foco (con SetFocus) ası́ como los eventos propios del teclado y del rató n. Normalmente, el propio sistema operativo es el encargado de dibujar el aspecto del componente, haciendo el componente las llamadas correspondientes para que este aspecto cambie.
-Componente grá ficos: el propio componente es el encargado de dibujar en la pantalla lo que crea oportuno, bien a travé s de las funciones bá sicas del API de Windows (con el objeto TCanvas) o bien a travé s de otras librerı́as grá ficas, como OpenGL, DirectX, etc. Estos componentes, no suelen recibir eventos del usuario final, aunque si eventos del propio programador, ya que su cometido no suele ir má s allá de mostrar ciertos grá ficos o imá genes en la pantalla.
Si tuvié ramos que crear un componente interactivo desde el principio, serı́a demasiado complejo, ya que tendrı́amos que luchar encontrar el propio API del sistema operativo, gestionando sus mensajes, las llamadas las funciones a bajo nivel, etc. Sin embargo, podemos aprovechar la mayorı́a del trabajo hecho por Borland en la VCL, y crear componentes interactivos a partir de otros ya existentes, aplicado la té cnica de herencia.
Asignatura: Programación Lógica y Funcional.
Ing. En Sistemas Computacionales. Dr. Edgar M. Lorca Velueta; Sistemas Computacionales, PhD