Sie sind auf Seite 1von 125

UNIVERSIDAD NACIONAL AUTNOMA DE MXICO FACULTAD DE CONTADURA Y ADMINISTRACIN

Programa de la asignatura: PROGRAMACIN DE INTERFACES Ver. 1.0 LICENCIATURA: INFORMTICA SEMESTRE: 7. PLAN: 2005 CLAVE: AREA: Informtica (Desarrollo de sistemas) Hora / Semana / Semestre Tericas Prcticas 4 MODALIDAD: Laboratorio SERIACIN ANTECEDENTE OBLIGATORIA: Ninguna SERIACIN SUBSECUENTE OBLIGATORIA: Ninguna 0 Crditos: 8

CARCTER: Obligatoria

OBJETIVO: Al finalizar el curso, el alumno ser capaz de incorporar diversas formas de expresin e interaccin entre el hombre, la computadora y otros sistemas.

TEMAS

Nmero de horas:

I.-Introduccin a las interfaces II.-Lenguaje de programacin para el desarrollo de interfaces III.-Interfaces grficas IV.-Interfaces a bases de datos

2 30 6 26

TOTAL: 64 HORAS

TEMAS: I. INTRODUCCIN A LAS INTERFACES. 1.-Historia de las interfaces. 2.-Interfaces para el usuario, bases de datos e Internet. 3.-Lenguajes de programacin para el desarrollo de interfaces. II. LENGUAJES DE PROGRAMACIN PARA EL DESARROLLO DE INTERFACES. 1.-Java. 2.-PHP. 3.-Python. 4.-Tcl/Tk. 5.-Visual Basic. III. INTERFACES GRAFICAS. 1.-Interfaces grficas orientadas al usuario. 2.-Criterios de uso. 3.-Principios de composicin en el diseo de las ventanas. 4.-Color. 5.-Disposicin de la ventana. 6.-Alineacin. 7.-Espaciado. 8.-Mens. 9.-Cuadros de texto, botones, tablas, etiquetas etctera. IV. INTERFACES A BASES DE DATOS 1.-Utilizando Java. 2.-Utilizando PHP. 3.- Utilizando Python. 4.- Utilizando Tcl/Tk. 5.- Utilizando Visual Basic.

I. INTRODUCCIN A LAS INTERFACES. 1.-Historia de las interfaces. 2.-Interfaces para el usuario, bases de datos e Internet. 3.-Lenguajes de programacin para el desarrollo de interfaces.

I. INTRODUCCIN A LAS INTERFACES. Actualmente en la mayora de los sistemas electrnicos es comn el uso de una computadora dentro del proceso de control. Esto es as, porque el Software, ms que el Hardware, permite hacer cualesquier ajustes a los parmetros del sistema con el fin de obtener una respuesta deseada. Adems, las computadoras tambin pueden efectuar funciones de supervisin, como la programacin de numerosas aplicaciones requeridas. Por otro lado, el uso de computadoras dentro del sistema tiene grandes ventajas entre ellas estn: Reduccin en el costo. Flexibilidad en respuesta a los cambios en el diseo. Incremento en la funcionalidad. Capacidad de capturar una gran cantidad de datos y procesarlos con rapidez. Capacidad de comunicacin del software al hardware.

Una FPGA (del ingls Field Programmable Gate Array) es un dispositivo semiconductor que contiene bloques de lgica cuya interconexin y funcionalidad puede ser configurada 'in situ' mediante un lenguaje de descripcin especializado. La lgica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lgica o un sistema combinacional hasta complejos sistemas en un chip. Las FPGAs se utilizan en aplicaciones similares a los ASICs sin embargo son ms lentas, tienen un mayor consumo de potencia y no pueden abarcar sistemas tan complejos como ellos. A pesar de esto, las FPGAs tienen las ventajas de ser reprogramables (lo que aade una enorme flexibilidad al flujo de diseo), sus costes de desarrollo y adquisicin son mucho menores para pequeas cantidades de dispositivos y el tiempo de desarrollo es tambin menor. Ciertos fabricantes cuentan con FPGAs que slo se pueden programar una vez, por lo que sus ventajas e inconvenientes se encuentran a medio camino entre los ASICs y las FPGAs reprogramables

Hoy en da los grficos por computadora son el principal medio de comunicacin entre usuarios y computadoras, debido a su facilidad de uso. Pues los diferentes recursos disponibles de representan con imgenes que pueden controlarse con dispositivos de entrada tales como teclado, mouse, pantallas sensitivas al contacto etc. El punto de entrada en la interaccin del usuario con la computadora es el escritorio (desktop), donde se puede usar la informacin almacenada en carpetas (folders) y documentos, que se administran mediante programas de aplicacin y herramientas. El escritorio tambin nos da acceso a programas de aplicacin y herramientas para manipular la informacin de la computadora. Cuando los ejecutamos se despliegan en reas de la pantalla (ventanas) que hacen un fuerte uso de grficos. Cuando estn bien diseadas son fciles de aprender y requieren poca escritura.

Objetos y Propiedades. Las ventanas pueden desplegar objetos de la interfaz de usuarios. Un objeto es una entidad lgica que la aplicacin despliega y el usuario manipula. Por ejemplo, en una aplicacin de procesamiento de texto tenemos prrafos y palabras. Representan datos y partes de las labores que realiza el usuario. Los objetos tienen caractersticas que definen su comportamiento, llamadas propiedades. Por ejemplo, un prrafo puede tener una propiedad llamada font, que determina el tipo de letra utilizado. Los usuarios normalmente pueden ver el valor asignado a las propiedades y modificarlo. Las vistas son diferentes formas de desplegar objetos y sus caractersticas, como son listas de elementos, tablas de propiedades o conos.

1.- Historia de las interfaces Evolucin histrica La tecnologa de interfaz de usuario, al igual que el hardware, ha pasado por una serie de generaciones. Estas generaciones contienen o parecen contener a las anteriores, y se pueden clasificar cronolgicamente como sigue. Hasta 1945: no exista ningn paradigma de interfaz de usuario, y se haca acceso directo de forma manual al hardware. La primera generacin 19451955: programacin en modo batch o por lotes de interfaces no era interactiva, ya que la interaccin entre el sistema y el usuario se restringa a un nico punto en el tiempo. Todos los mandatos del usuario tenan que ser especificados antes de que el usuario conociera el resultado de cualquiera de ellos. Se recomienda que tales modos batch proporcionen alguna opcin al usuario para controlar continuamente el progreso del trabajo batch, de forma que pueda interrumpir o modificar el trabajo. Es muy frustante tener un trabajo grande ejecutndose y que, cuando vaya a finalizar, tenga que descartarse porque se debera haber modificado el ltimo mandato. Actualmente estas interfaces han tenido un renacimiento en los sistemas de acceso por medio del intercambio de mensajes de correo electrnico.

La segunda generacin 19551965: Lenguajes de mandatos. Tambin denominadas interfaces en lnea. Los sistemas de tiempo compartido se inventaron alrededor de 1960 como un medio para permitir a varios usuarios tener acceso simultneo interactivo a un nico servidor [LEE et al., 19921. Uno de los problemas principales de estos sistemas es la pequea cantidad de recursos de ordenador disponibles para soportar la interfaz de cualquier usuario, por lo que, a menudo, se utilizan interfaces en lnea. stas eran bsicamente interfaces de una dimensin, en las que el usuario slo poda interactuar con el ordenador en una lnea que serva como lnea de mandato. Cuando el usuario pulsaba la tecla de intro (Return o Enter), no se poda modificar la entrada. De forma similar, cuando el ordenador presentaba una salida al usuario, no se poda modificar para reflejar cambios en los datos. Estas interfaces se implementaron originalmente en las mquinas teletipos, aunque las ltimas versiones utilizan pantallas tipo tern-nal. Debido a que las interfaces en lnea no permitan a los usuarios navegar por la pantalla, la interaccin se limitaba a dilogos pregunta-respuesta y a la introduccin de mandatos con parmetros. La mayora de las interfaces de usuario en lnea se implementaban en lenguajes de mandatos y, aunque algunos de ellos son muy poderosos y permiten la construccin de secuencias de mandatos muy complicadas, desafortunadamente es normal que se olviden de los errores del usuario, ya que requieren que ste especifique el mandato deseado exactamente en el formato requerido.

La tercera generacin 19651980: pantallas completas con mens estrictamente jerrquicos. El espacio de diseo de la interfaz es de dos dimensiones. Un uso clsico de la pantalla completa es el de los dilogos para rellenar informes, en los que el usuario tiene un nmero de campos etiquetados que puede editar en la secuencia que desee. Estos dilogos todava existen en las interfaces modernas en forma de cajas de dilogo, las cuales son ms dinmicas que los informes tradicionales, ya que contienen mens desplegables y ayuda para que el usuario rellene el informe. Adems de los mens, muchas de las interfaces de pantalla completa utilizan tambin las teclas de funcin como una forma de interaccin. Estas teclas aceleran la interaccin y existen tan pocas que los usuarios, generalmente, se las aprenden de memoria.

La cuarta generacin 19801995: ventanas, iconos, mens y ratn. Tambin denominadas interfaces grficas de usuario. La mayora de las interfaces actuales de usuario pertenecen a esta categora, a veces denominada sistemas WIMP (Windows, Icons, Menus and Pointing device). Las interfaces windows aaden casi una tercera dimensin a las dos dimensiones inherentes a cada ventana debido a la posibilidad de superponer ventanas (est claro que superponer ventanas no es verdaderamente una tercera dimensin, ya que no es posible ver el contenido de la ventana que est debajo, por tanto, podramos decir que tienen dos dimensiones y media). El estilo de interaccin utilizado en muchas interfaces grficas de usuario es la manipulacin directa [SHNEIDERMAN, 1983], la cual se basa en la representacin visual de los objetos del dilogo que tengan inters para el usuario. Esto permite al usuario controlar el dilogo con slo mover los objetos por la pantalla y manipularlos con el ratn. Sin embargo, las interfaces de manipulacin directa pueden resultar ms difciles de utilizar que las tradicionales, debido a que son ms dependientes de un control fino sobre el ratn.

La quinta generacin 1995-Futuro: interfaces no basadas en mandatos. La prxima generacin de interfaces ya se est desarrollando [NIELSEN, 1993b]. Es probable que la tendencia de las generaciones previas contine, y que la dimensin de las interfaces de usuario aumente de 2.5 a 3 o ms dimensiones. Las formas comunes de aadir una dimensin a las interfaces de usuario consisten en aadir tiempo (en forma de animacin), sonido o voz, as como una verdadera tercera dimensin espacial en forma de sistemas de realidad virtual. Las dos predicciones ms fciles con respecto a la siguiente generacin de interfaces de usuario son que incluirn una dimensionalidad ms alta con ms tipos de medios y que sern altamente portables y personales, a la vez que se utiliza tecnologa de comunicaciones para conseguir una gran conectividad. Otro estilo de dilogo para las interfaces de usuario de la prxima generacin puede ser el de las interfaces de usuario no basadas en mandatos. Todos los estilos de interfaz hasta ahora han tenido en comn, al menos, el concepto de mandato, y se basaban en el principio de un dilogo explcito entre el usuario y el ordenador en el que el usuario ordenaba al ordenador que hiciese ciertas acciones especficas. Por el contrario, muchos esfuerzos actuales de investigacin apuntan a sistemas que permitan al usuario centrarse en el dominio en lugar de tener que controlar al ordenador explcitamente. En estos sistemas futuros, el ordenador se encargar de tomar la responsabilidad de la interaccin, basando sus acciones en sus observaciones del usuario, utilizando tecnologas como el seguimiento del ojo, reconocimiento de gestos y anlisis semi-inteligente de las acciones del usuario.

10

2.- Interfaces para el usuario, bases de datos e Internet Interfaces para el usuario Son las reglas fsicas y lgicas que permiten la conexin y comunicacin entre dos elementos, por ejemplo: Entre usuario y computador Entre disco duro y tarjeta de red El teclado y el resto del equipo. _ El trmino interfaz es de uso muy frecuente en informtica. Es un concepto abstracto, que puede referirse a un dispositivo fsico (hardware) o a un dispositivo lgico (software). Se refiere al mbito de conexin entre dos sistemas. CLASIFICACIN Dentro de las Interfaces de Usuario se distinguir bsicamente dos tipos: Una interfaz de hardware, a nivel de los dispositivos utilizados para ingresar, procesar y entregar los datos: teclado, ratn y pantalla visualizadora. Una interfaz de software, destinada a entregar informacin acerca de los procesos y herramientas de control, a travs de lo que el usuario observa habitualmente en la pantalla. INTERFAZ FSICA Se conoce como Interfaz Fsica a los medios utilizados para la conexin de un computador con el medio de transporte de la red. Esto puede ser un mdem, una tarjeta de red, un puerto serie, enlace infrarrojo, una conexin inalmbrica etc. Se utiliza esta expresin para no referirse a ningn medio o tipo de conexin en concreto, as se refiere al dispositivo por el cual se accede a la red de forma genrica. INTERFAZ LGICA Una interfaz lgica es un conjunto de valores que pueden asignarse a los parmetros variables de una interfaz fsica. Por ejemplo, asignar una direccin IPv4 a la tarjeta de red de su PC.

INTERFACES DE LNEA DE MANDATOS (COMMANDLINE INTERFACES, CLI). Es el caracterstico del DOS, el sistema operativo de los primeros PC, y es el estilo ms antiguo de interaccin hombre-mquina. El usuario escribe rdenes utilizando un lenguaje formal con un vocabulario y una sintaxis propia (los mandatos en el caso del DOS). Se usa un teclado, tpicamente, y las rdenes estn encaminadas a realizar una accin.

11

INTERFACES DE MENS Un men es una lista de opciones que se muestran en la pantalla o en una ventana de la pantalla para que los usuarios elijan la opcin que deseen. Los mens permiten dos cosas: 1. navegar dentro de un sistema, presentando rutas que llevan de un sitio a otro 2. seleccionar elementos de una lista, que representan propiedades o acciones que los usuarios desean realizar sobre algn objeto.

INTERFACES GRFICAS (GRAPHIC USER INTERFACES, GUI) Un GUI es una representacin grfica en la pantalla del ordenador de los programas, datos y objetos, as como de la interaccin con ellos. Un GUI proporciona al usuario las herramientas para realizar sus operaciones, ms que una lista de las posibles operaciones que el ordenador es capaz de hacer.

Bases de datos Que son las Bases de datos? Una base de datos es un almacn que nos permite guardar grandes cantidades de informacin de forma organizada para que luego podamos encontrar y utilizar fcilmente. A continuacin te presentamos una gua que te explicar el concepto y caractersticas de las bases de datos. El trmino de bases de datos fue escuchado por primera vez en 1963, en un simposio celebrado en California, USA. Una base de datos se puede definir como un conjunto de informacin relacionada que se encuentra agrupada estructurada. Desde el punto de vista informtico, la base de datos es un sistema formado por un conjunto de datos almacenados en discos que permiten el acceso directo a ellos y un conjunto de programas que manipulen ese conjunto de datos. Cada base de datos se compone de una o ms tablas que guarda un conjunto de datos. Cada tabla tiene una o ms columnas y filas. Las columnas guardan una parte de la informacin sobre cada elemento que queramos guardar en la tabla, cada fila de la tabla conforma un registro. Definicin de base de datos Se define una base de datos como una serie de datos organizados y relacionados entre s, los cuales son recolectados y explotados por los sistemas de informacin de una empresa o negocio en particular.

12

Caractersticas Entre las principales caractersticas de los sistemas de base de datos podemos mencionar:

Independencia lgica y fsica de los datos. Redundancia mnima. Acceso concurrente por parte de mltiples usuarios. Integridad de los datos. Consultas complejas optimizadas. Seguridad de acceso y auditora. Respaldo y recuperacin. Acceso a travs de lenguajes de programacin estndar.

Sistema de Gestin de Base de Datos (SGBD) Los Sistemas de Gestin de Base de Datos (en ingls DataBase Management System) son un tipo de software muy especfico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. Se compone de un lenguaje de definicin de datos, de un lenguaje de manipulacin de datos y de un lenguaje de consulta. Ventajas de las bases de datos Control sobre la redundancia de datos: Los sistemas de ficheros almacenan varias copias de los mismos datos en ficheros distintos. Esto hace que se desperdicie espacio de almacenamiento, adems de provocar la falta de consistencia de datos. En los sistemas de bases de datos todos estos ficheros estn integrados, por lo que no se almacenan varias copias de los mismos datos. Sin embargo, en una base de datos no se puede eliminar la redundancia completamente, ya que en ocasiones es necesaria para modelar las relaciones entre los datos. Consistencia de datos: Eliminando o controlando las redundancias de datos se reduce en gran medida el riesgo de que haya inconsistencias. Si un dato est almacenado una sola vez, cualquier actualizacin se debe realizar slo una vez, y est disponible para todos los usuarios inmediatamente. Si un dato est duplicado y el sistema conoce esta redundancia, el propio sistema puede encargarse de garantizar que todas las copias se mantienen consistentes. Comparticin de datos: En los sistemas de ficheros, los ficheros pertenecen a las personas o a los departamentos que los utilizan. Pero en los sistemas de bases de datos, la base de datos pertenece a la empresa y puede ser compartida por todos los usuarios que estn autorizados.
13

Mantenimiento de estndares: Gracias a la integracin es ms fcil respetar los estndares necesarios, tanto los establecidos a nivel de la empresa como los nacionales e internacionales. Estos estndares pueden establecerse sobre el formato de los datos para facilitar su intercambio, pueden ser estndares de documentacin, procedimientos de actualizacin y tambin reglas de acceso. Mejora en la integridad de datos: La integridad de la base de datos se refiere a la validez y la consistencia de los datos almacenados. Normalmente, la integridad se expresa mediante restricciones o reglas que no se pueden violar. Estas restricciones se pueden aplicar tanto a los datos, como a sus relaciones, y es el SGBD quien se debe encargar de mantenerlas. Mejora en la seguridad: La seguridad de la base de datos es la proteccin de la base de datos frente a usuarios no autorizados. Sin unas buenas medidas de seguridad, la integracin de datos en los sistemas de bases de datos hace que stos sean ms vulnerables que en los sistemas de ficheros. Mejora en la accesibilidad a los datos: Muchos SGBD proporcionan lenguajes de consultas o generadores de informes que permiten al usuario hacer cualquier tipo de consulta sobre los datos, sin que sea necesario que un programador escriba una aplicacin que realice tal tarea. Mejora en la productividad: El SGBD proporciona muchas de las funciones estndar que el programador necesita escribir en un sistema de ficheros. A nivel bsico, el SGBD proporciona todas las rutinas de manejo de ficheros tpicas de los programas de aplicacin. El hecho de disponer de estas funciones permite al programador centrarse mejor en la funcin especfica requerida por los usuarios, sin tener que preocuparse de los detalles de implementacin de bajo nivel. Mejora en el mantenimiento: En los sistemas de ficheros, las descripciones de los datos se encuentran inmersas en los programas de aplicacin que los manejan. Esto hace que los programas sean dependientes de los datos, de modo que un cambio en su estructura, o un cambio en el modo en que se almacena en disco, requiere cambios importantes en los programas cuyos datos se ven afectados.
14

Sin embargo, los SGBD separan las descripciones de los datos de las aplicaciones. Esto es lo que se conoce como independencia de datos, gracias a la cual se simplifica el mantenimiento de las aplicaciones que acceden a la base de datos. Aumento de la concurrencia: En algunos sistemas de ficheros, si hay varios usuarios que pueden acceder simultneamente a un mismo fichero, es posible que el acceso interfiera entre ellos de modo que se pierda informacin o se pierda la integridad. La mayora de los SGBD gestionan el acceso concurrente a la base de datos y garantizan que no ocurran problemas de este tipo. Mejora en los servicios de copias de seguridad: Muchos sistemas de ficheros dejan que sea el usuario quien proporcione las medidas necesarias para proteger los datos ante fallos en el sistema o en las aplicaciones. Los usuarios tienen que hacer copias de seguridad cada da, y si se produce algn fallo, utilizar estas copias para restaurarlos. En este caso, todo el trabajo realizado sobre los datos desde que se hizo la ltima copia de seguridad se pierde y se tiene que volver a realizar. Sin embargo, los SGBD actuales funcionan de modo que se minimiza la cantidad de trabajo perdido cuando se produce un fallo. Desventajas de las bases de datos Complejidad: Los SGBD son conjuntos de programas que pueden llegar a ser complejos con una gran funcionalidad. Es preciso comprender muy bien esta funcionalidad para poder realizar un buen uso de ellos. Coste del equipamiento adicional: Tanto el SGBD, como la propia base de datos, pueden hacer que sea necesario adquirir ms espacio de almacenamiento. Adems, para alcanzar las prestaciones deseadas, es posible que sea necesario adquirir una mquina ms grande o una mquina que se dedique solamente al SGBD. Todo esto har que la implantacin de un sistema de bases de datos sea ms cara. Vulnerable a los fallos: El hecho de que todo est centralizado en el SGBD hace que el sistema sea ms vulnerable ante los fallos que puedan producirse. Es por ello que deben tenerse copias de seguridad (Backup).

15

Tipos de Campos Cada Sistema de Base de Datos posee tipos de campos que pueden ser similares o diferentes. Entre los ms comunes podemos nombrar:

Numrico: entre los diferentes tipos de campos numricos podemos encontrar enteros sin decimales y reales decimales. Booleanos: poseen dos estados: Verdadero Si y Falso No. Memos: son campos alfanumricos de longitud ilimitada. Presentan el inconveniente de no poder ser indexados. Fechas: almacenan fechas facilitando posteriormente su explotacin. Almacenar fechas de esta forma posibilita ordenar los registros por fechas o calcular los das entre una fecha y otra. Alfanumricos: contienen cifras y letras. Presentan una longitud limitada (255 caracteres). Autoincrementables: son campos numricos enteros que incrementan en una unidad su valor para cada registro incorporado. Su utilidad resulta: Servir de identificador ya que resultan exclusivos de un registro.

Tipos de Base de Datos Entre los diferentes tipos de base de datos, podemos encontrar los siguientes:

MySql: es una base de datos con licencia GPL basada en un servidor. Se caracteriza por su rapidez. No es recomendable usar para grandes volmenes de datos. PostgreSql y Oracle: Son sistemas de base de datos poderosos. Administra muy bien grandes cantidades de datos, y suelen ser utilizadas en intranets y sistemas de gran calibre. Access: Es una base de datos desarrollada por Microsoft. Esta base de datos, debe ser creada bajo el programa access, el cual crea un archivo .mdb con la estructura ya explicada. Microsoft SQL Server: es una base de datos ms potente que access desarrollada por Microsoft. Se utiliza para manejar grandes volmenes de informaciones.

16

Modelo entidad-relacin Los diagramas o modelos entidad-relacin (denominado por su siglas, ERD Diagram Entity relationship) son una herramienta para el modelado de datos de un sistema de informacin. Estos modelos expresan entidades relevantes para un sistema de informacin, sus inter-relaciones y propiedades.

17

Cardinalidad de las Relaciones El diseo de relaciones entre las tablas de una base de datos puede ser la siguiente:

Relaciones de uno a uno: una instancia de la entidad A se relaciona con una y solamente una de la entidad B. Relaciones de uno a muchos: cada instancia de la entidad A se relaciona con varias instancias de la entidad B. Relaciones de muchos a muchos: cualquier instancia de la entidad A se relaciona con cualquier instancia de la entidad B.

Estructura de una Base de Datos Una base de datos, a fin de ordenar la informacin de manera lgica, posee un orden que debe ser cumplido para acceder a la informacin de manera coherente. Cada base de datos contiene una o ms tablas, que cumplen la funcin de contener los campos. En el siguiente ejemplo mostramos una tabla comentarios que contiene 4 campos.

Los datos quedaran organizados como mostramos en siguiente ejemplo:

Por consiguiente una base de datos posee el siguiente orden jerrquico:


Tablas Campos Registros Lenguaje SQL

El lenguaje SQL es el ms universal en los sistemas de base de datos. Este lenguaje nos permite realizar consultas a nuestras bases de datos para mostrar, insertar, actualizar y borrar datos.
18

A continuacin veremos un ejemplo de ellos:


Mostrar: para mostrar los registros se utiliza la instruccin Select. Select * From comentarios. Insertar: los registros pueden ser introducidos a partir de sentencias que emplean la instruccin Insert. Insert Into comentarios (titulo, texto, fecha) Values ('saludos', 'como esta', '22-10-2007') Borrar: Para borrar un registro se utiliza la instruccin Delete. En este caso debemos especificar cual o cuales son los registros que queremos borrar. Es por ello necesario establecer una seleccin que se llevara a cabo mediante la clusula Where. Delete From comentarios Where id='1'. Actualizar: para actualizar los registros se utiliza la instruccin Update. Como para el caso de Delete, necesitamos especificar por medio de Where cules son los registros en los que queremos hacer efectivas nuestras modificaciones. Adems, tendremos que especificar cules son los nuevos valores de los campos que deseamos actualizar. Update comentarios Set titulo='Mi Primer Comentario' Where id='1'.

INTERNET

Internet es un conjunto descentralizado de redes de comunicacin interconectadas que utilizan la familia de protocolos TCP/IP, garantizando que las redes fsicas heterogneas que la componen funcionen como una red lgica nica, de alcance mundial. Sus orgenes se remontan a 1969, cuando se estableci la primera conexin de computadoras, conocida como ARPANET, entre tres universidades en California y una en Utah, Estados Unidos. Uno de los servicios que ms xito ha tenido en Internet ha sido la World Wide Web (WWW, o "la Web"), hasta tal punto que es habitual la confusin entre ambos trminos. La WWW es un conjunto de protocolos que permite, de forma sencilla, la consulta remota de archivos de hipertexto. sta fue un desarrollo posterior (1990) y utiliza Internet como medio de transmisin. Existen, por tanto, muchos otros servicios y protocolos en Internet, aparte de la Web: el envo de correo electrnico (SMTP), la transmisin de archivos (FTP y P2P), las conversaciones en lnea (IRC), la mensajera instantnea y presencia, la transmisin de contenido y comunicacin multimedia -telefona (VoIP), televisin (IPTV)-, los boletines electrnicos (NNTP), el acceso remoto a otros dispositivos (SSH y Telnet) o los juegos en lnea. Internet y su evolucin Inicialmente Internet tena un objetivo claro. Se navegaba en Internet para algo muy concreto: bsquedas de informacin, generalmente. Ahora quizs tambin, pero sin duda alguna hoy es ms probable perderse en la red, debido al inmenso abanico de posibilidades que brinda. Hoy en da, la sensacin que produce
19

Internet es un ruido, una serie de interferencias, una explosin de ideas distintas, de personas diferentes, de pensamientos distintos de tantas posibilidades que, en ocasiones, puede resultar excesivo. El crecimiento o ms bien la incorporacin de tantas personas a la red hace que las calles de lo que en principio era una pequea ciudad llamada Internet se conviertan en todo un planeta extremadamente conectado entre s entre todos sus miembros. El hecho de que Internet haya aumentado tanto implica una mayor cantidad de relaciones virtuales entre personas. es posible concluir que cuando una persona tenga una necesidad de conocimiento no escrito en libros, puede recurrir a una fuente ms acorde a su necesidad. Como ahora esta fuente es posible en Internet. Como toda gran revolucin, Internet augura una nueva era de diferentes mtodos de resolucin de problemas creados a partir de soluciones anteriores. Algunos sienten que Internet produce la sensacin que todos han sentido sin duda alguna vez; produce la esperanza que es necesaria cuando se quiere conseguir algo. Es un despertar de intenciones que jams antes la tecnologa haba logrado en la poblacin mundial. Para algunos usuarios Internet genera una sensacin de cercana, empata, comprensin y, a la vez, de confusin, discusin, lucha y conflictos que los mismos usuarios consideran la vida misma. Preponderancia como fuente de informacin En 2009, un estudio realizado en Estados Unidos indic que un 56% de los 3.030 adultos estadounidenses entrevistados en una encuesta online manifest que si tuviera que escoger una sola fuente de informacin, elegira Internet, mientras que un 21% preferira la televisin y tanto los peridicos como la radio sera la opcin de un 10% de los encuestados. Dicho estudio posiciona a los medios digitales en una posicin privilegiada en cuanto a la bsqueda de informacin y refleja un aumento de la credibilidad en dichos medios.7 8 Trabajo Con la aparicin de Internet y de las conexiones de alta velocidad disponibles al pblico, Internet ha alterado de manera significativa la manera de trabajar de algunas personas al poder hacerlo desde sus respectivos hogares. Internet ha permitido a estas personas mayor flexibilidad en trminos de horarios y de localizacin, contrariamente a la jornada laboral tradicional, que suele ocupar la maana y parte de la tarde, en la cual los empleados se desplazan al lugar de trabajo. Un experto contable asentado en un pas puede revisar los libros de una compaa en otro pas, en un servidor situado en un tercer pas que sea mantenido remotamente por los especialistas en un cuarto. Internet y sobre todo los blogs han dado a los trabajadores un foro en el cual expresar sus opiniones sobre sus empleos, jefes y compaeros, creando una cantidad masiva de informacin y de datos sobre el trabajo que est siendo recogido actualmente por el colegio de abogados de Harvard. Internet ha impulsado el fenmeno de la Globalizacin y junto con la llamada desmaterializacin de la economa ha dado lugar al nacimiento de una Nueva
20

Economa caracterizada por la utilizacin de la red en todos los procesos de incremento de valor de la empresa Buscadores Un buscador se define como el sistema informtico que indexa archivos almacenados en servidores web cuando se solicita informacin sobre algn tema. Por medio de palabras clave, se realiza la exploracin y el buscador muestra una lista de direcciones con los temas relacionados. Existen diferentes formas de clasificar los buscadores segn el proceso de sondeo que realizan. La clasificacin ms frecuente los divide en: ndices o directorios temticos, motores de bsqueda y metabuscadores. ndices o directorios temticos Los ndices o buscadores temticos son sistemas creados con la finalidad de disear un catlogo por temas, definiendo la clasificacin por lo que se puede considerar que los contenidos ofrecidos en estas pginas tienes ya cierto orden y calidad. La funcin de este tipo de sistemas es presentar algunos de los datos de las pginas ms importantes, desde el punto de vista del tema y no de lo que se contiene. Los resultados de la bsqueda de esta de estos ndices pueden ser muy limitados ya que los directorios temticos, las bases de datos de direcciones son muy pequeas, adems de que puede ser posible que el contenido de las pginas no est completamente al da. Motores de bsqueda Este tipo de buscadores son los de uso ms comn, basados en aplicaciones llamadas spiders ("araas") o robots, que buscan la informacin con base en las palabras escritas, haciendo una recopilacin sobre el contenido de las pginas y mostrando como resultado aqullas que contengan la palabra o frase en alguna parte del texto. Metabuscadores Los metabuscadores son sistemas que localizan informacin en los motores de bsqueda ms utilizados, realizan un anlisis y seleccionan sus propios resultados. No tienen una base de datos, por lo que no almacenan pginas web y realizan una bsqueda automtica en las bases de datos de otros buscadores, tomando un determinado rango de registros con los resultados ms relevantes. Publicidad en Internet Internet se ha convertido en el medio ms fcilmente medible y de ms alto crecimiento en la historia. Actualmente existen muchas empresas que obtienen dinero de la publicidad en Internet. Adems, existen mucha ventajas que la publicidad interactiva ofrece tanto para el usuario como para los anunciantes
21

Acceso y servicios a Internet Internet incluye aproximadamente 5.000 redes en todo el mundo y ms de 100 protocolos distintos basados en TCP/IP, que se configura como el protocolo de la red. Los servicios disponibles en la red mundial de PC, han avanzado mucho gracias a las nuevas tecnologas de transmisin de alta velocidad, como ADSL y Wireless, se ha logrado unir a las personas con videoconferencia, ver imgenes por satlite (ver tu casa desde el cielo), observar el mundo por webcams, hacer llamadas telefnicas gratuitas, o disfrutar de un juego multijugador en 3D, un buen libro PDF, o lbumes y pelculas para descargar. El mtodo de acceso a Internet vigente hace algunos aos, la telefona bsica, ha venido siendo sustituido gradualmente por conexiones ms veloces y estables, entre ellas el ADSL, Cable Mdems, o el RDSI. Tambin han aparecido formas de acceso a travs de la red elctrica, e incluso por satlite (generalmente, slo para descarga, aunque existe la posibilidad de doble va, utilizando el protocolo DVBRS). Internet tambin est disponible en muchos lugares pblicos tales como bibliotecas, bares, restaurantes, hoteles o cibercafs y hasta en centros comerciales. Una nueva forma de acceder sin necesidad de un puesto fijo son las redes inalmbricas, hoy presentes en aeropuertos, subterrneos, universidades o poblaciones enteras

22

3.- Lenguajes de programacin para el desarrollo de interfaces

Clasificacin de lenguajes de programacin Un lenguaje de programacin es un lenguaje inventado para controlar una mquina, (normalmente, un ordenador). Hay muchsimos, de toda clase de tipos y caractersticas, inventados para facilitar el abordaje de distintos problemas, el mantenimiento del software, su reutilizacin, mejorar la productividad, etc. Los lenguajes de programacin se pueden clasificar segn varios criterios. He encontrado doce en total: Nivel de abstraccin, propsito, evolucin histrica, manera de ejecutarse, manera de abordar la tarea a realizar, paradigma de programacin, lugar de ejecucin, concurrencia, interactividad, realizacin visual, determinismo y productividad. Hay que tener en cuenta tambin, que en la prctica, la mayora de lenguajes no pueden ser puramente clasificados en una categora, pues surgen incorporando ideas de otros lenguajes y de otras filosofas de programacin, pero no importa al establecer las clasificaciones, pues el autntico objetivo de las mismas es mostrar los rangos, las posibilidades y tipos de lenguajes que hay. 1. Nivel de abstraccin. Segn el nivel de abstraccin, o sea, segn el grado de cercana a la mquina:

Lenguajes de bajo nivel: La programacin se realiza teniendo muy en cuenta las caractersticas del procesador. Ejemplo: Lenguajes ensamblador. Lenguajes de nivel medio: Permiten un mayor grado de abstraccin pero al mismo tiempo mantienen algunas cualidades de los lenguajes de bajo nivel. Ejemplo: C puede realizar operaciones lgicas y de desplazamiento con bits, tratar todos los tipos de datos como lo que son en realidad a bajo nivel (nmeros), etc. Lenguajes de alto nivel: Ms parecidos al lenguaje humano. Manejan conceptos, tipos de datos, etc., de una manera cercana al pensamiento humano ignorando (abstrayndose) del funcionamiento de la mquina. Ejemplos: Java, Ruby.

Hay quien slo considera lenguajes de bajo nivel y de alto nivel, (en ese caso, C es considerado de alto nivel). 2. Propsito. Segn el propsito, es decir, el tipo de problemas a tratar con ellos:

Lenguajes de propsito general: Aptos para todo tipo de tareas: Ejemplo: C.


23

Lenguajes de propsito especfico: Hechos para un objetivo muy concreto. Ejemplo: Csound (para crear ficheros de audio). Lenguajes de programacin de sistemas: Diseados para realizar sistemas operativos o drivers. Ejemplo: C. Lenguajes de script: Para realizar tareas varias de control y auxiliares. Antiguamente eran los llamados lenguajes de procesamiento por lotes (batch) o JCL (Job Control Languages). Se subdividen en varias clases (de shell, de GUI, de programacin web, etc.). Ejemplos: bash (shell), mIRC script, JavaScript (programacin web).

3. Evolucin histrica. Con el paso del tiempo, se va incrementando el nivel de abstraccin, pero en la prctica, los de una generacin no terminan de sustituir a los de la anterior:

Lenguajes de primera generacin (1GL): Cdigo mquina. Lenguajes de segunda generacin (2GL): Lenguajes ensamblador. Lenguajes de tercera generacin (3GL): La mayora de los lenguajes modernos, diseados para facilitar la programacin a los humanos. Ejemplos: C, Java. Lenguajes de cuarta generacin (4GL): Diseados con un propsito concreto, o sea, para abordar un tipo concreto de problemas. Ejemplos: NATURAL, Mathematica. Lenguajes de quinta generacin (5GL): La intencin es que el programador establezca el qu problema ha de ser resuelto y las condiciones a reunir, y la mquina lo resuelve. Se usan en inteligencia artificial. Ejemplo: Prolog.

4. Manera de ejecutarse. Segn la manera de ejecutarse:

Lenguajes compilados: Un programa traductor traduce el cdigo del programa (cdigo fuente) en cdigo mquina (cdigo objeto). Otro programa, el enlazador, unir los ficheros de cdigo objeto del programa principal con los de las libreras para producir el programa ejecutable. Ejemplo: C. Lenguajes interpretados: Un programa (intrprete), ejecuta las instrucciones del programa de manera directa. Ejemplo: Lisp.

Tambin los hay mixtos, como Java, que primero pasan por una fase de compilacin en la que el cdigo fuente se transforma en bytecode, y este bytecode puede ser ejecutado luego (interpretado) en ordenadores con distintas arquitecturas (procesadores) que tengan todos instalados la misma mquina virtual Java. 5. Manera de abordar la tarea a realizar. Segn la manera de abordar la tarea a realizar, pueden ser:
24

Lenguajes imperativos: Indican cmo hay que hacer la tarea, es decir, expresan los pasos a realizar. Ejemplo: C. Lenguajes declarativos: Indican qu hay que hacer. Ejemplos: Lisp, Prolog. Otros ejemplos de lenguajes declarativos, pero que no son lenguajes de programacin, son HTML (para describir pginas web) o SQL (para consultar bases de datos).

6. Paradigma de programacin. El paradigma de programacin es el estilo de programacin empleado. Algunos lenguajes soportan varios paradigmas, y otros slo uno. Se puede decir que histricamente han ido apareciendo para facilitar la tarea de programar segn el tipo de problema a abordar, o para facilitar el mantenimiento del software, o por otra cuestin similar, por lo que todos corresponden a lenguajes de alto nivel (o nivel medio), estando los lenguajes ensambladores atados a la arquitectura de su procesador correspondiente. Los principales son:

Lenguajes de programacin procedural: Divide el problema en partes ms pequeas, que sern realizadas por subprogramas (subrutinas, funciones, procedimientos), que se llaman unas a otras para ser ejecutadas. Ejemplos: C, Pascal. Lenguajes de programacin orientada a objetos: Crean un sistema de clases y objetos siguiendo el ejemplo del mundo real, en el que unos objetos realizan acciones y se comunican con otros objetos. Ejemplos: C++, Java. Lenguajes de programacin funcional: La tarea se realiza evaluando funciones, (como en Matemticas), de manera recursiva. Ejemplo: Lisp. Lenguajes de programacin lgica: La tarea a realizar se expresa empleando lgica formal matemtica. Expresa qu computar. Ejemplo: Prolog.

Hay muchos paradigmas de programacin: Programacin genrica, programacin reflexiva, programacin orientada a procesos, etc. 7. Lugar de ejecucin. En sistemas distribuidos, segn dnde se ejecute:

Lenguajes de servidor: Se ejecutan en el servidor. Ejemplo: PHP es el ms utilizado en servidores web. Lenguajes de cliente: Se ejecutan en el cliente. Ejemplo: JavaScript en navegadores web.

8. Concurrencia. Segn admitan o no concurrencia de procesos, esto es, la ejecucin simultnea de varios procesos lanzados por el programa:

Lenguajes concurrentes. Ejemplo: Ada. Lenguajes no concurrentes. Ejemplo: C.


25

9. Interactividad. Segn la interactividad del programa con el usuario u otros programas:

Lenguajes orientados a sucesos: El flujo del programa es controlado por la interaccin con el usuario o por mensajes de otros programas/sistema operativo, como editores de texto, interfaces grficos de usuario (GUI) o kernels. Ejemplo: VisualBasic, lenguajes de programacin declarativos. Lenguajes no orientados a sucesos: El flujo del programa no depende de sucesos exteriores, sino que se conoce de antemano, siendo los procesos batch el ejemplo ms claro (actualizaciones de bases de datos, colas de impresin de documentos, etc.). Ejemplos: Lenguajes de programacin imperativos.

10. Realizacin visual. Segn la realizacin visual o no del programa:

Lenguajes de programacin visual: El programa se realiza moviendo bloques de construccin de programas (objetos visuales) en un interfaz adecuado para ello. No confundir con entornos de programacin visual, como Microsoft Visual Studio y sus lenguajes de programacin textuales (como Visual C#). Ejemplo: Mindscript. Lenguajes de programacin textual: El cdigo del programa se realiza escribindolo. Ejemplos: C, Java, Lisp.

11. Determinismo. Segn se pueda predecir o no el siguiente estado del programa a partir del estado actual:

Lenguajes deterministas. Ejemplos: Todos los anteriores. Lenguajes probabilsticos o no deterministas: Sirven para explorar grandes espacios de bsqueda, (como gramticas), y en la investigacin terica de hipercomputacin. Ejemplo: mutt (generador de texto aleatorio).

12. Productividad. Segn se caractericen por tener virtudes tiles o productivas, u oscuras y enrevesadas:

Lenguajes tiles o productivos: Sus virtudes en cuanto a eficiencia, sencillez, claridad, productividad, etc., motiva que sean utilizados en empresas, administraciones pblicas y/o en la enseanza. Ejemplos: Cualquier lenguaje de uso habitual (C, Java, C++, Lisp, Python, Ruby, ). Lenguajes esotricos o exticos: Inventados con la intencin de ser los ms raros, oscuros, difciles, simples y/o retorcidos de los lenguajes, para diversin y entretenimiento de frikis programadores. A veces exploran nuevas ideas en programacin
26

Bibliografa
1.- MANUAL DISEO GRFICO Y COMUNICACIN VISUAL * UNIVERSIDAD DE LA LAGUNA * TENERIFE * 2006

Bibliografa Coplementaria Abadal, Ernest (2002). "Elementos para la evaluacin de interfaces de consulta de bases de datos". El profesional de la informacin , septiembre-octubre, 11: 5, p. 349-360.

Chvez, Sergi; Alczar, Noemi (2003). "GenIsisWeb: la herramienta para publicar en Internet las bases de datos CDS/ISIS". BiD: textos universitaris de biblioteconomia i documentaci , desembre, 11. < http://www2.ub.es/bid/consulta_articulos.php?fichero=11chave2.htm > [Consulta: 27-01-2005]. Codina, Llus; Abadal, Ernest (1992). "Gesti documental amb microordinadors: caracterstiques, estructura i tecnologia dels sistemes de gesti documental". Item , 11,p. 72-100. CMS-Spain: portal sobre tecnologas para la informacin y la colaboracin. <http://www.ecm-spain.com/home.asp>. [Consulta: 14/02/2005] Directorio espaol de software para la gestin bibliotecaria, documental y de contenidos. Grupo Activa. SEDIC. Coordinacin: Luis Rodrguez Yunta, Carlos Tejada Artigas. Madrid: Consejo Superior de Investigaciones Cientficas, 2003. Marcos, Mari Carmen (2004). Interaccin en interfaces de recuperacin de informacin: conceptos, metforas y visualizacin. Gijn: Trea.

Ligas Programacin de interfaces http://fcasua.contad.unam.mx/clases_virtuales/informatica/1766.html Lenguajes de programacin http://qbitacora.wordpress.com/2007/09/21/clasificacion-de-lenguajes-deprogramacion/ http://www.articulandia.com/premium/article.php/06-09-2006Clasificacion-de-loslenguajes-de-programacion.htm http://html.rincondelvago.com/lenguajes-de-programacion_10.html

27

II. LENGUAJES INTERFACES.

DE

PROGRAMACIN

PARA

EL

DESARROLLO

DE

1.- QUE ES JAVA? Originalmente el equipo de Sun Microsystems que en los primeros 90 desarroll Java se plante la posibilidad de desarrollar software que pudiese utilizarse en electrodomsticos con componentes electrnicos diversos, tales como equipos de vdeo o de audio. En los electrodomsticos se producen continuas renovaciones de hardware, bien por motivos comerciales que conlleven el deseo de la actualizacin del producto, bien por las prosaicas pero siempre prioritarias motivaciones de costos. El objetivo del equipo era conseguir evitar tener que desarrollar en C o C++ por la sencilla razn de que estos lenguajes obligan a recompilar el cdigo para cada nueva plataforma en la que quiera implantarse. Todos aquellos que hayan desarrollado o reflexionado en torno a la problemtica de crear contenidos en WWW habrn pensado alguna vez en la naturaleza heterognea de la red y los problemas que ello provoca a la hora de desarrollar programas. Si Java haba nacido como un lenguaje que poda ejecutarse en cualquier mquina, qu poda ser ms apropiado para un entorno, el web, en el que jams puedes saber qu equipo, ni tan siquiera qu sistema operativo estar utilizando el usuario de tu futuro mdulo de software. Esta universalidad, que conlleva obvias repercusiones econmicas en el ahorro de las empresas de desarrollo, se expresa en el adagio de Sun "Write Once, run anywhere", algo as como "escribe tu programa una vez, y ejectalo en cualquier parte". La independencia de la plataforma se expresa en que los programas Java no necesitan ser recompilados cuando se desea cambiar de plataforma porque los ejecutables Java, a diferencia de los de la mayora de los lenguajes compilables, no estn formados por un conjunto de instrucciones en el cdigo mquina del procesador sobre el que sern ejecutados, sino que contienen lo que la terminologa Java se denominan bytecodes, parte de un juego ficticio de instrucciones independiente del procesador. Java como lenguaje de programacin Java es un lenguaje de programacin orientado a objetos que, en buena medida, proviene de C y C++, y por tanto hereda la mayora de su sintaxis y mecanismos de orientacin a objetos. Incluye una librera de clases, que proporciona una base para posteriores desarrollos, los tipos bsicos, las esenciales funcionalidad de entrada/salida y de trabajo en red, y los protocolos Internet ms comunes. Sin embargo, a pesar de que Java resulta similar a C++, tiene la agradable vocacin de ser sencillo y carece de los aspectos ms complejos de este lenguaje. Como ejemplo basta resear que no existen punteros y s cadenas de caracteres (strings) o matrices (arrays) como autnticos objetos o que el manejo de memoria resulta en buena medida automtico. Es decir, Java presume de ser un lenguaje de aprendizaje sencillo. Bien, esto es cierto, sobretodo si ya sabes programar en

28

C++. Vamos a enunciar, siquiera brevemente, algunos aspectos reseables del lenguaje. Clases e interfaces Java agrupa las clases en libreras que se llaman paquetes (packages). Los paquetes tambin pueden contener definiciones de interfaces. Adems, Java permite la creacin de clases abstractas. Por otra parte, Java crea de manera explcita la entidad denominada interfaz, y que no es ms que es una coleccin de declaraciones de mtodos, sin implementacin que representan una suerte de contrato entre el desarrollador que crea una clase que implementa una interfaz y los que reutilicen su cdigo Las interfaces se utilizan para definir un tipo de comportamiento que puede ser implementado por cualquier clase y resultan tiles para capturar similitudes entre clases que no estn relacionadas, sin forzar una relacin directa, revelar la interfaz de programacin de un objeto sin revelar su clase o para reflejar el comportamiento y la naturaleza de los objetos componentes reutilizables que, por ejemplo, se definen en COM. Liberacin de memoria Java es Garbage Collected. El sistema, a la hora de ejecucin, mantiene un control de la memoria que actualmente se est utilizando y de la que est libre. Cuando una porcin de memoria ya no se est utilizando por el programa, el sistema la devuelve. Esta caracterstica resulta importante porque en los lenguajes orientados a objetos es comn que existan mtodos que se encarguen de destruir el objeto que se est utilizando (destructores), algo que en Java no tiene un sentido tan estricto. Soporte de excepciones Java incorpora las excepciones como partes esenciales del lenguaje. Una excepcin es una condicin de error que se supone no debe ocurrir al tiempo de ejecucin. Por ejemplo, en una divisin por cero, el programa se detiene si la situacin no se evita por parte del programador. Un buen programador trata de evitar que esto suceda y muchas veces hay que aadir muchas validaciones para lograrlo. Es muy incmodo que un usuario tenga que volver a empezar el programa por algn error de ejecucin, y ello debe evitarse, por ejemplo, indicando cual fue el error y como remediarlo. Multitarea El concepto de multithreading puede resumirse de manera grosera en que podemos realizar ms de una cosa al mismo tiempo. Esto quiere decir que mi programa puede realizar ms de una operacin en un mismo momento. Para hacer esto se debe dividir el programa en diferentes caminos de ejecucin, los threads. Java proporciona soporte completo para esta tcnica de programacin.

29

Que podemos desarrollar con java? Java es un lenguaje de programacin de propsito general y, en contra de una creencia bastante extendida, su uso no se limita al WWW. De hecho, existen aplicaciones completas en Java, y proyectos (algunos de ellos en revisin) para desarrollar versiones de suites de aplicaciones en este lenguaje. Sin embargo, el uso ms comn est relacionado con WWW y no es otro que el desarrollo de applets. Un applet es un pequeo programa interactivo que se ejecuta en el seno de una pgina Web. Pueden utilizarse para presentar animaciones, figuras, juegos, para responder a acciones del usuario, o cualquier otra tarea. El proceso para incluir un applet en una pgina Web consiste en escribir el cdigo Java, compilarlo, e insertar el applet utilizando el lenguaje HTML. Versin de Java 2 Enterprise Edition 1.4 Enterprise Edition (J2EE) es la plataforma de tecnologa Java ms avanzada, la cual provee un rango completo de funcionalidad empresarial para la computacin de servidores. Esta plataforma ha sido diseada con el fin de proporcionar un ambiente integrado para crear aplicaciones de Java empresariales de n-niveles (n=nmero). Como software libre podemos bajar el software bundles de la pagina de Sun en internet. Ruta: http://java.sun.com/j2ee/1.4/download.html#sdk

30

Instalacin Crear una carpeta Java2EE bajo mis documentos Bajar y ejecutar el programa j2eesdk-1_4-windows (segn sea el archivo que bajaste en la pagina de Sun) Ruta de aplicaciones: c:\sun\appServer\sdk\bin\ Compilacin de programas de Java. Desde el escritorio de Windows: inicio, ejecutar, command Entrar a la ruta de aplicaciones: c:\sun\appServer\sdk\bin\

Nota: en caso de no dar acceso al directorio appServer, renombrarlo por server c:\sun\Server\sdk\bin\

Compilacin y ejecucin de un programa fuente en J2EE: archivos para compilar y ejecutar: cdigo fuente de java <nombre del programa + extensin .java > por ejemplo: java1.java /** Primer programa de Java en simple formato * de clases : java1.java */ class java1 { public static void main (String args[]) { System.out.println("Diplomado de Desarrollo de Sistemas con J2EE ...!!"); } } cree este archivo con Bloc de Notas y gurdelo en la ruta de la aplicacin de J2EE : c:\sun\Server\sdk\bin\ Nota: el nombre de la clase del codigo fuente debe ser el mismo que el archivo fuente fsico Compilacin: javac <nombre de cdigo fuente de java> Desde la ruta de la aplicacin de J2EE javac java1.java Nota: si la compilacin fue correcta genera un ejecutable byte-codes en vez de un cdigo mquina, extensin .class Ejem: java1.class
31

Para ejecutar nuestro programa C:\SUN\SERVER\JDK\BIN>java java1 Diplomado de Desarrollo de Sistemas con J2EE ...!!

Caracterstica de java. Las caractersticas principales que nos ofrece Java son: 1.- Lenguaje Simple: Se lo conoce como lenguaje simple porque viene de la misma estructura de c y c++; ya que c++ fue un referente para la creacin de java por eso utiliza determinadas caractersticas de c++ y se han eliminado otras. 2.- Orientado a Objeto: Toda la programacin en java en su mayora est orientada a objeto, ya que al estar agrupados en estructuras encapsuladas es ms fcil su manipulacin. 3.- Distribuido: Permite abrir sockets, establecer y aceptar conexiones con los servidores o clientes remotos; facilita la creacin de aplicaciones distribuidas ya que proporciona una coleccin de clases para aplicaciones en red. 4.- Robusto: Es altamente fiable en comparacin con c, se han eliminado muchas caractersticas con la aritmtica de punteros, proporciona numerosas comprobaciones en compilacin y en tiempo de ejecucin. 5.- Seguro: La seguridad es una caracterstica muy importante en java ya que se han implementado barreras de seguridad en el lenguaje y en el sistema de ejecucin de tiempo real. 6.- Indiferente a la arquitectura: Java es compatible con los ms variados entornos de red, cualquiera sean estos desde Windows 95, Unix a Windows Nt y Mac, para poder trabajar con diferentes sistemas operativos.

32

Java es muy verstil ya que utiliza byte-codes que es un formato intermedio que sirve para transportar el cdigo eficientemente o de diferentes plataformas (Hardware - Software). 7.- Portable: Por ser indiferente a la arquitectura sobre la cual est trabajando, esto hace que su portabilidad sea muy eficiente, sus programas son iguales en cualquiera de las plataformas, ya que java especifica tamaos bsicos, esto se conoce como la mquina virtual de java. 8.- Interpretado y compilado a la vez: Java puede ser compilado e interpretado en tiempo real, ya que cuando se construye el cdigo fuente este se transforma en una especie de cdigo de mquina. 9.- Multihebra o Multihilos: Java tiene una facilidad de cumplir varias funciones al mismo tiempo, gracias a su funcin de multahilos ya que por cada hilo que el programa tenga se ejecutaran en tiempo real muchas funciones al mismo tiempo. 10.- Dinmico: El lenguaje java es muy dinmico en la fase de enlazado, sus clases solamente actuaran en medida en que sean requeridas o necesitadas con esto permitir que los enlaces se puedan incluir incluso desde fuentes muy variadas o desde la red. 11.- Produce Applets: En java se pueden crear aplicaciones independientes y applets. Independientes porque se pueden comportar como cualquier programa escrito en cualquier lenguaje. Por otra parte los applets considerados pequeos programas, tienen la capacidad de ejecutar funciones muy complejas. 12.- Alto rendimiento Java es considerado de alto rendimiento por ser tan veloz en el momento de correr los programas y por ahorrase muchas lneas de cdigo.

33

El API Java es una Interfaz de Programacin de Aplicaciones (API: por sus siglas en ingls) provista por los creadores del lenguaje Java, y que da a los programadores los medios para desarrollar aplicaciones Java. Como el lenguaje Java es un Lenguaje Orientado a Objetos, la API de Java provee de un conjunto de clases utilitarias para efectuar toda clase de tareas necesarias dentro de un programa. La API Java est organizada en paquetes lgicos, donde cada paquete contiene un conjunto de clases relacionadas semnticamente. Identificadores Un identificador es un nombre que identifica a una variable, a un mtodo o funcin miembro, a una clase. Todos los lenguajes tienen ciertas reglas para componer los identificadores:

Todos los identificadores han de comenzar con una letra, el carcter subrayado ( _ ) o el carcter dolar ( $ ). Puede incluir, pero no comenzar por un nmero No puede incluir el carcter espacio en blanco Distingue entre letras maysculas y minsculas No se pueden utilizar las palabras reservadas como identificadores

Adems de estas restricciones, hay ciertas convenciones que hacen que el programa sea ms legible, pero que no afectan a la ejecucin del programa. La primera y fundamental es la de encontrar un nombre que sea significativo, de modo que el programa sea lo ms legible posible. El tiempo que se pretende ahorrar eligiendo nombres cortos y poco significativos se pierde con creces cuando se revisa el programa despus de cierto tiempo. Tipo de identificador nombre de una clase nombre de funcin nombre de variable nombre de constante Comentarios Un comentario es un texto adicional que se aade al cdigo para explicar su funcionalidad, bien a otras personas que lean el programa, o al propio autor como recordatorio. Los comentarios son una parte importante de la documentacin de un programa. Los comentarios son ignorados por el compilador, por lo que no
34

Convencin Comienza por letra mayscula comienza con letra minscula comienza por letra minscula

Ejemplo String, Rectangulo, CinematicaApplet calcularArea, getValue, setColor area, color, appletSize

En letras maysculas PI, MAX_ANCHO

incrementan el tamao del archivo ejecutable; se pueden por tanto, aadir libremente al cdigo para que pueda entenderse mejor. La programacin orientada a objetos facilita mucho la lectura del cdigo, por lo que lo que no se precisa hacer tanto uso de los comentarios como en los lenguajes estructurados. En Java existen tres tipos de comentarios

Comentarios en una sola lnea Comentarios de varias lneas Comentarios de documentacin

Como podemos observar un comentario en varias lneas es un bloque de texto situado entre el smbolo de comienzo del bloque /*, y otro de terminacin del mismo */. Teniendo encuentra este hecho, los programadores disean comentarios como el siguiente: /*--------------------------------| | (C) Angel Franco Garca | | fecha: Marzo 1999 | | programa: PrimeroApp.java | |---------------------------------*/ Los comentarios de documentacin es un bloque de texto situado entre el smbolo de comienzo del bloque /**, y otro de terminacin del mismo */. El programa javadoc utiliza estos comentarios para generar la documentacin del cdigo. /** Este es el primer programa de una serie dedicada a explicar los fundamentos del lenguaje Java */ Habitualmente, usaremos comentarios en una sola lnea //, ya que no tiene el inconveniente de aprendernos los smbolos de comienzo y terminacin del bloque, u olvidarnos de poner este ltimo, dando lugar a un error en el momento de la compilacin. En la ventana de edicin del Entorno Integrado de Desarrollo (IDE) los comentarios se distinguen del resto del cdigo por el color del texto. public class PrimeroApp{ public static void main(String[] args) { //imprime un mensaje System.out.println("El primer programa"); } } Un procedimiento elemental de depuracin de un programa consiste en anular ciertas sentencias de un programa mediante los delimitadores de comentarios. Por ejemplo, se puede modificar el programa y anular la sentencia que imprime el mensaje, poniendo delante de ella el delimitador de comentarios en una sola lnea. //System.out.println("El primer programa"); Al correr el programa, observaremos que no imprime nada en la pantalla.
35

La sentencia System.out.println() imprime un mensaje en la consola, una ventana DOS que se abre en el escritorio de Windows 95. La funcin println tiene un slo argumento una cadena de caracteres u objeto de la clase String. Sentencias Una sentencia es una orden que se le da al programa para realizar una tarea especfica, esta puede ser: mostrar un mensaje en la pantalla, declarar una variable (para reservar espacio en memoria), inicializarla, llamar a una funcin, etc. Las sentencias acaban con ;. este carcter separa una sentencia de la siguiente. Normalmente, las sentencias se ponen unas debajo de otras, aunque sentencias cortas pueden colocarse en una misma lnea. He aqu algunos ejemplos de sentencias int i=1; import java.awt.*; System.out.println("El primer programa"); rect.mover(10, 20); En el lenguaje Java, los caracteres espacio en blanco se pueden emplear libremente. Como podremos ver en los sucesivos ejemplos, es muy importante para la legibilidad de un programa la colocacin de unas lneas debajo de otras empleando tabuladores. El editor del IDE nos ayudar plenamente en esta tarea sin apenas percibirlo. Bloques de cdigo Un bloque de cdigo es un grupo de sentencias que se comportan como una unidad. Un bloque de cdigo est limitado por las llaves de apertura { y cierre }. Como ejemplos de bloques de cdigo tenemos la definicin de una clase, la definicin de una funcin miembro, una sentencia iterativa for, los bloques try ... catch, para el tratamiento de las excepciones, etc. Expresiones Una expresin es todo aquello que se puede poner a la derecha del operador asignacin =. Por ejemplo: x=123; y=(x+100)/4; area=circulo.calcularArea(2.5); Rectangulo r=new Rectangulo(10, 10, 200, 300); La primera expresin asigna un valor a la variable x. La segunda, realiza una operacin La tercera, es una llamada a una funcin miembro calcularArea desde un objeto circulo de una clase determinada La cuarta, reserva espacio en memoria para un objeto de la clase Rectangulo mediante la llamada a una funcin especial denominada constructor.
36

Variables Una variable es un nombre que se asocia con una porcin de la memoria del ordenador, en la que se guarda el valor asignado a dicha variable. Hay varios tipos de variables que requieren distintas cantidades de memoria para guardar datos. Todas las variables han de declararse antes de usarlas, la declaracin consiste en una sentencia en la que figura el tipo de dato y el nombre que asignamos a la variable. Una vez declarada se le podr asignar valores. Java tiene tres tipos de variables:

de instancia de clase locales

Las variables de instancia o miembros dato como veremos ms adelante, se usan para guardar los atributos de un objeto particular. Las variables de clase o miembros dato estticos son similares a las variables de instancia, con la excepcin de que los valores que guardan son los mismos para todos los objetos de una determinada clase. En el siguiente ejemplo, PI es una variable de clase y radio es una variable de instancia. PI guarda el mismo valor para todos los objetos de la clase Circulo, pero el radio de cada crculo puede ser diferente class Circulo{ static final double PI=3.1416; double radio; //... } Las variables locales se utilizan dentro de las funciones miembro o mtodos. En el siguiente ejemplo area es una variable local a la funcin calcularArea en la que se guarda el valor del rea de un objeto de la clase Circulo. Una variable local existe desde el momento de su definicin hasta el final del bloque en el que se encuentra.

37

class Circulo{ //... double calcularArea(){ double area=PI*radio*radio; return area; } } En el lenguaje Java, las variables locales se declaran en el momento en el que son necesarias. Es una buena costumbre inicializar las variables en el momento en el que son declaradas. Veamos algunos ejemplos de declaracin de algunas variables int x=0; String nombre="Angel"; double a=3.5, b=0.0, c=-2.4; boolean bNuevo=true; int[] datos; Delante del nombre de cada variable se ha de especificar el tipo de variable que hemos destacado en letra negrita. Las variables pueden ser

Un tipo de dato primitivo El nombre de una clase Un array

El lenguaje Java utiliza el conjunto de caracteres Unicode, que incluye no solamente el conjunto ASCII sino tambin carateres especficos de la mayora de los alfabetos. As, podemos declarar una variable que contenga la letra int ao=1999; Se ha de poner nombres significativos a las variables, generalmente formados por varias palabras combinadas, la primera empieza por minscula, pero las que le siguen llevan la letra inicial en maysculas. Se debe evitar en todos los casos nombres de variables cortos como xx, i, etc. double radioCirculo=3.2; Las variables son uno de los elementos bsicos de un programa, y se deben

Declarar Inicializar Usar

38

Tipos de datos primitivos Tipo Descripcion boolean Tiene dos valores true o false. Caracteres Unicode de 16 bits Los caracteres alfa-numricos son los char mismos que los ASCII con el bit alto puesto a 0. El intervalo de valores va desde 0 hasta 65535 (valores de 16-bits sin signo). byte Tamao 8 bits. El intervalo de valores va desde -27 hasta 27 -1 (-128 a 127) Tamao 16 bits. El intervalo de valores va desde -215 hasta 215-1 (-32768 a short 32767) Tamao 32 bits. El intervalo de valores va desde -231 hasta 231-1 (int 2147483648 a 2147483647) Tamao 64 bits. El intervalo de valores va desde -263 hasta 263-1 (long 9223372036854775808 a 9223372036854775807) Tamao 32 bits. Nmeros en coma flotante de simple precisin. Estndar float IEEE 754-1985 (de 1.40239846e45f a 3.40282347e+38f) Tamao 64 bits. Nmeros en coma flotante de doble precisin. Estndar double IEEE 754-1985. (de 4.94065645841246544e324d a 1.7976931348623157e+308d.) Los tipos bsicos que utilizaremos en la mayor parte de los programas sern boolean, int y double. Caracteres En Java los caracteres no estn restringidos a los ASCII sino son Unicode. Un carcter est siempre rodeado de comillas simples como 'A', '9', '', etc. El tipo de dato char sirve para guardar estos caracteres. Un tipo especial de carcter es la secuencia de escape, similares a las del lenguaje C/C++, que se utilizan para representar caracteres de control o caracteres que no se imprimen. Una secuencia de escape est formada por la barra invertida (\) y un carcter. En la siguiente tabla se dan las secuencias de escape ms utilizadas. Carcter retorno de carro tabulador horizontal nueva lnea barra invertida Secuencia de escape \r \t \n \\
39

Variables booleanas En el lenguaje C/C++ el valor 0 se toma como falso y el 1 como verdadero. En el lenguaje Java existe el tipo de dato boolean. Una variable booleana solamente puede guardar uno de los dos posibles valores: true (verdadero) y false (falso). boolean encontrado=false; {...} encontrado=true;

Variables enteras Una variable entera consiste en cualquier combinacin de cifras precedidos por el signo ms (opcional), para los positivos, o el signo menos, para los negativos. Son ejemplos de nmeros enteros: 12, -36, 0, 4687, -3598 Como ejemplos de declaracin de variable enteras tenemos: int numero=1205; int x,y; long m=30L; int es la palabra reservada para declarar una variable entera. En el primer caso, el compilador reserva una porcin de 32 bits de memoria en el que guarda el nmero 1205. Se accede a dicha porcin de memoria mediante el nombre de la variable, numero. En el segundo caso, las porciones de memoria cuyos nombres son x e y, guardan cualquier valor entero si la variable es local o cero si la variable es de instancia o de clase. El uso de una variaable local antes de ser convenientemente inicializada puede conducir a consecuencias desastrosas. Por tanto, declarar e inicializar una variable es una prctica aconsejable. En la tercera lnea 30 es un nmero de tipo int por defecto, le ponemos el sufijo L en maysculas o minsculas para indicar que es de tipo long. Existen como vemos en la tabla varios tipos de nmeros enteros (byte, short, int, long), y tambin existe una clase denominada BigInteger cuyos objetos pueden guardar un nmero entero arbitrariamente grande.

40

Variables en coma flotante Las variables del tipo float o double (coma flotante) se usan para guardar nmeros en memoria que tienen parte entera y parte decimal. double PI=3.14159; double g=9.7805, c=2.9979e8; El primero es una aproximacin del nmero real p, el segundo es la aceleracin de la gravedad a nivel del mar, el tercero es la velocidad de la luz en m/s, que es la forma de escribir 2.9979 108. El carcter punto '.', separa la parte entera de la parte decimal, en vez del carcter coma ',' que usamos habitualmente en nuestro idioma. Otras ejemplos son los siguientes float a=12.5f; float b=7f; double c=7.0; double d=7d; En la primera lnea 12.5 lleva el sufijo f, ya que por defecto 12.5 es double. En la segunda lnea 7 es un entero y por tanto 7f es un nmero de tipo float. Y as el resto de los ejemplos. Conceptualmente, hay infinitos nmeros de valores entre dos nmeros reales. Ya que los valores de las variables se guardan en un nmero prefijado de bits, algunos valores no se pueden representar de forma precisa en memoria. Por tanto, los valores de las variables en coma flotante en un ordenador solamente se aproximan a los verdaderos nmeros reales en matemticas. La aproximacin es tanto mejor, cuanto mayor sea el tamao de la memoria que reservamos para guardarlo. De este hecho, surgen las variables del tipo float y double. Para nmeros de precisin arbitararia se emplea la clase BigDecimal.

Valores constantes Cuando se declara una variable de tipo final, se ha de inicializar y cualquier intento de modificarla en el curso de la ejecucin del programa da lugar a un error en tiempo de compilacin. Normalmente, las constantes de un programa se suelen poner en letras maysculas, para distinguirlas de las que no son constantes. He aqu ejemplos de declaracin de constantes. final double PI=3.141592653589793; final int MAX_DATOS=150;

41

Las cadenas de caracteres o strings Adems de los ocho tipos de datos primitivos, las variables en Java pueden ser declaradas para guardar una instancia de una clase, como veremos en el siguiente captulo (Clases y objetos). Las cadenas de caracteres o strings son distintas en Java y en el lenguaje C/C++, en este ltimo, las cadenas son arrays de caracteres terminados en el carcter '\0'. Sin embargo, en Java son objetos de la clase String. String mensaje="El primer programa"; Empleando strings, el primer programa quedara de la forma equivalente public class PrimeroApp{ public static void main(String[] args) { //imprime un mensaje String mensaje="El primer programa"; System.out.println(mensaje); } } En una cadena se pueden insertar caracteres especiales como el carcter tabulador '\t' o el de nueva lnea '\n' String texto="Un string con \t un carcter tabulador y \n un salto de lnea"; Palabras reservadas En el siguiente cuadro se listan las palabras reservadas, aquellas que emplea el lenguaje Java, y que el programador no puede utilizar como identificadores. Algunas de estas palabras le resultarn familiares al programador del lenguaje C/C++. Las palabras reservadas sealadas con un arterisco (*) no se utilizan. abstract case const* else float if int null protected satatic throw void boolean cast* continue extends for implements interface operator* public super transient volatile break catch default false future* import long outer* rest* switch true while byte char do final generic* inner* native package return synchronized try byvalue* class double finally goto* instanceof new private short this var*

42

Las palabras reservadas se pueden clasificar en las siguientes categoras:


Tipos de datos: boolean, float, double, int, char Sentencias condicionales: if, else, switch Sentencias iterativas: for, do, while, continue Tratamiento de las excepciones: try, catch, finally, throw Estructura de datos: class, interface, implements, extends Modificadores y control de acceso: public, private, protected, transient Otras: super, null, this.

43

2.-PHP PHP es lo que llamamos un lenguaje de programacion del lado del servidor, esto significa que el cdigo se interpreta en el servidor y no en el ordenador del usuario. El cdigo php interpretado, produce un resultado que es enviado al navegador del visitante en forma de HTML, imagen, documento .doc... de ninguna manera el navegador del visitante accede al cdigo fuente en php sino solo a su resultado en HTML.

El navegador pide un documento al servidor, en el caso que este documento sea un archivo PHP, el archivo es interpretado y se enva su resultado al navegador. Vamos a ver un ejemplo sencillo de cdigo escrito en php para que nos sea mas fcil de comprender: 000 <html> 001 <head> 002 <title>Prueba</title> 003 </head> 004 <body> 005 <? 006 007 $texto = "Hola mundo"; 008 echo $texto; 009 ?> 010 </body> 011 </html> </CODE< code>

44

Este cdigo producir el siguiente resultado que es lo que se enviar al navegador del visitante: 000 <html> 001 <head> 002 <title>Prueba</title> 003 </head> 004 <body> 005 Hola mundo 006 </body> 007 </html> </CODE< code>

Vemos que el cdigo php esta delimitado por las etiquetas <? y ?>, aunque tambien puede usarse <?php en lugar de <?. Otra caracterstica del php es que las variables se identifican con el signo del dolar ($) y que cada instruccion debe finalizarse con un punto y coma (;). Para poder empezar a aprender a programar en PHP, debemos tener un servidor web con PHP instalado, y lo ms cmodo para trabajar es que lo tengamos en nuestro propio ordenador. Las herramientas que necesitamos, son un servidor web ( en el curso se utiliza Apache pero el IIS de Windows tambin puede servir ), el propio PHP y posiblemente el motor de bases de datos MySQL. Todo esto se puede instalar por separado, o se puede hacer con paquetes que instalan y configuran PHP, Apache y MySQL. Aunque en este captulo ensear a instalar el XAMPP, existen otros como el WAMP ( ver Instalacin de Wamp en windows ) o el easyPHP.

El XAMPP Otros paquetes.

El XAMPP El XAMPP es el nico paquete de los que hemos comentado en este captulo disponible para multiplataforma (Windows, Mac OS X, GNU/Linux y Solaris). Incluye, entre otros, aplicaciones como el Apache, el MySQL, el intrprete PHP, el OpenSSL, el phpMyAdmin, el Mercury Mail Transport System y el FileZilla FTP Server. El primer que hacemos es descargarnos el instalador. Os explicar la instalacin para WINDOWS, pero los paquetes de instalacin de otros SO los encontramos en la misma pgina. Nos damos cuenta de que la versin para WINDOWS supera los 30 MB, as que tened paciencia los que no dispongan de conexin rpida a Internet o bajaos el WAMP Server o el EasyPHP (al final del artculo).

45

Una vez bajado el ejecutable, lo abrimos y vemos que nos pregunta por el idioma en que queremos realizar la instalacin (hay 11, uno de ellos el espaol). Despus de esto, nos dan la bienvenida al asistente de instalacin i, al presionar sobre Siguiente, nos preguntan el directorio sobre el cual queremos realizar la instalacin.

El asistente nos da la bienvenida.

46

Especificamos el directorio de instalacin.

Si la instalacin se produce sin problemas, presionamos sobre Acabar y el XAMPP ya estar listo.

Proceso de instalacin.
47

La instalacin se ha finalizado.

Si lo ejecutas, podrs visualizar el XAMPP Control Panel Application, donde podrs poner en funcionamiento el Apache, el MySQL, el FileZilla y el Mercury.

XAMPP Control Panel.

Tan solo por tener activado el Apache, puedes acceder al http://localhost, donde podrs ver si se ha instalado correctamente el servidor local.
48

Localhost por defecto de XAMPP.

Aunque lo puedes eliminar, el localhost por defecto de XAMPP puede ser muy til: des de all puedes acceder a todas las herramientas, y adems puedes ver cul es el estado de este y sus agujeros de seguridad. Arriba Otros paquetes. Adems del XAMPP, hay otros paquetes de instalacin del servidor local. No os quedis tan solo con esto, probar ne tantos como podis. Aqu os dejo dos:

EasyPHP

EasyPHP contiene el mnimo para poder trabajar bien: un servidor web (Apache), el intrprete PHP y el MySQL. La ltima versin est disponible en espaol (y en 27 lenguas ms) y tan solo ocupa 7 MB la aplicacin y 144 KB todo el conjunto de idiomas. An as, la ltima versin es muy antiguas y les versiones del Apache y el PHP estn muy desfasadas (Apache 1.x y PHP4), para el que si te quieres introducir en programacin orientada a objectos te recomiendo seguir leyendo.

49

Web para descargartelo: http://www.easyphp.org/telechargements.php3 WAMP Server WAMP es el acrnimo de Windows Apache MySQL PHP. Es bastante ms completo, ya que incorpora el PHP5, el Apache 2 y el MySQL 5. No dispone de ms idiomas que no sean el ingls o el francs y ocupa unos 17 MB. Web para descargar: http://www.wampserver.com/en/download.php

Si os descargis uno de los dos ltimos y queris trabajar con GD Images, tendris de desbloquear la librera al archivo de configuracin de PHP (php.ini a la carpeta conf_files de EasyPHP y a la carpeta Apache2/bin del WAMP). Buscad la lnea ;extension=php_gd2.dll i sacadle el punto y coma. Quedar as: extension=php_gd2.dll Tambin tenis la opcin de bajaros el Apache, el intrprete de PHP y todas les utilidades por separado y incorporarlas como se explica en estos dos artculos: Instalacin de Apache2 en Windows y Instalar PHP en Windows

Tipos de variables, caractersticas generales y aspectos especficos de PHP de estos elementos bsicos de la programacin. Las variables son uno de los primeros temas que tenemos que conocer en PHP y en la mayora de los lenguajes de programacin. As que a continuacin vamos a tratar este tema dentro del Manual de PHP, explicando los tipos de variables que podremos encontrar. Anteriormente en DesarrolloWeb.com, en el manual de pginas dinmicas, ya habamos introducido el concepto de variable. En el captulo anterior comentbamos que, para PHP, las variables eran definidas anteponiendo el smbolo dlar ($) al nombre de la variable que estbamos definiendo. Dependiendo de la informacin que contenga, una variable puede ser considerada de uno u otro tipo:

50

Variables numricas Almacenan cifras Enteros Real $entero=2002; $real=3.14159; Numeros sin decimales Numeros con o sin decimal

Variables alfanumricas Almacenan textos compuestos de nmeros y/o cifras Cadenas Almacenan variables alfanumricas $cadena="Hola amigo";

Tablas Almacenan series de informaciones numricas y/o alfanumricas Son las variables que guardan las tablas $sentido[1]="ver"; $sentido[2]="tocar"; $sentido[3]="oir"; $sentido[4]="gusto"; $sentido[5]="oler";

Arrays

Objetos Se trata de conjuntos de variables y funciones asociadas. Presentan una complejidad mayor que las variables vistas hasta ahora pero su utilidad es ms que interesante.

A diferencia de otros lenguajes, PHP posee una gran flexibilidad a la hora de operar con variables. En efecto, cuando definimos una variable asignndole un valor, el ordenador le atribuye un tipo. Si por ejemplo definimos una variable entre comillas, la variable ser considerada de tipo cadena: $variable="5"; //esto es una cadena Sin embargo si pedimos en nuestro script realizar una operacin matemtica con esta variable, no obtendremos un mensaje de error sino que la variable cadena ser asimilada a numrica: <? $cadena="5"; //esto es una cadena $entero=3; //esto es un entero echo $cadena+$entero ?>
51

Ejecutar script Este script dar como resultado "8". La variable cadena ha sido asimilada en entero (aunque su tipo sigue siendo cadena) para poder realizar la operacin matemtica. Del mismo modo, podemos operar entre variables tipo entero y real. No debemos preocuparnos de nada, PHP se encarga durante la ejecucin de interpretar el tipo de variable necesario para el buen funcionamiento del programa. Sin embargo, en contraste, hay que tener cuidado en no cambiar maysculas por minsculas ya que, en este sentido, PHP es sensible. Conviene por lo tanto trabajar ya sea siempre en maysculas o siempre en minsculas para evitar este tipo de malentendidos a veces muy difciles de localizar. Variables asignadas por referencia En PHP tambin podemos asignar variables por referencia. En ese caso no se les asigna un valor, sino otra variable, de tal modo que las dos varialbles comparten espacio en memoria para el mismo dato. La notacin para asignar por referencia es colocar un "&" antes del nombre de la variable. <?php $foo = 'Bob'; // Asigna el valor 'Bob' a $foo $bar = &$foo; // Referencia $foo va $bar. $bar = "Mi nombre es $bar"; // Modifica $bar... echo $foo; // $foo tambin se modifica. echo $bar; ?> Esto dar como resultado la visualizacin dos veces del string "Mi nombre es Bob". Algo como: Mi nombre es BobMi nombre es Bob

52

3.-Python Qu es Python? Python es un lenguaje de programacin creado por Guido van Rossum a principios de los aos 90 cuyo nombre est inspirado en el grupo de cmicos ingleses Monty Python. Es un lenguaje similar a Perl, pero con una sintaxis muy limpia y que favorece un cdigo legible. Se trata de un lenguaje interpretado o de script, con tipado dinmico, fuertemente tipado, multiplataforma y orientado a objetos.

Tipado dinmico La caracterstica de tipado dinmico se refiere a que no es necesario declarar el tipo de dato que va a contener una determinada variable, sino que su tipo se determinar en tiempo de ejecucin segn el tipo del valor al que se asigne, y el tipo de esta variable puede cambiar si se le asigna un valor de otro tipo. Fuertemente tipado No se permite tratar a una variable como si fuera de un tipo distinto al que tiene, es necesario convertir de forma explcita dicha variable al nuevo tipo previamente. Por ejemplo, si tenemos una variable que contiene un texto (variable de tipo cadena o string) no podremos tratarla como un nmero (sumar la cadena 9 y el nmero 8). En otros lenguajes el tipo de la variable cambiara para adaptarse al comportamiento esperado, aunque esto es ms propenso a errores. Multiplataforma El intrprete de Python est disponible en multitud de plataformas (UNIX, Solaris, Linux, DOS, Windows, OS/2, Mac OS, etc.) por lo que si no utilizamos libreras especficas de cada plataforma nuestro programa podr correr en todos estos sistemas sin grandes cambios. Orientado a objetos La orientacin a objetos es un paradigma de programacin en el que los conceptos del mundo real relevantes para nuestro problema se trasladan a clases y objetos en nuestro programa. La ejecucin del programa consiste en una serie de interacciones entre los objetos. Python tambin permite la programacin imperativa, programacin funcional y programacin orientada a aspectos. Por qu Python? Python es un lenguaje que todo el mundo debera conocer. Su sintaxis simple, clara y sencilla; el tipado dinmico, el gestor de memoria, la gran cantidad de libreras disponibles y la potencia del lenguaje, entre otros, hacen que desarrollar una aplicacin en Python sea sencillo, muy rpido y, lo que es ms importante, divertido.

53

La sintaxis de Python es tan sencilla y cercana al lenguaje natural quelos programas elaborados en Python parecen pseudocdigo. Por este motivo se trata adems de uno de los mejores lenguajes para comenzar a programar. Python no es adecuado sin embargo para la programacin de bajo nivel o para aplicaciones en las que el rendimiento sea crtico. Algunos casos de xito en el uso de Python son Google, Yahoo, la NASA, Industrias Light & Magic, y todas las distribuciones Linux, en las que Python cada vez representa un tanto por ciento mayor de los programas disponibles. Instalacin de Python Existen varias implementaciones distintas de Python: CPython, Jython, IronPython, PyPy, etc. CPython es la ms utilizada, la ms rpida y la ms madura. Cuando la gente habla de Python normalmente se refiere a esta implementacin. En este caso tanto el intrprete como los mdulos estn escritos en C. Jython es la implementacin en Java de Python, mientras que IronPython es su contrapartida en C# (.NET). Su inters estriba en que utilizando estas implementaciones se pueden utilizar todas las libreras disponibles para los programadores de Java y .NET. PyPy, por ltimo, como habris adivinado por el nombre, se trata de una implementacin en Python de Python. CPython est instalado por defecto en la mayor parte de las distribuciones Linux y en las ltimas versiones de Mac OS. Para comprobar si est instalado abre una terminal y escribe python. Si est instalado se iniciar la consola interactiva de Python y obtendremos parecido a lo siguiente: Python 2.5.1 (r251:54863, May 2 2007, 16:56:35) [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2 Type help, copyright, credits or license for more information. >>> La primera lnea nos indica la versin de Python que tenemos instalada. Al final podemos ver el prompt (>>>) que nos indica que el intrprete est esperando cdigo del usuario. Podemos salir escribiendo exit(), o pulsando Control + D. Si no te muestra algo parecido no te preocupes, instalar Python es muy sencillo. Puedes descargar la versin correspondiente a tu sistema operativo desde la web de Python, en http://www.python.org/download/. Existen instaladores para Windows y Mac OS. Si utilizas Linux es muy probable que puedas instalarlo usando la herramienta de gestin de paquetes de tu distribucin, aunque tambin podemos descargar la aplicacin compilada desde la web de Python. Herramientas bsicas Existen dos formas de ejecutar cdigo Python. Podemos escribir lneas de cdigo en el intrprete y obtener una respuesta del intrprete para cada lnea (sesin interactiva) o bien podemos escribir el cdigo de un programa en un archivo de texto y ejecutarlo. A la hora de realizar una sesin interactiva os aconsejo instalar y utilizar iPython, en lugar de la consola interactiva de Python. Se puede encontrar en
54

http://ipython.scipy.org/. iPython cuenta con caractersticas aadidas muy interesantes, como el autocompletado o el operador ?. (para activar la caracterstica de autocompletado en Windows es necesario instalar PyReadline, que puede descargarse desde http://ipython.scipy.org/ moin/PyReadline/Intro) La funcin de autocompletado se lanza pulsando el tabulador. Si escribimos fi y pulsamos Tab nos mostrar una lista de los objetos que comienzan con fi (file, filter y finally). Si escribimos file. y pulsamos Tab nos mostrar una lista de los mtodos y propiedades del objeto file. El operador ? nos muestra informacin sobre los objetos. Se utiliza aadiendo el smbolo de interrogacin al final del nombre del objeto del cual queremos ms informacin. Por ejemplo: In [3]: str? Type: type Base Class: String Form: Namespace: Python builtin Docstring: str(object) -> string Return a nice string representation of the object. If the argument is a string, the return value is the same object. En el campo de IDEs y editores de cdigo gratuitos PyDEV (http://pydev.sourceforge.net/) se alza como cabeza de serie. PyDEV es un plugin para Eclipse que permite utilizar este IDE multiplataforma para programar en Python. Cuenta con autocompletado de cdigo (con informacin sobre cada elemento), resaltado de sintaxis, un depurador grfico, resaltado de errores, explorador de clases, formateo del cdigo, refactorizacin, etc. Sin duda es la opcin ms completa, sobre todo si instalamos las extensiones comerciales, aunque necesita de una cantidad importante de memoria y no es del todo estable. Otras opciones gratuitas a considerar son SPE o Stanis Python Editor (http://sourceforge.net/projects/spe/), Eric (http://die-offenbachs.de/eric/), BOA Constructor (http://boa-constructor.sourceforge.net/) o incluso emacs o vim. Si no te importa desembolsar algo de dinero, Komodo (http://www.activestate.com/komodo_ide/) y Wing IDE (http://www.wingware.com/) son tambin muy buenas opciones, con montones de caractersticas interesantes, como PyDEV, pero mucho ms estables y robustos. Adems, si desarrollas software libre no comercial puedes contactar con Wing Ware y obtener, con un poco de suerte, una licencia gratuita para Wing IDE Professional :)

Mi primer programa en Python Como comentbamos en el captulo anterior existen dos formas de ejecutar cdigo Python, bien en una sesin interactiva (lnea a lnea) con el intrprete, o bien de la forma habitual, escribiendo el cdigo en un archivo de cdigo fuente y ejecutndolo. El primer programa que vamos a escribir en Python es el clsico Hola Mundo, y en este lenguaje es tan simple como: print Hola Mundo
55

Vamos a probarlo primero en el intrprete. Ejecuta python o ipython segn tus preferencias, escribe la lnea anterior y pulsa Enter. El intrprete responder mostrando en la consola el texto Hola Mundo. Vamos ahora a crear un archivo de texto con el cdigo anterior, de forma que pudiramos distribuir nuestro pequeo gran programa entre nuestros amigos. Abre tu editor de texto preferido o bien el IDE que hayas elegido y copia la lnea anterior. Gurdalo como hola.py, por ejemplo. Ejecutar este programa es tan sencillo como indicarle el nombre del archivo a ejecutar al intrprete de Python python hola.py

Tipos bsicos En Python los tipos bsicos se dividen en: Nmeros, como pueden ser 3 (entero), 15.57 (de coma flotante) o 7 + 5j (complejos) Cadenas de texto, como Hola Mundo Valores booleanos: True (cierto) y False (falso). Vamos a crear un par de variables a modo de ejemplo. Una de tipo cadena y una de tipo entero: # esto es una cadena c = Hola Mundo # y esto es un entero e = 23 # podemos comprobarlo con la funcin type type(c) type(e) Como veis en Python, a diferencia de muchos otros lenguajes, no se declara el tipo de la variable al crearla. En Java, por ejemplo, escribiramos: String c = Hola Mundo; int e = 23; Este pequeo ejemplo tambin nos ha servido para presentar los comentarios inline en Python: cadenas de texto que comienzan con el carcter # y que Python ignora totalmente. Hay ms tipos de comentarios, de los que hablaremos ms adelante.

56

Nmeros Como decamos, en Python se pueden representar nmeros enteros, reales y complejos. Enteros Los nmeros enteros son aquellos nmeros positivos o negativos que no tienen decimales (adems del cero). En Python se pueden representar mediante el tipo int (de integer, entero) o el tipo long (largo). La nica diferencia es que el tipo long permite almacenar nmeros ms grandes. Es aconsejable no utilizar el tipo long a menos que sea necesario, para no malgastar memoria. Una variable de tipo int de Python podemos almacenar nmeros de 2.147.483.648 a 2.147.483.647. En plataformas de 64 bits, el rango es de 9.223.372.036.854.775.808 hasta 9.223.372.036.854.775.807. # type(entero) devolvera int entero = 23 Tambin podemos indicar a Python que un nmero se almacene usando long aadiendo una L al final: # type(entero) devolvera long entero = 23L

Reales Los nmeros reales son los que tienen decimales. En Python se expresan mediante el tipo float. Python siempre se utiliza doble precisin, y en concreto se sigue el estndar IEEE 754: 1 bit para el signo, 11 para el exponente, y 52 para la mantisa. Esto significa que los valores que podemos representar van desde 2,2250738585072020 x 10-308 hasta 1,797693134862315710308. Para representar un nmero real en Python se escribe primero la parte entera, seguido de un punto y por ltimo la parte decimal. real = 0.2703 Complejos Los nmeros complejos son aquellos que tienen parte imaginaria. Si no conocas de su existencia, es ms que probable que nunca lo vayas a necesitar, por lo que puedes saltarte este apartado tranquilamente. De hecho la mayor parte de lenguajes de programacin carecen de este tipo, aunque sea muy utilizado por ingenieros y cientficos en general. En el caso de que necesitis utilizar nmeros complejos, o simplemente tengis curiosidad, os dir que este tipo, llamado complex en Python, tambin se almacena usando coma flotante, debido a que estos nmeros son una extensin de los nmeros reales. Los nmeros complejos en Python se representan de la siguiente forma: complejo = 2.1 + 7.8j
57

Operadores Veamos ahora qu podemos hacer con nuestros nmeros usando los operadores por defecto. Para operaciones ms complejas podemos recurrir al mdulo math. Operadores aritmticos Operador + Descripci n Suma Resta Ejemplo r=3+2#r es 5 r=4-7#r es Ejemplo

Operador -

Descripcin Negacin

r = -7 # r es 7 * Multiplicacin r = 2 * 6 # r es 12 ** Exponente r = 2 ** 6 # r es 64 / Divisin r = 3.5 / 2 # r es 1.75 // Divisin r = 3.5 // 2 # r entera es 1.0 % Mdulo r=7%2#r es 1 Operadores a nivel de bit Operador & | ^ ~ Cadenas Las cadenas no son ms que texto encerrado entre comillas simples (cadena) o dobles (cadena). Dentro de las comillas se pueden aadir caracteres especiales escapndolos con \, como \n, el carcter de nueva lnea, o \t, el de tabulacin. Una cadena puede estar precedida por el carcter u o el carcter r, los cuales indican, respectivamente, que se trata de una cadena que utiliza codificacin Unicode y una cadena raw (del ingls, cruda). Las cadenas raw se distinguen de las normales en que los caracteres escapados mediante la barra invertida (\) no se
58

Descripcin and or xor not

Ejemplo r=3&2#r es 2 r=3|2#r es 3 r=3^2#r es 1 r = ~3 # r es 4

sustituyen por sus contrapartidas. Esto es especialmente til, por ejemplo, para las expresiones regulares, como veremos en el captulo correspondiente. unicode = u raw = r\n Tambin es posible encerrar una cadena entre triples comillas (simples o dobles). De esta forma podremos escribir el texto en varias lneas, y al imprimir la cadena, se respetarn los saltos de lnea que introdujimos sin tener que recurrir al carcter \n, as como las comillas sin tener que escaparlas. triple = primera linea esto se vera en otra linea Las cadenas tambin admiten operadores como +, que funciona realizando una concatenacin de las cadenas utilizadas como operandos y *, en la que se repite la cadena tantas veces como lo indique el nmero utilizado como segundo operando. a = uno b = dos c = a + b # c es unodos c = a * 3 # c es unounouno Booleanos Operador and Descripcin se cumple a y b? se cumple a o b? No a Ejemplo r = True and False # r es False r = True or False # r es True r = not True # r es False

or

not

es a menor o igual r = 5 <= 5 # r es True que b? >= es a mayor o r = 5 >= 3 # r igual que b? es True

Colecciones En el captulo anterior vimos algunos tipos bsicos, como los nmeros, las cadenas de texto y los booleanos. En esta leccin veremos algunos tipos de colecciones de datos: listas, tuplas y diccionarios.

59

Listas La lista es un tipo de coleccin ordenada. Sera equivalente a lo que en otros lenguajes se conoce por arrays, o vectores. Las listas pueden contener cualquier tipo de dato: nmeros, cadenas, booleanos, y tambin listas. Crear una lista es tan sencillo como indicar entre corchetes, y separados por comas, los valores que queremos incluir en la lista: l = [22, True, una lista, [1, 2]] Podemos acceder a cada uno de los elementos de la lista escribiendo el nombre de la lista e indicando el ndice del elemento entre corchetes. Ten en cuenta sin embargo que el ndice del primer elemento de la lista es 0, y no 1: l = [11, False] mi_var = l[0] # mi_var vale 11 Si queremos acceder a un elemento de una lista incluida dentro de otra lista tendremos que utilizar dos veces este operador, primero para indicar a qu posicin de la lista exterior queremos acceder, y el segundo para seleccionar el elemento de la lista interior: l = [una lista, [1, 2]] mi_var = l[1][0] # mi_var vale 1

Tuplas Todo lo que hemos explicado sobre las listas se aplica tambin a las tuplas, a excepcin de la forma de definirla, para lo que se utilizan parntesis en lugar de corchetes. t = (1, 2, True, python) En realidad el constructor de la tupla es la coma, no el parntesis, pero el intrprete muestra los parntesis, y nosotros deberamos utilizarlos, por claridad. >>> t = 1, 2, 3 >>> type(t) type tuple Adems hay que tener en cuenta que es necesario aadir una coma para tuplas de un solo elemento, para diferenciarlo de un elemento entre parntesis. >>> t = (1) >>> type(t) type int >>> t = (1,) >>> type(t) type tuple
60

Para referirnos a elementos de una tupla, como en una lista, se usa el operador []: mi_var = t[0] # mi_var es 1 mi_var = t[0:2] # mi_var es (1, 2) Podemos utilizar el operador [] debido a que las tuplas, al igual que las listas, forman parte de un tipo de objetos llamados secuencias. Permitirme un pequeo inciso para indicaros que las cadenas de texto tambin son secuencias, por lo que no os extraar que podamos hacer cosas como estas: c = hola mundo c[0] # h c[5:] # mundo c[::3] # hauo Diccionarios Los diccionarios, tambin llamados matrices asociativas, deben su nombre a que son colecciones que relacionan una clave y un valor. Por ejemplo, veamos un diccionario de pelculas y directores: d = {Love Actually : Richard Curtis, Kill Bill: Tarantino, Amlie: Jean-Pierre Jeunet} El primer valor se trata de la clave y el segundo del valor asociado a la clave. Como clave podemos utilizar cualquier valor inmutable: podramos usar nmeros, cadenas, booleanos, tuplas, pero no listas o diccionarios, dado que son mutables. Esto es as porque los diccionarios se implementan como tablas hash, y a la hora de introducir un nuevo par clave-valor en el diccionario se calcula el hash de la clave para despus poder encontrar la entrada correspondiente rpidamente. Si se modificara el objeto clave despus de haber sido introducido en el diccionario, evidentemente, su hash tambin cambiara y no podra ser encontrado. La diferencia principal entre los diccionarios y las listas o las tuplas es que a los valores almacenados en un diccionario se les accede no por su ndice, porque de hecho no tienen orden, sino por su clave, utilizando de nuevo el operador []. d[Love Actually ] # devuelve Richard Curtis Al igual que en listas y tuplas tambin se puede utilizar este operador para reasignar valores. d[Kill Bill] = Quentin Tarantino Sin embargo en este caso no se puede utilizar slicing, entre otras cosas porque los diccionarios no son secuencias, si no mappings (mapeados, asociaciones).

61

4.-Tcl/Tk Tcl (Tool Command Language) es un lenguaje de comandos interpretados, y Tk (Tool kit) es una extensin de Tcl que permite crear aplicaciones graficas de forma rpida y sencilla. Tcl y Tk fueron desarrollados por John K. Ousterhout en la Universidad de California, Berkeley. Tanto Tcl como Tk se distribuyen de forma totalmente gratuita, actualmente se encuentra liberada la versin 8.4. Un programa Tcl no es ms que una serie de comandos, similares a los scripts de shell de UNIX tales como el Bourne Shell, C Shell, Korn Shell, y Perl. Una de las caractersticas ms importantes de este lenguaje es la flexibilidad para crear nuevos comandos Tcl. Si una aplicacin necesita alguna funcionalidad no ofrecida por los comandos estndar proporcionados por el lenguaje, es posible desarrollarlos utilizando el lenguaje C e integrarlos de forma sencilla. ste es el principal motivo por el cual se encuentran en Internet muchas extensiones de Tcl, entre las que se encuentran: Expect, Incr Tcl /Tk, Incr Widgets, Tix, OraTcl, VisualTcl, BLT. Tk surgi ante la idea de crear interfaces combinando una serie de elementos bsicos, por ejemplo: botones, etiquetas o ventanas de texto. Tk ofrece la posibilidad de desarrollar una interfaz independiente de la aplicacin, y permite adems la utilizacin del lenguaje de comandos Tcl para agrupar todos los componentes de la aplicacin y establecer la conexin con los elementos de la interfaz. Tk es un conjunto de herramientas de desarrollo para la generacin rpida de GUIs (Graphical User Interfaces). El elemento bsico es el widget, el cual es una ventana con una aspecto determinado y utilizado para fines concretos en la interfaz, dentro de los widgets se encuentran los botones, mens, barras de scroll, etiquetas, ventanas de texto, cuadros de dibujo (canvas). Los widgets se encuentran bajo la inspeccin del administrador de geometra encargado de controlar su posicin y tamao dentro de la pantalla. La estructura habitual de un programa Tk sigue las siguientes lneas bsicas: creacin de widgets, declaracin del administrador de ventanas que definir la presentacin de los widgets en la pantalla, y asociacin de instrucciones a eventos del ratn y/o teclado.

62

Visual TCL 100% Tcl/Tk y genera cdigo en Tcl/Tk. Interfaz GUI para mayores aspectos de desarrollo en Tcl/Tk Nuevas caracteristicas de widgets: combo box, multicolumn listbox, progress bar. Incluye componentes predefinidos: scrolled text, scrolled listbox, scrolled canvas.

BLT es una extensin del toolkit Tk, aade nuevos widgets, administrador de geometras, y una miscelnea de comandos. Table. Administrador de geometra basado en tablas para Tk. Graph. Un widget para graficar X-Y. Barchart. Un widget para barras. Vector. Crea un vector de valores punto flotante. Bgexec. Utilizado para verificar el estado de los subprocesos. Watch. Utilizado para el trazado o depurado de cdigo Tcl Bltdebug. Se utiliza para mostrar la salida del comando Tcl antes de su ejecucin.

63

5.- VISUAL BASIC Visual Basic 6.0 es uno de los lenguajes de programacin que ms entusiasmo despiertan entre los programadores de PCs, tanto expertos como novatos. En el caso de los programadores expertos por la facilidad con la que desarrollan aplicaciones complejas en poqusimo tiempo (comparado con lo que cuesta programar en Visual C++, por ejemplo). En el caso de los programadores novatos por el hecho de ver de lo que son capaces a los pocos minutos de empezar su aprendizaje. El precio que hay que pagar por utilizar Visual Basic 6.0 es una menor velocidad o eficiencia en las aplicaciones. Visual Basic 6.0 es un lenguaje de programacin visual, tambin llamado lenguaje de 4 generacin. Esto quiere decir que un gran nmero de tareas se realizan sin escribir cdigo, simplemente con operaciones grficas realizadas con el ratn sobre la pantalla. Visual Basic 6.0 es tambin un programa basado en objetos, aunque no orientado a objetos como C++ o Java. La diferencia est en que Visual Basic 6.0 utiliza objetos con propiedades y mtodos, pero carece de los mecanismos de herencia y polimorfismo propios de los verdaderos lenguajes orientados a objetos como Java y C++. En este primer captulo se presentarn las caractersticas generales de Visual Basic 6.0, junto con algunos ejemplos sencillos que den idea de la potencia del lenguaje y del modo en que se utiliza. PROGRAMAS PARA EL ENTORNO WINDOWS Visual Basic 6.0 est orientado a la realizacin de programas para Windows, pudiendo incorporar todos los elementos de este entorno informtico: ventanas, botones, cajas de dilogo y de texto, botones de opcin y de seleccin, barras de desplazamiento, grficos, mens, etc. Prcticamente todos los elementos de interaccin con el usuario de los que dispone Windows 95/98/NT pueden ser programados en Visual Basic 6.0 de un modo muy sencillo. En ocasiones bastan unas pocas operaciones con el ratn y la introduccin a travs del teclado de algunas sentencias para disponer de aplicaciones con todas las caractersticas de Windows 95/98/NT. En los siguientes apartados se introducirn algunos conceptos de este tipo de programacin. Modo de Diseo y Modo de Ejecucin La aplicacin Visual Basic de Microsoft puede trabajar de dos modos distintos: en modo de diseo y en modo de ejecucin. En modo de diseo el usuario construye interactivamente la aplicacin, colocando controles en el formulario, definiendo sus propiedades, y desarrollando funciones para gestionar los eventos. La aplicacin se prueba en modo de ejecucin. En ese caso el usuario acta sobre el programa (introduce eventos) y prueba cmo responde el programa. Hay algunas propiedades de los controles que deben establecerse en modo de
64

diseo, pero muchas otras pueden cambiarse en tiempo de ejecucin desde el programa escrito en Visual Basic 6.0, en la forma en que ms adelante se ver. Tambin hay propiedades que slo pueden establecerse en modo de ejecucin y que no son visibles en modo de diseo. Todos estos conceptos controles, propiedades, eventos, etc.- se explican en los apartados siguientes. Formularios y Controles Cada uno de los elementos grficos que pueden formar parte de una aplicacin tpica de Windows 95/98/NT es un tipo de control: los botones, las cajas de dilogo y de texto, las cajas de seleccin desplegables, los botones de opcin y de seleccin, las barras de desplazamiento horizontales y verticales, los grficos, los mens, y muchos otros tipos de elementos son controles para Visual Basic 6.0. Cada control debe tener un nombre a travs del cual se puede hacer referencia a l en el programa. Visual Basic 6.0 proporciona nombres por defecto que el usuario puede modificar. En el Apartado 1.2.4 se exponen algunas reglas para dar nombres a los distintos controles. En la terminologa de Visual Basic 6.0 se llama formulario (form) a una ventana. Un formulario puede ser considerado como una especie de contenedor para los controles. Una aplicacin puede tener varios formularios, pero un nico formulario puede ser suficiente para las aplicaciones ms sencillas. Los formularios deben tambin tener un nombre, que puede crearse siguiendo las mismas reglas que para los controles. Objetos y Propiedades Los formularios y los distintos tipos de controles son entidades genricas de las que puede haber varios ejemplares concretos en cada programa. En programacin orientada a objetos (ms bien basada en objetos, habra que decir) se llama clase a estas entidades genricas, mientras que se llama objeto a cada ejemplar de una clase determinada. Por ejemplo, en un programa puede haber Captulo 1: Introduccin pgina 3 varios botones, cada uno de los cuales es un objeto del tipo de control command button, que sera la clase. Cada formulario y cada tipo de control tienen un conjunto de propiedades que definen su aspecto grfico (tamao, color, posicin en la ventana, tipo y tamao de letra, etc.) y su forma de responder a las acciones del usuario (si est activo o no, por ejemplo). Cada propiedad tiene un nombre que viene ya definido por el lenguaje. Por lo general, las propiedades de un objeto son datos que tienen valores lgicos (True, False) o numricos concretos, propios de ese objeto y distintos de las de otros objetos de su clase. As pues, cada clase, tipo de objeto o control tiene su conjunto de propiedades, y cada objeto o control concreto tiene unos valores determinados para las propiedades de su clase. Casi todas las propiedades de los objetos pueden establecerse en tiempo de diseo y tambin -casi siempre- en tiempo de ejecucin. En este segundo caso se accede a sus valores por medio de las sentencias del programa, en forma anloga a como se accede a cualquier variable en un lenguaje de programacin. Para ciertas propiedades sta es la nica forma de acceder a ellas. Por supuesto Visual Basic 6.0 permite crear distintos tipos de variables, como ms adelante se ver.
65

Se puede acceder a una propiedad de un objeto por medio del nombre del objeto a que pertenece, seguido de un punto y el nombre de la propiedad, como por ejemplo optColor.objName. En el siguiente apartado se estudiarn las reglas para dar nombres a los objetos. Nombres de objetos En principio cada objeto de Visual Basic 6.0 debe tener un nombre, por medio del cual se hace referencia a dicho objeto. El nombre puede ser el que el usuario desee, e incluso Visual Basic 6.0 proporciona nombres por defecto para los diversos controles. Estos nombres por defecto hacen referencia al tipo de control y van seguidos de un nmero que se incrementa a medida que se van introduciendo ms controles de ese tipo en el formulario (por ejemplo VScroll1, para una barra de desplazamiento -scroll bar- vertical, HScroll1, para una barra horizontal, etc.).

Los nombres por defecto no son adecuados porque hacen referencia al tipo de control, pero no al uso que de dicho control est haciendo el programador. Por ejemplo, si se utiliza una barra de desplazamiento para introducir una temperatura, conviene que su nombre haga referencia a la palabra temperatura, y as cuando haya que utilizar ese nombre se sabr exactamente a qu control corresponde. Un nombre adecuado sera por ejemplo hsbTemp, donde las tres primeras letras indican que se trata de una horizontal scroll bar, y las restantes (empezando por una mayscula) que servir para definir una temperatura. Existe una convencin ampliamente aceptada que es la siguiente: se utilizan siempre tres letras minsculas que indican el tipo de control, seguidas por otras letras (la primera mayscula, a modo de separacin) libremente escogidas por el usuario, que tienen que hacer referencia al uso que se va a dar a ese control. La Tabla 1.1 muestra las abreviaturas de los controles ms usuales, junto con la nomenclatura inglesa de la que derivan. En este mismo captulo se vern unos cuantos ejemplos de aplicacin de estas reglas para construir nombres.

66

Eventos Ya se ha dicho que las acciones del usuario sobre el programa se llaman eventos. Son eventos tpicos el clicar sobre un botn, el hacer doble clic sobre el nombre de un fichero para abrirlo, el arrastrar un icono, el pulsar una tecla o combinacin de teclas, el elegir una opcin de un men, el escribir en una caja de texto, o simplemente mover el ratn. Ms adelante se vern los distintos tipos de eventos reconocidos por Windows 95/98/NT y por Visual Basic 6.0. Cada vez que se produce un evento sobre un determinado tipo de control, Visual Basic 6.0 arranca una determinada funcin o procedimiento que realiza la accin programada por el usuario para ese evento concreto. Estos procedimientos se llaman con un nombre que se forma a partir del nombre del objeto y el nombre del evento, separados por el carcter (_), como por ejemplo txtBox_click, que es el nombre del procedimiento que se ocupar de responder al evento click en el objeto txtBox.

Mtodos Los mtodos son funciones que tambin son llamadas desde programa, pero a diferencia de los procedimientos no son programadas por el usuario, sino que vienen ya pre-programadas con el lenguaje. Los mtodos realizan tareas tpicas, previsibles y comunes para todas las aplicaciones. De ah que vengan con el lenguaje y que se libere al usuario de la tarea de programarlos. Cada tipo de objeto o de control tiene sus propios mtodos. Por ejemplo, los controles grficos tienen un mtodo llamado Line que se encarga de dibujar lneas rectas. De la misma forma existe un mtodo llamado Circle que dibuja circunferencias y arcos de circunferencia Es obvio que el dibujar lneas rectas o circunferencias es una tarea comn para todos los programadores y que Visual Basic 6.0 da ya resuelta. Proyectos y ficheros Cada aplicacin que se empieza a desarrollar en Visual Basic 6.0 es un nuevo proyecto. Un proyecto comprende otras componentes ms sencillas, como por ejemplo los formularios (que son las ventanas de la interface de usuario de la nueva aplicacin) y los mdulos (que son conjuntos de funciones y procedimientos sin interface grfica de usuario). Cmo se guarda un proyecto en el disco? Un proyecto se compone siempre de varios ficheros (al menos de dos) y hay que preocuparse de guardar cada uno de ellos en el directorio adecuado y con el nombre adecuado. Existe siempre un fichero con extensin *.vbp (Visual Basic Project) que se crea con el comando File/Save Project As. El fichero del proyecto contiene toda la informacin de conjunto. Adems hay que crear un fichero por cada formulario y por cada mdulo que tenga el proyecto. Los ficheros de los formularios se crean con File/Save Filename As teniendo como extensin *.frm. Los ficheros de cdigo o mdulos se guardan tambin con el comando File/Save Filename As y tienen como extensin *.bas si se trata de un mdulo estndar o *.cls si se trata de un mdulo de clase (class module).

67

Clicando en el botn Save en la barra de herramientas se actualizan todos los ficheros del proyecto. Si no se haban guardado todava en el disco, Visual Basic 6.0 abre cajas de dilogo Save As por cada uno de los ficheros que hay que guardar. EL ENTORNO DE PROGRAMACIN VISUAL BASIC 6.0 Cuando se arranca Visual Basic 6.0 aparece en la pantalla una configuracin similar a la mostrada en la Figura 1.1. En ella se pueden distinguir los siguientes elementos: 1. La barra de ttulos, la barra de mens y la barra de herramientas de Visual Basic 6.0 en modo Diseo (parte superior de la pantalla). 2. Caja de herramientas (toolbox) con los controles disponibles (a la izquierda de la ventana). 3. Formulario (form) en gris, en que se pueden ir situando los controles (en el centro). Est dotado de una rejilla (grid) para facilitar la alineacin de los controles. 4. Ventana de proyecto, que muestra los formularios y otros mdulos de programas que forman parte de la aplicacin (arriba a la derecha). 5. Ventana de Propiedades, en la que se pueden ver las propiedades del objeto seleccionado o del propio formulario (en el centro a la derecha). Si esta ventana no aparece, se puede hacer visible con la tecla <F4>. 6. Ventana FormLayout, que permite determinar la forma en que se abrir la aplicacin cuando comience a ejecutarse (abajo a la derecha). 7. Existen otras ventanas para edicin de cdigo (Code Editor) y para ver variables en tiempo de ejecucin con el depurador o Debugger (ventanas Immediate, Locals y Watch). Todo este conjunto de herramientas y de ventanas es lo que se llama un entorno integrado de desarrollo o IDE (Integrated Development Environment). Construir aplicaciones con Visual Basic 6.0 es muy sencillo: basta crear los controles en el formulario con ayuda de la toolbox y del ratn, establecer sus propiedades con ayuda de la ventana de propiedades y programar el cdigo que realice las acciones adecuadas en respuesta a los eventos o acciones que realice el usuario. A continuacin, tras explicar brevemente cmo se utiliza el Help de Visual Basic, se presentan algunos ejemplos ilustrativos.

68

69

1.4 EL HELP DE VISUAL BASIC 6.0 El Help de Visual Basic 6.0 es de los mejores que existen. Adems de que se puede buscar cualquier tipo de informacin con la funcin Index, basta seleccionar una propiedad cualquiera en la ventana de propiedades o un control cualquiera en el formulario (o el propio formulario), para que pulsando la tecla <F1> aparezca una ventana de ayuda muy completa. De cada control de muestran las propiedades, mtodos y eventos que soporta, as como ejemplos de aplicacin. Tambin se muestra informacin similar o relacionada. Existe adems un breve pero interesante curso introductorio sobre Visual Basic 6.0 que se activa con la opcin Help/Contents, seleccionando luego MSDN Contents/Visual Basic Documentation/ Visual Basic Start Page/Getting Started.

Tipos de datos Al igual que C y otros lenguajes de programacin, Visual Basic dispone de distintos tipos de datos, aplicables tanto para constantes como para variables. La Tabla 3.2 muestra los tipos de datos disponibles en Visual Basic.

70

Eleccin del tipo de una variable Si en el cdigo del programa se utiliza una variable que no ha sido declarada, se considera que esta variable es de tipo Variant. Las variables de este tipo se adaptan al tipo de informacin o dato que se les asigna en cada momento. Por ejemplo, una variable tipo Variant puede contener al principio del programa un string de caracteres, despus una variable de doble precisin, y finalmente un nmero entero. Son pues variables muy flexibles, pero su uso debe restringirse porque ocupan ms memoria (almacenan el tipo de dato que contienen, adems del propio valor de dicho dato) y requieren ms tiempo de CPU que los restantes tipos de variables. En general es el tipo de dato (los valores que puede tener en la realidad) lo que determina qu tipo de variable se debe utilizar. A continuacin se muestran algunos ejemplos: Integer para numerar las filas y columnas de una matriz no muy grande Long para numerar los habitantes de una ciudad o los nmeros de telfonos Boolean para una variable con slo dos posibles valores (s o no) Single para variables fsicas con decimales que no exijan precisin Double para variables fsicas con decimales que exijan precisin Currency para cantidades grandes de dinero

Es muy importante tener en cuenta que se debe utilizar el tipo de dato ms sencillo que represente correctamente el dato real ya que en otro caso se ocupar ms memoria y la ejecucin de los programas o funciones ser ms lenta. OPERADORES

71

SENTENCIAS DE CONTROL Las sentencias de control, denominadas tambin estructuras de control, permiten tomar decisiones y realizar un proceso repetidas veces. Son los denominados bifurcaciones y bucles. Este tipo estructuras son comunes en cuanto a concepto en la mayora de los lenguajes de programacin, aunque su sintaxis puede variar de un lenguaje de programacin a otro. Se trata de unas estructuras muy importantes ya que son las encargadas de controlar el flujo de un programa segn los requerimientos del mismo. Visual Basic 6.0 dispone de las siguientes estructuras de control: If ... Then ... Else Select Case For ... Next Do ... Loop While Wend For Each Next

Bibliografa
Programacin de interfaces http://fcasua.contad.unam.mx/clases_virtuales/informatica/1766.html PHP http://www.programacionweb.net/articulos/articulo/?num=483 Pytohon https://launchpadlibrarian.net/18980633/Python%20para%20todos.pdf

http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/herencia/interfaces.htm http://agcortes.com/2012/03/05/aplicacion-grafica-sencilla-con-python-ywxpython/#more-29 http://www.profesionalhosting.com/hosting/definicion/php-17.html Graphical Applications with Tcl&Tk, Eric Foster, M&T Books. Practical Programming Tcl and Tk, Brent B. Welch, Prentice Hall. Programmer's Reference Tcl/Tk, Christopher Nelson, McGraw Hill. Building Network Management Tools with Tcl/Tk, Dave Zeltserman, Prentice Hall. [Incr TclTk] from the ground Up. The Accelerated track for professional programmers, Chad Smith, Osborne. http://msdn.microsoft.com/es-es/library/28e2e18x(v=vs.80).aspx
72

III. INTERFACES GRFICAS Interfaces grficas orientadas al usuario Introduccin Entendemos por Interfaz Grfica de Usuario (GUI) al software que permite la interaccin entre el usuario y los servicios que proporciona el sistema operativo, utilizando para ello una representacin grfica intuitiva de alto nivel La informtica moderna no puede entenderse sin el impacto que supuso la generalizacin de los entornos grficos de usuario a partir de los 80 Hoy en da, la mayor parte de las aplicaciones destinadas a usuarios finales se realizan para este tipo de entornos Historia de las interfaces Una Interfaz Grafica de Usuario (GUI) permite interactuar con el computador usando iconos grficos, indicadores visuales, o elementos especiales llamados Widgets. Las acciones se realizan al manipular estos elementos directamente con el teclado, mouse, etc.

La historia de la interfaz grfica ha estado marcada en su evolucin por dos factores decisivos: la investigacin y el negocio. La historia que se sintetiza a continuacin, no recoge todas las interfaces producidas, en cambio intenta trazar una sntesis cronolgica, localizando los momentos decisivos y los elementos ms importantes en el contexto de los ordenadores personales y la informtica de consumo.

73

74

75

76

77

Caractersticas de un GUI Posee un monitor grfico de alta resolucin. Posee un dispositivo apuntador (tpicamente un ratn). Promueve la consistencia de la interfaz entre programas. Los usuarios pueden ver en la pantalla los grficos y textos tal como se vern impresos. Sigue el paradigma de la interaccin objeto-accin. Permite la transferencia de informacin entre programas. Se puede manipular en la pantalla directamente los objetos y la informacin. Provee elementos de interfaz estndar como mens y dilogos. Existe una muestra visual de la informacin y los objetos (iconos y ventanas). Proporciona respuesta visual a las acciones del usuario. Existe informacin visual de las acciones y modos del usuario/sistema (mens, paletas). Existen controles grficos (widgets) para la seleccin e introduccin de la informacin. Permite a los usuarios personalizar la interfaz y las interacciones. Proporciona flexibilidad en el uso de dispositivos de entrada (teclado/ratn).

Una caracterstica importante es que el GUI permite manipular los objetos e informacin de la pantalla, no slo presentarla. Para usar un GUI, los usuarios deben conocer (o aprender) una serie de conceptos: organizacin del sistema (ficheros, directorios en Win95), diferentes tipos de iconos y efecto de las acciones sobre ellos, elementos bsicos de una ventana, uso de los controles del GUI, uso del ratn. Los GUI usan el estilo objeto-accin, en contraposicin al accin-objeto de los CUI o las interfaces de men. El usuario selecciona un objeto, y despus la accin a realizar sobre dicho objeto. Los objetos son el principal foco de atencin del usuario, lo cual resulta ms natural y prximo a su modelo mental. Pasos para el diseo de interfaz Pasos Clsicos En el proceso de diseo de una interfaz de usuario se pueden distinguir cuatro fases o pasos fundamentales:

Reunir y analizar la informacin del usuario Disear la interfaz de usuario Construir la interfaz de usuario Validar la interfaz de usuario
78

Construir la interfaz de usuario. Es interesante realizar un prototipo previo, una primera versin del programa que se realice rpidamente y permita visualizar el producto para poderlo probar antes de codificarlo definitivamente Validar la interfaz de usuario. Se deben realizar pruebas de usabilidad del producto, a ser posible con los propios usuarios finales del mismo. Es importante, en suma, realizar un diseo que parta del usuario, y no del sistema. Existen 11 pasos en el proceso de diseo "centrado en las tareas", similar al anterior pero que desglosa algunas actividades implcitas en otras, as: 1.- Entender quien usar el sistema para hacer qu. 2.- Elegir tareas representativas para el diseo. 3.- Plagiar o copiar. 4.- Bosquejar un diseo. 5.- Pensar acerca del diseo. 6.- Crear un prototipo. 7.- Evaluarla con los usuarios. 8.- Repetir. 9.- Construirla. 10.- Rastrearla. 11.- Cambiarla. Tcnicas y pasos avanzadas para el diseo de interfaces de usuario

2.-Criterios de uso - Seleccin de la Informacin: La informacin que ser objeto de tratamiento futuro debe ser pertinente, pues el mensaje, tanto en imgenes como en palabras, es brevemente representado por las memorias sensoriales. Debido a lo limitado de la memoria activa, slo algunas representaciones son conservadas para su tratamiento. - Organizacin de la Informacin: Es el proceso de ordenacin mental de las representaciones auditivas y visuales. stas se clasifican en imgenes verbales y grficas, las cuales deben ser coherentes entre s.

79

- Integracin de la Informacin: En este proceso se elaboran las conexiones entre los elementos de las representaciones grficas y verbales, la nueva informacin y el conocimiento previo. Tal como lo plantea Reigeluth (1999), existen una serie de tcnicas que permiten motivar al que aprende, llevar el mensaje a su memoria activa de una manera eficiente, tratando de obtener la integracin de este mensaje con la informacin previa, etapa en la cual ocurre la elaboracin de nuevas conductas o aprendizaje en el individuo. Este modelo de aprendizaje es particularmente interesante en los planteamientos de sus tcnicas de estimulacin de los procesos cognitivos, porque brinda el fundamento terico con el cual se propone establecer pautas que permitan estandarizar el diseo de interfaces grficas de aplicaciones de software y, en consecuencia, obtener la ganancia de usabilidad para los diseos visuales que se realicen.

80

3.-Principios de composicin en el diseo de las ventanas

Usabilidad Definicin Definimos Usabilidad de un sistema o herramienta como una medida de su utilidad, facilidad de uso, facilidad de aprendizaje y apreciacin para una tarea, un usuario y un contexto dado. El peso relativo de cada una de estas medias est relacionado con el usuario, la tarea y el contexto. Por ejemplo, la facilidad de aprendizaje puede ser crucial para un producto y poco importante en otro. Si bien no est incluida en la definicin usual de usabilidad, se est comenzando a hablar de la evolucin de estos factores a lo largo del tiempo. Por ejemplo, cmo una interfaz puede adaptarse al crecimiento en eficiencia y conocimientos de un usuario. Utilidad La utilidad es la capacidad que tiene una herramienta para ayudar a cumplir tareas especficas. Aunque esta afirmacin parece obvia, es importante observar que una herramienta que es muy usable para una tarea, puede ser muy poco usable para otra, an incluso si se trata de una tarea similar pero no idntica. Un martillo y una maza son muy similares. Sin embargo, cada uno de ellos es adecuado para una tarea y muy poco usable para otras. La facilidad de uso est en relacin directa con la eficiencia o efectividad, medida como velocidad o cantidad de posibles errores. Una herramienta muy fcil de usar permitir a su usuario efectuar ms operaciones por unidad de tiempo (o menor tiempo para la misma operacin) y disminuir la probabilidad de que ocurran errores. Ninguna herramienta o sistema es perfecto, pero una alta probabilidad de error puede llegar incluso a derivar en una imposibilidad de uso por falta de calificacin, segn cules sean los criterios para evaluar la herramienta o sistema(3). Un caso especial de estas necesidades extremas son las herramientas de misin crtica como por ejemplo diagnstico mdico y aeronavegacin. Son reas que tpicamente suelen requerir altsimos grados de eficiencia y precisin. Una falla en este tipo de aplicaciones puede tener serias consecuencias. Sin embargo, atencin: la facilidad de uso no debe confundirse con la facilidad de aprendizaje.
81

Facilidad de uso

Facilidad de aprendizaje

La facilidad de aprendizaje es una medida del tiempo requerido para trabajar con cierto grado de eficiencia en el uso de la herramienta, y alcanzar un cierto grado de retencin de estos conocimientos luego de cierto tiempo de no usar la herramienta o sistema. Si bien la facilidad de aprendizaje suele tener una relacin directa con la usabilidad, estrictamente hablando esto no necesariamente es as. La facilidad de aprendizaje debera ser una medida relativa, ya que hay sistemas muy complejos que no pueden ser aprendidos rpidamente. Que un software para control y monitoreo de maquinaria de produccin requiera 6 meses de aprendizaje para un usuario tpico, no quiere decir que es poco usable. Dada la complejidad del tema, difcilmente podra aprenderse en menos tiempo. Por lo tanto, lo importante es comparar entre varias posibles interfaces y ver cul es la que requiere menos tiempo y/o queda mejor retenida. Si la versin siguiente, sin aumento en la complejidad del servicio brindado tomara 8 meses de aprendizaje, ahora s estaramos frente a un problema de usabilidad. Es una medida de las percepciones, opiniones, sentimientos y actitudes generadas en el Usuario por la herramienta o sistema; una medida, si se quiere, de su seduccin o elegancia. La apreciacin es una medida menos objetiva que las anteriores, pero sin embargo, no menos importante. Lo importante de esta medida no es tenerla en forma absoluta sino, otra vez, compararla o analizarla en forma relativa. Esta comparacin puede ser contra la competencia, contra la versin anterior del mismo producto, contra otras posibilidades que se estn tomando en cuenta. El otro punto importante respecto de la apreciacin es tratar de analizar hasta donde tie el resto de las medidas. Un usuario al que no le gusta una interfaz puede generar mas errores, o tardar ms en aprenderla. Debemos aprender a separar las medidas estrictas de las que puedan tener desviaciones debidas a una apreciacin negativa.

Apreciacin

La intencin del diseo visual no es que las aplicaciones luzcan bonitas. Un buen Diseo Visual est centrado en la Comunicacin. La informacin visual es un complemento del diseo estructural de una aplicacin. El uso de pautas de Diseo de Interfaces sobre sus formularios hace que el usuario pueda entender fcilmente la informacin presentada, mostrndosele claramente cmo puede y debe interactuar con la misma. Si esto se hace, aunque las pantallas no tengan un despliegue grfico grandilocuente, su aplicacin tendr un excelente aspecto para los usuarios. A continuacin se presentan los principios que rigen la composicin de elementos en el diseo de la ventana:
82

Diseo de interfaces Qu es el diseo de interfaces? El diseo de interfaces es una disciplina que estudia y trata de poner en prctica procesos orientados a construir la interfaz ms usable posible, dadas ciertas condiciones de entorno. El entorno dentro del cual se inscribe el diseo de una interfaz y la medida de su usabilidad, est dado por tres factores: 1. Una persona. 2. Una tarea. 3. Un contexto.

reas y profesiones relacionadas Factores Humanos y Ergonoma Se denomina Factores Humanos y Ergonoma al estudio de las caractersticas de los sentidos, percepcin, antropometra y accin de los seres humanos (ver Human Factors and Ergonomics Society, en los apndices de Asociaciones Profesionales). Esta disciplina relaciona la fisiologa con la percepcin, el procesamiento de esas percepciones y las acciones posibles. Algunos ejemplos: debido a la conformacin de los bastoncillos y conos de la retina humana, el azul es el color para el que el ojo tiene una menor sensibilidad; en una poblacin occidental existe un porcentaje documentado de personas, dependiente del segmento de edad, con problemas de visin por miopa o hipermetropa. Eso, sin contar con un casi 5% de discromatpticos con grados variables de severidad. Resultados prcticos de estos conocimientos: cuidado con el texto azul, especialmente en tipografas pequeas. Trate de evitarlo si sus usuarios son personas mayores de 35 aos.

83

Diseo Grfico El diseo grfico como actividad comunicacional, anclada y relacionada con una cierta cultura en un momento dado, es de importancia fundamental en el diseo de interfaces y en el arte de hacerlas ms usables. Los condicionamientos o convenciones culturales y la apreciacin esttica, junto con los factores humanos y la ergonoma, pueden potenciar o desalentar el uso y la venta de un sistema o herramienta. Interaccin y Ciencias Cognitivas Dentro del diseo de interfaces, las ciencias cognitivas juegan un papel preponderante y han sido desde el comienzo, uno de los pilares del rea. Las ciencias cognitivas estudian los procesos de la mente humana: cmo aprendemos, cmo recordamos, cmo procesamos la informacin y qu hacemos con ella. Es muy importante, cuando se analiza la relacin ente un usuario y una tarea, comprender cules son los procesos internos del usuario, sus modelos mentales, etc. Por ejemplo, existen tcnicas para mapear conocimientos y presentarlos de manera que al usuario su organizacin le parezca la natural. Un ejemplo claro de una aplicacin incorrecta del mapeo mental de un usuario: en los primeros tiempos de la web, las empresas organizaban sus sitios de acuerdo con su propia estructura interna. Los tests de usabilidad demostraron que este tipo de organizacin es completamente intil para el usuario que no forma parte de la compaa. Ergo, ahora se trata de ver cmo organizar la informacin segn los usuarios y no segn los preconceptos de la empresa. De hecho, existen tcnicas y actividades para mapear la percepcin de un grupo de personas acerca de un dominio dado de conocimientos. Ciencias de la Computacin Si bien interactuamos con todo lo que nos rodea a travs de interfaces, en esta ponencia, nos centramos bsicamente en las interfaces de sistemas informticos. Por lo tanto, las ciencias de la computacin estn ntimamente ligadas al diseo de interfaces en este contexto. No siempre estamos en el caso ideal de armar una interfaz sin limitaciones, por lo que muchas veces tenemos que alcanzar un equilibrio entre el ideal inexistente y lo menos-que-ideal pero alcanzable. En todos estos casos, el profesional responsable de la implementacin (de la programacin, ms especficamente) puede ayudarnos con una evaluacin certera del balance entre esfuerzo y valor para cada opcin.
84

Esto es vlido siempre que no estemos trabajando sobre una aplicacin crtica. En estos casos, no hay opciones vlidas que no sean las ptimas y el costo de la implementacin depende exclusivamente de los recursos que sean necesarios, sin lmites previos. El proceso de desarrollo de interfaces Diseo iterativo El diseo iterativo de interfaces es un proceso independiente de la/s tcnica/s utilizada/s para llevarlo a cabo. Actualmente, el proceso del desarrollo de una interfaz se concibe como un ciclo que consta de 4 etapas, en varios niveles: 1. 2. 3. 4. Diseo Implementacin Medicin Evaluacin

El resultado (o output) de cada etapa es la alimentacin (o input) de la que sigue, incluso el de la ltima. Los resultados de la etapa de evaluacin se toman para re-disear la interfaz, implementarla nuevamente, medir, y as sucesivamente. Debido a esa repeticin o auto-alimentacin se lo llama diseo iterativo. Es importante comprender que este ciclo no slo se cumple dentro del ciclo de vida de un producto, sino tambin entre productos y dentro de cada etapa misma. Mientras tengamos tiempo, trataremos de hacer tantos ciclos de mejoramiento como nos sea posible, hasta la fecha lmite. La siguiente versin, tomar al producto existente como su comienzo y otra vez comenzar el ciclo. El proceso de diseo y el equipo de desarrollo Adems de la recursividad, otra caracterstica del enfoque actual del diseo de interfaces es que involucra no slo a los especialistas en usabilidad o diseo, sino a todo el equipo de desarrollo. Quines constituyen el equipo de desarrollo? Todos aquellos que participen de alguna manera en desarrollo o comercializacin del sistema o herramienta: gente de marketing, comunicacin, documentacin, sistemas e informtica, diseo y usabilidad, packaging, etc.
85

Cada uno tiene conocimiento acerca de un rea especfica, y su participacin a lo largo del desarrollo aumenta las probabilidades de xito. Todos los equipos pueden tener discusiones acerca de la usabilidad de un sitio, o el uso de la aplicacin que estn haciendo. Muchas de esas discusiones no estn basadas en hechos u observaciones, sino en mitos que nos influyen sin que nos demos cuenta (ms sobre los mitos en los workshops). Nada mejor para terminar esas discusiones que un pequeo test de usabilidad: no slo elimina reuniones interminables y defensas acaloradas por opiniones personales, sino que tiene un poder de convencimiento y demostracin casi imposible de igualar. No hay nada tan claro como ver a un usuario tratando infructuosamente de usar ese software que creamos tan simple, para volver al laboratorio sin discusiones y aceptar que es necesario cambiar la versin actual. Las etapas y tareas del ciclo Diseo

Anlisis de requerimientos del producto. Anlisis de las tareas. Conocimiento del usuario. Generacin de posibles metforas y anlisis de tipo de dilogo. Revisin de posibilidades para la implementacin. Generacin de prototipos (profundos o amplios, para investigacin general o de ajustes). Desarrollo de la aplicacin, sitio o sistema. Planificacin (desarrollo del plan, definicin de las medidas, seleccin de participantes, formacin de observadores, preparacin de los materiales). Test (prueba piloto, tests con usuarios). Conclusin (anlisis de los datos, elaboracin del informe, resultados y recomendaciones). Comparacin contra estndares (internos y/o externos), versiones anteriores del mismo producto y productos competidores. Verificacin de las diferencias. Generacin de nuevas metas.

Implementacin

Medicin (Test de usabilidad)

Evaluacin

86

4.-Color El color debe ser considerado como una herramienta adicional en el diseo y no como una necesidad bsica. No hay que depender de colores para mostrar la informacin importante; si los colores no son correctamente percibidos, en caso de que el usuario tenga sistemas de poca resolucin o posea algn impedimento visual leve, la aplicacin debe continuar sindole usable. En el uso del color es conveniente aplicar: 1. El color es una forma de informacin secundaria: evite confiar en el color como nico medio de informar una condicin o valor. 2. Aplique conjunto limitado de colores: los colores apagados, sutiles y complementarios suelen ser los ms apropiados en el diseo de interfaces para aplicaciones de corte empresarial y acadmicas (Andragoga). En el caso de que la audiencia de los componentes instruccionales sea infantil, debe disearse la interfaz, como corresponde siempre, en funcin de sus intereses: edad, cultura, conocimientos, conductas previas, etc. En este caso particular, se recomiendan los colores primarios y clidos, sin tender a carnavalizar la interfaz, a menos que as lo requiera la intencionalidad del diseo instruccional del componente de software. 3. Uso de Paletas: el uso de paletas de combinacin de colores aplicables en los formularios brinda una apariencia de unificacin, consistencia y formalidad, lo que minimiza la posibilidad de crear distractores visuales. 5.-Disposicin de la ventana La localizacin de los componentes en la ventana determina la relacin entre estos, de all la importancia de la posicin que se le asigne. Esto se llama Layout en diseo de Interfaces. Un layout limpio es crucial para crear un flujo visual de informacin sin problemas para el usuario. En esta seccin se describen la ubicacin adecuada de los componentes y el espaciado recomendado por el Proyecto de Usabilidad de GNOME (Group GNOME, 2002). La mayora de los componentes analizados sern etiquetas, conos, botones de opcin, de chequeo, campos de texto y botones de comando. Cuadros de Dilogos Cuando un usuario revisa un cuadro de dilogo complejo, que contiene muchas etiquetas, cuadros de textos, botones varios, etc., esta Interface puede convertirse en algo engorroso. Cuando el layout es deficiente, en consecuencia, el
87

diseo visual tambin lo es. Fjese en el ejemplo siguiente: El cuadro de dilogo de la izquierda presenta las etiquetas sin alinear, al pasar la vista notar la dificultad de un escaneo o revisin rpida de la pantalla. 6.-Alineacin Debe proporcionarse una alineacin a los controles, de manera que se brinde al usuario un margen firme, un punto de ancla o eje que permita la lectura vertical en forma organizada y rpida. 1. Cuando los controles (cuadro de texto) tengan la misma longitud, se recomienda alineacin izquierda. 2. Si la mayora de un grupo de etiquetas difiere en longitud, se recomienda alineacin derecha, as como cuidar que el final del control no est ubicado demasiado lejos de su respectiva etiqueta. 3. No es recomendable el uso de marcos con bordes visibles para separar grupos de datos. Se sugiere usar espaciado y encabezados en negrita en su lugar. Esto es ms efectivo porque garantiza el menor nmero de lneas adicionales que distraeran al usuario del contenido principal de la ventana. Su uso se reserva a lo estrictamente necesario. 4. Se debe mantener la consistencia de los componentes de la ventana en trminos de alineacin y tamao. Esto es particularmente importante cuando se requiere agrupar muchos controles, para que la habilidad del usuario de escanear la informacin rpidamente no sea sacrificada. En consecuencia, se recomienda minimizar, tanto como sea posible, la necesidad de que los ojos del usuario tengan que dar saltos de un lado a otro cuando revisa el layout de la ventana. Especificaciones de Layout En la siguiente imagen se pueden verificar grficamente recomendaciones generales, que sern detalladas ms adelante: algunas

88

1. Deje un mnimo de 12- pxel 120 Twips entre el borde de la ventana y el control ms cercano. 2. Deje 12- pxel 120 Twips horizontales entre el control y su etiqueta (esta distancia puede ser mayor entre controles de un mismo grupo, dependiendo del tamao de la etiqueta). 3. Las etiquetas deben ser concisas y tener sentido, aun leyendo la ventana fuera de contexto. 4. Asigne teclas de acceso a todos los controles editables. 5. Asegrese de tener un orden adecuado de TAB ORDER de manera que, si se accede por teclado, el orden de los controles sea el correspondiente. 7.-Espaciado 1. Proporcione un espacio adecuado entre controles y grupo de controles, esto facilitar al usuario encontrar y organizar mentalmente la informacin. 2. Como regla bsica, se debe usar un espaciado mnimo de 12 pxels (o 120 Twips) horizontales entre etiquetas y controles asociados. Para espaciado vertical entre grupos de componentes, deben emplearse 18 pxels (o 440 Twips) aproximadamente. 3. Disee listas de seleccin de grupos pequeos. Aplique botones de opcin o de chequeo para menos de 8 valores. En caso de poseer mayor cantidad de valores, aplique men o listas deplegables. 4. Ubique los componentes de grupo a 12 pxels ( 120 Twips) de un rtulo para denotar jerarqua. 5. Minimice los puntos de alineacin en su ventana. Un punto de alineacin es una lnea imaginaria horizontal o vertical que atraviesa la ventana y que es reflejada por el borde de uno o ms controles dentro de la misma. 6. Estructure los componentes de la Interfaz de izquierda a derecha y de arriba hacia abajo, en orden de importancia. El primer elemento significativo debe ubicarse en la esquina superior izquierda y el menos significativo en la esquina inferior derecha. 7. Use espacios en blanco e identacin para delimitar grupos de informacin. De esta manera resulta ms claro y preferible a lneas grficas. 8. Sea consistente en cuanto a alineacin, espaciado y tamao de los componentes en toda su aplicacin. 9. No disee ventanas que sean 50% ms largas en una dimensin que en otra. 8.-Mens Mens de tipo ndice, mediante una lista de palabras o frases muy cortas que describen o indican lo que la opcin puede hacer. Se pueden utilizar tipos de letras, estilos y tamaos para hacer el men ms legible y ms estructurado. b. mens mediante pequeos iconos que describen las acciones que el programa ofrece en un momento determinado. Encontrar estos iconos no es tarea fcil en general. Los dibujos deberan indicar la accin que su seleccin desencadena. Los iconos de los mens son generalmente iconos del tipo "ndice". Mens anidados: Los mens se pueden presentar como mens de mens o mens anidados. Cada opcin del men abre otro men y la seleccin final se
89

hace en las hojas del rbol de mens. Este recorrido de un rbol de selecciones no debe ser muy profundo, mximo 3 niveles. Generalmente los submens se abren a la derecha ya hacia abajo. Cuando los mens encuentran el borde derecho e inferior de la ventana se deben abrir hacia arriba y a la izquierda.

Mens pull-down (emergentes): Este men se desenrolla hacia abajo al pisar la cabeza del men. Pase el Mouse.

Reglas para el diseo de mens No deben ser muy largos ni muy anidados. El estilo, tipo y tamao del texto debe ayudar a la presentacin del men. El men puede contener al lado de su texto la clave o tecla a pisar para una seleccin rpida desde el teclado, para usuarios expertos. El men no debe tapar los elementos presentes en la pantalla que son necesarios para tomar una decisin.

9.-Cuadros de texto, botones, tablas, etiquetas etctera


Cuadros de texto, botones, tablas, etiquetas etctera En la generacin de Interfaces Grficas de Usuario, se emplean distintos elementos de control, y para este caso se toma como referencia la coleccin de controles de Visual Basic. Cuadros de Texto TextBox Las aplicaciones utilizan el control TextBox para que los usuarios puedan escribir una cadena. El control TextBox puede enmascarar los datos correspondientes a
90

contraseas si el dispositivo del usuario admite esta funcionalidad. Un control TextBox debe colocarse en un control Form o Panel, o dentro de la plantilla de un control de una pgina Web de ASP.NET Mobile. Botones Botones de Comando CommanButton Los botones de comando suelen emplearse para iniciar un evento que lleva a cabo una accin, como cerrar un formulario, moverse a otro registr, imprimir un informe, etc. Utilice el control CommandGroup para crear un conjunto de botones de comando que pueden manipularse individualmente o como grupo. Utilice la propiedad Caption para especificar el texto que aparece en un botn de comando. Utilice la propiedad Picture para especificar una imagen para un botn de comando. Puede elegir un botn de comando al hacer clic en l y si est establecida la propiedad Default en el valor verdadero (.T.), al presionar la tecla ENTRAR cuando est seleccionado el botn de comando. Si la propiedad Cancel del botn de comando se establece en el valor verdadero (.T.), puede elegir el botn de comando al presionar la tecla ESC. Botones de Opcin RadioButton, OptionButton El control OptionButton de Visual Basic 6.0 se ha reemplazado por el control RadioButton de formularios Windows Forms Tema III Interfaces Grficas. Pgina 8 en Visual Basic 2005. Los nombres de algunas propiedades, mtodos, eventos y constantes son diferentes y, en algunos casos, existen diferencias de comportamiento. Diferencias conceptuales En Visual Basic 6.0, el evento Click del control OptionButton slo se produca cuando su propiedad Value se cambiaba a True. En Visual Basic 2005, el evento CheckedChanged del control RadioButton se produce cada vez que el valor de la propiedad Checked cambia a True o False. Casillas de Verificacin CheckBox El control CheckBox de los formularios Windows Forms indica si una condicin determinada est activada o desactivada. Se utiliza habitualmente para presentar al usuario una seleccin de tipo S/No o Verdadero/Falso. Puede utilizar grupos de casillas de verificacin para mostrar mltiples opciones entre las cuales el usuario puede elegir una o ms. Es similar al control RadioButton aunque en este caso puede seleccionarse cualquier nmero de controles CheckBox agrupados.

91

Tablas DataGridView El control DataGridView proporciona una forma eficaz y flexible de mostrar datos en formato de tabla. Puede utilizar el control DataGridView para mostrar vistas de slo lectura de una cantidad pequea de datos o puede ajustar su tamao para mostrar vistas modificables de conjuntos muy grandes de datos. Puede ampliar el control DataGridView de varias maneras para crear comportamientos personalizados en las aplicaciones. Por ejemplo, puede especificar mediante programacin sus propios algoritmos de ordenacin y crear sus propios tipos de celdas. Puede personalizar con facilidad la apariencia del control DataGridView seleccionando entre varias propiedades. Se pueden utilizar muchos tipos de almacenes de datos como origen de datos o el control DataGridView puede operar sin tener ningn origen de datos enlazado. Etiquetas Label Un control Label es un control grfico que muestra texto que no puede cambiarse directamente. Sin embargo, puesto que un control Label tiene un amplio conjunto de propiedades, eventos y mtodos en comn con otros controles, puede responder a eventos y cambiarse dinmicamente en tiempo de ejecucin. Para asignar una tecla de acceso a una etiqueta, incluya una barra inversa y un signo menor que (\<) en el ttulo justo delante del carcter que desee designar como tecla de acceso. Cuando se muestre la etiqueta, este carcter aparecer subrayado. Al presionar la tecla de acceso de una etiqueta se activa el siguiente control en el orden de tabulacin. Utilice la propiedad TabIndex para asignar un orden de tabulacin a una etiqueta. Cuadros de Lista ListBox El control ListBox permite a los usuarios seleccionar uno o varios elementos de una lista predefinida. Se diferencia de un control DropDownList en que puede mostrar varios elementos a la vez y, de manera opcional, permite que el usuario pueda seleccionar varios elementos. Cuadros Combinados ComboBox Cuando se selecciona un control ComboBox, se abre y muestra una lista de elementos en la que se puede elegir uno. Un control ComboText combina las caractersticas de un control TextBox y un control ListBox. Se puede escribir la informacin en la parte del cuadro de texto o seleccionar un elemento en la parte de cuadro de lista del control. Para deshabilitar un elemento de un cuadro combinado, inserte al principio de la expresin una sola barra diagonal inversa ("\"). A causa de esta funcionalidad, las barras invertidas se tratan de forma diferente para este control. Por cada barra diagonal inversa que necesite mostrar en el texto, deber insertar dos. Por
92

ejemplo, el cdigo siguiente contiene un elemento de cuadro combinado que incluye una ruta UNC.

Bibliografa http://www.ucv.ve/fileadmin/user_upload/sadpro/Documentos/docencia_vol4_n2_2 003/7_Art.4_Gregoria_Romero.pdf http://www.virtual.unal.edu.co/cursos/sedes/manizales/4060030/lecciones/Capitulo %205/gui.htm http://es.scribd.com/doc/93497223/Prog-de-Interf-Tema-III

93

IV. INTERFACES A BASES DE DATOS 1.-Utilizando Java

Introduccin a los Drivers JDBC


Una inspeccin casual del API JDBC muestra rpidamente la dominacin de los interfaces dentro del API, lo que podra llevar al usuario a preguntarse dnde se realiza el trabajo. Realmente esta es slo una aproximacin que tocan los desarrolladores JDBC porque la implementacin real es la proporcionada por los vendedores de Drivers JDBC, que a su vez proporcionan las clases que implementan los interfaces necesarios. Esta aproximacin presenta la competicin que proporciona al consumidor ms opciones, y para la mayor parte, produce mejor software. Con todos los drivers disponibles. elegir uno puede ser dficil. Aforturnadamente, Sun Microsystems mantiene una base de datos con ms de 150 drivers JDBC de una amplia variedad de vendedores. Esta debera ser la primera parada despus de seleccionar una base de datos. Desde una perspectiva de programacin, hay dos clases principales respnsables para el establecimiento de una conexin con una base de datos. La primera clase es DriverManager, que es una de las clases que realmente proprociona el API JDBC. DriverManager es responsable de manejar un almacen de drivers registrados, esencialmente abstrayendo los detalles del uso de un driver para que el programador no tenga que tratar con ellos directamente. La segunda clase es la clase real del Driver JDBC. Estas son proporcionadas por vendedores independientes. La clase Driver JDBC es la responsable de establecer la conexin con la base de datos y de manejar todas las comunicaciones con la base de datos. Los drivers JDBC vienen en cuatro tipos diferentes

Registrar un Driver JDBC


El primer paso en el proceso de crear una conexin entre una aplicacin Java y una base de datos es el registro de un driver JDBC con la Mquina Virtual Java (JVM) en la que se est ejecutando la aplicacin Java. En el mecanimso de conexin tradicional (en oposicin al mecanismo de conexin del DataSource) la conexin y todas las comunicacin con la base de datos son controladas por un objeto DriverManager. Para establecer una conexin, se debe registrar un driver JDBC adecuado para la base de datos objetivo con el objeto DriverManager. La especificacin JDBC, dice que se supone que los dirvers JDBC se registran automticamente a s mismos con el objeto DriverManager cuando se cargan en la JVM. Por ejemplo, el siguiente fragmento de cdigo usa un inicializador esttico para primero crear un ejemplar del driver JDBC persistentjava y luego resgistrarlo con el DriverManager:
static { java.sql.DriverManager.registerDriver(new com.persistentjava.JdbcDriver()) ; }

Registrar un driver es tan simple como cargar la clase del driver en la JVM, lo que puede hacerse de muchas maneras. Una forma es con el ClassLoader Class.forName(com.persistentjava.JdbcDriver). Otro mtodo, que no es tan bien conocido, usa la propidad del sistema jdbc.drivers. Este mtodo se puede usar de tres formas distintas: Desde la lnea de comandos:
java -Djdbc.drivers=com.persistentjava.JdbcDriver Connect

Dentro de la palicacin Java:


94

System.setProperty("jdbc.drivers","com.persistentjava.JdbcDriver") ;

Seleccionando la propiedad jdbc.drivers en el fichero de propiedades del sistema, que generalmente depende del sistema. Separando los drivers con una coma, se pueden registrar varios drivers usando la tcnica de la propiedad del sistema mostrada arriba. Uno de los beneficios de usar la tcnica de la propiedad del sistema es que se los drivers se pueden intercambiar fcilmente sin modificar ningn cdigo (o al menos con unos mnimos cambios). Si se registran varios drivers, su orden de precedencia es: Drivers JDBC registrados por la propiedad jdbc.drivers en la inicializacin de la JVM, y Drivers JDBC cargados dinmicamente. Como la propiedad jdbc.drivers slo se chequea una vez durante la primera invocacin del mtodo DriverManager(), es importante asegurarse de que todos los drivers estn registrados correctamente antes de establecer la conexin con la base de datos. Sin embargo, no todas las JVM estn creadas igual, y algunas de ellas no siguen la especificacin JVM. Como resultado, los inicializadores estticos no siempre funcionan como hemos dibujado. Esto resulta en mltiples formas de registrar un driver JDBC, incluyendo: Class.forName("com.persistentjava.JdbcDriver").newInstance(); DriverManager.registerDriver(new com.persistentjava.JdbcDriver()) ; Estas alternativas deberan funcionar bien en todas las JVMs, por eso deberamos sentirnos agusto usndolas a lo largo del amplio conjunto de JVM disponibles. Un problema final es que Class.forname() puede lanzar una ClassNotFoundException, por eso debemos envolver el cdigo de registro en un manejador de excepcin apropiado.

URLs de Drivers JDBC


Una vez que un Driver JDBC se ha registrado con el DriverManager, puede usarse para establecer una conexin a una base de datos. Pero cmo selecciona DriverManager el driver correcto, dado que puede haber realmente rigstrados cualquier nmero de drivers? (Recuerda, una sla JVM podra soportar mltiples aplicaciones concurrentes, que podran conectarse con diferentes bases de datos con diferentes drivers). La tcnica es bastante simple: cada driver JDBC usa una URL JDBC especfica (que tiene el mismo formato que una direccin Web) como un significado de auto-identificacin. El formato de la URL es correcto y probablemente parece familiar: jdbc:sub-protocol:database locator. El subprotocol es especfico del driver JDBC y puede ser odbc, oracle, db2, etc., dependiendo del vendedor del driver real. El localizador de la base de datos es un indicador especfico del driver para especficar de forma nica la base de datos con la que una aplicacin quiere interactar. Dependiendo del tipo de driver, este localizador incluye un nombre de host, un puerto, y un nombre de sistema de base de datos. Cuando se presenta con una URL especfica, el DriverManager itera sobre la coleccin de drivers registrados hasta que uno de ellos reconoce la URL especficada. Si no se encuentra ningn driver adecuado, se lanza una SQLException. La siguiente lista presenta varios ejemplos especficos de URLs JDBC reales: jdbc:odbc:jdbc
jdbc:oracle:thin:@persistentjava.com:1521:jdbc";

jdbc:db2:jdbc
95

Muchos drivers, incluyendo el driver puente JDBC-ODBC, acepta parmetros adicionales al final de la URL como un nombre de usuario y una password. El mtodo para obtener una conexin a una base de datos, dando una URL JDBC especfica, es llamar a getConnection() sobre el objeto DriverManager. Este mtodo tiene varias formas: DriverManager.getConnection(url) ; DriverManager.getConnection(url, username, password) ; DriverManager.getConnection(url, dbproperties) ; Aqu url es un objeto String que es la URL JDBC, username y password son objetos String que representan el nombre de usuario y la password que la aplicacin JDBC debera usar para conectar con la fuente de datos; y dbproperties es un objeto Properties de Java que encapsula todos los parmetros (posiblemente incluyendo nombre de usuario y la password) que requiere un driver JDBC para hacer una conexin con xito. Ahora que tenemos el driver bsico en la mano, podemos examinar los tipos de drivers individuales con ms detalle:

96

Drivers del Tipo 1

Los drivers del tipo uno tienen algo en comn: todos usan el puente JDBC-ODBC, que est incluido como parte estndard del JDK. Los drivers del tipo uno son diferentes al driver ODBC (Open DataBase Connectivity) adjunto al puente JDBC-ODBC. Para conectar con una fuente de datos diferente, simplemente tenemos que registrar (o unir efectivamente) una fuente de datos ODBC diferente, usando el Administrador ODBC, al nombre de la fuente de datos apropiada. Como ODBC se ha estado utilizando desde hace bastante tiempo (ms que el lenguaje Java), los drivers ODBC son ubicuos. Esto hace de este tipo de drivers una buena eleccin para aprender cmo conectar programas Java a bases de datos. De hecho, incluso hay drivers ODBC que nos permiten asignar fuentes de datos ODBC a una aplicacin Microsoft Excel o ficheros de texto plano. Sin embargo, el nivel extra de indireccin, puede resultar en una prdida de rendimiento ya que el JDBC es transferido dentro de ODBC, que luego es transferido en el protocolo especfico de la base de datos. Otro problema potencial de los drivers del tipo uno es su utilizacin en aplicaciones distribuidas. Como el propio puente no soporta comunicacin distribuida, la nica forma de que los drivers del tipo uno puedan trabajar a travs de la red es si el propio driver ODBC soporta interaccin remota. Para drivers ODBC sencillos, esta no es una opcin, y mientras que las grandes bases de datos tienen drivers ODBC que pueden trabajar de forma remota, no pueden competir con el mejor rendimiento de los drivers JDBC puro Java.

97

Codificacin para Drivers del Tipo 1 El nombre de clase para el driver puente JDBC-ODBC es sun.jdbc.odbc.JdbcOdbcDriver y al URL JDBC toma la forma jdbc:odbc:dsn, donde dsn es el Data Source Name (nombre de la fuente de datos) usado para registrar la base de datos con el Administrador ADBC. Por ejemplo, si una base de datos se registra con una fuente de datos ODBC llamada jdbc; un nombre de usuario de java y una password de sun, se puede usar el siguiente fragmento de cdigo para establecer una conexin. Nota: En inters de la claridad y la brevedad, se ha eliminado del listado el chequeo y manejo de errores. Posteriores ejemplos, demostrarn la importancia de estos mecanismos (especficamente, la captura de errores encadenando sentencias SQLException). String url = "jdbc:odbc:jdbc" ; Connection con ; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ; } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: ") ; System.err.println(e.getMessage()) ; return ; } try { con = DriverManager.getConnection(url, "java", "sun"); } catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } finally { try{ con.close ; } catch(SQLException ex) { System.err.println(SQLException: " + ex.getMessage()) ; } }

98

Drivers del Tipo 2

Los drivers del tipo dos tambin son conocidos como drivers Java parciales, porque traducen directamente el API JDBC en un API especfico de la base de datos. La aplicacin cliente de base de datos (para el propstio de este tutorial, el host que est ejecutando la JVM) debe tener las libreras cliente apropiadas para la base de datos, que podran incluir cdigo binario instalado y posiblemente ejecutndose. Para una aplicacin distribuida, este requerimietno puede introducir problemas extra con las licencias, as como posibles pesadillas con los problemas de distribucin de cdigo. Por ejemplo, usar un modelo del tipo dos restringe a los desarrolladores a utilizar plataformas y sistemas operativos soportados por la librera cliente de la base de datos. Sin embargo, este modelo puede funcionar eficientemente, cuando la base cliente est fuertemente controlada.. Esto ocurre tpicamente en LANs corporativas. Un ejemplo de driver del tipo dos es el driver de aplicacin JDBC para DB2. El siguiente ejemplo demuestra cmo establecer una conexin usando un driver DB2: String url = "jdbc:db2:jdbc" ; try { Class.forName("COM.ibm.db2.jdbc.app.DB2Driver") ; } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: ") ; System.err.println(e.getMessage()) ; return ; } ... Observa la similitud que tiene este fragmento de cdigo con el del ejemplo 1. Esta es la principal caracterstica del modelo del tipo 2: la curva de aprendizaje para un programador que se mueve de un modelo a otro es prcticamente inexistente.
99

Los dos ltimos tipos de drivers son drivers puro Java. El beneficio de los drivers puro Java es su fcil despliegue en entonos altamente distribuidos.
Drivers del Tipo 3

Los drivers del tipo tres son drivers puro Java que transforman el API JDBC en un protocolo independiente de la base de datos. El driver JDBC no comunica directamente con la base de datos; comunica con un servidor de capa media, que a su vez comunica con la base de datos. Este nivel extra de indireccin proporciona flexibilidad en que se puede acceder a diferentes bases de datos desde el mismo cdigo porque el servidor de la capa media oculta las especificidades a la aplicacin Java. Para cambiar a una base de datos diferente, slo necesitamos cambiar los parmetros en el servidor de la capa media. (Un punto a observar: el formato de la base de datos a la que estamos accediendo debe ser soportado por el servidor de la capa media). El lado negativo de los drivers del tipo tres es que el nivel extra de indireccin puede perjudicar el rendimiento general del sistema. Por otro lado, si una aplicacin necesita interactar con una variedad de formatos de bases de datos, un driver del tipo tres en una aproximacin adecuada debido al hecho de que se usa el mismo driver JDBC sin importar la base de datos subyacente. Adems, como el servidor de la capa media se puede instalar sobre una plataforma hardware especfica, se pueden realizar ciertas optimizaciones para capitalizar los resultados perfilados.

100

Drivers del Tipo 4

Los drivers del tipo cuatro son drivers puro Java que se comunican directamente con la base de datos. Muchos programadores consideran ste el mejor tipo de driver, ya que normalmente proporciona un rendimiento ptimo y permite al desarrollador utilizar las funcionalidades especficas de la base de datos. Por supuesto este acoplamiento puede reducir la flexibilidad, especialmente si necesitamos cambiar la base de datos subyacente en una aplicacin. Este tipo de driver se usa frecuentemente en applets y otras aplicaciones altamente distribuidas. El siguiente fragmento de cdigo muestra cmo usar un driver DB2 del tipo cuatro: String url = "jdbc:db2://persistentjava.com:50000/jdbc" ; try { Class.forName("COM.ibm.db2.jdbc.net.DB2Driver") ; } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: ") ; System.err.println(e.getMessage()) ; return ;
}

...

101

Un Ejemplo Completo de Driver del Tipo 4 El siguiente ejemplo muestra cmo usar un driver JDBC de un vendedor de terceras partes, en este caso Merant, para conectar con una base de datos DB2. DB2 UDB requiere informacin adicional, no estndard para establecer la conexin a la base de datos, que en este ejemplo estn aadidos a la URL JDBC como parmetros opcionales.
package com.persistentjava; import java.sql.*; public class ConnectMerantDB2 { static { try { Class.forName("com.merant.datadirect.jdbc.db2.DB2Driver").newInstance(); } catch (Exception e) { System.out.println(e); } } public static void main(String args[]) { String url = "jdbc:merant:db2://persistentjava.com:50000;" ; url += "DatabaseName=jdbc;CollectionId=DEFAULT;" ; url += "PackageName=JDBCPKG;CreateDefaultPackage=TRUE"; Connection con; System.out.println("Connecting"); try { con = DriverManager.getConnection(url, "java", "sun"); System.out.println("Connection Established"); con.close(); // In this example, the proper handling of SQLExceptions is // demonstrated as they can be potentially chained. } catch (SQLException e) { System.out.println("\nERROR:----- SQLException -----\n"); while (e != null) { System.out.println("Message: " + e.getMessage()); System.out.println("SQLState: " + e.getSQLState()); System.out.println("ErrorCode: " + e.getErrorCode()); e.printStackTrace(); e = e.getNextException(); } } } }

102

Transaciones con Bases de Datos

Transaciones Bsicas
Uno concepto que causa problemas a los principiantes en el mundo del desarrollo de aplicaciones de base de datos es la idea de transaciones. Fundamentalmente, una transacin representa una unidad de trabajo lgica. Como la principal responsabilidad de una base de datos es preservar la informacin, necesita tener algo que le indique a un usuario que se debe salvar el estado actual del programa. De igual forma, cuando las cosas han ido mal, necesita una forma para indicar que una base de datos deberia ignorar el estado actual y volver a atrs, al estado del programa salvado anteriormente. En el idioma de las bases de datos, estas funciones se llaman entregar una transacin y deshacer una transacin, respectivamente. Para realizar estas tareas, el API JDBC incluye dos mtodos como parte del interface Connection. Dando un objeto Connection llamado con, el estado del programa se graba llamando a con.commit(), para volver al estado salvado anteriormente, con.rollback(). Estos dos mtodos pueden lanzar SQLExceptions si algo va mal cuando la base de datos realice realmente la operacin, por eso necesitamos envolverlos en bloques try ... catch.

Ms sobre Transaciones
En un entorno mono-usuairo, las transaciones son bastantes sencillas de entender -simplemente implican salvar o deshacer el estado de una aplicacin. Sin embargo, en modo multi-usuario, las transaciones son ms complejas. La demostracin clsica de una transacin multi-usuario es una cuenta bancaria donde una aplicacin est intentando hacer un cargo mientras otra aplicacin est intentando hacer un depsito en la misma cuenta. Si estas familiarizado con la programacin concurrente (tambin conocida como programacin multi-thread), probablemente hayas visto este problema antes. El problema fundamental es que a menos que las dos transaciones estn aisladas la una de la otra, una aplicacin podra interrumpir a la otra resultando en un estado del programa incorrecto. En nuestra sencilla demostracin, esto podra significar una cuenta con un saldo errneo, algo que no es precisamente bueno para retener clientes. Pueden aparecer tres problemas comunes cuando tratamos con varios usuarios que acceden a los mismos datos: Lecturas sucias. Un lectura sucia ocurre cuando una aplicacin usa datos que han sido modificados por otra aplicacin, y esos datos estn en un estado sin entregar. La segunda aplicacin entonces solicita que los datos que fueron modificados sean desechos. Entonces los datos de la primera transacin estn corruptos o "sucios". Lecturas no-repetibles. Una lectura no-repetible ocurre cuando una transacin obtiene datos, que posteriormente son alterados por una transacin separada, y la primera transacin re-lee los datos ahora alterados. As, la primera transacin hizo una lectura norepetible. Lecturas fantasmas. Una lectura fantasma ocurre cuando una transacin adquiere datos mediante alguna consulta, otra transacin modifica algunos de los datos, y la transacin original recupera los datos una segunda vez. La primera transacin ahora tendr un conjunto de resultados diferentes, que podran contener datos fantasmas. Niveles de Transacin Para resolver los problemas asociados a mltiples threads solicitando los mismos datos, las transaciones estn aisladas unas de otras por bloqueos. La mayora de las bases de datos
103

soportan diferentes tipos de bloqueo; por lo tanto, el API JDBC soporta diferentes tipos de transaciones, que son asignadas o determinadas por el objeto Connection. En el API JDBC tiene disponibles los siguientes niveles de transaciones: TRANSACTION_NONE indica que las transaciones no estn soportadas. TRANSACTION_READ_UNCOMMITTED indica que una transacin puede ver los cambios de otra transacin antes de ser entregada. As estn permitidas las lecturas sucias, las lecturas no-repetibles, y las lecturas fantasmas. TRANSACTION_READ_COMMITTED indica que la lectura de datos no entregados, no est permitida. Este nivel todava permite que ocurran las lecturas no-repetibles y las lecturas fantasmas. TRANSACTION_REPEATABLE_READ indica que una transacin est garantizada que pueda re-leer el mismo dato sin fallar, pero las lecturas fantasmas todava pueden ocurrir. TRANSACTION_SERIALIZABLE es la transacin de ms alto nivel y evita que ocurran las lecturas sucias, las lecturas no-repetibles y las lecturas fantasmas. Podramos preguntarnos porqu todas las transaciones no operan en modo TRANSACTION_SERIALIZABLE para garantizar el grado ms alto de integridad de datos. El problema es, de forma similar a los problemas implicados con el manejo de la programacin de mltiples threads, que cuanto ms sea el nivel de proteccin de transacin, ms alta ser la prdida de rendimiento. Dando un objeto Connection podemos seleccionar explcitamente el nivel de transacin, asumiendo que nuestra base de datos y nuestro driver JDBC soporten esta caracterstica:
con.setTransactionLevel(TRANSACTION_SERIALIZABLE) ;

Tambin podemos determinar el nivel de transacin actual: if(con.getTransactionLevel() == TRANSACTION_SERIALIZABLE) System.out.println("Highest Transaction Level operation.") ;
Lotes y Transaciones

in

Por defecto, los drivers JDBC operan en lo que se llama modo autoentrega. En este modo, todos los comandos enviados a la base de datos operan en su propia transacin. Aunque esto puede ser til para los principiantes, implica una prdida de rendimiento porque las transaciones requieren una cierta cantidad de sobrecarga para configurar todo apropiadamente. Si queremos poder controlar explcitamente las entregas y los retrocesos (deshacer la transacin), necesitamos desactivar el modo autocommit:
con.setAutoCommit(false) ;

Tambin podemos determinar rpidamente el modo autocommit de un objeto Connection dado: if(con.getAutoCommit() == true) System.out.println("Auto Commit mode"); Muchas bases de datos soportan lotes, en los que se minimiza la sobrecarga de transaciones realizando mltiples operaciones update de la base de datos en una sla operacin, o lote. Las operaciones por lotes fueron introducidas en JDBC 2.0 y requieren que una transacin no est en modo autocommit. En el siguiente ejemplo tenemos una operacin por lotes, que asume que existe una Connection a una base de datos que tiene una sola tabla:
con.setAutoCommit(false) ; Statement stmt = connection.createStatement() ; stmt.addBatch("INSERT INTO people VALUES('Joe Jackson', 0.325, 25, 105) ; stmt.addBatch("INSERT INTO people VALUES('Jim Jackson', 0.349, 18, 99) ; stmt.addBatch("INSERT INTO people VALUES('Jack Jackson', 0.295, 15, 84) ; int[] updateCounts = stmt.executeBatch() ; con.commit() ;
104

Observa que el mtodo executeBatch() devuelve un array de cuentas actualizadas, una por cada operacin del lote. Un ltimo problema con las operaciones por lotes es que pueden lanzar una nueva excepcin del tipo BatchUpdateException, lo que indica que fall al menos uno de los comandos del lote. Por eso, necesitamos aadir un manejador de excepciones correspondiente a nuestras operaciones por lotes. Control Fino de las Transaciones Empezando con el API JDBC 3.0, se aadi un nuevo elemento interface relacionado con las transaciones. Este interface presenta el concepto de savepoints. Los Savepoints proporcionan un marca dentro de una aplicacin de base de datos que puede usarse como un argumento cuando se llama al mtodo rollback. Como resultado, usando el API JDBC 3.0, ahora es posible seleccionar un savepoint antes de empezar una interaccin complicada con la base de datos y, dependiendo del resultado, entregar la transacin completa o deshacer hasta el savepoint y devolver la aplicacin a un punto conocido.

105

Para seleccionar un punto de salvado, creamos un objeto Savepoint desde el objeto Connection, como se ve aqu:
Savepoint svpt = con.setSavepoint("Savepoint") ;

Para deshacer hasta un Savepoint dado, simplemente le pasamos el objeto Savepoint deseado al mtodo rollback:
con.rollback(svpt) ;

Cuando no se necesitan ms, liberamos todos los objetos Savepoint para liberar los caros recursos de la base de datos para otros usuarios:
con.releaseSavepoint(svpt) ;

Observa que cuando entregamos o deshacemos una transacin, cualquier Savepoints creado podra convertirse en invlido dependiendo del orden exacto y del tipo de operacin. Puedes ver la especificacin del API JDBC 3.0 o el manual de tu driver para ms informacin.

106

Fuentes de Datos

Fuentes de Datos Bsicas


Uno de los principales benficios de usar el API JDBC es facilitar una programacin independiente de la base de datos, as la mayora de las aplicaciones JDBC pueden transferirse fcilmente a otra base de datos diferente. Sin embargo, todava hay dos tems que permacenen unidos a una base de datos particular, la clase JDBC Driver y la URL JDBC. Con la introducin de las fuentes de datos en el API JDBC 2.0, se eliminaron incluso estas dependencias. Esencialmente un objeto DataSource representa una fuente de datos particular en una aplicacin Java. Adems de encapsular la informacin especfica de la base de datos y del driver JDBC en un slo objeto estndarizado, las fuentes de datos pueden actuar como una factora de Connection y proporcionar mtodos para seleccionar y obtener propiedades particulares que requiere el objeto DataSource para una operacin satisfactoria. Algunas propiedades estndar que podra requerir un objeto DataSource incluyen: databaseName serverName portNumber userName password Un beneficio adicional de usar una DataSource, que podras haber adivinado de la lista anterior, es que la informacin sensible relacionada con la seguridad como el nombre de usuario, la password, e incluso el servidor de la base de datos estn cdificados slo en un lugar, lo que puede hacer un administrador de sistemas. Mientras que la interaccin con un objeto DataSource se puede hacer con una aplicacin grfica, es instructivo ver como trabajan realmente los ejemplos. Aunque los conceptos de un objeto DataSource son bastantes simples, para usarlo dentro de una aplicacin Java, un objeto DataSource es referenciado usando Java Naming and Directory Interface, o JNDI. Antes de saltar dentro del cdigo de ejemplo de DataSource, el siguiente punto presenta conceptos relevantes de JNDI que son necesarios para usar apropiadamente un objeto DataSource.

Repaso Rpido de JNDI


JNDI es un API Java que encapsula el concepto de servidores de nombres y directorios de la misma forma que JDBC encapsula los conceptos que hay detrs de la comunicacin con una base de datos. Aunque podra parecer confuso, es bastante sencillo -- todos lo usuarios de ordenadores usan servicios de nombres y directorios todos los das. Por ejempo, los discos duros trabajan con pistas y sectores, aunque un usuario slo se preocupa de nombres de ficheros y directorios. El sistema de ficheros maneja el servicio de nombrado que asocia un nombre de fichero dado con una localizacin especfica en el disco duro. Otro ejemplo es la Web, donde la mayora de los usuarios slo se preocupan del nombre de la Web site, como www.persistentjava.com, y no de la direccin IP subyacente. Sin embargo, la comunicacin TCP/IP se hace usando la direccin IP y no usando el nombre que leemos los humanos. La transformacin entre las dos representaciones la realiza el DNS, o Domain Name System. Aunque JDNI proporciona un API mplio y til por s mismo, nuestras necesidades son considerablemente simples. En breve, necesitamos conocer como hacer cuatro cosas: Crear un nombre y unirlo a un objeto Java.
107

Buscar un nombre para recuperar un objeto Java. Borrar un nombre. Re-unir un nombre a nuevo objeto Java. En vez de proporcionar ejemplos JNDI imaginarios para las tareas anteriores, las siguientes secciones muestran ejemplos de estas tareas usando fuentes de datos JDBC. Todos estos ejemplos usan el proveedor de sistema de ficheros, que es una descarga separada.

108

Registrar una Fuente de Datos Este ejemplo es una implementacin de un DataSource de tereceras partes de i-net software para conectar con una base de datos MS SQL Server. Los comentarios en el cdigo marcan los puntos importantes de registro (o inicialziacin) de una fuente de datos JDBC:
// We need to import the actual DataSource implementation import com.inet.tds.TdsDataSource; import java.util.Hashtable; import javax.naming.*; import javax.naming.directory.*; import java.sql.* ; import javax.sql.* ; public class InitializeJNDI { // First we define the relevant parameters for this datasource private String serverName = "persistentjava.com"; private int portNumber = 1433; private String login = "java"; private String password = "sun"; private String databaseName = "jdbc"; // This is the name we will assign to our datasource. Because we are // using the file system provider, our name follows the file system // naming rules. The JNDI reserved subcontext for JDBC applications is // jdbc, thus our name starts appropriately. private String filePath = "jdbc/pjtutorial"; public InitializeJNDI() { // To pass in the necessary parameters, we need to create and then // populate a Hashtable. Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory"); try { // Create the initial context Context ctx = new InitialContext(env); // Here we create the actual DataSource and then set the relevant // parameters. TdsDataSource ds = new TdsDataSource(); ds.setServerName(serverName); ds.setPortNumber(portNumber); ds.setDatabaseName(databaseName); ds.setUser(login); ds.setPassword(password); ds.setDescription("JDBC DataSource Connection"); // Now we bind the DataSource object to the name we selected earlier. ctx.bind(filePath, ds); ctx.close(); // Generic Exception handler, in practice, this would be replaced by an // appropriate Exception handling hierarchy. } catch (Exception ex) { System.err.println("ERROR: " + ex.getMessage()); } } public static void main(String args[]) { new InitializeJNDI(); } }

109

Usar una Fuente de Datos El ejemplo anterior establece la relacin de unin entre el objeto DataSource y un nombre particular. La mgia de JNDI realmente la realiza el proveedor de servicio apropiado. En nuestro caso, usamos el proveedor del sistema de ficheros. Existen otras opciones, incluyendo LDAP (Lightweight Directory Access Protocol) o incluso un DNS. Para hacer realmente una conexin, necesitamos buscar el objeto DataSource usando el nombre al que fue unido. Observa en el siguiente ejemplo que no hay ningn cdigo especfico de base de datos en ningn lugar:
import java.util.Hashtable ; import javax.naming.* ; import java.sql.* ; import javax.sql.* ; public class UtilizeJNDI { public UtilizeJNDI(){ try { // We need to set up the JNDI context so that we can properly interface // to the correct service provider, in this case the file system. Hashtable env = new Hashtable() ; env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory") ; Context ctx = new InitialContext(env) ; // Given the JNDI Context, we lookup the object and are returned // our DataSource DataSource ds = (DataSource)ctx.lookup("jdbc/pjtutorial") ; // Now we get a database connection and proceed to do our job. Connection con = ds.getConnection() ; System.out.println("Connection Established.") ; con.close(); // Note that proper error handling is not included here in order to keep // the example short. }catch(Exception e ) { e.printStackTrace(); } } public static void main (String args[]){ new UtilizeJNDI() ; } }

110

Re-Unir una Fuente de Datos


Cuando queremos cambiar la base de datos particular o incluso el vendedor del DataSource JDBC con el que queremos que comunique nuestro cdigo, todo lo que necesitamos hacer es re-unir un nuevo DataSource al nombre original. En este ejemplo, usamos el mismo driver, pero cambiamos varios parmetros relevantes:
// We need to import the actual DataSource import com.inet.tds.TdsDataSource; import java.util.Hashtable; import javax.naming.*; import javax.naming.directory.*; import java.sql.* ; import javax.sql.* ; public class InitializeJNDI { // First we define the relevant parameters for this datasource private String serverName = "persistentjava.com"; private int portNumber = 1434; // Note the new port number private String login = "sun"; // New username/password combination private String password = "java"; private String databaseName = "ds"; // And even a new database name. // We keep the same name for our datasource, just bind a new DataSource // to it. private String filePath = "jdbc/pjtutorial"; public InitializeJNDI() { // Establish the proper JNDI Context Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory"); try { // Create the context Context ctx = new InitialContext(env); TdsDataSource ds = new TdsDataSource(); ds.setServerName(serverName); ds.setPortNumber(portNumber); ds.setDatabaseName(databaseName); ds.setUser(login); ds.setPassword(password); ds.setDescription("JDBC DataSource Connection, take two"); // Now we just call the rebind method with the new DataSource. ctx.rebind(filePath, ds); ctx.close(); // Replace this with real Exception handlers in production code. } catch (Exception ex) { System.err.println("ERROR: " + ex.getMessage()); } } public static void main(String args[]) { new InitializeJNDI(); } }

111

Borrar una Fuente de Datos Algunas veces, querremos borrar un nombre de DataSource para que no pueda volver a ser usado:
import java.util.Hashtable ; import javax.naming.* ; import java.sql.* ; import javax.sql.* ; public class DeleteJNDI { public DeleteJNDI() { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory"); try { Context ctx = new InitialContext(env); // unbinding the name object association effectively deletes the object. ctx.unbind("jdbc/pjtutorial") ; ctx.close() ; }catch (Exception ex) { System.err.println("ERROR: " + ex.getMessage()) ; } } public static void main (String args[]){ new DeleteJNDI() ; } }

112

Almacenes de Conexiones Por qu necesitamos Almacenes de Conexiones Cuando usamos el DriverManager o el mtodo DataSource para obtener conexiones a bases de datos, cada solicitud para una nueva conexin implica una sobrecarga significante. Esto puede impactar en el rendimiento si la obtencin de nuevas conexiones ocurre con cierta frecuencia, como podra ser el caso en un entorno de servidor Web. Para enfatizar por qu esto es cierto, sigamos un camino potencial de una solicitud de conexin tpica con una base de datos: La aplicacin Java llama a getConnection(). El cdigo del vendedor JDBC (la implementacin del driver o del DataSource) solicita una conexin socket desde la JVM. La JVM necesita chequear los aspectos de seguridad de la llamada potencial. Por ejemplo, los applets slo se pueden comunicar con el servidor del que son originarios. Si lo aprueba, la llamada necesita pasar a travs del interface de red del host hasta la LAN corporativa. La llamada podra necesitar pasar a travs de un cortafuegos para alcanzar Internet o una WAN. La llamada alcanza eventualmente su subred de destino, donde podra necesitar pasar a travs de otro cortafuegos. La llamada alcanza el host de la base de datos. El servidor de base de datos procesa la solicitud de la nueva conexin. Se podra necesitar requerir la licencia del servidor para determinar si hay una licencia apropiada disponible. La base de datos inicializa una nueva conexin cliente, incluyendo toda las sobrecargas de memoria y sistema operativo. La llamada de retorno es enviada de vuelta al cliente JDBC (donde tiene que pasar por todos los cortafuegos y routers). La JVM recibe la llamada de retorno y crea un objeto Connection apropiado. La aplicacin Java recibe el objeto Connection. Claramente, solicitar un nuevo objeto Connection presenta una gran sobrecarga y muchos puntos de fallo potenciales. Para minimizar esta sobrecarga, por qu no reutilizar conexiones a bases de datos en vez de borrarlas cuando hayamos terminado con ellas? Los diseadores de JDBC usaron este patrn de diseo popular cuando crearon el ConnectionPoolDataSource, que nos permite crear un almacen de conexiones a bases de datos que son reutilizadas en vez de eliminarlas cuando se cierran. Qu es una PooledConnection? Una PooledConnection es un tipo especial de conexin a base de datos que no se borra cuando se cierra, al contrario que los objetos Connection normales (el recolector de basura puede borrar las conexiones normales una vez que ya no son referenciadas). En en vez de esto, la PooledConnection es almacenada para una reutilizacin posterior, produciendo potencialmente una gran mejora del rendimiento. Trabajar con un almacen de conexiones a bases de datos es casi idntico a trabajar con objetos DataSource. Primero, en vez de crear un ejemplar de una clase que implemente el interface DataSource, creamos un ejemplar de una clase que implemente ConnectionPoolDataSource. Podemos usar JDNI para unir esta nueva fuente de datos a un nombe como antes. Para usar realmente un objeto de fuente de datos almacenado, llamamos a getPooledConnection() sobre el ConnectionPooledDataSource, que a su vez establece conexiones con la base de datos. Para crear un objeto Connection que ser usado, llamamos
113

a getConnection() sobre el objeto PooledConnection en vez sobre los objetos DriverManager o DataSource como antes. Un beneficio adicional de esta aproximacin es que es mucho ms fcil manejar varios conjuntos de conexiones a bases de datos con un ConnectionPool porque l tiene cuidado automticamente. Esta automatizacin puede ser muy importante si nuestra licencias de cliente limitan el nmero de clientes que pueden conectarse simultneamente a la base de datos. El proceso completo es mucho ms sencillo de lo que suena, como muestran los siguientes ejemplos. Inicialiar un Almacen de Conexiones En este ejemplo, usamos una base de datos mSQL y el driver JDBC de cdigo abierto mSQL para crear un PooledDataSource. Todo el cdigo especfico de la base de datos est contenido en los procesos de inicializacin o de unin.
// First we import the relevant package import com.imaginary.sql.msql.* ; import java.util.Hashtable ; import javax.naming.* ; public class InitializeJNDI { private String serverName = "localhost" ; private String databaseName = "jdbc" ; private String userName = "java" ; private String password = "sun" ; // The appropriate JNDI subcontext for PooledDataSources is jdbcpool private String filePath = "jdbcPool/pjtutorial" ; private int portNumber = 1114 ; private int poolSize= 10 ; // We want to create a pool with 10 connections. public InitializeJNDI() { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory"); try { Context ctx = new InitialContext(env); // Create the PooledDataSource and set the relevant parameters. MsqlPooledDataSource ds = new MsqlPooledDataSource() ; ds.setServerName(serverName) ; ds.setPort(portNumber) ; ds.setDatabaseName(databaseName) ; ds.setUser(userName) ; ds.setPassword(password) ; ds.setMaxPoolSize(poolSize) ; // Bind the name and the DataSource object together ctx.bind(filePath, ds) ; ctx.close() ; } catch (Exception ex) { System.err.println("ERROR: " + ex.getMessage()) ; } } public static void main (String args[]){ new InitializeJNDI() ; } }

114

Usar un Almacen de Conexiones


Una vez que hemos inicializado el PooledDataSource, ahora podemos usarlo en aplicaciones Java para crear almacenes de conexiones a bases de datos. El siguiente ejemplo, es imaginario, pero efectivamente demuestra los puntos importantes. Un ejemplo ms realista podra ser un servlet, que configurara el almacen de conexiones en el mtodo init() del servlet y (re-)utilizara la conexin por cada nueva solicitud del servicio:
import java.util.Hashtable ; import javax.naming.* ; import java.sql.* ; import javax.sql.* ; public class UtilizeJNDI { public UtilizeJNDI(){ try { Hashtable env = new Hashtable() ; env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory") ; Context ctx = new InitialContext(env) ; // Look up the DataSource given the appropriate name. ConnectionPoolDataSource ds = (ConnectionPoolDataSource)ctx.lookup("jdbcPool/pjtutorial") ; // A PooledConnection provides a special Connection which is not // destroyed when it is closed, but is instead placed back into the // pool of connections. PooledConnection pcon = ds.getPooledConnection() ; Connection con = pcon.getConnection() ; System.out.println("Connection Established") ; con.close(); } catch(Exception e ) { e.printStackTrace(); } } public static void main (String args[]){ new UtilizeJNDI() ; } }

115

Optimizar las Comunicaciones con Bases de Datos

Mtodos JDBC DataSource y Driver


Esta seccin ecplia algunos de los mtodos menos conocidos del API JDBC que pueden ser utilizados para mejorar el rendimiento del sistema. Primero, todas las clases de fuentes de datos JDBC, el Driver , el DataSource, o el ConnectionPooledDataSource, proporcionan la habilidad de designar explcitamente un stream de salida del tipo caracter, setLogWriter(). Este stream acepta todos los logs y mensajes de seguimiento. Tambin hay un mtodo disponible para obtener el stream actual, getLogWriter(). Este puede ser extremadamente valioso cuando intentamos diagnosticar extraos bugs o para seguir el flujo de la aplicacin. Adems, todas las clases de fuentes de datos JDBc proporcionan un medio para asignar (setLoginTimeout()) u obtener (getLoginTimeout()) la cantidad de tiempo mxima que la clase de fuente de datos debera esperar a que se estalezca una conexin. Una clase interesante y rara vez utilizada es la clase DriverPropertyInfo. Esta clase encapsula toda la informacin de propiedades que necesita un driver para establecer una conexin a una base de datos. DriverPropertyInfo puede usarse en una herramienta grfica para encontrar interactivamente los parmetros que un driver necesita y pedirle al usuario de la base de datos los valores correctos.

Mtodos JDBC Connection


Un objeto Connection o PooledConnection tambin tienen varios mtodos que se pueden utilizar para mejorar el rendimiento del sistema, tanto directa como indirectamente. Primero, asumiendo que el driver JDBC y la base de datos subyacente lo soportan, un objeto connection se puede configurar para ser de slo lectura, setReadOnly(). Esto puede mejorar el rendimiento del sistema para aplicaciones que no necesitan hacer cambios en la base de datos, ya que la base de datos no necesita preocuparse de almacenar nuevas pginas, mantener entradas de diario, o adquirir bloqueos de escritura sobre cualquiera de los datos. Otros mtodos que estn relacioandos de alguna forma son setAutoCommit() y setTransactionIsolation(). Como el descontrol de las transaciones puede causar grandes prdidas de rendimiento en la base de datos, estos mtodos mtodos y sus efecto deberan ser claramente entenedidos y cuidadosamente aplicados. Finalmente, un ltimo y frecuentemente olvidado mtodo es nativeSQL(), que taduce una consulta SQL dada en el lenguaje de consulta nativo de la base de datos subyacente. Examinando la versin nativa SQL de nuestra consulta, podriamos entender mejor cmo la base de datos est intepretando nuestra consulta, y entonces hacer las modificaciones adecuadas a nuestra aplicacin para mejorar el rendimiento general. 2.-Utilizando PHP Se define a una Base de Datos, como una coleccin de datos almacenados en una cierta cantidad de ficheros que reciben el nombre de Tablas. Es decir que una Base de Datos es bsicamente un conjunto de Tablas que guardan una cierta relacin ente ellas. Estas Tablas estn conformadas por Registros y estos a su vez por Campos. Cada Campo debe tener un nombre y un cierto tipo de acuerdo a las caractersticas del dato que almacenar.

116

La mayora de los sitios web, que generalmente manejan un volumen de informacin importante, utilizan base de datos para poder almacenar informacin y modificarla o borrarla en tiempo real.

Tipos

de

Base

de

Datos

Se distinguen mochos tipos de Base de Datos en el mercado, de distintos fabricantes, con alguna diferencias en sus aspectos funcionales. Las Base de Datos mayormente usadas son: 1. 2. 3. 4. Oracle Mysql MS SQL Server Acces

Concepto de Base de Datos Nativas y Base de Datos Genricas


Las Base de Datos nativas son mas rpidas que las Bases de Datos que necesitan interface, como por ejemplo: ODBC (Open Data Base Conectivity) o JDBC (Java Data Base Conectivity). La rapidez es debido a que las Base de Datos nativas no necesitan realizar ningn paso para conectar la interfaz con el motor de Base de Datos, mientras que una no nativa, necesita de un interprete como ODBC, o similares para conectarse con la interfaz. La ventaja de usar una Base de Datos Genrica, es que se puede cambiar de Base de Datos fcilmente sin realizar cambios en el programa. PHP soporta interface tanto con Base de Datos nativas como genricas.

Diseo de Base de Datos


Para el diseo de una Base de Datos, se sugiere dedicar un tiempo al anlisis de los datos y al tipo de aplicacin a desarrollar, adems tambin se debe prestar inters a la relacin entre los datos de las diferentes tablas. El anlisis no es algo que se aprende en un instante, sino que requiere ejercitacin y prctica.

117

La interaccin con la Base de Datos se realiza a travs del lenguaje SQL (Structured Query Language) que es el estndar para el acceso y manipulacin de informacin de una Base de Datos Relacional. SQL es soportado por la mayora de las Base de Datos Relacionales, aunque cada una tiene sus particularidades.

3.- Utilizando Python Existen cientos de bases de datos en el mercado, tanto comerciales como gratuitas. Tambin existen decenas de mdulos distintos para trabajar con dichas bases de datos en Python, lo que significa decenas de APIs distintas por aprender. En Python, como en otros lenguajes como Java con JDBC, existe una propuesta de API estndar para el manejo de bases de datos, de forma que el cdigo sea prcticamente igual independientemente de la base de datos que estemos utilizando por debajo. Esta especificacin recibe el nombre de Python Database API o DB-API y se recoge en el PEP 249 (http://www.python.org/dev/peps/pep0249/). DB-API se encuentra en estos momentos en su versin 2.0, y existen implementaciones para las bases de datos relacionales ms conocidas, as como para algunas bases de datos no relacionales. A lo largo de este captulo utilizaremos la base de datos SQLite para los ejemplos, ya que no se necesita instalar y ejecutar un proceso servidor independiente con el que se comunique el programa, sino que se trata de una pequea librera en C que se integra con la aplicacin y que viene incluida con Python por defecto desde la versin 2.5. Desde la misma versin Python tambin incorpora un mdulo compatible con esta base de datos que sigue la especificacin de DB API 2.0: sqlite3, por lo que no necesitaremos ningn tipo de configuracin extra. Nada impide al lector, no obstante, instalar y utilizar cualquier otra base de datos, como MySQL, con la cul podemos trabajar a travs del driver compatible con DB API 2.0 MySQLdb (http://mysql-python.sourceforge.net/). Variables globales Antes de comenzar a trabajar con sqlite3, vamos a consultar algunos datos interesantes sobre el mdulo. Todos los drivers compatibles con DB-API 2.0 deben tener 3 variables globales que los describen. A saber: apilevel: una cadena con la versin de DB API que utiliza. Actualmente slo puede tomar como valor 1.0 o 2.0. Si la variable no existe se asume que es 1.0. threadsafety: se trata de un entero de 0 a 3 que describe lo seguro que es el mdulo para el uso con threads. Si es 0 no se puede compartir el mdulo entre threads sin utilizar algn tipo de mecanismo de sincronizacin; si es 1, pueden compartir el mdulo pero no las conexiones; si es 2, mdulos y conexiones pero no cursores y, por ltimo, si es 3, es totalmente threadsafe. paramstyle: informa sobre la sintaxis a utilizar para insertar valores en la consulta SQL de forma dinmica. o qmark: interrogaciones. sql = select all from t where valor=?
118

o o o o o

numeric: un nmero indicando la posicin. sql = select all from t where valor=:1 named: el nombre del valor. sql = select all from t where valor=:valor format: especificadores de formato similares a los del printf de C. sql = select all from t where valor=%s pyformat: similar al anterior, pero con las extensiones de Python. sql = select all from t where valor=%(valor)

Veamos los valores correspondientes a sqlite3: >>> import sqlite3 as dbapi >>> print dbapi.apilevel 2.0 >>> print dbapi.threadsafety 1 >>> print dbapi.paramstyle Qmark Excepciones A continuacin podis encontrar la jerarqua de excepciones que deben proporcionar los mdulos, junto con una pequea descripcin de cada excepcin, a modo de referencia. StandardError |__Warning |__Error |__InterfaceError |__DatabaseError |__DataError |__OperationalError |__IntegrityError |__InternalError |__ProgrammingError |__NotSupportedError StandardError: Super clase para todas las excepciones de DB API. Warning: Excepcin que se lanza para avisos importantes. Error: Super clase de los errores. InterfaceError: Errores relacionados con la interfaz de la base de datos, y no con la base de datos en s. DatabaseError: Errores relacionados con la base de datos. DataError: Errores relacionados con los datos, como una divisin entre cero. OperationalError: Errores relacionados con el funcionamiento de la base de datos, como una desconexin inesperada. IntegrityError: Errores relacionados con la integridad referencial. InternalError: Error interno de la base de datos. ProgrammingError: Errores de programacin, como errores en el cdigo SQL. NotSupportedError: Excepcin que se lanza cuando se solicita un mtodo que no est soportado por la base de datos.
119

Uso bsico de DB-API Pasemos ahora a ver cmo trabajar con nuestra base de datos a travs de DBAPI. Lo primero que tendremos que hacer es realizar una conexin con el servidor de la base de datos. Esto se hace mediante la funcin connect, cuyos parmetros no estn estandarizados y dependen de la base de datos a la que estemos conectndonos. En el caso de sqlite3 slo necesitamos pasar como parmetro una cadena con la ruta al archivo en el que guardar los datos de la base de datos, o bien la cadena ":memory:" para utilizar la memoria RAM en lugar de un fichero en disco. Por otro lado, en el caso de MySQLdb, connect toma como parmetros la mquina en la que corre el servidor (host), el puerto (port), nombre de usuario con el que autenticarse (user), contrasea (password) y base de datos a la que conectarnos de entre las que se encuentran en nuestro SGBD (db). La funcin connect devuelve un objeto de tipo Connection que representa la conexin con el servidor. >>> bbdd = dbapi.connect("bbdd.dat") >>> print bbdd <sqlite3.Connection object at 0x00A71DA0> Las distintas operaciones que podemos realizar con la base de datos se realizan a travs de un objeto Cursor. Para crear este objeto se utiliza el mtodo cursor() del objeto Connection: view plaincopy to clipboardprint? 1. c = bbdd.cursor() Las operaciones se ejecutan a travs del mtodo execute de Cursor, pasando como parmetro una cadena con el cdigo SQL a ejecutar. Como ejemplo creemos una nueva tabla empleados en la base de datos: view plaincopy to clipboardprint? 1. c.execute("""create table empleados (dni text, 2. nombre text, 3. departamento text)""") y a continuacin, insertemos una tupla en nuestra nueva tabla: view plaincopy to clipboardprint? 1. c.execute("""insert into empleados 2. values ('12345678-A', 'Manuel Gil', 'Contabilidad')""") Si nuestra base de datos soporta transacciones, si estas estn activadas, y si la caracterstica de auto-commit est desactivada, ser necesario llamar al mtodo commit de la conexion para que se lleven a cabo las operaciones definidas en la transaccin. Si en estas circunstancias utilizramos una herramienta externa para comprobar el contenido de nuestra base de datos sin hacer primero el commit nos encontraramos entonces con una base de datos vaca. Si comprobramos el contenido de la base de datos desde Python, sin cerrar el cursor ni la conexin, recibiramos el resultado del contexto de la transaccin, por lo que parecera que se han llevado a cabo los cambios, aunque no es as, y los cambios slo se aplican, como comentamos, al llamar a commit. Para bases de datos que no soporten transacciones el estndar dicta que debe proporcionarse un mtodo commit con implementacin vaca, por lo que no es
120

mala idea llamar siempre a commit aunque no sea necesario para poder cambiar de sistema de base de datos con solo modificar la lnea del import. Si nuestra base de datos soporta la caracterstica de rollback tambin podemos cancelar la transaccin actual con: view plaincopy to clipboardprint? 1. bbdd.rollback() Si la base de datos no soporta rollback llamar a este mtodo producir una excepcin. Veamos ahora un ejemplo completo de uso: view plaincopy to clipboardprint? 1. import sqlite3 as dbapi 2. 3. bbdd = dbapi.connect("bbdd.dat") 4. cursor = bbdd.cursor() 5. 6. 7. cursor.execute("""create table empleados (dni text, 8. nombre text, 9. departamento text)""") 10. 11. cursor.execute("""insert into empleados 12. values ('12345678-A', 'Manuel Gil', 'Contabilidad')""") 13. 14. bbdd.commit() 15. 16. 17. cursor.execute("""select * from empleados 18. where departamento='Contabilidad'""") 19. 20. for tupla in cursor.fetchall(): 21. print tupla Como vemos, para realizar consultas a la base de datos tambin se utiliza execute. Para consultar las tuplas resultantes de la sentencia SQL se puede llamar a los mtodos de Cursor fetchone, fetchmany o fetchall o usar el objeto Cursor como un iterador. view plaincopy to clipboardprint? 1. cursor.execute("""select * from empleados 2. where departamento='Contabilidad'""") 3. 4. for resultado in cursor: 5. print tupla El mtodo fetchone devuelve la siguiente tupla del conjunto resultado o None cuando no existen ms tuplas, fetchmany devuelve el nmero de tuplas indicado por el entero pasado como parmetro o bien el nmero indicado por el atributo Cursor.arraysize si no se pasa ningn parmetro (Cursor.arraysize vale 1 por defecto) y fetchall devuelve un objeto iterable con todas las tuplas. A la hora de trabajar con selects u otros tipos de sentencias SQL es importante tener en cuenta que no deberan usarse los mtodos de cadena habituales para construir las sentencias, dado que esto nos hara vulnerables a ataques de
121

inyeccin SQL, sino que en su lugar debe usarse la caracterstica de sustitucin de parmetros de DB API. Supongamos que estamos desarrollando una aplicacin web con Python para un banco y que se pudiera consultar una lista de sucursales del banco en una ciudad determinada con una URL de la forma http://www.mibanco.com/sucursales?ciudad=Madrid Podramos tener una consulta como esta: view plaincopy to clipboardprint? 1. cursor.execute("""select * from sucursales 2. where ciudad='" + ciudad + "'""") A primera vista podra parecer que no existe ningn problema: no hacemos ms que obtener las sucursales que se encuentren en la ciudad indicada por la variable ciudad. Pero, qu ocurrira si un usuario malintencionado accediera a una URL como http://www.mibanco.com/sucursales?ciudad=Madrid;SELECT * FROM contrasenyas? Como no se realiza ninguna validacin sobre los valores que puede contener la variable ciudad, sera sencillo que alguien pudiera hacerse con el control total de la aplicacin. Lo correcto sera, como decamos, utilizar la caracterstica de sustitucin de parmetros de DB API. El valor de paramstyle para el mdulo sqlite3 era qmark. Esto significa que debemos escribir un signo de interrogacin en el lugar en el que queramos insertar el valor, y basta pasar un segundo parmetro a execute en forma de secuencia o mapping con los valores a utilizar para que el mdulo cree la sentencia por nosotros. view plaincopy to clipboardprint? 1. cursor.execute("""select * from sucursales 2. where ciudad=?""", (ciudad,)) Por ltimo, al final del programa se debe cerrar el cursor y la conexion: view plaincopy to clipboardprint? 1. cursor.close() 2. bbdd.close() Tipos SQL En ocasiones podemos necesitar trabajar con tipos de SQL, y almacenar, por ejemplo, fechas u horas usando Date y Time y no con cadenas. La API de bases de datos de Python incluye una serie de constructores a utilizar para crear estos tipos. Estos son: Date(year, month, day): Para almacenar fechas. Time(hour, minute, second): Para almacenar horas. Timestamp(year, month, day, hour, minute, second): Para almacenar timestamps (una fecha con su hora). DateFromTicks(ticks): Para crear una fecha a partir de un nmero con los segundos transcurridos desde el epoch (el 1 de Enero de 1970 a las 00:00:00 GMT). TimeFromTicks(ticks): Similar al anterior, para horas en lugar de fechas. TimestampFromTicks(ticks): Similar al anterior, para timestamps. Binary(string): Valor binario.

Otras opciones
122

Por supuesto no estamos obligados a utilizar DB-API, ni bases de datos relacionales. En Python existen mdulos para trabajar con bases de datos orientadas a objetos, como ZODB (Zope Object Database) y motores para mapeo objeto-relacional (ORM) como SQLAlchemy, SQLObject o Storm. Adems, si utilizamos IronPython en lugar de CPython tenemos la posibilidad de utilizar las conexiones a bases de datos de .NET, y si utilizamos Jython, las de Java.

4.- Utilizando Tcl/Tk

Actividades a realizar Crear Conexin Abrir Conexin (Openconnection) Iniciar Transaccin (Begin Transaction) Queries... (Insert, Select, Update, Delete...) -Error (Abort Transaction) Procesar resultados (Print, a= , b= ) Asegurar Transaccin (End Transaction) Cerrar Conexin (Closeconnection)

Error Handling Es muy importante manejar los errores: 1) Mantener informado al usuario 2) Poder recuperarse de ellos Causas de errores
123

1) Errores de sintxis en expresiones de queries 2) Problemas de privilegios en determinadas tablas o bases de datos 3) Cadas del DBMS: luz, espacio en disco, NFS.

8.1.4 Terminologa Conexin: Lnea de comunicacin entre nuestro programa y el dbms Resultados de un querie (select)a la base de datos, se compone de renglones (rows). valor valor Result Set: Nota: Queries que no involucren resultsets devuelven un nmero entero asociado a las tuplas afectadas Result Set MetaData: Metadatos de un result set (nombres de atributos, tipos de datos) Atrib1, Atrib2, Atrib3, Tipo Tipo Tipo Un rengln (tupla) obtenidas de un query y que a su vez contiene las distintas columnas (valores atributos) de dicha operacin. valor Transaccin: valor valor valor valor valor valor valor valor valor valor valor valor

Row:

Unidad de programa que accede y posiblemente actualiza varios elementos de informacin

5.- Utilizando Visual Basic Para enteder como funciona la tecnologia de ADO.Net necesitamos dejar claros algunos conceptos: Connection: Proporciona una conexin usada para comunicarse con la fuente de datos. Tambin acta como Abstract Factory para los objetos command. Command: Usado para realizar alguna accin en la fuente de datos, como lectura, actualizacin, o borrado de datos relacionales. Parameter: Describe un simple parmetro para un command. Un ejemplo comn es un parmetro para ser usado en un procedimiento almacenado.
124

DataAdapter: Puente utilizado para transferir data entre una fuente de datos y un objeto DataSet (ver abajo). DataReader: Es una clase usada para procesar eficientemente una lista grande de resultados, un registro a la vez. Como vern nos ofrece interactuar con una base de datos, sin importar el proveedor. Crear la base de datos: Lo primero ser crear una base de datos llamada Usuarios y una tabla llamada Datos con las siguientes caractersticas: ID Entero Autoincrementable Nombre Carcter No nulo Edad Entero No nulo Hobbies Carcter No nulo Y sern todos los elementos, nos enfocaremos al uso de la tecnologia ADO.Net en un ejemplo fcil pero entendible. VB + SQL Server Primero necesitamos crear un nuevo proyecto, y que sea una aplicacin de escritorio, al parecer este modo ser mas fcil, ya que SQL Server es el gestor de BD por defecto en la plataforma .Net. Sino estas muy bien familiarizado con bases de datos, puedes utilizar Microsoft SQL Server Management Studio en su versin express. Lo primordial ser disear nuestro formulario:

Bibliografa http://www.google.com.mx/#q=INTERFACES+A+BASES+DE+DATOS+utilizando+j ava&hl=es-419&rlz=1R2ADSA_esMX472&prmd=imvns&ei=W6brTu5MKas2wX4rPy_AQ&start=60&sa=N&bav=on.2,or.r_gc.r_pw.r_qf.,cf.osb&fp=872 da61f88ac79ee&biw=1229&bih=817 http://www.tutorialesfacil.com.ar/php/BasedeDatos.htm http://mundogeek.net/archivos/2008/06/25/bases-de-datos-en-python/ http://www.g3ekarmy.com/crea-tu-aplicacion-vb-net-bd-oracle-sql-server-mysql/

125

Das könnte Ihnen auch gefallen