UNIVERSIDAD AUTÓMONIA METROPOLITANA148.206.53.84/tesiuami/UAM1122.pdf · El proyecto de Oficina...

115
Casa abierta al tiempo UNIVERSIDAD AUTÓMONIA METROPOLITANA Unidad: Iztapalapa División: Ciencias Básicas e Ingeniería Departamento: Ingeniería Eléctrica Título: Oficina VirtualCBI V 1.0 Para la obtención del grado: Licenciatura en Computación Alumna: Guadalupe Teresa López Vargas Matrícula: 95213155 Asesor: Omar L. Cabrera Jiménez Enero 2002

Transcript of UNIVERSIDAD AUTÓMONIA METROPOLITANA148.206.53.84/tesiuami/UAM1122.pdf · El proyecto de Oficina...

Casa abierta al tiempo UNIVERSIDAD AUTÓMONIA METROPOLITANA

Unidad: Iztapalapa

División: Ciencias Básicas e Ingeniería

Departamento: Ingeniería Eléctrica

Título: Oficina Virtual CBI V 1.0

Para la obtención del grado: Licenciatura en Computación

Alumna: Guadalupe Teresa López Vargas

Matrícula: 95213155

Asesor: Omar L. Cabrera Jiménez

Enero 2002

indice

1 Oficina Virtual de CBI ........................................................................... 1 Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Herramientas ........................................................................................... 1 Posgrado ................................................................................................. 2

2 El desarrollo del Software .................................................................... 4 El desarrollo del Software es complejo ................................................... 4 Factores de calidad en el Software ......................................................... 5

3 Análisis y Diseño Orientado a Objetos ............................................... 6 Enfoque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Clases en instancias .............................................................................. 7 Encapsulamiento ..................................................................................... 7 Polimorfismo ............................................................................................ 8 Herencia .................................................................................................. 9 Asociaciones Estáticas ............................................................................ 10

4 Análisis de Requerimientos ................................................................. 12 Modelo de Casos .................................................................................... 13 Modelo de lnterfaz ................................................................................... 18 Diagrama de Transición de Estados ....................................................... 20 Modelos de Dominio del Problema ......................................................... 21 Modelo de Análisis ................................................................................. 25 Proceso de Análisis ................................................................................. 25 Definición de Escenarios ......................................................................... 26 Diagrama de Colaboración ...................................................................... 26 Diagrama de Secuencia .......................................................................... 26

5 Configuraciones .................................................................................... 45 Servidor Web ........................................................................................... 45 Configuración del Alias de la Base de Datos .......................................... 48

6 SIC (Sistema de Información Corporativa) ........................................ 50 ¿Cómo ingresar un query en el SIC? ................................................. 52

Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Componentes del SQL ............................................................................ 53 Comandos ............................................................................................... 53 Estructura de las tablas ............................................................................ 54 Creación de Tablas ................................................................................. 54 La cláusula CONSTRAINT ..................................................................... 54 Creación de Indices ................................................................................ 55 Modificar el Diseño de una Tabla ........................................................... 56 Cláusulas ................................................................................................ 57

Operadores de Comparación .................................................................. 58

7 SQL (Structed Query Language) ....................................................... 53

Operadores Lógicos ................................................................................ 58

Funciones de Agregado .......................................................................... Consultas de Selección ........................................................................... Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Recuperar Información de una Base de Datos Externa .......................... Criterios de Selección ............................................................................. Operadores Lógicos ................................................................................ Consultas de Acclon ............................................................................... Subconsultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8 HTML (Hyper Text Markup Language) ............................................... Principios básicos ................................................................................... Dando forma al texto .............................................................................. Comentarios no visibles en la pantalla .................................................... Estructura de los enlaces ........................................................................ Imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Estructura de un Formulario .................................................................... Frames ....................................................................................................

Hojas de estilo en cascada .....................................................................

. .

Etiquetas especiales ...............................................................................

9 Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58 59 61 61 61 61 67 71 74 74 75 76 76 78 82 87 92 98 100 112

Oficina Virtual de CBI Introducción

Oficina Virtual de CBI

Presentación

El proyecto de Oficina Virtual de CBI, surge por la necesidad de sistematizar los procedimientos administrativos que se llevan a cabo en la Oficina de Atención a Alumnos de la división de Ciencias Básicas e Ingeniería (CBI) en la Unidad Iztapalapa.

Debido a que en la Oficina de Atención de Alumnos laboran varias personas y que en algunas ocasiones éstas personas requieren de compartir la información, una de las primeras necesidades que tenía que cubrir el proyecto era estar basado en una tecnología que 1 0 permitiera, para esto se decidió que estuviera disponible a través de Internet.

Introducción

El enfoque bajo el cual se realizó la Oficina Virtual de CBI, fue el Orientado a Objetos. Por esto se tuvieron en un principio dos procesos, y estos fueron:

0 Proceso de Análisis de Requerimientos, en donde se recolectan los requerimientos del usuario, se unifican en formato y se genera una especificación bajo ciertos formatos estándares que garanticen que todo el equipo de desarrollo pueda manejar los requerimientos.

0 Proceso de Análisis Dinámico, dicho proceso establece las características principales de la estructura del sistema.

Herramientas

El software utilizado para el desarrollo del sistema fue:

0 Sistema de Información Corporativa (SIC), éste software ingresa las peticiones (querys) a la base

0 OmniHTTPd, el cual cumple su función como servidor web. 0 Interbase 6, el cual es un manejador de base de datos que opera bajo el modelo Entidad Relación. 0 Windows NT, es el sistema operativo bajo el cual trabaja el servidor donde esta hospedada la

0 Rational Rose 2000 Enterprise Edition, la cual es una herramienta case que sirve para hacer todo

Dreamweaver de Macromedia, esta herramienta sirve para el diseño de páginas WEB.

de datos para que mediante lenguaje SQL extraiga la información requerida.

aplicación.

el Análisis y Diseño de Sistemas Orientados a Objetos.

1

Oficina Virtual de CBI Introducción

Estructura general de la Oficina Virtual de CBI

Figura 1

La Oficina Virtual de CBI, esta dividida en 5 secciones, expuestas anteriormente.

Seguimiento, se hace el seguimiento de alumnos inscritos en Licenciatura, es posible hacer

Delegación escolar, en esta sección básicamente se tramitan solicitudes de prórroga, asignación

Servicio social, se elaboran los trámites administrativos que requiere Servicio Social de CBI. 0 Bolsa de Trabajo, se lleva a cabo el manejo de la Bolsa de Trabajo para la división de CBI.

Posgrado, en ésta sección se llevan todos los trámites administrativos que la oficina de Posgrado

seguimiento de alumnos de varias formas como: por generación, por matrícula, etc.

de sinodales, etc.

en la división de CBI requiere.

Posgrado

El Menú Posgrado se encuentra a su vez dividido en tres secciones principales que son: Información de Alumnos, Coordinación y Gestión Escolar, esto se observa en la figura 2.

Figura 2

2

Oficina Virtual de CBI Introducciór?

Información de Alumnos, en esta sección es posible llevar obtener información sobre desempeño y otros datos de interés tanto para la oficina de Asistencia de posgrado, como para los coordinadores de los posgrados. Coordinación, aquí se pueden llevar a cabo tareas propias de los coordinadores de posgrado, como to son planeación anual y ptaneaciones trimestrales. Gestión escolar, en esta sección se hacen solicitudes de prorroga de los alumnos, acreditaciones, revalidaciones y equivalencias.

En el presente reporte se abarcará la parte de Información de Alumnos.

3

Oficina Virtual de CBI El desarrollo del software

El desarrollo del Software

El desarrollo del software es complejo

El principal problema al que nos enfrentamos las personas que nos dedicamos a hacer sistemas, no es, como pudiera parecer a priori, el resolver una problemática con software, sino asegurar que la solución que propongamos, sea una solución efectiva y a un costo aceptable.

La mayor parte del software que se produce no cumple con el requisito de que sea una solución efectiva, apenas, resuelve algunos aspectos de la problemática de las organizaciones y sus costos se tienen que aceptar no porque sean bajos, sino porque, no existen otras opciones. Siendo estos costos, con mucha frecuencia, subestimados.

Dicho la anterior podemos decir que el software es inherentemente complejo porque:

El problema a resolver puede resultar complejo.

El proceso de desarrollo es difícil de gestionar.

Las aplicaciones informáticas son discretas. Pequeños cambios pueden conducir a situaciones impredecibles.

Unido al ciclo de vida del software en cascada: Análisis

Diseño Implementación

Pruebas Mantenimiento

Existían barreras para pasar de un escalón a otro, además hay que dar más importancia a la fase de mantenimiento.

El hombre está seriamente limitado para tratar la complejidad. Puede tener en mente 7*2 asuntos simultáneamente. Atributos de la complejidad (Simon y Ando):

1. Los sistemas complejos comprenden subsistemas interrelacionados con algún tipo de relación jerárquica. Cada subsistema es en si mismo un sistema complejo, hasta llegar a componentes elementales.

2. La elección de los componentes elementales o primitivos de un sistema es relativamente arbitraria, dependiendo del observador.

3. Uniones o relaciones dentro de estos componentes son, generalmente, más fuertes que las relaciones entre distintos componentes. Se pueden separar efectos de alta frecuencia y baja frecuencia.

4. Los sistemas jerárquicos suelen componerse de unos pocos tipos de subsistemas que se unen y combinan de distintas formas.

4

Oficina Virtual de CBI El desarrollo del software

5. Los sistemas complejos que funcionen deben evolucionar desde sistemas simples que funcionen. Un sistema complejo no se crea a partir de uno con fallos, o de la nada.

La solución para tratar con la complejidad es clásica: Divide et impera

0 Descomposición Algorítmica (top-down o estructural): Rompe el sistema en partes, cada una representando un pequeño paso del proceso. Métodos de diseño estructurados conducen a descomposiciones algorítmicas, donde la atención se centra en el flujo del sistema.

0 Descomposición orientada a objetos: Trata de identificar semánticamente el dominio del problema. El entorno del problema se estudia como un conjunto de agentes autónomos (objetos) que colaboran para realizar un comportamiento complejo.

Factores de Calidad en el Software

Para que un software tenga calidad debe reunir las siguientes características:

1. Eficiencia: buen uso de los recursos. 2. TransDortabilidad: entre plataformas distintas. 3. Verificabilidad: facilidad de comprobar el software. 4. Inteqridad: protección de sus componentes. 5. Facilidad de uso. 6. Corrección: hacer lo que se pide sin fallos. 7. Robustez: salvar situaciones anormales. 8. Extensibilidad: capacidad de cambio o evolución. 9. Reutilización: ahorro de trabajo. 10. ComDatibilidad: facilidad de combinar subprogramas.

Por todo lo dicho anteriormente surgió en 1968 la PO0 (Programación Orientada a Objetos) en el capítulo siguiente se explicará a detalle en que consiste.

5

Oficina Virtual de CBI Análisis y Diseño Orientado a Objetos

Análisis y Diseño Orientado a Objetos

La computadora es por excelencia un simulador universal, ya que en ella son introducidos conceptos de la realidad y son simuládos de tal manera que, se dice que en su interior existen representaciones de personas, documentos, adculos, etc.

Antes de continuar se estableceran los siguientes conceptos: Análisis orientado a objetos es un método de análisis que examina los requerimientos desde la perspectiva de clases y objetos encontrada en el vocabulario original del problema. Diseño orientado a objetos es un método de diseño que abarca el proceso de descomposición orientado a objetos y una notación para describir modelos lógicos y físicos, dinámicos y estáticos, del sistema bajo diseño. Programación orientada a objetos es el método de implementación en el cual los programas se organizan como colecciones cooperantes de objetos, cada uno de los cuales representa un ejemplo de alguna clase, y cuyas clases son todas miembros de una jerarquía de clases unidas por relaciones (P.e herencia).

I _

Las formas en las que establecemos conceptos de la realidad a representaciones computacionales necesita de un planteamiento para poder extraer tales conceptos de la realidad. A este planteamiento se le conoce como enfoques o paradigmas. Tales enfoques son formas de visualizar la realidad para atacar cierta problemática y generar una solución.

La estructura de la solución depende del enfoque con el cual se atacó el problema. . - .

Enfoque

El enfoque de orientación a objetos es una forma de observar la realidad. El enfoque como su nombre lo indica se basa en el concepto de objeto.

Es todo aquello que pueda distinguirse dentro del universo de la aplicación que sea Único. Los objetos tiene propiedades o estados y la única forma de afectar esas propiedades y estados es a través de los comportamientos de exhibe el objeto.

Muchas personas están acostumbradas a este enfoque, ya que en la vida diaria se encuentra que se percibe la realidad como objetos. De tal forma que percibimos un automóvil como un objeto que tiene propiedades de color, motor, dueño, posición, etc. y que para afectar cualquiera de ellas debemos hacer uso de comportamientos que exhibe tal como el de movimiento para cambiar de posición, pintarlo para modificar el color, etc.

Los objetos pueden estar formados por otros objetos, un ejemplo de esto es pensar en un supermercado, el supermercado esta compuesto por objetos más pequeños, productos, personal que labora allí, el inmuebie, etc. De esta forma podemos ver que la realidad la podemos establecer como un conjunto de objetos que interactúan entre sí a través del enfoque orientado a objetos.

6

Oficina Virtual de CBI Análisis y Diseño Orientado a Objetos

Clases e instancias

Dentro de la definición de objetos se encontrarán algunos que serán muy parecidos, ya sea que comparten la misma definición de características, por ejemplo: varios alumnos tiene varias características en común, todos tienen una matrícula, un apellido paterno, un apellido materno, nombre(s), etc. Ya que todos estos objetos se parecen mucho, podemos establecer que son objetos obtenidos del mismo molde o de la misma plantilla. Tal molde o plantilla se le denomina clase. Una clase es una ayuda notacional en el análisis para establecer las propiedades y funciones que serán comunes a todos los objetos que se generen a partir de ella.

Alum no 4 Nombre de la clase [ matricula

a p e l h d o P a t e r n o

n o m b r e

%consultar()

a c t u a l i z a r ( ) "-,-! Funciones

Figura 3

En la figura 3 se esta representando gráficamente una clase, correspondiente al objeto Alumno. Cada clase se describe a través de un rectángulo en el que hay tres divisiones: la primera indica el nombre de la clase, la segunda contiene todas las propiedades que debe tener cada objeto y la tercera contiene las funciones por medio de las cuales se modifican las propiedades de los objetos.

La forma de representar gráficamente una clase es variable dependiendo de la notación que se está utilizando. En particular a lo largo de este reporte se utilizará notación correspondiente al UML: Lenguaje Unificado de Modelado, el cual es en la actualidad el modelo de notación que tiene mayor aceptación dentro de la comunidad de desarrolladores Orientados a Objetos.

En el enfoque Orientado a Objetos, todos los objetos se generan a partir de clases. Incluso cuando sólo se genere uno, de tal forma que todo objeto está asociado a la clase a partir de la que se generó. A cada objeto generado se dice que es una instancia de la clase, el cual tendrá las propiedades y funciones indicadas en la clase.

Con las clases ya no es necesario describir a detalle cada objeto, sólo es necesario conocer los valores de su propiedades y aplicar las funciones de la clase para su manipulación.

Desde el punto de vista de desarrollo de sistemas, las clases existen en los momentos en que se está relacionando varios objetos de la realidad, lo cual se da durante la etapa de levantamiento de requerimientos, durante el análisis, el diseño y la programación. Sin embargo en el momento en que se ejecuta la aplicación no existen clases, sino sólo, instancias de esas clases, es decir, objetos generados a partir de ellas.

Encapsulamiento

Los objetos tienen una conceptualización interesante, pues lo que interesa de ellos es lo que puedan realizar y no cómo lo hagan y más aún como estén construidos a su interior. Este concepto lo utilizamos en nuestra vida diaria, de tal forma que no nos interesa como está por dentro una calculadora. A esta propiedad se le llama encapsulamiento.

7

Oficina Virtual de CBI Análisis y Diseño Orientado a Objetos

Desde el punto de vista de sistemas el hecho de que un objeto cuente con la propiedad de encapsulamiento es de gran interés pues la forma en que está construido un objeto es irrelevante, lo importante es lo que puede hacer y eso está dado a través de las funciones. Por lo mismo, la detección de errores dentro de un sistema es más fácil de realizar si el código sólo puede accederse desde puntos perfectamente especificados.

El encapsulamiento contempla lo que otros objetos pueden ver de un objeto dado. La visibilidad de un objeto o de una parte de un objeto (propiedades o funciones) es privada cuando el Único código que puede utilizarlo es el que está dentro de las funciones del objeto.

Cuando la visibilidad es pública, cualquier función de cualquier objeto del sistema puede hacer referencia de la propiedad o de la función que tenga visibilidad pública.

Puede definirse un tipo de visibilidad en la que sólo algunos objetos estarán autorizados para hace referencia a la propiedad o la función. A este tipo de visibilidad se le dice amigo.

Existe un cuarto tipo de visibilidad que se define más adelante.

Aún cuando las propiedades pueden ser accedidas directamente por funciones de otros objetos, es recomendable que el control de su escritura y lectura esté en el código de las funciones del objeto al que pertenecen, por lo que se recomienda que las propiedades de los objetos tengan visibilidad privada.

No sólo las propiedades es conveniente hacerlas privadas, sino todas aquellas funciones del objeto que sirvan a otras funciones dentro del objeto y que no tengan ningún propósito de conexión con otros objetos. A estas funciones también conviene que tengan visibilidad privada.

En la notación UML en la implantación en Rational Rose, se distinguen las visibilidades privadas a través de un candado y las públicas a través de un rectángulo. En UML la visibilidad privada se indica con un sigo - , y la pública con un signo + .

Polimorfismo

En la vida diaria nos enfrentamos con frecuencia a objetos nuevos, de los cuales se tiene cierta noción acerca de su naturaleza. Por ejemplo, cuando se enfrenta a estéreo nuevo, probablemente no sepa buena parte de las funciones que exhibe ni las características que posee, sin embargo, usted sabe que tiene que tener una función de encendido y apagado. En realidad la forma en la que el aparato se enciende puede ser distinta a la de otros dependiendo de su construcción interna, pero para uno queda claro que la función de encendido es fundamental para su operación y cualquiera sabe que esperar de dicha función.

Esta situación es muy común y necesaria en el manejo de objetos, en la que un objeto utiliza la función de otros objetos, sin que el objeto que utilice la función se tenga que preocupar por la naturaleza del objeto que realizará la función. En el ejemplo, la función de encendido la emite una persona hacia cualquier estéreo, en donde el estéreo se encenderá.

Otro ejemplo puede ser cuando cierta sección de código le dice a una ventana que se despliegue en ¡a pantalla. Es claro que si cada ventana es un objeto y éstas son distintas, cada una se desplegará de acuerdo a sus propiedades, sin embargo, desde el punto de vista del objeto que está ordenando que se habrá una ventana, no importará si es una ventana o la otra, sólo ordena que se despliegue la ventana que está solicitando.

Este comportamiento se conoce como polimorfismo. El polimorfismo se define como la característica de que el objeto que pide la ejecución de una función a otro objeto, no necesita saber la naturaleza del objeto dueño de la función.

8

Oficina Virtual de CBI Análisis y Diseño Orientado a Objetos

Herencia

Cuando nos enfrentamos a objetos nuevos, a veces se tiene cierta noción acerca de cómo se pueden utilizar. Suponga que le prestan una calculadora científica y que nunca había usado una, los más seguro es que pueda usar sus funciones principales, ya que las calculadoras científicas, las que no lo son y las calculadoras financieras se parecen aunque no son objetos que necesariamente correspondan a la misma clase.

Entonces ¿cómo es posible que compartan características? La razón es que la clase a la que pertenece la calculadora científica, la clase a la que pertenece la calculadora no científica y la clase a la que pertenece la calculadora financiera se parecen aunque manejan algunas propiedades distintas. Las tres clases de calculadoras tienen pantalla, teclas con números y símbolos, etc., sólo difieren en algunos aspectos.

En este caso es posible generar una clase que contenga todas las descripciones de las propiedades en común de las tres clases en cuestión. Esta nueva clase será la base para las tres clases que ya se tenían. Esto se muestra en la figura 4.

C a l c u l a d o r a

[&m arca @modelo

! @ d u e ñ o @teclas de d igitos

@ t e c l a s d e o p b á s i c a s

@encendido() + a p a g a d o ( ) + s u m a ( ) +resta ( 1 *m ult lp l lcacton()

%dIvls!onO

C l e n t i f l c a

& t e c l a s d e f u n c l o n e s ,$trlgonom etrlca @ t e c l a s d e e p o n e n t e s & t e c l a s l o g a r l t r n ] c a s

% t r l g o n o r n é t n c a s ( ) @ . e x p o n e n t e ( ) % o g a r l t m o ( )

No C i e n t í f i c a F l n a n c l e r a

%tecla de m ó d u l o @ t e c l a d e v a l o r p r e s e n t e @tec la de Interés s lmple

% m o d u l o ( ) @ t e c l a d e l n t e r e s c o m p u e s t o

O v a l o r p r e s e n t e ( ) i n t e r é s s i m p l e ( )

% I n t e r é s c o m p u e s t o ( )

Figura 4

El diagrama de la figura 4 se lee. La clase Calculadora tiene tres subclases: Gentficq No Cientfica y finanuera, lo relevante de este concepto es que las subclases contiene las propiedades y las funciones definidas en la clase principal. Esto quiere decir que tanto Cientfica como No Cienth7ca y Financiera tienen las propiedades de marca, modelo, etc., de la misma forma en la que están especificados en la Clase principal, sin embargo, los métodos de las tres subclases tienen el mismo nombre de la Clase principal, aunque no necesariamente son iguales. Por ejemplo, existen diferencias en la función suma de una calculadora científica a una no científica, ya que la calculadora científica respeta el orden de las operaciones, mientras que la calculadora no científica ejecuta una suma en cuanto la encuentra.

A la característica de que las subclases tomen definiciones de la clase principal se conoce como Herencia. Con éste término se puede replantear la forma en que se leen la estructura: las clases cientfica, No

9

Oficina Virtual de CBI Análisis y Diseño Orientado a Objetos

Cientiíca y financiera heredan las propiedades de marca, modelo, dueño, etc., así como los nombres de las funciones.

El concepto de herencia va asociado a la Generalización - Especialización en el que se establece que cierta clase de objetos pueden tener clases de objetos más especializadas las cuales por ser especializaciones, tendrán todos los elementos de la clase genérica, y modificarán la funcionalidad heredada o agregarán nueva funcionalidad para especializarse.

Dentro de la estructura de herencia, las clases que heredan se dice que son clases descendientes y de las que se heredan ascendientes. En la notación UML la relación de herencia entre dos clases se indica por medio de una flecha hueca que apunta a la clase ascendiente, esto es porque, en una relación de herencia, el padre no se construye teniendo en cuenta que se puedan derivar de éI clases más especializadas. Por otro lado las clases que son descendientes es importante que sepan quién es su ascendiente pues de éI están tomando propiedades y funciones.

Hasta aquí para que se puedan heredar propiedades y funciones es necesario que sean públicos. Esto abre la puerta para accesos indeseables por parte de objetos de otras clases fuera de la jerarquía de herencia. Es por esto que se establece un tipo de visibilidad de acceso para que propiedades y funciones sean referenciables por código de funciones de subclase dentro de la jerarquía. A este tipo de visibilidad se le llama protegida y en UML se indica por medio de un #, y dentro de Rational Rose con candado y un rectángulo. Sin embargo, es posible que el diseñador de una clase no desee que ciertas propiedades y métodos sean visibles para subclases que se generan a partir de ella, en esos casos se declaran como privados.

Hay algo importante por aclarar, en el ejemplo anterior, si una calculadora es científica, no científica o financiera ¿de cuál de las tres clases se generan los objetos?. En este caso observamos que el universo de calculadoras se puede dividir por completo entre las tres clases de calculadoras, por Io que no es raro que sean generados por subclases, de aquí que, la clase Calculadora no generará directamente ningún objeto. Dentro de la jerarquía de herencia, a las clases que no generan directamente ningún objeto se les llama abstractas. A las clases que generan directamente objetos se les denomina concretas.

La herencia no sólo se puede dar a un nivel. De hecho, con frecuencia las estructuras de herencia contemplan varios niveles, proyectando el concepto a cada nivel. Esto hace que los diagramas de clases crezcan mucho. Cuando se tienen diagramas de clases muy grandes no es fácil distinguir cuáles son concretas y cuáles abstractas. Es por esto que se recomienda que las clases concretas estén sólo al alcance de nivel de hoja.

No hay límite con respecto al número de niveles que se pueden tener, de hecho tampoco existen limitaciones conceptuales para impedir que existan especializaciones múltiples, es decir que una clase puede ser subclase de dos clases al mismo tiempo. Este tipo de herencia es poco utilizado pues no puede perderse el controi acerca de los atributos que se manejan.

Asociaciones Estáticas

Los objetos se relacionan con otros de varias formas. Una de las más frecuentes es a través de Asociaciones Estáticas. Este tipo de vínculo tiene la característica que su tiempo de duración es mayor al tiempo que tarda en ejecutarse el código que los vincula.

Las asociaciones estáticas son de gran utilidad pues permiten la estructuración de los objetos incorporando reglas de negocio. En su forma más simple es un vínculo entre dos objetos.

AI nivel de análisis se documentan como vínculos entre clases, sin embargo, es importante recordar que las clases son plantillas donde se definen los aspectos genéricos de los objetos, lo que implica que no son

10

Oficina Virtual de CBI Análisis y Diseño Orientado a Objetos

colecciones de objetos, por lo tanto, las asociaciones estáticas no son asociaciones entre conjuntos de objetos como se pueden dar en el Modelo Entidades y Asociaciones (ER).

Si tenemos una clase de objeto digamos la clase Alumno, es de esperar que como regla de negocio, todo alumno tenga asignado al menos un Profesor, y todo profesor tenga asignado muchos alumnos o ninguno, por lo que debe existir una asociación estática entre objetos de la clase Profesor y la clase Alumno. Esto se ilustra en la figura 5.

Profesor

@&veprofesor I%apellidoPaterno k%apellidoMaterno &no m bre @baja

1 . * O. . *

Alum no

t+matricula QapellidoPaterno I%apeIIidoMaterno @nombre

consultar() actualizar() a Ita ()

Figura 5

Muchas reglas de negocio se refieren a los niveles máximos y mínimos de vinculación entre distintos objetos de la aplicación. Por ejemplo, al decir un Alumno debe tener al menos un Profesor, quiere decir que puede tener de uno a más profesores.

En general la multiplicidad se expresará en las asociaciones estáticas binarias en forma de rango: Límite inferior .. Límite superior, colocándose en el lugar contrario de la clase que estemos examinando. Esto se puede observar en la figura 5.

La asociación mostrada anteriormente es binaria, ya que sólo involucra a dos clases, sin embargo, es posible que existan asociaciones estáticas que pueden vincular simultáneamente a varias clases, estas caen en categorías de ternarias, cuaternarias, etc., pero para las cuales la multiplicidad es irrelevante. Generalizando se puede decir que toda asociación que no sea binaria puede reemplazarse por asociaciones binarias y clases adicionales a las que se tengan.

11

Oficina Virtual de CBI Análisis de Requerimientos

Análisis de Requerimientos

El Análisis y Diseño Orientado a Objetos se distingue de otras metodologías en que incluye el levantamiento de requerimientos. Esta actividad es dejada a un lado en la mayor parte de las otras metodologías, lo cual provoca que las demás etapas realicen pequeños micro-levantamientos de requerimientos. Es claro que las especificaciones proporcionadas por los usuarios generalmente adolecen de falta de precisión en el requerimiento, así como de muchas ambigüedades y contradicciones, además de ser inocentemente breves. No puede considerarse el desarrollo de sistemas con tales documentos de entrada al método completo sin considerar establecer un proceso que realmente genera una especificación.

El efecto de manejar requerimientos erróneos es muy grave, pues constituyen los elementos de entrada para el proceso de desarrollo y todas las etapas del desarrollo se basan en los requerimientos, de tal forma que si se alimentan requerimientos equivocados al desarrollo, de desarrollará un sistema que cumplirá tales requerimientos, por lo que no se obtendrá el sistema que está esperando el usuario.

Desde el punto de vista de la metodología, el objetivo principal no es el levantar el requerimiento, sino más bien, hacer que el equipo de desarrollo se familiarice rápidamente con el problema. Por Io regular L::>

desarrollador no conoce el problema al que se enfrenta pues es especialista en hacer sistemas, no en el problema para el que desarrollará el sistema. En casos más afortunados, conoce el problema, sin embargo, no Io conoce a la profundidad que el usuario que convive diariamente con él. Sin embargo, queda claro para cualquiera, que la calidad del sistema es función directa del conocimiento que tenga el personal de desarrollo acerca del problema, ya que resultaría absurdo o casual, crear soluciones sobre problemas que no se conocen.

De Io anterior, se propone que la primera actividad es involucrar al personal de desarrollo dentro de la problemática del usuario. Sin embargo, el costo que tiene puede ser muy alto, por lo que es necesario encontrar un método que permita rapidez y un nivel alto de adquisición de conocimiento.

El modelo de Requerimientos se compone a su vez de tres modelos: 0 Modelo de Casos 0 Modelo de Interfaz 0 Modelo de Dominio del Problema

Cada uno contempla parte del conocimiento del usuario orientado a la especificación de las funciones básicas del sistema.

0 El Modelo de Casos extrae el conocimiento funcional fundamental del problema de una forma estructurada y progresiva, siendo la base para establecer la estructura del sistema. Este mOdei0 orienta todos los demás procesos del método.

0 El Modelo de Interfaz establece el vínculo visual entre el desarrollador y el usuario para concretar aspectos de la interacción que el sistema pudiese tener con su entorno externo, permitiendo la retroalimentación temprana de aspectos fundamentales para el conocimiento de la aplicación.

0 El Modelo de Dominio del Problema se establecerán los principales objetos que constituirán al sistema y las relaciones que tienen entre sí.

12

Oficina Virtual de CBI Análisis de Requerimientos

Modelo de Casos

Cuando se inicia el desarrollo de un sistema, lo primero que se viene a la mente, es qué es lo que se va a hacer. Por lo mismo, es necesario preguntar al usuario que es lo que se requiere que haga el sistema. Entonces el usuario, comienza a describir la funcionalidad que estará esperando que el sistema tenga. Si la persona que está levantando el requerimiento no conoce acerca del problema planteado, tenemos entonces, un gran problema de comunicación, es como un paciente con una enfermedad y el doctor no entiende los términos del paciente.

El Modelo de Casos plantea que todo principio es el establecer las principales transacciones que contendrá el sistema. Siendo una transacción cualquier interacción que el sistema tendrá con los agentes externos a él.

Es claro que un sistema tendrá un gran número de transacciones, sin embargo, es necesario tener cuidado de dejar que el usuario plantee a diestra y siniestra las transacciones que se le ocurran. La labor del analista es limitar al usuario a que plantee a lo más siete transacciones que a su juicio son las que caracterizan al sistema. Esto eliminará de entrada una gran cantidad de transacciones que en este momento del desarrollo sólo causarán confusión y pérdida de atención a los aspectos fundamentales.

En el caso del Oficina Virtual de CBI se estableció en un principio que las transacciones del Menú de Seguimiento son:

Seguimiento de alumnos Status de los alumnos Relación de alumnos por generación

0 indices de graduación por asesor

A continuación se describe con más detalle cada una de éstas transacciones.

Seguimiento de alumnos: se podrán hacer búsquedas de cinco formas todas ordenadas por posgrado:

O Por nombre (será necesario capturar apellido paterno, apellido materno y nombre)

c Por asesor (se elegirá de una lista de asesores) O Por año de ingreso (se elegirá de una lista de años) O Por año de egreso (se elegirá de una lista de años)

Por departamento (se elegirá de una lista de departamentos)

Mostrará los siguientes campos:

Doctorado en Ciencias Matrícula Apellido Paterno Apellido Materno

0 Nombre Nombre del Asesor Departamento Área Título de proyecto doctoral

0 Año de informe anual Clave de CONACYT

0 Vigencia de la beca CONACYT Trimestre de último reporte

0 Créditos cubiertos ú]timo trimestre inscrito Estado Promedio

0 Fecha de egreso

Otros posgrados 1 e

e

e

O

O

e

O

O

O

O

O

e

e

e O

O

e __

13

Matrícula Apellido Paterno Apellido Materno Nombre Grado Nombre del Asesor Área Título del proyecto de investigación Clave CONACYT Vigencia de la beca CONACYT Trimestre de último reporte Créditos cubiertos último trimestre inscrito Estado Promedio Fecha de examen predoctoral Fecha de eqreso

Oficina Virtual de CBI Análisis de Requerimientos

Ubicación de archivo Lugar de trabajo

Lugar de trabajo

Status de los alumnos: se podrán hacer búsquedas de tres formas: O Por matrícula (será necesario capturarla) O Por nombre (será necesario capturar apellido paterno, apellido materno y nombre(s)). O Por estado actual (se elegirá de una lista de estados: activos, titulados, no activos,

deserciones y bajas).

Se mostrará en pantalla los siguientes campos:

Alumnos de Posgrado Matrícula Apellido Paterno Apellido Materno Nombre Clave del Plan Plan Estado Actual Trimestre de inicio último trimestre inscrito Trimestres transcurridos Número de MB Número de B Número de S Número de NA Créditos cubiertos Promedio

Relación de alumnos por generación (inscritos en año X): Se elegirá el año de una lista. Se mostrarán en pantalla los siguientes campos:

Alumnos de Posgrado Apellido Paterno Apellido Materno Nombre Nombre del Asesor (es) Departamento Área

Dichos campos se mostrarán en relación al orden alfabético del apellido paterno de los alumnos

indices de graduación por asesor: se mostrará para todos los asesores de un posgrado y contendrá los siguientes campos:

Por asesor Apellido Paterno Apellido Materno Trimestre de ingreso Trimestre de egreso Número de trimestres en los que concluyó el

Promedio sobre los trimestres posgrado

14

Oficina Virtual de CBI Análisis de Requerimientos

En el modelo de casos cada transacción recibe el nombre de Caso. Cada Caso requiere que se especifique, no sólo su nombre sino también la secuencia de pasos necesarios para poderlo llevar a cabo. La secuencia de pasos estará establecida para transacciones que no contemplen situaciones de excepción o de error.

Cada interacción con el sistema será realizada por un agente externo a él. A este agente externo se le denomina Actor. Los actores no forman parte del sistema, sino que interactúan con el a través de Casos. El desarrollador no puede hacer muchas suposiciones acerca de su comportamiento, ya que por planteamiento es no determinístico, es decir, su interacción la puede plantear en cualquier momento que lo decida éI y no el sistema. Un actor no necesariamente tiene que ser una persona, sino puede ser otro sistema que deba interactuar con el que se está desarrollando.

El actor realiza su interacción con el sistema a través de un Caso, en el Caso se desarrollan los pasos que debe seguir el sistema para obtener la funcionalidad deseada.

En la notación UML, el Modelo de Casos se plantea por medio de un Diagrama de Casos, en los cuales los Casos se describen por medio de óvalos con el nombre del Caso. Los actores se describen por medio de la figura de alambre de una persona. La relación que existe entre los Actores y los Casos con los que interactúan se indica con flechas.

Los diagramas de Casos son muy simples en su planteamiento, sin embargo, la parte más interesante son las características que exhibirán tanto los Actores como los Casos.

Cuando un Caso tiene opciones sobre como llevarse a cabo, por ejemplo para realizar el seguimiento de alumnos se puede llevar a cabo por medio del nombre, departamento, asesor, año de ingreso o año de egreso entonces se puede aplicar especialización. Los casos son como clases y es por esto que se puede aplicar el concepto de especialización. Se van a tener casos concretos y casos abstractos.

Esto se va a mostrar a continuación.

UC Seguimiento de alumnos

Actor: Asistente de posgrado Caso abstracto: Seguimiento de alumnos Casos concretos: Seguimiento por asesor

Seguimiento por departamento Seguimiento por nombre Seguimiento por año de ingreso Seguimiento por año de egreso

15

Oficina Virtual de CBI Análisis de Requerimientos

Asistente Posgrado

Segu lmlen to - 3 a lumnos As 1s ten te Posgrado

S e g u l m l e n t o Segu lmlen to por Segu lmlen to Segu lmlen to por Segu lmtento por

p o r a s e s o r depar tamento p o r n o m b r e año de Ingreso año de eg reso

UC Sequimiento por nombre 1. Se pide el apellido paterno, materno y nombre (sistema). 2. Se captura el apellido paterno, materno y nombre (usuario). 3. Se verifica que ha sido capturada toda la información (sistema) 4. Se extrae de la base de datos la información (sistema). 5. Se despliega en pantalla la información (sistema).

UC Sequimiento por departamento 1. Se despliegan las opciones de departamentos (sistema). 2. Se elige el departamento (usuario). 3. Se extrae de la base de datos la información (sistema). 4. Se despliega en pantalla la información (sistema).

UC Sequimiento uor asesor 1. Se despliegan las opciones de asesores (sistema). 2. Se elige el asesor (usuario). 3. Se extrae de la base de datos la información (sistema). 4. Se despliega en pantalla la información de Seguimiento por asesor (sistema).

UC Sequimiento por año de ingreso 1. Se despliega las opciones de años de ingreso (sistema). 2. Se elige el año de ingreso (usuario). 3. Se extrae de la base de datos la información (sistema). 4. Se despliega en pantalla la información (sistema).

UC Sequimiento por año de eqreso 1. Se despliega las opciones de años de egreso (sistema). 2. Se elige el año de egreso (usuario). 3. Se extrae de la base de datos la información (sistema). 4. Se despliega en pantalla la información de Seguimiento por año de egreso (sistema).

UC Status de los alumnos

Actor: Asistente de Posgrado Caso abstracto: Status de los alumnos Casos concretos: Status de los alumnos por matrícula

Status de los alumnos por nombre Status de los alumnos por estado

16

Oficina Virtual de CBI Análisis de Requerimientos

Asrstente P o s g r a d o

Status de :-S alum nos Asis tente Posgrado

Status de los a lumnos por matr icu la

Status de los alum nos p o r n o m b r e

S t a b s d e l o s alum nos por es tado

UC Status de los alumnos por matrícula 1. Se pide la matrícula (sistema). 2. Se captura la matrícula (usuario). 3. Se verifica que se haya capturado la matrícula necesaria (sistema) 4. Se extrae de la base de datos la información (sistema). 5. Se despliega la información (sistema).

UC Status de los alumnos por nombre 1. Se pide el apellido paterno, apellido materno y nombre (sistema) 2. Se captura el apellido paterno, apellido materno y nombre (usuario). 3. Se verifica que se haya capturado la información necesaria (sistema) 4. Se extrae de la base de datos la información (sistema). 5. Se despliega la información (sistema)

UC Status de los alumnos Dor estado actual 1. Se despliegan las opciones de estados (sistema). 2. Se elige el estado (usuario). 3. Se extrae de la base de datos la información (sistema). 4. Se despliega en pantalla la información de Historia académica por estado actual (sistema).

UC Relación de alumnos por generación

Actor : Asistente de posgrado Caso concreto: Relación de alumnos por generación

UC Relación de alumnos uor qeneración (inscritos en año X) 1. Se despliega las opciones de años de inscripción (sistema). 2. Se elige un año (usuario). 3. Se extrae de la base de datos la información (sistema). 4. Se despliega en pantalla la información de Relación de alumnos por generación (sistema).

17

Oficina Virtual de CBI Análisis de Requerimientos

UC Índices de graduación por asesor

Actor: Asistente de posgrado Caso concreto: Índices de graduación por asesor

UC Índices de qraduación Dor asesor 1 . Se despliegan las opciones de asesores (sistema). 2. Se elige un asesor (usuario). 3. Se extrae de la base de datos la información (sistema). 4. Se despliega en pantalla la información de Índices de graduación por asesor (sistema).

Asistente Posgrado

lndrces de graduaclon p o r a s e s o r

Asistente Posgrado

Modelo de Interfaz

El modelo de Interfaz establece un vínculo entre el Usuario y el Analista, mostrando gráficamente cada Caso planteado. Consta de la definición de las interfaces principales que participarán en la ejecución de un Caso cuando el sistema exista. Por interfaces nos referimos a pantallas, reportes o llamadas a otros sistemas. Sin embargo aplica con mayor frecuencia a pantallas.

Es claro que un sistema puede estar compuesto por un gran número de pantallas, reportes y llamadas a otros sistemas, sin embargo, el modelo estará compuesto sólo por las interfaces más significativas.

En el caso de las pantallas, por cada Caso debemos establecer si tiene pantallas que clarifiquen la idea que se tiene del caso con el usuario. Generalmente podemos establecer como una regla que cada caso tendrá de dos a tres pantallas que podemos considerar como significativas. Con esta situación estamos filtrando pantallas de error, mensajes, opciones de menú, etc. Quedándonos con las pantallas que ayudarán a verificar que el conocimiento adquirido es el correcto.

A continuación se presenta la pantalla principal de la Oficina Virtual de CBI en la sección de Posgrado.

18

Oficina Virtual de U 3 1 Análisis de Requerimientos

Una vez que se da dic sobre el bo& entrar se pasa a la pantalla de Identifica& de usuario, en donde es necesario propordonar el nombre de usuario y contraseña. Una vez que se ingreso el nombre de usuario y contraseña correctas se pasa a la pantalla de Menú de Información de Alumnos que se ve de la siguiente manera:

Seguimiento de alumnos

Status do los alumnos

Relación de alumnos por generación

Indices de graduación por asesor _I"-. ". . - !. . ." . '. Maal

19

Oficina Virtual de CBI Anhiisis de Requerimientos

Ya que se eligii, alguna de las cuatro opciones anteriores se pasa a otros menús de selección para que finalmente se muestre cualquiera de las últimas pantallas del sistema, en las cuales se muestran datos de los alumnos dependiendo de la selección que se haya hecho. Una de éstas pantallas se muestra a continuach.

Diagramas de Transickh de Estados

Cuando se tienen vanas pantallas invduuadas, no sólo será necesario mostrar las más importantes, sino además, señalar la forma en la que se estadn acUvando dependiendo de la interaccih que tenga el usuarw con el sistema. Para poder plasmar este tipo de conocimiento, se utilizan diagramas de Transición de Estados, en los que se tienen estados y cada cambio de estado se realiza a través de una transición. Cada estado dentro de éstos diagramas denota una pantalla en la que el usuario estará introduciendo datos o bien navegando en la informacih En d momento que el usuario cambia de pantalla o bien genera un estimulo para que d sistema realice una acri6n se dice que cambia de estado por medio de una transición. A continuackk se muestra d Diagrama de Transición de Estados para la Aplicación de Posgrado en su W i n de Infamación de Alumnos.

20

Oficina Virtual de CBI Análisis de Requerimientos

Navegación de pantallas

Contraseria incorrecta

Edo lniclal

e Pantalla entrar Identificación

princlpal de usuario enuar

Menu de Información de Alumnos

Seguimiento de Alumnos

Status de los Alumnos Indices por

Relación por generacion Asesor

Opciones para Opciones Opciones Opciones Indices

Seguimiento para Status Re1 Alu Gen por Asesor

Datos para Datos para Datos para Datos indices

Seguimiento Status Re1 Alu Gen por Asesor

Después de eleglr la opción para cada caso se pasa a una pantalla en donde se plde el dato necesario para realizar la busqueda. he preferldo no hacer mucho incapie ya que no son pantallas importantes

El diagrama anterior se lee de la siguiente manera: Inicia en un estado llamado Estado Inicial el cual es inestable y pasa el sistema a la pantalla inicial, una vez que se da clic sobre la opción de entrar de Información de Alumno, pasa uno a la pantalla de Identificación de Usuario, mientras la contraseña sea incorrecta va a seguir allí, una vez que la contraseña es correcta, pasa a el Menú de Información de Alumnos, en donde hay cuatro opciones, al elegir alguna de éstas cuatro opciones se mostraran pantallas diferentes y se pedirá información diferente, una vez proporcionada la información se pasa a las últimas pantallas del sistema que son en donde se muestran los datos de los alumnos dependiendo del tipo de búsqueda que se haya realizado. Todos los esfuerzos hechos hasta el momento son con la finalidad de clarificar ideas y confirmar que el conocimiento adquirido es correcto, por lo que no es necesario crear diagramas de transición de estados para todos los casos que se hayan detectado.

El Modelo de Interfaz se realiza en forma simultánea con el Modelo de Casos pues el último determina al primero y el primero permite retroalimentación para ajustar el último.

Modelo de Dominio del Problema

Los sistemas desarrollados bajo un esquema de Orientación a Objetos, se dice que su estructura esta centrada en la información. Hasta este punto se tienen identificados los requerimientos funcionales principales, pero falta identificar los principales objetos de información que determinarán la estructura del sistema.

El Modelo de Dominio del Problema tiene como objetivo principal identificar los objetos de información y las relaciones que guardan entre sí. Lo anterior se plasma en un Diagrama de Clases. Para cada Caso del Modelo de Casos, se obtiene un Diagrama de Clases. Para cada Caso del Modelo de Casos, se obtiene un Diagrama de Clases, de tal forma que éste contendrá los objetos que necesite para desarrollarse.

21

Oficina Virtual de CBI Análisis de Requerimientos

La forma de obtenerlo sigue un esquema sistematizado en el cual hay una serie de pasos para llevarlo a cabo. Los pasos a seguir son los siguientes:

Identificación de los Candidatos a Clases a partir del Caso. Dado que se parte del Caso, se tomará la descripción textual del Caso y se identificarán los sustantivos de cada oración como candidatos a objetos y consecuentemente a clases. También es posible identificar los sustantivos identificando los verbos que actúan sobre ellos, de tal forma que al detectar los verbos se puede llegar a los sujetos de las oraciones.

Es claro que algunos de los candidatos seleccionados de la forma anteriormente escrita no deben convertirse en clases, pues no corresponden a objetos. Cuando se realice la eliminación debe considerarse los siguientes criterios:

Registro: Todos los objetos que se hayan seleccionado necesitan almacenar información pues, de otra manera no tendrán estado por lo que no serán objetos. Más de un atributo: No es una regla, pero cuando un objeto tiene un solo atributo, lo más seguro es que en realidad sea un atributo de otro objeto. De cualquier manera hay que ser cuidadosos pues aunque raros, es posible que existan objetos con un solo atributo. Funcionalidad: Los objetos deben tener comportamiento que sea relevante para el problema, no pueden existir objetos sin métodos o bien con comportamientos que dependan de la implantación del sistema, de tal forma que aquellos candidatos que no se les observen comportamiento pueden ser eliminados. Atributos y funcionalidad comunes: Todos los atributos y métodos propuestos para la clase deben aplicar para todos y cada uno de los objetos que se espera se generen a partir de ella. En principio no se puede aplicar especialización en las clases. Más de una instancia: Una clase debe generar más de un objeto. Aunque esta característica no puede atenderse como una regla, con frecuencia ocurre que dentro de los candidatos a clases tenemos objetos que sólo tendrán una instancia y esta situación no cambiará en el tiempo, lo que permite que esta situación incorpore en todo el sistema.

Establecimiento de los atributos básicos de cada clase. Una vez establecidas las clases iniciales, es posible asignarles atributos básicos a cada una. En este punto se establece que la información que contendrán las clases será de varios tipos:

Información de referencia: En este caso sólo es necesario designar una clave y una descripción. Información sensible al tiempo: Son clases que estarán registrando transacciones de la organización.

Determinación de los atributos que pudiesen ser llaves relacionales. Aún cuando se está en una etapa de análisis, existen algunas suposiciones acerca de la implantación que pueden influir en las estructuras de las clases. En la actualidad los manejadores de bases de datos orientados a objetos sólo son curiosidades y no se usan en forma extensiva en el mercado de desarrollo de sistemas, en su lugar se utilizan manejadores de bases de datos en el modelo relacional. Por lo anterior es importante comenzar a plantear que las clases serán la base para la definición de relaciones , por Io que es necesario establecer los atributos que constituirán la llave relacional.

Identificación de las asociaciones estáticas entre clases. Una vez establecidas las clases en forma básica es necesario establecer los vínculos que tendrán entre sí los objetos. La forma en la que se realiza es: Establecer todas las combinaciones válidas de asociaciones binarias. Se verifica que en realidad los objetos tengan vínculos entre sí. Se establecen todas las combinaciones válidas de asociaciones ternarias. Se establecen todas las combinaciones válidas de asociaciones cuaternarias. Se indican cuáles son las combinaciones válidas y se une por medio de una línea.

Identificación de la multiplicidad o cardinalidad de las asociaciones binarias detectadas. Una vez identificadas las asociaciones se está en posición de establecer la cardinalidad de todas las asociaciones binarias, lo que indicará las reglas de negocio que la información debe cumplir en todo momento para que guarde integridad entre los distintos elementos que la componen. La forma de detectar la cardinalidad, consiste en establecer cuantos elementos a lo mínimo y a lo máximo podemos relacionar un objeto con los

22

Oficina Virtual de CBI Análisis de Requerimientos

objetos del otro lado de la asociación. Los valores que pueden darse son O, 1 , 2.....; cuando se desconoce en forma precisa el número de objetos que se relacionan, se aplicará el concepto de muchos a N.

Reemplazo de asociaciones que impliquen a más de dos clases y/o asociaciones cuya multiplicidad sea uno a uno o muchos a muchos, por asociaciones binarias de uno a muchos. Cuando el diagrama contempla asociaciones, existe la posibilidad que el modelo oculte información en las asociaciones muchos a muchos, pues en ellas se establecen vínculos complejos entre conjuntos de objetos. Esta será la razón principal por la cual es deseable reemplazar tales asociaciones por asociaciones uno a muchos que describan con mayor amplitud los vínculos. La forma de simplificar las asociaciones muchos a muchos, consiste en incluir una nueva clase en lugar de la asociación. Esta clase nueva estará asociada con las existentes con asociaciones uno a muchos dirigiendo el lado muchos hacia el extremo en donde se ubica la clase nueva. Los atributos de la clase nueva serán las llaves relacionales de las clases con quien se estará vinculando, más los atributos que correspondan por situación propia. Por ejemplo: Se han identificado las clases Asesor, ADocCienc (Alumno de Doctorado en Ciencias) y AOPosgrado (Alumno de Otros Posgrados). Con la siguiente regla de negocio: un Asesor puede tener cero o más alumnos y un alumno puede tener 1 o más asesores por lo tanto el diagrama de clases queda con relaciones de muchos a muchos como se muestra a continuación:

A s e s or

1. *

O . . * A O P o s g r a d o s

1 . . *

La simplificación del diagrama anterior es la siguiente:

A s e s o r

1

o. *

A s e s o r A l u m n o

o . * A D o c C i e n c

l..*

1 A O P o s g r a d o s

l..*

1 A D o c C i e n c

La razón de este procedimiento se establece cuando se tiene que si las clases generan una relación en el momento que se implantan dentro de un modelo relacional, todas las clases generarán relación así como las asociaciones. En el caso de las relaciones uno a muchos, el número de tuplas que tendría la relación

23

Oficina Virtual de CBI Análisis de Requerimientos

correspondiente a la asociación sería idéntico al número de tuplas que tendría la relación correspondiente a la clase ubicada en el extremo muchos de la asociación. Está situación permitirá unirlas de tal manera que da la impresión que la asociación no generó relación. Con las asociaciones muchos a muchos esto no ocurre y generan forzosamente una relación.

Por lo anterior es conveniente modelar tal relación en forma de clase desde este punto dentro del análisis para simplificar la implantación en el modelo relacional.

Se detectó una estructura de herencia, la cual se muestra en el siguiente diagrama:

A l u m n o P o s g

Qmatrlcula

e p p a t e r n o apMaterno

nombre trlm lnic

8 @ltTrIm @oMb

6 n oB & n o s I q n o N a

+redcub

@conacyt Qvlgencia

@ultRep QfechaEgreso @trabajo

@p ro m

A D o c C l e n c A O P o s g r a d o s $)proyDoct

&proylnvest & e x a m e n P r e d o c

consul tarAOP() $actuallrarAOP()

d+nfAnuaI &rchlvo

consul tarADC() actualtrarADC()

Modelo d e c l a s e s c o n asoc lac lón de herencta

En éste diagrama las dos subclases (AOPosgrados y AdocCienc) heredan los atributos de la clase principal y las subclases sólo especifican los atributos que son únicos para cada subclase. Cada subclase cuenta con sus propios métodos.

Después de todo lo anterior se esta en posibilidades de plantear el Diagrama de todas las clases encontradas, y ese es el siguiente:

24

Oficina Virtual de CBI Análisis de Requerimientos

A s e s o r

+veAsesor apPaterno

Cont ra tac lon 8 apMaterno Naclonal ldad

w e c o n t r a t a c t o n * w o m b r e o * 'lene @ w e N a c l o n a l l d a d &poContratac,on ,%fechaNac!m tenm I$)naclonalldad

+Mal! ,+beca &coordlnaclon

1

O '

G r a d o A s e s o r A ! u m n o

, @ v e ~ r a d o l t l e n e l * A O P o s g r a d o s ' ' * i@matrlcula * ' l e n e A D o c C l e n c

6 s rad o W v e A s e s o r

o . , ' 1 ' O ' 1 '

1 . 0 t lene

cursa 1 E s t a d o t iene p e r t e n e c e

&cveEstado 1 ,+stado

@departamento " ,

per tenece

1

A r e a

1 @ c v e A r e a &area

Para simplificar la presentación del anterior diagrama no se pusieron los atributos correspondientes a las clases de AOPosgrados y AdocCienc, los atributos de éstas se han mostrado en el diagrama anterior a éste.

Modelo de Análisis

El modelo de requerimientos establece el comportamiento externo del sistema y en lo específico del Caso que se este analizando. Esto se plantea definiendo la forma de la transacción, identificando los elementos visuales que estarán actuando en la interfaz y los objetos que se originan por la misma aplicación.

El siguiente paso es identificar las interacciones más significativas entre los objetos obtenidos y por supuesto descubrir nuevos objetos que pueden ayudar a llevar a cabo la interacción. Lo anterior constituye el principal objetivo del proceso para la obtención del Modelo de Análisis.

Existen diagramas de UML que estudian la interacción entre los objetos que componen un sistema para llevar a cabo la funcionalidad del Caso correspondiente.

Proceso de Análisis

El proceso de análisis consiste en identificar los objetos dinámicos de un programa y las relaciones dinámicas que guardan entre sí. El concepto de dinámico en contraposición al persistente es: todo objeto o vínculo entre objetos cuyo tiempo de duración está acotado por el tiempo que dure en ejecución el programa que los crea.

25

Oficina Virtual de CBI Análisis de Requerimientos

Este proceso establece los objetos dinámicos, su tipo, las relaciones que guardan entre sí, y las clases de donde se originan. Como se están describiendo objetos dinámicos, se está viendo el programa a tiempo de ejecución, lo que implica que es necesario establecer un casa en ejecución para el programa, o sea, un escenario en ejecución.

Un escenario es una instancia de un caso, de tal manera que sigue todos los pasos descritos por el caso, con valores reales de los intercambios de información entre el actor y el programa. En términos generales pueden establecerse que un escenario puede visualizarse como un caso de prueba.

Definición de escenarios

Para cada caso del modelo de requerimientos, se establecen sus escenarios los cuales describirán instancias de los Casos en modalidades normales, excepcionales y de error.

Cada escenario establecerá valores específicos para cada objeto definido en los pasos de los casos, así como especificará de manera única cada acción del actor, de tal manera que no existan opciones en la ejecución del caso.

Ejemplos de un escenario lo componen las siguientes partes: Descripción del caso Descripción de los valores para cada paso del Caso

Para cada caso se seleccionan los escenarios más probables y que generen mejor entendimiento de la operación del Caso. Los Casos que se consideran más significativos son:

Escenario de operación más simple del Caso. Escenario de operación correcta más representativa del Caso.

0 Escenario de operación incorrecta del Caso. Escenario de operación con excepciones del Caso.

Diagrama de Colaboración

Para un escenario dato, se puede proceder a la identificación de los distintos tipos de objetos apoyándose en una herramienta notacional: los diagramas de colaboración. Un diagrama de colaboración es la extensión de un diagrama de objetos. Además de las relaciones entre objetos, el diagrama de colaboración muestra mensajes que se envían los objetos entre sí. Por lo general, evitarán la multiplicidad dato que podría ser fuente de confusión.

Para representar un mensaje dibujará una flecha cerca de la línea de asociación entre dos objetos, esta flecha apunta al objeto receptor, el tipo de mensaje se mostrará en una etiqueta cerca de la flecha; por lo general, el mensaje indicará al objeto receptor que ejecute una de sus operaciones. El mensaje finalizará con un par de paréntesis, dentro de los cuales colocará los parámetros (en caso de haber alguno) con los que funcionará la operación.

Cualquier diagrama de colaboración se puede convertir en un diagrama de secuencias y viceversa.

Diagrama de Secuencias

El diagrama de secuencias consta de objetos que se representan del modo usual: rectángulos, mensajes presentados por líneas continuas con una punta de flecha y el tiempo representado como una progresión vertical.

Objetos

Los objetos se colocan cerca de la parte superior del diagrama de izquierda a derecha y se acomodan de manera que simplifiquen al diagrama. La extensión que está debajo (y en forma descendente) de cada

26

Oficina Virtual de CBI Análisis de Requerimientos

objeto será una línea discontinua conocida como línea de vida de un objeto. Junto con la línea de vida de un objeto se encuentra un pequeño rectángulo conocido como activación, el cual representa la ejecución de una operación que realiza el objeto. La longitud del rectángulo se interpreta como la duración de la activación.

Mensaje

Un mensaje que va de un objeto a otro pasa de la línea de vida de un objeto a la de otro. Un objeto puede enviarse un mensaje a sí mismo. Un mensaje puede ser simple, sincrónico o asincrónico. Un mensaje simple es la trasferencia del control de un objeto a otro. Si un objeto envía un mensaje sincrónico, esperará la respuesta de tal mensaje antes de continuar con su trabajo. Si un objeto envía un mensaje asincrónico, no esperará una respuesta antes de continuar. En el diagrama de secuencias, los símbolos del mensaje varían, por ejemplo, la punta de flecha de un mensaje sincrónico está rellena y la de un asincrónico tiene una sola I ínea .

Tiempo

El diagrama representa al tiempo en dirección vertical. El tiempo se inicia en fa parte superior y avanza hacia la parte inferior. Un mensaje que este más cerca de la parte superior ocurrirá antes que uno que esté cerca de la parte superior.

A continuación se muestran los escenarios más significativos de todos los Use case que componen la sección Información de Alumnos. Inmediatamente después de cada escenario se presentan los diagramas de colaboración y de secuencias.

Escenario Dara UC Seauimiento Dor nombre

Escenario de operación más simple.

Paso Descripción 1 El sistema pide el apellido paterno, materno

y nombre

paterno, apellido materno y nombre

3 El sistema verifica que se han completado

4 El sistema extrae de la base de datos la

I S Se despliega en pantalla la información

1 2 La asistente de posgrado teclea el apellido

todos los datos

información requerida.

Escenario ok

Apellido Paterno:COVARRUBIAS Apellido Materno: MALDONADO Nombre: GUILLERMO ok

ok

Matricula: 79353965 Ap. Paterno: COVARRUBIAS Ap. Materno: MALDONADO Nombre: GUILLERMO Cve. Posgrado: 31 Posgrado: MAESTRIA EN FISICA Cve Estado Actual: 3 Trim Inicio: 771 Ult Trim:78P Trim Transcurridos: 5 No. MB: 8 No. B: O No. S: O No. NA: O Cred. Cub.: 248 Prom.: 10

27

Oficina Virtual de CBI Análisis de Requerimientos

Nota: En el escenario anterior se omitieron algunos datos que la aplicación será capaz de presentar, esto se hizo ya que no son relevantes y no afectan en nada a la presentación del escenario.

Diaqrama de Colaboración :

1 tecleaDatos ( ) -. __., oPanta l laBSPN

: c P B S P N

Asistente Posqrado

2 envlaDatos ( )

:i

oPanta l laDSPN c P D S P N

oVerlf lcaDatos

7- 5 acomodaDatos ( )

oDespl ieoaDatos :cDD

4 regresaDatos ( ) A

3 obtenerDatos ( )

.;.* oAdmonDatos

.cAD

Diaqrama de Secuencia:

As I S ten te Posqrado

oPantal laBSPN oPantal laDSPN oVerif lcaDatos oDesplleqaDatos oAdmonDatos c P B S P N : c P D S P N .cDD fl

tecleaDatos ( ) :> enviaDatos ( ) :. obtenerDatos ( )

> regresaDatos ( )

<.:x

acomodaDatos ( ) .::'

No ta BSPN - Busqueda Segulmtento Por Nombre DSPN -Datos Segu lmlen to Por Nombre

Escenario de operación incorrecta

Paso Escenario Descripción 1 ok El sistema pide el apellido paterno, materno

y nombre

28

Oficina Virtual de CBI Análisis de Requerimientos

~ paterno, apellido materno y nombre

El sistema verifica que se han completado todos los datos

4

Se despliega en pantalla la información 5

El sistema extrae de la base de datos la información requerida.

liaqrama de Colaboración:

1 tec leaDatos ( )

4 tecleaDatos ( ) As is ten te

Posarado ..A

oPantallaBSPN .cPBSPM

3 da tos lnco rdc tos ( )

Apellido Materno: MALDONADO Nombre: Incorrecto, le indica el error en la pantalla y no le permite cambiar de pantalla hasta que sea correcto. ok

Matricula: 79353965 Ap. Paterno: COVARRUBIAS Ap. Materno: MALDONADO Nombre: GUILLERMO Cve. Posgrado: 31 Posgrado: MAESTRIA EN FISICA Cve Estado Actual: 3 Trim Inicio: 771 Ult Trim:78P Trim Transcurridos: 5 No. MB: 8 No. B: O No. S: O No. NA: O Cred. Cub.: 248 Prom.: 10

oPantallaDSPN :cPDSPM

y- 8 acomodaDatos ( )

oDesplienaDatos :cDD

A 7' m anda Datos ( )

2 eyv jaDatos ( ) 5 er iv laDatos ( )

oAdmonDatos :cAD

oVerificaDatos :cVD 6 obtenerDatos ( )

7

Nota: BSPN - Busqueda Seguimiento Por Nombre DSPN - Datos Seguimiento Por Nombre

29

Oficina Virtual de CBI Análisis de Requerimientos

Diaqrama de Secuencia:

oPantailaB SPN oPantallaDSPN oVerhcaDatos oDesplleqaDatos oAdrnonDatos cPBSPM cPDSPM

p o s q r a d o IecleaDatos ( ) Asistente

;> envlaDatos ( )

datoslncorrectos ( ) ,”’

< tecleaDatos ( )

2. ,’ envlaDatos ( ) obtenerDatos ( )

> rnandaDatos ( )

4.’

< acornodaDatos ( )

Escenario con operación de excepción del Caso

Paso 1

2

3

Descripción El sistema pide el apellido paterno, materno / nombre -a asistente de posgrado teclea el apellido 3aterno, apellido materno y nombre

3 sistema verifica que se han completado :odos los datos 3 sistema extrae de la base de datos la nformación requerida. Como no hay nformación muestra lo siguiente

Escenario Ok

Apellido Paterno:COVARRUBIAS Apellido Materno: MALDONADO Nombre: GUILLERMO Ok

Matricula: Ap. Paterno: Ap. Materno: Nombre: Cve. Posgrado: Posgrado: Cve Estado Actual: Trim Inicio: Ult Trim: Trim Transcurridos: No. MB: No. B: No. S: No. NA: Cred. Cub.: Prom. :

30

Oficina Virtual de CBI Análisis de Requerimientos

Diaqrama de Colaboración:

1 . tecleaDatos ( )

-:., o P a n t a l l a B S P N c P B S P N

AsIstetite Posqrado

o P a n t a l l a D S P N

, c P D S P N

2 envlaDatos ( )

‘J

oVeri f lcaDatos

.cVD

\ 5 pane l lavac la ( )

oDespl leqaDatos

:cDD

4 noHayDatos ( ) A

3 obtenerDatos ( )

:> o A d m o n D a t o s

.cAD

N o t a B S P N - B ú s q u e d a S e g u m e n t o P o r N o m b r e

D S P N - Datos Segutmiento Por Nombre

Diaqrama de Secuencia:

oPantal laBSPN oPantal laDSPN oVerl f lcaDatos oDespl leqaDatos oAdmonDatos Asistente c P B S P N c P D S P N fl .cDD

Posarado

tecleaDatos ( ) ..> envlaDatos ( )

.~> obtenerDatos ( ) >

noHayDatos ( ) ,...- .

pantal lavacla ( ) ~:.-.

Escenario para UC Sequimiento por departamento

Escenario de oueración más simule.

Paso Escenario Descripción 1 Ok El sistema despliega las opciones de

departamentos

los departamentos 2

Ok El sistema extrae de la base de datos la 3

Departamento: IPH La asistente de posgrado elige alguno de

31

Oficina Virtual de CBI Análisis de Requerimientos

4 información reauerida. Se despliega en pantalla la información. Matricula: 79353965

Ap. Paterno: COVARRUBIAS Ap. Materno: MALDONADO Nombre: GUILLERMO Cve. Posgrado: 31 Posgrado: MAESTRIA EN FISICA Cve Estado Actual: 3 Trim Inicio: 771 Ult Trim:78P Trim Transcurridos: 5 No. MB: 8 No. B: O No. S: O No. NA: O Cred. Cub.: 248 Prom.: 10

1

Nota: En el escenario anterior se omitieron algunos datos que la aplicación será capaz de presentar, esto se hizo ya que no son relevantes y no afectan en nada a la presentación del escenario.

Diagrama de Colaboración:

1 selecciona ( ) -_ "2 oPanta I IaBSPD

. c P B S P D

Aslstente Posqrado

oPanta l laDSPD c P D S P D

Y 5 acomodaDalos ( )

oDespl ieqaDatos

2 envlaSelecclon ( )

oVerlf icaDatos :cVD

3 obtenerDatos ( ) :>

4 mandaDatos ( ) /\

oAdmonDatos .cAD

Nota B S P D - Busqueda Segulmlento Por Depar tamento D S P D - Datos Segulmlento Por Depar tamento

32

Oficina Virtual de CBI Análisis de Requerimientos

Diaqrama de Secuencia:

oPantal laBSPD oPantal laDSPD oVerif icaDatos oDesplleqaDatos oAdmonDatos Asistente c P B S P D . c P D S P D fl

P o s q r a d o

selecciona ( ) '.. __,I envlaSeleccion ( )

:> obtenerDatos ( )

mandaDatos ( ) > .:I

acornodaDatos ( ) .N -_

Escenario con operación de excepción del Caso

Paso

4

Descripción El sistema despliega las opciones de deDartamentos La asistente de posgrado elige alguno de los dePartamentos El sistema extrae de la base de datos la información reauerida. Se despliega en pantalla la información.

Escenario Ok

Departamento: IPH

Ok, pero no existe ningún registro.

Matricula: Ap. Paterno: Ap. Materno: Nombre: Cve. Posgrado: Posgrado: Cve Estado Actual: Trim Inicio: Ult Trim: Trim Transcurridos: No. MB: No. B: No. S: No. NA: Cred. Cub.: Prom. :

33

Oficina Virtual de CBI Análisis de Requerimientos

Diaqrama de Colaboración:

1 selecciona ( )

Aslstente Posqrado

oPantal laDSPD c P D S P D

2 envlaSelecclon ( ) \ ' v'

oVerif icaDatos

\- 5 pantallaVacla ( )

oDespl ieqaDatos

3 ObtenerDatos ( )

.;>

4 4 noHayDatos ( )

oAdrnonDatos

No ta BSPD - Busqueda Segulmlento Por Depar tamento D S P D - Datos Seguimlento Por Departamento

Diaqrama de Secuencia:

oPantallaBSPD oPantallaDSPD oVerlflcaDatos oDesplleqaDatos oAdrnonDatos Aslstente

Posqrado .cPBSPD .cPDSPD fl .cDD

selecciona ( ) ::. envlaSeleccion ( ) :> obtenerpatos ( )

> noHayDatos ( )

<:

pantallaVacla ( ) .,,-

Escenario Dara UC Sequimiento por asesor

Escenario de operación más simple.

Paso Escenario Descripción 1 Ok El sistema despliega las opciones de

1 asesores 2 I La asistente de posgrado elige alguno de 1 Asesor: Aguilar Aguilar Antonio

los asesores

información requerida. 3

Matricula: 79353965 Se despliega en pantalla la información. 4

ok El sistema extrae de la base de datos la

34

Oficina Virtual de CBI Análisis de Requerimientos

1

c

i i

Ap. Paterno: COVARRUBIAS Ap. Materno: MALDONADO Nombre: GUILLERMO Cve. Posgrado: 31 Posgrado: MAESTRIA EN FISICA Cve Estado Actual: 3 Trim Inicio: 771 Ult Trim:78P Trim Transcurridos: 5 No. MB: 8 No. B: O No. S: O No. NA: O Cred. Cub.: 248 Prom.: 10

Vota: En el escenario anterior se omitieron algunos datos que la aplicación será capaz de presentar, esto se lizo ya que no son relevantes y no afectan en nada a la presentación del escenario.

Diaclrama de Colaboración Y de Secuencia: Ambos diagramas se han omitido ya que son muy similares a los diagramas de Escenario de operación más simple de UC Seguimiento por Departamento la diferencia es el nombre de los objetos, los cuales se muestran a continuación:

Nombre Anterior Nombre Actual Panta1laBSPD:cPBSPD (Pantalla Búsqueda Panta1laBSPA:cPBSPA (Pantalla Búsqueda Sequimiento por Departamento) ~ Seguimiento por Asesor) Pantal1aDSPD:cPDSD (Pantalla Datos I Panta1laDSPA:cPDSPA (Pantalla Datos I Seguimiento por Departamento) 1 Seguimiento por Asesor) .

Escenario con operación de excepción del Caso

I Paso 1 1

2

3

4

Descripción El sistema despliega las opciones de asesores La asistente de posgrado elige alguno de los asesores El sistema extrae de la base de datos la información requerida. Se despliega en pantalla la información.

Escenario ok

Asesor: Aguilar Aguilar Antonio

Ok, pero no existe ningún registro.

Matricula: Ap. Paterno: Ap. Materno: Nombre: Cve. Posgrado: Posgrado: Cve Estado Actual: Trim Inicio: Ult Trim: Trim Transcurridos: No. MB: No. B: No. S:

35

Oficina Virtual de CBI Análisis de Requerimientos

I No. NA: Cred. Cub.: Prom.:

Diaqrama de Colaboración Y de Secuencia:

Ambos diagramas se han omitido ya que son muy similares a los diagramas de Escenario de operación de excepción de UC Seguimiento por Departamento la diferencia es el nombre de los objetos, los cuales se muestran a continuación:

Nombre Anterior Nombre Actual Pantal1aBSPD:cPBSPD (Pantalla Búsqueda

Seguimiento por Asesor) Seguimiento por Departamento) Pantal1aBSPA:cPBSPA (Pantalla Búsqueda

Seguimiento por Asesor) Seguimiento por Departamento) Pantal1aDSPA:cPDSPA (Pantalla Datos Pantal1aDSPD:cPDSD (Pantalla Datos

Escenario Dara UC Seauimiento Dor año de inareso

Escenario de oDeración más simule.

r

t c

L 1 I

Paso 1 2

3

4

Descripción El sistema despliega las opciones de año La asistente de posgrado elige alguno de los años El sistema extrae de la base de datos la información requerida. Se despliega en pantalla la información.

Escenario ok Año: 1979

ok

Matricula: 79353965 Ap. Paterno: COVARRUBIAS Ap. Materno: MALDONADO Nombre: GUILLERMO Cve. Posgrado: 31 Posgrado: MAESTRIA EN FISICA Cve Estado Actual: 3 Trim Inicio: 771 Ult Trim:78P Trim Transcurridos: 5 No. MB: 8 No. 8: O No. S: O No. NA: O Cred. Cub.: 248 Prom.: 10

Vota: En el escenario anterior se omitieron algunos datos que la aplicación será capaz de presentar, esto se lizo ya que no son relevantes y no afectan en nada a la presentación del escenario.

3iaarama de Colaboración Y de Secuencia: 4mbos diagramas se han omitido ya que son muy similares a los diagramas de Escenario de operación más simple de UC Seguimiento por Departamento la diferencia es el nombre de los objetos, los cuales se muestran a continuación:

Nombre Anterior Nombre Actual Pantal1aBSPD:cPBSPD (Pantalla Búsqueda 1 Pantal1aBSPA:cPBSPAI (Pantalla Búsqueda

1 Seguimiento por Departamento) 1 Seguimiento por Año de Ingreso)

36

Oficina Virtual de CBI Análisis de Requerimientos

Pantal1aDSPD:cPDSD (Pantalla Datos ' Pantal1aDSPA:cPDSPAI (Pantalla Datos Seguimiento por Departamento) Seguimiento por Año de Ingreso)

Escenario con operación de excepción del Caso

L

I

I

t

Paso 1 2

3

4

Descripción fl sistema desplieqa las opciones de años -a asistente de posgrado elige alguno de os años 3 sistema extrae de la base de datos la nformación requerida. Se despliega en pantalla la información.

Escenario ok Año: 1975

Ok, pero no existe ningún registro.

Matricula: Ap. Paterno: Ap. Materno: Nombre: Cve. Posgrado: Posgrado: Cve Estado Actual: Trim Inicio: Ult Trim: Trim Transcurridos: No. MB: No. B: No. S: No. NA: Cred. Cub.: Prom. :

liaqrama de Colaboración y de Secuencia:

4mbos diagramas se han omitido ya que son muy similares a los diagramas de Escenario de operación de excepción de UC Seguimiento por Departamento la diferencia es el nombre de los objetos, los cuales se muestran a continuación:

Nombre Anterior Nombre Actual Pantalla6SPD:cPBSPD (Pantalla Búsaueda 1 Pantalla6SPA:cPBSPAI (Pantalla Búsqueda Seguimlento por Departamento)

Pantal1aDSPA:cPDSPAI (Pantalla Datos Pantal1aDSPD:cPDSD (Pantalla Datos Seguimiento por Año de Ingreso)

Seguimiento por Departamento) 1 Seguimiento por Año de Ingreso)

Escenario Dara UC Seauimiento Dor año de eqreso

Escenario de operación más simple. Igual al Escenario para UC Seguimiento por año de ingreso.

Diaarama de Colaboración y de Secuencia:

Ambos diagramas se han omitido ya que son muy similares a los diagramas de Escenario de operación más simple de UC Seguimiento por Departamento la diferencia es el nombre de los objetos, los cuales se muestran a continuación:

37

Oficina Virtual de CBI Análisis de Requerimientos

~ Nombre Anterior Nombre Actual I

1 Pantal1aBSPD:cPBSPD [Pantalla Búsqueda 1 PantallaBSPA:cPBSPAE(Pantalla Búsqueda Seguimiento por Departamento)

Seguimiento por Departamento) Seguimiento por Año Egreso) Pantal1aDSPA:cPDSPAE (Pantalla Datos Pantal1aDSPD:cPDSD (Pantalla Datos Seguimiento por Año Egreso)

I ~

Escenario con operación de excepción del Caso: Igual al escenario para UC Seguimiento por año de ingreso.

Diaarama de Colaboración Y de Secuencia:

Ambos diagramas se han omitido ya que son muy similares a los diagramas de Escenario de operación de excepción UC Seguimiento por Departamento la diferencia es el nombre de los objetos, los cuales se muestran a continuación:

I Nombre Anterior Nombre Actual 1 Pantalla6SPD:cPBSPD (Pantalla Búsqueda 1 PantallaBSPA:cPBSPAE(Pantalla Búsqueda Seguimiento por Departamento)

Seguimiento por Año Egreso) Seguimiento por Departamento) Pantal1aDSPA:cPDSPAE (Pantalla Datos Pantal1aDSPD:cPDSD (Pantalla Datos Seguimiento por Año Egreso)

1 I I ~~

Nota: Los diagramas de Secuencia y Colaboración del Use Case anterior son muy similares a los de los Use Case que están de aquí en adelante, por lo que ya no serán presentados.

Escenario Dara UC Status de los alumnos por matrícula

Escenario de oDeración más simple

Paso Descripción 1 El sistema pide la matrícula del alumno

sobre el cual se va a hacer la consulta 2 La asistente de posgrado teclea la matrícula 3 El sistema verifica que se han completado

4 El sistema extrae de la base de datos la

5 Se despliega en pantalla la información

todos los datos

información requerida.

Escenario ok

Matrícula:79353965 ok

ok

Matricula: 79353965 Ap. Paterno: COVARRUBIAS Ap. Materno: MALDONADO Nombre: GUILLERMO Cve. Posgrado: 31 Posgrado: MAESTRIA EN FISICA Cve Estado Actual: 3 Trim Inicio: 771 Ult Trim:78P Trim Transcurridos: 5 No. MB: 8 No. B: O No. S: O No. NA: O Cred. Cub.: 248 Prom.: 10

38

Oficina Virtual de CBI Análisis de Requerimientos

Nota: En el escenario anterior se omitieron algunos datos que la aplicación será capaz de presentar, esto se hizo ya que no son relevantes y no afectan en nada a la presentación del escenario.

Escenario de operación incorrecta

Paso Descripción 1 El sistema pide la matrícula del alumno

sobre el cual se va a hacer la consulta 2 La asistente de posgrado teclea la matrícula

El sistema verifica que se han completado todos los datos

-

El sistema extrae de la base de datos la I información requerida.

5 ~ Se despliega en pantalla la información

L

I '

L

I ' 1 :

L

Escenario ,k

Yatrícula capturada incorrectamente [ncorrecto, el sistema envía un mensaje de 3rror y no permite seguir a la asistente de 2osgrado hasta que no captura una matrícula válida. Matrícula:79353965 3k

Matricula: 79353965 Ap. Paterno: COVARRUBIAS Ap. Materno: MALDONADO Nombre: GUILLERMO Cve. Posgrado: 31 Posgrado: MAESTRIA EN FÍSICA Cve Estado Actual: 3 Trim Inicio: 771 Ult Trim:78P Trim Transcurridos: 5 No. MB: 8 No. B: O No. S: O No. NA: O Cred. Cub.: 248 Prom.: 10

Escenario de oDeración de excepción del caso

Paso Escenario Descripción 1

Matrícula:79353965 La asistente de posqrado teclea la matrícula 2

Ok El sistema pide la matrícula del alumno

3 El sistema verifica que se han completado Ok

4

Matricula: Se despliega en pantalla la información 5

No existe ningún registro con esa matrícula. El sistema extrae de la base de datos la

sobre el cual se va a hacer la consulta

todos los datos

información requerida.

Ap. Paterno: Ap. Materno: Nombre: Cve. Posgrado: Posgrado: Cve Estado Actual: Trim Inicio: Ult Trim: Trim Transcurridos:

I

39

Oficina Virtual de CBI Análisis de Requerimientos

No. MB: No. B: 1 NO. S:

~ !;ed?ub.: 1 Prom. :

Escenario uara UC Status de los alumnos uor nombre

Escenario de operación más simple.

Paso Descripción 1 El sistema pide el apellido paterno, materno

y nombre La asistente de posgrado teclea el apellido paterno, apellido materno y nombre

todos los datos

información requerida. 4

5 , Se despliega en pantalla la información

El sistema extrae de la base de datos la

Escenario de operación incorrecta

paterno, apellido materno y nombre

3 El sistema verifica que se han completado todos los datos

I I

Escenario ok

Apellido Paterno:COVARRUBIAS Apellido Materno: MALDONADO Nombre: GUILLERMO ok

ok

Matricula: 79353965 Ap. Paterno: COVARRUBIAS Ap. Materno: MALDONADO Nombre: GUILLERMO Cve. Posgrado: 31 Posgrado: MAESTRIA EN FISICA Cve Estado Actual: 3 Trim Inicio: 771 Ult Trim:78P Trim Transcurridos: 5 No. MB: 8 No. 8: O No. S: O No. NA: O Cred. Cub.: 248 Prom.: 10

Escenario ok

Apellido Paterno:COVARRUBIAS Apellido Materno: MALDONADO Nombre: Incorrecto, le indica el error en la pantalla y no le permite cambiar de pantalla hasta que sea correcto. ok

Ap. Paterno: COVARRUBIAS

40

Oficina Virtual de CBI Análisis de Requerimientos

Escenario con operación de excepción del Caso

3

4

5

Descripción II sistema pide el apellido paterno, materno I nombre -a asistente de posgrado teclea el apellido laterno, apellido materno y nombre

3 sistema verifica que se han completado :odos los datos 3 sistema extrae de la base de datos la nformación requerida. ;e despliega la información

Nombre: GUILLERMO Cve. Posgrado: 31 Posgrado: MAESTRIA EN FISICA Cve Estado Actual: 3 Trim Inicio: 771 Ult Trim:78P Trim Transcurridos: 5 No. MB: 8 No. B: O No. S: O No. NA: O Cred. Cub.: 248 Prom.: 10

Escenario Ok

Apellido Paterno:COVARRUBIAS Apellido Materno: MALDONADO Nombre: GUILLERMO ok

No existe alumno con ese nombre

Matricula: Ap. Paterno: Ap. Materno: Nombre: Cve. Posgrado: Posgrado: Cve Estado Actual: Trim Inicio: Ult Trim: Trim Transcurridos: No. MB: No. B: No. S: No. NA: Cred. Cub.: Prom. :

Escenarios para UC Status de alumnos Dor estado actual

Escenario de operación más simule.

Paso Escenario Descripción 1 Ok El sistema despliega las opciones de

estados

estado.

información requerida.

2

Ok El sistema extrae de la base de datos la 3

Estado: Egresado La asistente de posgrado selecciona algún

41

Oficina Virtual de CBI Análisis de Requerimientos

" ~~~ z

Se despliega en pantalla la información

Escenario con operación de excepción del Caso

Paso 1

2 3

4

Descripción El sistema despliega las opciones de Zstados. ,a asistente de posgrado elige algún estado El sistema extrae de la base de datos la Información requerida. Despliega la información

Matricula: 79353965 Ap. Paterno: COVARRUBIAS Ap. Materno: MALDONADO Nombre: GUILLERMO Cve. Posgrado: 31 Posgrado: MAESTRIA EN FISICA Cve Estado Actual: 3 Trim Inicio: 771 Ult Trim:78P Trim Transcurridos: 5 No. MB: 8 No. B: O No. S: O No. NA: O Cred. Cub.: 248 Prom.: 10

Escenario Ok

Estado: Egresado No existen alumnos con ese estado

Matricula: Ap. Paterno: Ap. Materno: Nombre: Cve. Posgrado: Posgrado: Cve Estado Actual: Trim Inicio: Ult Trim: Trim Transcurridos: No. MB: No. B: No. S: No. NA: Cred. Cub.: Prom. :

Escenario Dara UC Relación de alumnos Dor oeneración (inscritos en año X1

Escenario de operación más simde.

Paso Escenario Descripción 1 ok El sistema desplieqa las opciones de año 2 La asistente de posgrado elige alguno de

Matricula: 79353965 Se despliega en pantalla la información. 4

ok El sistema extrae de la base de datos la 3

Año: 1979 los años

información requerida.

42

Oficina Virtual de CBI Análisis de Requerimientos

Ap. Paterno: COVARRUBIAS Ap. Materno: MALDONADO Nombre: GUILLERMO Cve. Posgrado: 31 Posgrado: MAESTRIA EN FISICA Cve Estado Actual: 3 Trim Inicio: 771 Ult Trim:78P Trim Transcurridos: 5 No. MB: 8 No. B: O No. S: O No. NA: O Cred. Cub.: 248

I

j Prom.: IO Vota: En el escenario anterior se omitieron algunos datos que la aplicación será capaz de presentar, esto se lizo ya que no son relevantes y no afectan en nada a la presentación del escenario.

Escenario con ooeración de exceoción del Caso

Paso 1 2

3

4

Descripción El sistema despliega las opciones de años La asistente de posgrado elige alguno de los años El sistema extrae de la base de datos la información requerida. Se despliega en pantalla la información.

Escenario ok Año: 1975

Ok, pero no existe ningún registro.

Matricula: Ap. Paterno: Ap. Materno: Nombre: Cve. Posgrado: Posgrado: Cve Estado Actual: Trim Inicio: Ult Trim: Trim Transcurridos: No. MB: No. B: No. S: No. NA: Cred. Cub. : Prom. :

Escenario para UC indices de araduación Dor asesor

Escenario de operación más simple.

Paso Escenario Descripción 1 Ok El sistema despliega las opciones de

asesores

I 2 La asistente de posgrado elige alguno de Asesor: Aguilar Aguilar Antonio los asesores

3 Ok El sistema extrae de la base de datos la información requerida.

43

Oficina Virtual de CBI Análisis de Requerimientos

Se despliega en pantalla la información. Matricula: 79353965 Ap. Paterno: COVARRUBIAS Ap. Materno: MALDONADO Nombre: GUILLERMO Cve. Posgrado: 31 Posgrado: MAESTRIA EN FISKA Cve Estado Actual: 3 Trim Inicio: 771 Ult Trim:78P Trim Transcurridos: 5

I Prom.: IO Nota: En el escenario anterior se omitieron algunos datos que ta aplicación será capaz de presentar, esto st:

"J

hizo ya que no son relevantes y no afectan enñada a la presentacidn del escenario..

Escenario con operación de excepción del Caso

F

t

Paso Descripción 1 El sistema despliega las opciones de

asesores 2 La asistente de posgrado elige alguno de

los asesores 3 El sistema extrae de la base de datos la

información requerida. Se despliega en pantalla la información.

"

Escenario Ok

Asesor: Aguilar Aguilar Antonio

Ok, pero no existe ningún registro.

Matricula: Ap. Paterno: Ap. Materno: Nombre: Cve. Posgrado: Posgrado: Cve Estado Actual: Trim Inicio: Ult Trim: Trim Transcurridos: No. MB: No. B: No. S: No. NA: CredCub: Prom:

44

Oficina Virtual de CBI Configuraciones

Configuraciones

Antes de dar la información sobre la configuración de los distintos componentes es necesario comentar la forma en la que debe estar organizada la carpeta del proyecto de posgrado en el disco duro.

Se debe crear una carpeta en la raíz del disco duro llamada proyecto, dentro de ésta carpeta va a haber otras carpetas con los siguientes nombres: bin, data, docs, images, styles y templates. A continuación se describe que debe contener cada una de ellas:

bin, ésta carpeta debe contener los archivos: O alias, en dicho archivo se encuentra el nombre del alias de la base de datos, el nombre del

usuario que puede acceder a la base de datos y su contraseña. 3 dhtml, éste archivo especifica el directorio en donde se encuentran las páginas que se

muestran cuando se genera algún error dentro del sistema. dhtml.dl1, este archivo es una dll, la cuál interpreta las instrucciones insertadas en las páginas html.

O error, este archivo muestra como salida el error interno que genera el sistema. O exceociones, cuando en el sistema no se puede efectuar alguna operación, este archivo

data, ésta carpeta contiene la base de datos, por Io tanto deberá contener el archivo llamado

docs, ésta carpeta contiene todas las páginas html con las que interactúa el usuario cuando esta

images, ésta carpeta contiene las imágenes que exhibe el sistema. styles, para hacer más comprensible el código html se hizo uso de una hoja de estilos, en esta hoja se describe cada uno de los estilos que se muestran en las páginas. templates, ésta carpeta contiene las páginas html que muestra al usuario cuando ocurre un error en el sistema, son errores tales como contraseña no válida o que no se encontró en la base de datos el registro que se estaba buscando.

muestra cual fue el archivo que no se pudo abrir.

posgrado.gdb

llevando a cabo operaciones dentro del sistema.

La configuración que se va a mostrar a continuación funciona siempre y cuando las carpetas estén organizadas como se describió anteriormente.

Para que la Oficina Virtual de CBI opere de manera adecuada es necesario que se lleven a cabo configuraciones sobre los componentes con los que trabaja.

Dicha oficina puede trabajar de dos formas: De manera local. De manera remota.

Para que trabaje de manera local es necesario configurar: El servidor web, que en este caso es el OMNI. Crear el ALIAS de la base de datos, en el BDE de Delphi.

Servidor WEB

Para trabajar de manera local es necesario bajar de la página de OMNI el software que funciona como servidor web.

45

Oficina Virtual de CBI Configuraciones

Se baja de la &ha http://www.omnkron.ab.ca

CQMgUIW3bn Para configurar el OmniHlTPD professional 2.0 es necesario seguir los siguientes pasos:

0 Instalar el software e Una vez instalado se procede a su conflguracr6n esto se hace yendo a: Inicio + programas +

OmniHllPD professional 2.0 + OmniHTTPD Administration, después de seguir estos pasos se verir la siguiente pantalla.

: I

.... .

I

" ...

0 Se selecciona l o c a l h o s t y se oprime el botón de EDIT y apareced la siguiente pantalla.

La pantalla anterior como se puede observar msta de vanas pestañas, la primera pestaila es SERVER, esta pantalla deber6 de contener los siguientes datos:

server IP: 127.0.0.1 Server Name: L o c a l h o s t Server Root: C:\proyecto\bin (ésta es la ruta donde se

Default Index: index.html encuentra la dl1 l l a m a d a dhtml.dl1)

46

Oficina Virtual de CBI Configuraciones

Admin Email: [email protected] Error Template: C:\httpd\error.Temp. Casillas Activadas: Use Custom Error Template

O La siguiente pantalla a configurar es A W y la pantalla es la siguiente:

En esta pantalla se incluyen todos los Alias que utiliza el proyecto, estos Alias son las carpetas que contienen las imágenes y los estilos por las cuales esta compuesto el proyecto. En el renglón Virtual se esctibe lo que aparece en la columna izquierda y en el Actual se escribe lo que aparece en la columna derecha. Cada que se escribe un alias se oprime d botón ADD y van apareciendo en la parte superior.

O Configuración de la pestaña ISAPI

-I

En esta pantalla se debe de poner la ruta de la carpeta en donde se encuentra la dl1 llamada dhtml.dll, que es este caso es c:\pmyecto\bin aquí llamada actual y la virtual es /proyecto/Wn.

47

Oficina Virtual de CBI Configuraciones

sólo las pestahs mencionadas anteriormente son configuradas, las pestañas no mencionadas se quedan con la configuración dada por default por el OMNI. Y con esto se conduye la configuración del OMNI.

Si durante la instalación del OMNI, no se configuró para que iniciará autom6ticamente cada vez que se prende la computadora, es importante iniciado manualmente.

cOnfiguraci6n del Alias de la Base de Datos

Pata uear el Alias de la Base de Datos se siguen los siguientes pasos:

Se mostrará la siguiente pantalla: O Se da dowe dic sobre MI PC + Panel de Control + BDE Administrator.

gcr_oo . . ” . F - Ir*_ - - .._ ~ . ~ . . ~ .

u r n - . ’ 2 .T ‘1 .. . . ~. . ~.

. a 04.m

6 -m .wm

.B D m E d

+ ij m”

W F d O - I 3 v a 3 r o m T A

Estando en la pantalla anterior se da dic sobre OBJECT, se deSprkga un menú y se selecdona NEW. Apamerá una pantalla en donde se debe seleccionar el Nombre del Driver de la Base , se elegirá INTRBASE (el cual es el mane)ador &INTERBASE). Aparecerá la siguiente pantalla:

~ Qbpct Ea OPtDls ”- Heb ~ .” .~. . . . . x c-;! I”

TVpe INTRBASE BATCH COUNT 200 BLOB S E 32 BLOBS TO CACHE M ENABLE BCD FALSE ENABLE SCHEMA W E FALSE IANGDRIVER MAX ROWS -1 OPEN MODE READMRITE SCHEMA CACHE DIR SCHEMA CACHE SIZE 8 SCHEMA CACHE TIME -1 SERVER NAME C~oyedo\dataiPosgado.gcb SQLPASSTHRU MODE SHARED AUTOCOMMIT SQLQRYMODE USER NAME SYS DBA

48

Oficina Virtual de CBI Configuraciones

Aquí aparecer6 un campo selecdonado en la ventana izquierda de b pantalla, allí se escribe el nombre del alias, que en este caso es POSGRADO. En el lado defecho de la pantalla se busca para SERVER NAME el lugar en donde se encuentra la base de datos, que es c:~ecto\data\Posgrado.gdb, y para USER NAME se escribe SYSDBA. Una vez hecho esto se da clic sobre la flecha azul que aparece debajo de la barra de herramientas, que dice Apply. Se da doble dic sobre el nombre del alias y aparecerá la siguiente pantalla:

En esta pantalla se escribe el Password que es masterkey. Dando dic en OK, a p t e m á otra pantalla, esto quieredecirqueelAliassehacreadoconéxito.

Para salir de esta pantalla se da cric sobre OBJECT que se encuentra en la barra de henamientas y clk en m.

Con esto se da por concluida b sección que conesponde a la configuración del ServidoT web (Omni) y el alias delabasededatos.

49

Oficina Virtual de C8I SIC

SIC (Sistema de Información Corporativa)

Ésta es la herramienta m6s importante para el desarrotb de &e sistema, ya que en ella se ingresa cÓd90 SQL (lenguaje para hacer operaciones sobre bases de datos) y &a ad~udica un número de petición. Dicho número es el que se inserta en el código HIML. A continuación se explicatá cómo trabajar con d SIC.

Antes de abrir el SIC, es necesario que exista la base de datos y haber creado el ALIAS, como fue explicado anteriormente.

Toda la información que se va a dar es para la versitjn 1.5

La primera pantalla que se va a presentar al abrir el SIC es la siguiente:

En esta pantalla se presenta un cuadro de diálogo con sugerencias, para empezar a trabajar es necesario oprimir Cerrar e ir a la barra de herramientas que se encuentra ubicada en la parte superior.

Una vez all; se deberá de acceder al menú de herramientas l l a m a d o Bases de datos, y dar c k en Abrir sesi6n. Aparecerá la siguiente pantalla:

50

Oficina Virtual de CBI SIC

Como se puede observar aparecen todas las bases de datos que tengan manejador Infmbase, aquí es posible seleccionar la base de datos del proyecto que se l l a m a POSGRADO, si es la primera vez que se abre la base de datos en el SIC, las columnas de usuario y contraseña aparecerán en blanco, por lo que es necesario que, después de elegirla tendrá que escribir en las cajas de texto que aparecen a la derecha de la pantalla el nombre del usuario que es este caso será SYSDBA y la contraseña que será masterkey. Es recomendable si $10 una persona utiliza la computadora poner check en la cajita de check box para que guarde la contraseña. Una vez hecho esto se da clic en aceptar. Apareced una pantalla de Bienvenida, y se da dic en OK. De allí es necesario ir otra vez a la barra de herramientas, pero ahora dar clic en donde dice Consultas, allí aparece un menú en donde se tiene qu.: elegir Editor de Sentencias SQL, una vez hecho esto se mostrard la siguiente pantalla:

Ésta pantalla como se puede observar esta dividida en dos regiones. La región de la izquierda que muestra las categorías en las que están divididos los querys y la de la derecha que contiene datos específicos sobre cada query.

A continuación se describirá con m& detalle el lado derecho de la pantalla.

51

Oficina Virtual de CBI SIC

- gsmd Iduw

n * w u + - r - . . . - . ". .

SEGUIMIENTO DE ALUMNOS F U R 0.110 SEG ALUMNOS 2 GUARDA DATOS PARA SEGUIMIENTO GUARDA ESTATUS MATRlWlA O. 064 O. wo 0.220 ESTATUS POR MATRICULA 0.1 66 O. 050 0.550

Esta pantalla contiene tres pestaAas: Generales, SQL y Resultados. 0 Generales: dependiendo de la categoría en la que se este posicionado del lado izquierdo de la pantalla

aparecerán del lado derecho los querys contenidos en ella. En este caso se está mostrando la categoría Seguimiento y se esta sobre el query llamado Alumnos por Departamento. Aquí se pueden ver datos como el nombre del query y el índice, que en este caso es 11, &te es el número que se inserta en las páginas HTML para que se genere la consulta y despliegue los resultados. SQL: al elegir esta pestaña se puede ver el código SQL perteneciente a este query. Resultados: Antes de elaborar la página HTML, que contendrá la información resultado del query, es posible ver los resultados que desplegará la consulta, para de ésta forma determinar si la información que se desplegará es la requerida.

LC6mo ingresar un query en el SIC?

Es necesario entrar a la aplicación como ha sido mencionado anteriormente. Una vez que se esta en la pantalla de Editor de Sentencias SQL, del lado izquierdo de la pantalla se elige la categoría en donde se quiere crear el query, si la categoría aún no existe se crea una dando clic con el botón derecho del mouse. Una vez que se tiene elegida la categoría en la pestaiia Generales se debe oprimir el botón +, de esta forma se crea el nuevo query, es necesario asignar un nombre, también es recomendable escribir las iniciales del autor y una pequeña explicacih sobre lo que had el nuevo query. Una vez llenada la información de esta pantalla, es necesario ir a la siguiente pestafia (SQL), allí se debe agregar la sentencia SQL para que se lleve a cabo la consulta requerida. Una vez hecho e s t o , se debe oprimir el botón de palomita, pata indicar al SIC, que se ha terminado de escribir el query, la aplicación le asignará un número de query y es en este punto que se puede ir a la pestaña de Resultados, en donde será posible ver l o s resultados que arroja el query creado.

Con esto se concluye la explicación sobre el manejo del SIC, esta información es sobre el manejo básico del SIC, pero es suficiente para los fines de éste reporte.

52

Oficina Virtual de CBI HTML

SQL (Structured Query Language)

Introducción

El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado. SQL se utiliza para crear objetos QueryDef, como el argumento de origen del método OpenRecordSet y como la propiedad RecordSource del control de datos. También se puede utilizar con el método Execute para crear y manipular directamente las bases de datos Jet y crear consultas SQL de paso a través para manipular bases de datos remotas cliente - servidor.

Componentes del SQL

El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.

Comandos

Existen dos tipos de comandos SQL:

0 los DDL (Data Definition Language) que permiten crear y definir nuevas bases de datos, campos e indices.

0 10s DML (Data Manipulation Language) que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.

Comandos DDL

Comando ~ Descripción

,CREATE ;Utilizado para crear nuevas ta'blas, campos e indices

:DROP !Empleado para eliminar tablas e indices

ALTER . Utilizado para modificar las tablas agregando campos o cambiando la definición de los campos.

. .

. . . . . ....... "" . . . . . . . . . . . . . . . . . . . . . . "_.""""""_"_"."_.~..I .......... "" ......

. . . . . . . . .................. " - "

. . . . . . . . . . . . . . . . " .."

Comandos DML

Comando Descripción

SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado

53

Oficina Virtual de CBI HTML

INSERT Utilizado para cargar lotes de datos en la base de datos en una única operación.

UPDATE Utilizado para modificar los valores de los campos y registros especificados

DELETE Utilizado para eliminar registros de una tabla de una base de datos

Estructuras de las Tablas

Creación de Tablas (Create Table)

El formato general de esta proposición es el siguiente:

CREATE TABLE nombre-de-la-tabla (definición-de-columna [, definción-de-columna] ...... [, definición-de-clave-primaria] [, definición-de-clave-ajena [, definición-de-clave-ajena] ... ] );

donde una "definición-de-columna" a su vez tienen la forma:

columna tipo-de-datos [NOT NULL]

Nota: Los corchetes se utilizarán en todas las definiciones sintácticas para indicar que Io encerrado por ellos es opcional. Los puntos suspensivos (...) significan que la unidad sintádica inmediata anterior puede repetirse de manera opcional una o más veces. Lo que va en mayúsculas debe escribirse tal y como se muestra; lo que va en minúsculas debe reemplazarse con valores específicos elegidos por el usuario.

La cláusula CONSTRAINT

Se utiliza la cláusula CONSTRAINT en las instrucciones ALTER TABLE y CREATE TABLE para crear o eliminar indices, Existen dos sintaxis para esta cláusula dependiendo si desea Crear 6 Eliminar un índice de un Único campo o si se trata de un campo multíndice.

Para los indices de campos únicos:

CONSTRAINT nombre {PRIMARY KEY 1 UNIQUE I REFERENCES tabla externa [(campo externol, campo externo2)]}

Para los indices de campos múltiples:

CONSTRAINT nombre {PRIMARY KEY (primariol[, primario2 [, ...]I) I UNIQUE (únicol[, único2 [, ...I]) I FOREIGN KEY (ref& ref2 [, ...]I) REFERENCES tabla externa [(campo externol [,campo externo2 [, ...I])]}

Parte ; Descripción

nombre Es el nombre del índice que se va a crear.

jprimarioN Es el nombre del campo o de 'los campos que forman el índice primario.

. . . . . . . . . . . . . - ".".__.""-.I I .I ........ .. . . . . . "" .........

;únicoN Es el nombre del campo o de los campos que forman el índice de clave única.

IrefN

,.. ". . . . . . . . . . . . . ,. . . . . . . . . . . " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . _" . . .

Es el nombre del campo o de los campos que forman el índice externo (hacen referencia a campos de otra tabla).

tabla externa Es el nombre de la tabla que contiene el campo o los campos referenciados en refN . . . .

54

Oficina Virtual de CBI HTML

campos Es el nombre del campo o de los campos de la tabla externa especificados por refl, ref2, .... externos ref N

Si se desea crear un índice para un campo cuando se esta utilizando las instrucciones ALTER TABLE o CREATE TABLE la cláusula CONTRAINT debe aparecer inmediatamente después de la especificación del campo indexeado.

Si se desea crear un índice con múltiples campos cuando se está utilizando las instrucciones ALTER TAB1 C o CREATE TABLE la cláusula CONSTRAINT debe aparecer fuera de la cláusula de creación de la tabla.

Tipo de Índice

UNIQUE

PRIMARY KEY

FOREIGN KEY

I

. . . . . . . . . . . . . . .

Descripción

Genera un índice de clave única. Lo que implica que los registros de la tabla no pueden contener el mismo valor en los campos indexados.

Genera un índice primario el campo o los campos especificados. Todos los campos de la clave principal deben ser únicos y no nulos, cada tabla sólo puede contener una única clave principal.

Genera un índice externo (toma como valor del índice campos contenidos en otras tablas). Si la clave principal de la tabla externa consta de más de un campo, se debe utilizar una definición de índice de múltiples campos, listando todos los campos de referencia, el nombre de la tabla externa, y los nombres de los campos referenciados en la tabla externa en el mismo orden que los campos de referencia listados. Si los campos referenciados son la clave principal de la tabla .externa, no tiene que especificar los campos referenciados, predeterminado por valor, el motor Jet se comporta como si la clave principal de la tabla externa fueran los campos referenciados .

. . .. , .

Creación de indices

La sintaxis para crear un índice en una tabla ya definida en la siguiente:

CREATE [ UNIQUE 3 INDEX índice ON tabla (campo [ASCIDESC][, campo [ASCIDESC], . . . I ) [WITH { PRIMARY 1 DISALLOW NULL I IGNORE NULL }I

En donde:

Parte ~ Descripción . .

. . . . . . . . . . . . . . . . . . ..................................

.indice :Es el nombre del índice a crear.

tabla Es el nombre de una tabla existentes en la que se creará el índice.

,campo Es.el nombre del campo o lista d e campos que consituyen el índice.

" _ . - . " - "" . " ~ "" - ""___l ". .. " . . . - . . .- . . . . . " ._

. . . . . . . . . . . . .

Indica el orden de los valores de Is0 campos ASC indica un orden ascendente (valor 'ASC'DESC predeterminado) y DESC un orden descendente.

:UNIQUE Indica que e l indice no puede contener valores duplicados. . . . . . . . . . . . . . . . . . . . . - - . . - ........ . .

Prohibe valores nulos en el índice NULL

, - . . . . . . . ". .... . . . . . . . . . .

'IGNoRE Excluye del índice los valores nulos incluidos en los campos que lo componen. NULL

Asigna al índice la categoría de clave principal, en cada tabla sólo puede existir un Único indice aue sea "Clave Princioal". Si un índice es clave orincioal imolica aue aue no ouede contener

55

Oficina Virtual de CBI HTbl L

valores nulos ni duplicados. . . .

Se puede utilizar CREATE INDEX para crear un pseudo índice sobre una tabla adjunta en una fuente de datos ODBC tal como SQL Server que no tenga todavía un índice. No necesita permiso o tener acceso a un servidor remoto para crear un pseudo índice, además la base de datos remota no es consciente y no es afectada por el pseudo índice. Se utiliza la misma sintaxis para las tabla adjunta que para las originales. Esto es especialmente útil para crear un índice en una tabla que sería de sólo lectura debido a la falta de un índice.

Modificar el Diseño de una Tabla

Modifica el diseño de una tabla ya existente, se pueden modificar los campos o los indices existentes. Su sintaxis es:

ALTER TABLE tabla {ADD {COLUMN tipo de campo[(tamaño)] [CONSTRAINT índice] CONSTRAINT índice multicampo} 1 DROP {COLUMN campo I CONSTRAINT nombre del índice} }

En donde:

Operación ,,. . ", ."" . . . . ~ .

Descripción

'ADD :Se utiliza para añadir un nuevo campo a la tabla, indicando el'nombre, el tipo de campo y COLUMN sopcionalmente el tamaño (para campos de tipo texto).

- "- . . . -

. . . . . -. . ... - . .

,ADD 'Se utliza para agregar un índice de multicampos o de un Único campo. . . . . ". . "_.."."""".I " . " , .. . . , . . .

.DROP COLUMN :Se utliza para borrar un campo. Se especifica únicamente el nombre del campo.

DROP Se utiliza para eliminar un índice. Se especifica únicamente el nombre del índice a continuación de la palabra reservada CONSTRAINT.

Dos ejemplos de algunas de las proposiciones explicadas anteriormente son:

CREATE TABLE ALUMNOPOSG (

MATRICULA INTEGER NOT NULL, APPATERNO VARCHAR(35) NOT NULL,

56

Oficina Virtual de CBI HTML

APMATERNO VARCHAR(35), NOMBRE VARCHAR(35) NOT NULL, PRIMARY KEY (MATRICULA)

1;

El código SQL presentado anteriormente crea una tabla llamada ALUMNOPOSG, tiene cuatro campos: MATRICULA, APPATERNO, APMATERNO, NOMBRE y usa como llave primaria el campo MATRICULA.

CREATE TABLE DETALLE-ALUMNOSPOSG (

MATRICULA INTEGER NOT NULL, CVEPOSGRADO SMALLINT NOT NULL, CVEESTADO SMALLINT, TRIMINIC VARCHAR( lo), ULTTRIMINSC VARCHAR(lO), TRIMTRANSC SMALLINT, NOMB SMALLINT, NO9 SMALLINT, NOS SMALLINT, NONA SMALLINT, CREDCUB SMALLINT, PROM DECIMAL(3,1), PRIMARY KEY (MATRICULA, CVEPOSGRADO, CVEESTADO) FOREIGN KEY (MATRICULA) REFERENCES ALUMNOSPOSG

NULLS NOT ALLOWED DELETE OF ALUMNOSPOSG RESTRICTED, UPDATE OF ALUMNOSPOSG.MATR1CULA CASCADES,

NULLS NOT ALLOWED DELETE OF POSGRADO RESTRICTED, UPDATE OF POSGRADO.CVEPOSGRAD0 CASCADES,

FOREIGN KEY (CVEESTADO) REFERENCES ESTADO NULLS NOT ALLOWED DELETE OF ESTADO RESTRICTED, UPDATE OF ESTADO.CVEESTAD0 CASCADES

FOREIGN KEY (CVEPOSGRADO) REFERENCES POSGRADO

1;

El código SQL presentado anteriormente crea una tabla llamada DETALLE-ALUMNOSPOSG, que contiene los campos: MATRICULA, CVEPOSGRADO, CVEESTADO, TRIMINIC, ULTTRIMINSC, TRIMTRANSC, NOMB, NOB, NOS, NONA, CREDCUB, PROM, usa como llaves primarias los campos: MATRICULA, CVEPOSGRADO, CVEESTADO, y como llaves secundarias éstas mismas, ya que éstas llaves son primarias en otras tablas.

Cláusulas

Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.

Cláusula Descripción . . . . . . . . - . . . . . . " ......... - .. . . . . "

'FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros

WHERE Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar

GROUP BY Utilizada para separar los registros seleccionados en grupos específicos

- - - . . - - " " . .

. . . . . -

. . . . . . " , "" .

57

Oficina Virtual de CBI HTML

. . . . . .

:HAVING Utilizada para expresar la condición que debe satisfacer cada grupo

ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo con un orden específico

.. "

. , . . . . . . . . . . .

Operadores Lógicos

Operador uso

AND Es el ''y'' lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas.

OR

NOT Negación lógica. Devuelve el valor contrario de la expresión.

." . . . " . Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdar si alguna de las dos es cierta.

. . . .....

.. . _" ..... . -.. . . . . . . . . . . . . I ..... " . . ... ". - - I ." .

Operadores de Comparación

Operador uso

< Menor que

> Mayor que

<> Distinto de

<= Menor 6 Igual que

>= Mayor 6 Igual que

.............. . . . . . . . . . . . . . . .

. . " . . . . "" . ."

- - Igual que .. .."I" . . . . ..-I .. ...... . . . . . . . . . .. --- ... -- .

BETWEEN Utilizado para especificar un intervalo de valores.

LIKE Utilizado en la comparación de un modelo

. .

. . . . . . . . . . . . .

I

In Utilizado para especificar registros de una base de datos

Funciones de Agregado

Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para devolver un Único valor que se aplica a un grupo de registros.

Función ; Descripción

Oficina Virtual de CBI HTM L

Consultas de Selección

Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset. Este conjunto de registros es modificable.

Consultas básicas

La sintaxis básica de una consulta de selección es la siguiente:

SELECT Campos FROM Tabla;

En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos, por ejemplo:

SELECT NOMBRE, TELEFONO FROM CLIENTES;

Esta consulta devuelve un recordset con el campo nombre y teléfono de la tabla clientes.

Ordenar los registros

Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la claúsula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar.

Ejemplo:

SELECT CODIGOPOSTAL, NOMBRE, TELEFONO FROM CUENTES ORDER BY Nombre;

Esta consulta devuelve los campos CODIGOPOSTAL, NOMBRE, TELEFONO de la tabla Clientes ordenados por el campo Nombre.

Se pueden ordenar los registros por mas de un campo, como por ejemplo:

SELECT CODIGOPOSTAL, NOMBRE, TELEFONO FROM CLIENTES

ORDER BY CODIGOPOSTAL, NOMBRE;

Incluso se puede especificar el orden de los registros: ascendente mediante la claúsula (ASC -se toma este valor por defecto) ó descendente (DESC)

SELECT CODIGOPOSTAL, NOMBRE, TELEFONO FROM CUENTES

ORDER BY CODIGOPOSTAL DESC , NOMBRE ASC;

Consultas con Predicado

El predicado se incluye entre la claúsula y el primer nombre del campo a recuperar, los posibles predicados son :

. . ., Predicado

". . " Descripción

ALL Devuelve todos los campos de la tabla

TOP Devuelve un determinado número de registros de la tabla

59

Oficina Virtual de CBI HTML

DISTINCT Omite los registros cuyos campos seleccionados coincidan totalmente . . . I

:Omite los registros duplicados basandose en la totalidad del registro y no sólo en los campos 'seleccionados.

. ._ ..,

ALL

Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de datos selecciona todos los registros que cumplen las condiciones de la instrucción SQL. No se conveniente abusar de este predicado ya que obligamos al motor de la base de datos a analizar la estructura de la tabla para averiguar los campos que contiene, es mucho más rápido indicar el listado de campos deseados.

SELECT ALL FROM EMPLEADOS; SELECT * FROM EMPLEADOS;

TOP

Devuelve un cierto número de registros que entran entre al principio o al final de un rango especificado por una cláusula ORDER BY. Supongamos que queremos recuperar los nombres de los 25 primeros estudiantes del curso 1994:

SELECT TOP 25 NOMBRE, APELLIDO FROM ESTUDIANTES ORDER BY NOTA DESC;

Si no se incluye la cláusula ORDER BY, la consulta devolverá un conjunto arbitrario de 25 registros de la tabla Estudiantes. El predicado TOP no elige entre valores iguales. En el ejemplo anterior, si la nota media número 25 y la 26 son iguales, la consulta devolverá 26 registros. Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje de registros que caen al principio o al final de un rango especificado por la cláusula ORDER BY. Supongamos que en lugar de los 25 primeros estudiantes deseamos el 10 por ciento del curso:

SELECT TOP 10 PERCENT NOMBRE, APELLIDO FROM ESTUDIANTES ORDER BY NOTA DESC;

El valor que va a continuación de TOP debe ser un Integer sin signo. TOP no afecta a la posible actualización de la consulta.

DISTINCT

Omite los registros que contienen datos duplicados en los campos seleccionados. Para que los valores de cada campo listado en la instrucción SELECT se incluyan en la consulta deben ser únicos.

Por ejemplo, varios empleados listados en la tabla Empleados pueden tener el mismo apellido. Si dos registros contienen López en el campo Apellido, la siguiente instrucción SQL devuelve un Único registro:

SELECT DISTINCT APELLIDO FROM EMPLEADOS;

Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos indicados en la cláusula SELECT posean un contenido diferente. El resultado de una consulta que utiliza DISTINCT no es actualizable y no refleja los cambios subsiguientes realizados por otros usuarios.

DISTINCTROW

Devuelve los registros diferentes de una tabla; a diferencia del predicado anterior que sólo se fijaba en el contenido de los campos seleccionados, éste lo hace en el contenido del registro completo

60

Oficina Virtual de CBI HTML

independientemente de los campo indicados en la cláusula SELECT.

SELECT DISTINCTROW APELLIDO FROM EMPLEADOS;

Si la tabla empleados contiene dos registros: Antonio López y Marta López el ejemplo del predicado DISTINCT devuelve un Único registro con el valor López en el campo Apellido ya que busca no duplicados en dicho campo. Este último ejemplo devuelve dos registros con el valor López en el apellido ya que se buscan no duplicados en el registro completo.

Alias

En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto, otras veces por simple capricho o por otras circunstancias. Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto) se llame Empleado. En este caso procederíamos de la siguiente forma:

SELECT DISTINCTROW APELLIDO AS EMPLEADO FROM EMPLEADOS;

Recuperar Información de una base de Datos Externa

Para concluir este capítulo se debe hacer referencia a la recuperación de registros de bases de datos externa. Es ocasiones es necesario la recuperación de información que se encuentra contenida en una tabla que no se encuentra en la base de datos que ejecutará la consulta o que en ese momento no se encuentra abierta, esta situación la podemos salvar con la palabra reservada IN de la siguiente forma:

SELECT DISTINCTROW APELLIDO AS EMPLEADO FROM EMPLEADOS IN 'c:\databases\gestion.mdb';

En donde c:\databases\gestion.mdb es la base de datos que contiene la tabla EMPLEADOS.

Criterios de Selección

Anteriormente se vio la forma de recuperar los registros de las tablas, las formas empleadas devolvían todos los registros de la mencionada tabla. A continuación se estudiarán las posibilidades de filtrar los registros con el fin de recuperar solamente aquellos que cumplan una condiciones preestablecidas.

Antes de comenzar hay que recalcar tres detalles de vital importancia. El primero de ellos es que cada vez que se desee establecer una condición referida a un campo de texto la condición de búsqueda debe ir encerrada entre comillas simples; la segunda es que no es posible establecer condiciones de búsqueda en los campos memo y; la tercera y última hace referencia a las fechas. Las fechas se deben escribir siempre en formato mm-dd-aa en donde mm representa el mes, dd el día y aa el año, hay que prestar atención a los separadores -no sirve la separación habitual de la barra (/), hay que utilizar el guión (-) y además la fecha debe ir encerrada entre almohadillas (#). Por ejemplo si deseamos referirnos al día 3 de Septiembre de 1995 deberemos hacerlo de la siguiente forma; #09-03-95# ó #9-3-95#.

Operadores Lógicos

Los operadores lógicos soportados por SQL son: AND, OR, XOR, Eqv, Imp, Is y Not. A excepción de los dos últimos todos poseen la siguiente sintaxis:

61

Oficina Virtual de CBI HTM L

<expresiónl> operador <expresiÓnZ>

En donde expresión1 y expresión2 son las condiciones a evaluar, el resultado de la operación varía en función del operador lógico, La tabla adjunta muestra los diferentes posibles resultados:

El últirno operador denominado Is se emplea para comparar dos variables de tipo objeto <Objetol> Is <Objeto2>. este operador devuelve verdad si los dos objetos son iguales

SELECT * FROM EMPLEADOS WHERE EDAD > 25 AND EDAD < 50; SELECT * FROM EMPLEADOS WHERE (EDAD > 25 AND EDAD < 50) OR SUELDO = 100; SELECT * FROM EMPLEADOS WHERE NOT ESTADO = 'Soltero'; SELECT * FROM EMPLEADOS WHERE (SUELDO > 100 AND SUELDO < 500) OR (PROVINCIA = 'D.F.' AND ESTADO = 'Casado');

62

Oficina Virtual de CBI HTML

Intervalos de Valores

Para indicar que deseamos recuperar los registros según el intervalo de valores de un campo emplearemos el operador BETWEEN cuya sintaxis es:

campo [Not] B W E E N valorl AND valor2 (la condición Not es opcional)

En este caso la consulta devolvería los registros que contengan en "campo" un valor incluido en el intervalo valorl, valor2 (ambos inclusive). Si anteponemos la condición Not devolverá aquellos valores no incluidos en el intervalo.

SELECT * FROM PEDIDOS WHERE CODPOSTAL Between 28000 And 28999;

SELECT If (CODPOSTAL BETWEEN 28000 AND 28999, 'Provincial', 'Nacional') FROM EDITORES; (Devuelve el valor 'Provincial' si el código postal se encuentra en el intervalo, 'Nacional' en caso contrario)

El Operador LIKE

Se utiliza para comparar una expresión de cadena con un modelo en una expresión SQL. Su sintaxis es:

expresión LIKE modelo

En donde expresión es una cadena modelo o campo contra el que se compara expresión. Se puede utilizar el operador LIKE para encontrar valores en los campos que coincidan con el modelo especificado. Por modelo puede especificar un valor completo (Ana María), o se pueden utilizar caracteres comodín como los reconocidos por el sistema operativo para encontrar un rango de valores.

El operador LIKE se puede utilizar en una expresión para comparar un valor de un campo con una expresión de cadena. Para un registro dado la condición se cumple si el valor dentro de la columna designada sigue el patrón especificado con "modelo". Los caracteres dentro de "modelo" se interpretan de la siguiente manera:

0 El carácter "-" (subrayado) representa cualquier carácter individual.

0 El carácter "%" (por ciento) representa cualquier secuencia de n caracteres (donde n puede ser cero)

0 Todos los demás caracteres se representan a sí mismos.

DOMICILIO LIKE '%Lima%' Se cumplirá si DOMICILIO contiene la cadena "Lima" en cualquier posición.

S# LIKE 'S-' Se cumplirá si S# tiene una longitud de 3 caracteres y el primero es una S.

PNOMBRE LIKE '%C-' Se cumplirá si PNOMBRE tiene una longitud de cuatro o más caracteres y el tercero antes del últirno es una C.

CIUDAD NOT LIKE '%E%' Se cumplirá si CIUDAD no contiene una "E".

63

En la tabla qu lente si-7 muestra c6mo utilizar el cperador Like para comprobar expres;onti a n ;!tfercntes rnockios.

Tipo de coincidencia

Varos caracteres

Varios caracteres

tin solo caracter

Un solo dígito

Rango de caracteres

Fuera de un rango

Distinto de un dígito

El Operador In

Modelo Planteado

'a?ba'

'ab96

'a-a'

'a-a'

'[a-z]'

'[!a-z]'

'[!O-91'

Coincide

'aa', 'aBa', 'aBBBa'

'abcdefg', 'abc'

'aaa', 'a3a', 'aBa'

'aOa', 'a la ' , 'a2a'

' f , 'p'/ 'j'

'9', ' & I , Y o '

'A', 'a', '&', I N '

No coincide

'aBC'

'cab', 'aab'

'aBBBa'

'aaa', 'aloa'

'2'/ '&'

lb', 'a'

'O', 'l'/ '9'

Este operador devuelve aquellos registros cuyo campo indicado coincide con alguno de los en una IIsta. Su sintaxis es:

expresión [Not! IN (valorl, valor2, . . .)

SELECT * FROM PEGIDOS WHERE PROVINCIA IN ('Madrid', 'Barcelona', 'Sevilla');

La cláusula WHERE

La cláusula WHERE puede usarse para determinar qué registros de las tablas enumeradas en la cláusula FROM aparecerán en los resultados de la instrucción SELECT. Después de escribir esta cláusula se deben especificar las condiciones. Si no se emplea esta cláusula, la consulta devolverá todas las filas de la tabla. WHERE es opcional, pero cuando aparece debe ir a continuación de FROM.

SELECT APELLIDOS, SALARIO FROM EMPLEADOS WHERE SALARIO > 21000;

SELECT IDPRODU(TT0, EXISTENCIAS FROM PRODUCTOS WHERE EXISTENCIAS <= Nuevo-Pedido;

SELECT * FROM PEDIDOS WHERE FECHA-ENVIO = =5;10/94$;

SELECT APELLIDOS, NOMBRE FROM EMPLEADOS WHERE APELLIDOS = 'King';

SELECT APELLIDOS, NOMBRE FROM EMPLEADOS L'JHERE APELLIDOS LIKE 'S%';

SELECT APELLIDOS, SALARIO FROM EMPLEADOS L'JHERE SALARIO BETWEEN 200 AND 300;

SELECT APELLIDOS, SALARIO FROM EMPLEADOS 1?JHERE APELLIDOS BETWEEN 'Lon' AND 'Tol';

SELECT ID-PEDIDO, FECHA-PEDIDO FROM PEDIDCS WHERE FECHA-PEDIDO BETWEEN 31-1-945 And if30-6-94s;;

SELECT APELLIDOS, NOMBRE, CIUDAD FROM Er-lPLEAaOS WHERE CIUDAD IN ('Sevilla', 'Los Angeles', 'Barcelona');

Agrupamiento de Registros

GROUP BY

Combina !3s registros con valores Idénticos, en la lista de campos especificados, en un Único registro. Para cada registro se crea un valor sumario si se incluye una función SQL agregada, como por ejempio Sum 3

Count, en la Ir!struccron SELECT. Su sintaxis es:

SELECT ca??pos FXOM tabla WHERE criterio GROlJP BY campos de! grupo

GROUP BY es opcional. Los valores de resumen se omlten SI no existe una función SQL agregada en la Instrucción SELECT. Los valores Null en los campos GROUP BY se agrupan y no S? omiten. No obstante, los valores Null no se evalúan en ninguna de las funciones SQL agregadas.

Se utiliza la cláusula WHERE para excluir aquellas filas que no desea agrupar, y la cláusula HP,VING para fi!trar los registros una vez agrupados.

A menos que contenga un dato Memo u Objeto OLE , un campo de la lista de campos GROUP BY puede referirse a cualquier campo de las tablas que aparecen en la cláusula FROM, incluso si el campo no esta incluido en la instrucclón SELECT, siempre y cuando la instrucción SELECT incluya al mer?os una funclón SQL agregada.

Todos los campos de la lista de campos l e SELECT deben o bien incluirse en la cláusula GROUP BY o cor7io argumentos de una función SQL agregada.

SELECT ID-FAMILIA, SUM (Stock) FROM PRODUCTOS GROUP BY ID-FAMILIA;

Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registro agrupado por la cláusula GROUP BY que satisfaga las condiciones de la cláusala HAVING.

HAVING es similar a WHERE, determina qué registros se seleccionan. Una vez que los registros se bar: agrupado lltiiizando GROUP BY, HAVING determina cuales de ellos se van a mostrar.

SELECT ID-FAMILIA SUM (Stock) FROM PRODUCTOS GROUP BY ID-FAMILIA HAVING Sl jM (Stock) > 100 AND NOMBREPRODUCTO LIKE B@S%;

AVG

Calcula !a media aritmética de un conjunto de valores contenidos en un campo especificado de una consulta. Su sintaxis es la siguiente

AVG (expr)

En donde expr representa el campo que contiene !os datos numéricos para los que se desea calcular la media o una expresión que realiza un cálculo utilizando 10s datos de dicho campo. La media calculada por Avg es la medra arltmética (la suma de los valores d ~ w d ~ d o por el número de valores). La funclón Avg no Incluye nrngún campo Null en el cálculo.

SELECT AVG (GASTOS) AS PROMEDIO FROM PEDISCS LVHERE GASTOS > 100;

65

Count

Calcula el numero de registros devueltos por gna consclta. Su sintaxis es la siguiente

COUNT ,r3rpr)

En dopde e x p r contiene el nombre del campo que dews contar. Los operandas de expr pueden Incluir e! nombre de cln campo de una tabla, una constante e una ftlnclón (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agreqadas de SQC). Puede contar cualquier tlpo de datos ~nciuso texto.

Aunque erpr puede realizar ur! cálculo sobre un campo, Count simplemente cuenta el núrrero de reg1i:trx sin tener ep cuenta qué valores se almacenan en los reglstros. La función Count no cuenta los realstros qce tienen campos null 3 menos que expr sea el carácter comodín asterisco ("), Si utiliza un asterisco, Count calcula el número total de registros, incluyendo aquellos que contienen campos null. Count(') es considerablemente más ripida que Count(Campo). No se debe poner el asterisco entre dobles comillas ( ' x ' ) .

SELECT COUNT (*) AS TOTAL FROM PEDIDOS;

Si expr identifica a múltiples campos, la función Count cuenta u n registro sólo si al menos uno de los campcs no es Null. Si todos los campos especificados son P%.Ii!, no se cuenta el registro. Hay que separar los nornbres de los campos con ampersand (8.).

SELECT COUNT (FECHAENVIO S( TRANSPORTE) A S TOTAL FROM PEDIDOS;

Max, Min

Devuelven el mínimo o el máximo de un conjunto de valores contenidos en un campo especifico de una consulta. Su sintaxis es:

MIN (expr) MAX (expr)

En donde expr es el campo sobre el que se desea realizar el cálculo. Expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuarie pt": no otras de las funciones agregadas de SQL).

SELECT MIN(Gastos) AS ELMIN FROM PEDIDOS ?VhEP,E PAIS = 'Esrjaña'; SELECT MAX(Gastos) AS ELMAX FROM PEDIDOS sVHERE PAIS = 'España';

StDev, StDevP

Devuelve estimaciones de la desviación estándar cara 3 :a-biaclón (el total de los registros de la tabla: c .I- 3

muestrs de la población representada (muestra ale.;1',-r ,f Su sintaxis es:

STDEV(expr) STDEVP(expr)

En donde expr representa el ncmbre del can:L.c I ;nt!ene los datos que desean evaluarse o sr-3 expresirjn que realiza un cálculo utilizando los datcs. ~I ' I * - m campos. Los operandos de expr pueden tnc!l.,lr el nombre de un campo de una tabla, una constz: * . , . 'Lj 'snclón (la cual puede ser intrínseca o deflr?,cla por el usuario pero no otras de las funciones agres~. ' + . < l c )

StDevP ?'Laicla !!qa pobiaclón, y StCev evaim uqa mliestra de la población. SI la consulta contlerie ;71er:cj de dos registros ( o nlngiin registro para StDevP), ?stas funciones devueiven un valor Null (e¡ cuai Indica qde :a desviacicin estandar no puede calcularse).

SELECr STDEV(Gastos) AS DESVIACION FROM PEDIDOS WHERE PAIS = 'España'; SELECr STDEVP(Gastos) AS DESVIACION FROM PEDIDOS WHERE PAIS= 'España';

Su ni

DeIJuelve la suma del coi -¡into de valores contenido en un campo especifico de un3 consultz:. Su sintaxis es

SUM(expr)

En donde expr respresenta el nombre del campo que contiene los datos que desean sumarse o una expresión que reaiiza un cálculo utllizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el uSuario pero no otras de las funciones agregadas de SQL).

SELECT SUM(PRECIOUN1DAD * CANTIDAD) AS TOTAL FROM DETALLEPEDIDO;

Var, VarP

Devuelve una estimación de la varianza de una población (sobre el total de los registros) o una muestra J

población (muestra aleatoria de registros) sobre los valores de un campo. Su sintaxis es:

VAR(expr) VARP(expr)

VarP evalúa una población, y Var evalúa una muestra de la población. Expr el nombre del carnpc 1

contiene los datos que desean evaluarse o una expresión que realiza un cálccllo utilizando los datos de campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constaritti .

función (la cual puede ser intrínseca o definida por el usuarlo pero no otras de las funciones agregXL? SQL)

Si la consult? contiene menos de dos registros, Var y VarP devuelven Null (esto indica que la vari;!:. ' puede calcularse). Puede utilizar Var y VarP en una expresión de consulta o en una Instrucción SQL.

SELECT VAR(GAST0S) AS VARIANZA FROM PEDIDOS WHERE PAIS = 'México'; SELECT VARP(Gastos) AS VARIANZA FROM PEDIDOS WHEPE PAIS = 'México';

Consultas de Acci6n

Las consultas de acción son aquellas que no devuelver: nlngún registro, son las encargadas de acciones añadir y borrar y modificar registros.

DELETE

Crea una consulta de eliminación que elimina los rq:\:-z5 de i;na o más de las tablas listadas en la , c 7 . FROM que satisfagan la cláusula WHERE. Esta consblta cilrnlna los registros completos, no es poslble C ' I ~ . '

el contenido de algún campo en concreto. Su sintaxis ?S

DELETE Tabla.* FROM Tabla WHERE criterio

D E L E 3 es especslalmente ut11 cmndo se desea ellmlnar varios registros. En una instrucción DELE":E can muitlpes b o l a s , debe incluir el nombre de tabla (Tabla.'). Si especifica más Se una tabla desde !a qi!e elminar registros, todas deben ser tablas de muchos a uno. SI desea elirmnar todos los registros de uva tabla, elminar la propia tabla es más eficiente qcle e;ecutar una consulta de borrado.

Se puede ctilizar DELETE para eliminar registros de una única tabla o desde varios lados de una relación uno a muchos. Las operaclones de ellmlnación en cascada en una consulta únlcamente eliminan desde v a r m lados de una relaclón. Por elempio, en la relación eqtre las tablas Chentes y Pedidos, la tabla Pedidcs es la arte de muchos por 10 que las operaclones en cascada solo afectaran a la tabla Pedidos. Una consulta de borrado eilmlna los reglstros completos, no únlcamente los datos en campos específicos. Si desea ehrnlnar valores en un campo especificado, crear una consulta de actuallzación que camble los valores a Null.

Una vez que se han eliminado Ic:5 registros utilizando una consulta de borrado, no puede deshacer la operación. Si desea saber qué registros se eliminarán, primero examine los resultados de una consulta de selección que utilice el mismo criterio y después ejecute la consulta de borrado. Mantenga coplas de seguridad de sus datos en todo momento. Si elimina los registros equivocados podrá recuperarlos desde las copias de seguridad.

DELETE FROM EMPLEADOS WHERE CARGO = 'Vendedor';

INSERT INTO

Agrega un registro en una tabla. Se la conoce como una consulta de datos añadidos. Esta consulta puede ser de dos tipo: Insertar un Único registro ó Insertar en una tabla los registros contenidos en otra tabla.

Para insertar un Único Registro:

En este caso la slntaxls es la siguiente:

INSERT INTO Tabla (campol, campo2, .,, campoN) VALUES (valorl, valor2, ..., valorN)

Esta consulta graba en el campol el valorl, en el campo2 y valor2 y así sucesivamente. Hay que prestar especlal atención a acotar entre comillas simples ( I ) los valores literales (cadenas de caracteres) y las fechas indicarlas en formato mm-dd-aa y entre caracteres de almohadillas (# ) .

Para insertar Registros de otra Tabla

En este caso la slntaxis es :

INSERT INTO Tabla [IN base-externa] (campol, campo2, ,.., campoN) SELECT TablaOrigen.campo1, TablaOrigen.campo2, ..., Tabla0rigen.campoN FROM Tablaorigen

En este caso se seleccionarán los campos 1,2, ..., n dela tabla origen y se grabarán en los campos 1!2# , "

de la Taola. La condición SELECT puede Incluir la clausula LVHERE para filtrar los registros a copiar. SI Tzr l? y TablaOrlgen poseen la misma estrucutra podemos slmpllflcar la sintaxis a :

INSERT INTO Tabla SELECT TablaOrigen.* FROM Tablaorigen

De esta forma los campos de Tablaorigen se grabarSn en Tabla, para realizar esta operación es necessr'c que todos los campos de Tablaorigen estén contenlaos con igual nombre en Tabla. Con otras palabras cjuc Tabla posea todos los campos de Tablaorigen (igual ronlbre e Igual tipo).

En este tipo de consilita hay aue tener 2S3eClal atencion iGn los campos co;itaclores o autonumeric95 DL;esto que al n s c t d r un valor en u r cdmpo de este tlpo se escribe el 'valor que contenga su campo hcmoioao ?n la tabla origen, nc Incrernentándose como le corresponde.

Se puede utliizar la instruccidn INSERT INTO para agregar un registro únlco a una tabla, utilizando la slntaxis de la consulta de adlcldn de registro úr-ico tal y como se mostró anteriormente. En este caso, su cddigo especifica el nombre y el valor de cada campo del rzglstro. Debe especificar cada uno de los campos del registro al que se ¡e va a asignar un valor as¡ como el valor para dicho campo. Cuando no se especifica dlcho campo, se Inserta ? I valor predeterminado o Null. Los registros se agregan al final de la tabla.

También se puede utilizar INSERT INTO para agregar un conjunto de registros pertenecientes a otra tabla 3

consuita utllizando la cláusula SELECT ,.. F2OM como se mostró anteriormente en la sintaxis de la consulta de adicidn de rilúltiples registros. En este caso la cláusula SELECT especifica los campos que se van a agregar en la tabla destino especificada.

La tabla destino u origen puede especificar una tabla o una consulta

Si la tabla destino contiene una clave principal, hay que asegurarse que es única, y con valores no-Null ; S I no es así, no se agregarán los registros. SI se agregan registros a una tabla con un campo Contador , no se debe incluir el campo Contador en la consulta. Se puede emplear la cláusula IN para agregar registros a una tabla en otra base de datos.

Se pueden averiguar los registros que se agregarán en la consulta ejecutando primero una consulta de selección que utilice el mismo criterio de selección y ver 21 resultado. Una consulta de adición copla 105

registros de una o más tablas en otra. Las tablas que contienen los registros que se van a agregar no se verán afectadas por la consulta de adición. En lugar de agregar registros existentes en otra tabla, se puede especificar los valores de cada campo en un nuevo registro utilizando la cláusula VALUES. Si se omite la lista de campos, la cláusula VALUES debe incluir un valor para cada campo de la tabla, de otra forma fallar6 INSERT.

INSERT INTO CLIENTES SELECT CLIENTES-VIEJOS,* FROM CLIENTES-NUEVOS; INSERT INTO EMPLEADOS (NOMBRE, APELLIDO. CARGO) VALUES ('Luis', 'Sánchez', 'Becario');

INSERT INTO EMPLEADOS SELECT VENDEDORES." FROM VENDEDORES WHERE FECHA-CONTRATACION < NO'vY() - 30;

UPDATE

Crea una consulta de actualización que cambia los vzlores de los campos de una tabla especificad,? basándose en un criterio específico. Su sintaxis es:

UPDATE Tabla SET Campol=Valorl, CampoZ=VaIorZ, . . . CampoN=ValorN WHERE Criterio;

UPDATE es especialmente útil cuando se desea carnblar un gran número de registros o cuando estos se encuentran en múltiples tablas. Puede cambiar vanos campos a la vez. El ejemplo siguiente incrementa 10s valores Cantidad pedidos en un 10 por ciento y los valores Transporte en un 3 por ciento para aquellos que se hayan enviado al Reino Unido:

UPDATE PEDIDOS SET PEDIDO = PEDIDOS * 1 . 1 , TDANSPORTE = TRANSPORTE * 1.03 WHERE PAISENVIO = ' E S ;

GPOATE no qenera n lcg in resuitado. Para saber qué registros se van a carnblar, nay que examinar primero el resultado de una consulta de seleccin que utllice el mlsmo crlterlo y después e~ecutar la cmsulta be actualizacibn.

UPCATE Er.lP!EADOS SE: GFADO = S VIHERE SRA,DO 2 ; UPDATE PEODUCTOS SE-T PRECIO = PRECIO x 1.1 LVHERE PROVEEDOR = 8 AND FAMILIA = 3:

SI en una consulta de acttializacldn suprlmimos la cláusula WHERE todos los rrglstros de la tabla señaiada seran actcjalizados.

UPDATE EMPLEADOS SET SALARIO = SALARIO * 1.1

Tipos de Datos

Los tipos de datos SQL se clasifican en 13 tipos de datos primarios y de varios sinónimos válidos reconocidos por dichos tipos de datos.

Tipos de datos primarios:

Tipo de Da tos

BINARY

BIT

BYTE

COUNTER

CURRENCY

DATFTIME

SINGLE

DOUBLE

SHORT

LONG

LONGTEXT

Longitud

1 byte

1 byte

1 byte

4 bytes

8 bytes

8 bytes

4 bytes

8 bytes

2 bytes

4 bytes

1 byte por carácter

LONGBINARY necesite Según se

TEXT 1 byte por caracter

Descripción

Para consultas sobre tabla adjunta de productos un tlpo de datos Binario.

Valores Si/No ó TruejFalse

Un valor entero entre O y 255.

de bases de datos que definen

Un número incrementado automáticamerlte (de tipo L m g )

Un entero escalable entre 922.337.203.685.477,5808 y' 922.337.203.685.477,5807. Un valor de fecha u hora entre los años 100 y 9999.

Un valor en punto flotante de precisión simple con un rango de -3.402823"lO'" a -1.401298"10~15 para v3lores negativos, 1.401298*10~35 a 3.402823F10'8 para valores positivos, y O.

Un valor en punto flotante de doble precisión con un rango de - 1.79769313486232*10'" a -4.94065645841247x1032" para valores negativos, 4.94065645841247"lO '" a 1.79769313486232*10'"8 para valores positivos, y ,- U.

Un entero corto entre -32,768 y 32,767. Un entero largo entre -2,147,483,648 y 2,147,483,647.

De cero a un máximo de 1 .2 gigabytes

De cero 1 gigabyte. Utlhzado para objetos OLE.

De cero a 255 caracteres

Tipo de Dato BINARY

BIT

BYTE

COLlNTER

CURRENCY

DATFTI M E

SINGLE

DOUBLE

SHORT

LONG

LONGBINARY

L9NGTEXT

TEXT

VARIANT (No Admitido)

Sinonirnos

VARBINARY

BOOLEAN LOGICAL LOGICAL1 YESNO

INTEGER1

AUTOINCREMENT

MONEY

DATE TIME TIMESTAMP

FLOAT4 IEEESINGLE REAL

FLOAT FLOAT8 IEEEDOUBLE NUMBER NUMERIC

INTEGER2 SMALLINT

I NT INTEGER INTEGER4

GENERAL OLEOBJECT

LONGCHAR MEMO NOTE

ALPHANUMERIC CHAR CHARACTER STRING VARCHAR

VALUE

T . . . IN

SubConsultas

Una subconsulta es una instrucción SELECT anlc I ' 4 ' ' 3 de una instrucción SELECT, SELEC INSERT ... INTO, DELETE, o UPDATE o dentro de otr.3 ' ' .,ita.

Puede utilizar tres formas de sintaxis para crear urd , ._ , + .,3 :

comparac,on :ArJY ~ ALL j 58ME] ilnstrucclcn sql ) expreslon #:NOT] I N (Instrucclon sql) [NOT] EXISTS (lnstrucclón sqi)

En donde:

Comparación

Es uva expresion y un operador de comoaraclón que ccnpara la expresión con el rescltado de la subconsulta.

Expresión

Es una expresión por la qc;e se busca el conjunto cesultante de la subconsulta.

Instrucción sql

Es una instrucción SELECT, que sigL.? el mismo formato y reglas que cualquier otra instrucción SELECT. Debe ir entre paréntesis.

Se puede utilizar una subconsulta en lugar de una expresión en la lista de campos de una instrucción SFLFC- o en una cláusula WHERE o HAVING. En una subconsulta, se utiliza una instrucción SELECT pdr 3

proporcionar un conjunto de uno o más valores especlficados para evaluar en la expresión de la ~ 1 3 1 ~ 5 ~ , I

WHERE o HAVING.

Se puede utilizar el predicado ANY o SOME, los cuales son sinónimos, para recuperar registros de la ’,?

principal, que satisfagan la comparación con cualquier otro registro recuperado en la subconsulta. El e p - , : ,-, siguiente devuelve todos los productos cuyo precio untarlo es mayor que el de cualquier producto I C : ’ : : - con un descuento igual o mayor al 25 por ciento:

SELECT * FROM Productos WHERE Preciounidad > ANY (SELECT Preciounidad FROM Detallepedido WHERE Descuento > = O .25);

El predicado ALL se utiliza para recuperar únicamente aquellos registros de la consulta princrpal . I

satisfacen la comparación con todos los registros recuperados en la subconsulta. Si se cambia ANY pcr :. en el ejemplo anterior, la consulta devolverá únicamente aquellos productos cuyo precio unitario sea a .

que el de todos los productos vendidos con un descuento igual o mayor 21 25 por ciento. Esto es m u c k restrictivo.

El predicado IN se emplea para recuperar únicamente aquellos registros de la consulta principal para 1 -

algunos registros de la subconsulta contienen un valor igual. El e~emplo siguiente devuelve tci.: productos vendidos con un descuento igual o mayor al 2 5 por ciento:

SELECT * FROM PRODUCTOS WHERE IDPRODUCTO IN (SELECT IDPRODUCTO FROM DETALLEPEDIDO WHERE DESCUENTO >= 0.25);

Inversamente se puede utilizar NOT IN para recuperar unlcamente aquellos registros de la consulta 2 r r

para ¡os que no hay ningún registro de la subconsulta q~:e contenga un valor igual.

El predicado EXISTS (con la palabra reservada NOT ~mc~onal) se utiliza en comparaciones de verda(: t .

para determinar si la subconsulta devuelve algún reglb:-D

Se puede utilizar también alias del nombre de la tab13 t:” dna subconsulta para referirse a tablas listc7c: :

la cláusula FROM fuera de la subconsulta. El ejemplo .;;qulente devuelve los nombres de los empleados . ,

salario es igual o mayor que el salario medio de todo5 los empleados con el mismc título. A d y : ? ! + Empleados se le ha dado el alias T1:

SELECT APELLICO, NOP*IBRE, TITULO, SALARIO FKOPl EFlPLE.?COS A S i 1 'WHERE SALARIO > = (SELECT AVG(SALARI0) FROM EMPLEADOS WHERE T1.TITULO = EMPLEAGOS.l7TULO) ORDER BY TITULO;

En el elemplo anterior , I?! palabra reservada AS es opcional.

SELECT APELLIDOS, NOMBRE, CARGO, SALARIO FROM EMPLEADOS WhERE CARGO LIKE "Agente Ven*" AND SALARIO > ALL (SELECT SALARIO FROM EMPL€ADOS WHERE (CARGO LIKE "*Jefe"") OR (CARGO LIKE "*Director""));

Obtiene una lista con el nombre, cargo y salario de todos !os agentes de ventas cuyo salario es mayor que el de todos los jefes y drectores.

. SELECT DISTINCTROW NOPlBREPRODUCTO, PRECIC-UNIDAD FROM PRODUCTOS WHERE (PRECIO-UNIDAD = (SELECT PRECIO-UNIDAD FROM PRODUCTOS WHERE NOMBRE-PRODUCTO = "Almíbar anlsado");

Obtiene una lista con el nombre y el precio unltario de tods los productos con el mismo precio que el almbar anmdo.

SELECT DISTINCTROW NOMBRE-CONTACTO, NOMBRE-COMPANIA, CARGO-CONTACTO, TELEFONO FROM CLIENTES WHERE (ID-CLIENTE IN (SELECT DISTINCTROW ID-CLIENTE FROM PEDIDOS WHERE FECHA-PEDIDO >= #04/1/93;i' <*07/1/934);

Obtiene una lista de las compañhs y los contactos de todos los clientes que han realizado un pedido en el segundo trimestre de 1993.

SELECT NOMBRE, APELLIDOS FROM EMPLEADOS AS E WHERE EXISTS (SELECT * FROM PEDIDOS AS O WHERE O.ID-EMPLEADO = E.ID-EMPLEADO);

Selecciona el nombre de todos los empleados que han reservado al menos un pedido.

SELECT DISTINCTROW PEDIDOS.ID-PRODUCTO, PEDIDOS.CANTIDAD, (SELECT DISTINCTROW PRODUCTOS.NOMBRE FROM PRODUCTOS WHERE PRODUCTOS.IDpPRODUCTO = PEDIDOS.ID-PRODUCTO) AS ELPRODUCTO FROM PEDIDOS WHERE PEDIDOS.CANTIDAD > 150 ORDER BY PEDIDOS.ID-PRODUCTO;

Recupera el Códgo del Producto y la Cantidad pedida de la tabla pedidos, extrayendo el nombre J t ' I

producto de la tabla de productos.

En éste capítulo se ha revisado varias sentencias SQL, al menos se han tocado todas las sentencias SQI utilizadas en el proyecto.

HTML (Hyper Text Markup Language)

Principios básicos

El principio esencial del lenguaje HTML (HyperText Markup Language) es el uso de las etiquetas (tags). Funcionan de la siguiente manera:

Las letras de la etiqueta pueden estar en mayúsculas o minúsculas, indiferentemente.

Lo que haya entre ambas etiquetas estará influenclada por ellas. Por ejemplo, todo el documento HTML debe estar entre las etiquetas <HTML> y </HTML>:

El documento en sí está dividido en dos zonas principales:

El encabezado, comprendido entre las etiquetas <HEAD> y </HEAD> El cuerpo, comprendido entre las etiquetas <BODY> y </BODY>

Dentro del encabezado hay información del documento, que no se ve en ¡a pantalla principal, principalment? el título del documento, comprendido entre las etiquetas <TITLE> y </TITLE>. El título debe ser breve i descriptivo de su contenido, pues será lo que vean los demás cuando añadan la página a su bookmark 3

agenda de dlrecciones).

Dentro del cuerpo está todo lo que queremos que aparezca en la pantalla principal (texto, imágenes, &c . ,

Por tanto, la estructura queda de esta manera:

Cuando .;e eql:rlbe tin ei documento el texto que se quiere que aparezca en ia pantalla, se verá que &te x acomoda a ?!laf sin c j~e se tenga que pulsar el retorno del carro. SI se qurere separar el texto en distintos párrafos se debe usar la etiqueta <P;, (que ¡no tiene su ccrrespondiente etiqueta de aerre < , ' P i )

El texto puede tener unas cabeceras, comprendidas entre las etiquetas <H1> y </til>, <HZ> y </HZ>, etc. (hasta el nljrnero 6), siendo e¡ numero indicativo del tamaño. El tamaño mayor es el correspondiente al nbniero 1

Una etiqueta muy interesante es la de centrado <CENTER> y </CENTER> (no ia soportan todos los navegadores, aunque sí la mayoría de ellos). ÉSta etiqueta centra todo lo que esté dentro de eila, ya sea textc, in!ágent?s, etc.

También existen los separadores (horizonkl rules), que se consiguen con la etiqueta <HR> (no existe la correspondiente de cierre). Con ella se obtiene una raya horizontal tan ancha como la pantalla, y con la apariencia de estar embutida sobre el fondo.

Cuando se captura el códrgo HTML se pueden delar !íneas en blanco e indentaciones del texto para m a p r claridad, pero no son necesarias. 3e hecho, podría ?star todo en una sola línea. Lo importante es el orden correcto de IJS etiquetas. Por cierto, una etiqueta puede estar anidada dentro de otra.

El código HTML se captura en el procesador de textos con el nombre siguiente nombre: nombre.htmi y para verlo se carga en el navegador. Dando forma al texto

Cuando se quiere poner un texto sin ninguna característica especial, lo ponemos directamente. Únicamente, la separación entre párrafos (dejando una línea en blanco) la conseguimos con la etiqueta <P>.

Si se quiere separar los párrafos, o cualquier otra cosa, pero sin dejar una línea en blanco, usamos u c a etiqueta parecida <BR> (break, o romper). Tampoco tiene etiqueta de cierre.

Si se quiere obtener múltiples líneas en blanco no basta con repetir la etiqueta <P>, sino que hay que combinarla con la etiqueta <BR>. Así por elemplo, si se quiere obtener cuatro líneas en blanco, se pondr'a:

AI escribir el texto, si se pone más de un espacio en blanco entre dos palabras se observa que el navegsr:>r sólo reconoce uno de ellos. Si se quiere forzar a que lo haga, se debe poner ? I código "&nbsp;" ' m [ - -

breaking space).

Para destacar alguna parte del texto se pueden usar:

<B> y </B> para poner algo en negrita (bold). <I> y </I> para poner algo en cursiva (italic).

Otra etiqueta interesante es <PRE> y </PRE>. El texto que se encuentre entre ella estará preformateado, e5 decir que aparecerá como si hubiera sido escrito con tina máquina de escribir, con una fuente de espaciado fijo (tipo Courier). Además se respetarán los espaclos ? n Sianco y retornos del carro, tal como estaban en nuestro documento HTML (lo cual no ocurre normalmente, como se ha visto anteriormente). Es muy apropiada para confeccionar tablas y otros documentos ilmllares.

7 5

Con la etiqueta < T r > y < J T > se consigue también que el texto tenga un tamaño menor y la apar!ema rje los caracteres de cina máquina de escribir (typewriter). La dlferencla con la anterior es que no preforn-x3ka ? I texto, sillo q w unlcarnente cambia su apariencia.

La etiqueta IBLOCKQUOT€> y <. BLOCKQUOTE> se utlllza para destacar una clta textual dertro del texto general. Este pdrrafo está escrlto entre ambas etlquetas. Se respetan los márgenes a ambos lados.

En las fórmulas matemáticas puede Interesar poder escribir indices y subíndlces, que se consiguen COG ¡as etlquetas <SUP> c. SUP> y <SUB> <,.'SUB> respectivamente.

Comentarios no visibles en la pantalla

A veces es muy ljtil escribir comentarios en el documento HTML sobre el código que se escribe, que nos pueden servir para recordar posteriormente sobre Io que hicimos, y que no queremos que se vean en pantalla.

Esto se consigue encerrando dichos comentarios entre estos dos símbolos: <!-- y -->

Enlaces con otras piginas

La característica que más ha influido en el espectacular éxito del Web (o tela de araña) ha sldo, aparte ¡a de su carácter multimedia, la posibilidad de unlr los distintos documentos repartidos por todo el mundo p r

medio de enlaces hipertexto.

Estructura de los enlaces

En general, los enlaces tienen la siguiente estructura:

Donde xxx es el destino del enlace (Obsérvese las comillas). yyy es el texto indicativo en la pantalla del enlace (con u n colcr especial y generalmente subrayado)

Tipos de enlaces

Vamos a distinguir cuatro tipos de enlaces:

1.Eniaces dentro de la misma página 2.Enlaces con otra página nuestra 3.Enlaces con una página fuera de nuestro sistema 4.Enlaces con una dirección de email

En este sistema sólo se utilizan enlaces en éI mis:. . . : :e cualquier manera se describirán todos los t 3'

de enlace.

Enlaces dentro de la misma página

A veces, en el caso de documentos (o páginas) n ? ~ , ~ ' ~ . ~ ' US, es Interesante dar un salto desde una pos;ci(;rl a otra determinada.

En e,te :dm I r 3 q ~ e antes st? 17a 'lamado XXX, es decir, el destino dei eplace, en este caso el s!tlo dentvo <e la paglna a donde 'queremos saltar, se sustltuye por =marca (la palabra marca puede ser cualquier palabra que queramos). Lo que hemos llamado antes T'fY es ia palabra ;o palabras) que aparecerán en la parltalia en color (en forma de hlpertexto). Su estructura es, entonces:

Y en el sltio exacto a donde se quiere saltar, se debe poner la siguiente etiqueta:

Por e~ernplo, si se quiere saltar desde aquí a la pantalla final, se pone la siguiente. etiqueta:

Y en el final del documento he puesto esta otra etiqueta:

. . , I , .

. ,

Enlaces con otra página nuestra

Puede ser. que se tenga una sola página. Pero Io más frecuente es que se tengan varias páginas, una : :

(o principal) y otras conectadas a ella, e incluso entre ellas mismas.

Suponga que se quiere enlazar una página llamada primera.html con otra página llamada segunda.htm1. F- este caso, se substituye lo que hemos llamado XXX (el destino del enlace) por el nombre del fichero:

Si se quieres que vaya a un sitio concreto de otra página nuestra en vez de ir al principio de ¡a :? : ~

adonde va por defecto, en ese sitio tenemos que colocar una marca (véase la sección anterior), y cor?>; t ' 3

el enlace con la referencia a esa marca.

Lo veremos con el siguiente ejemplo: Quiero poner un enlace desde aquí a otra página, pero a concreto, donde he puesto la marca <A NAME="allnear"></A>. Entonces la etiqueta tiene qEe r

HREF="tercera.html-alinear"> tercera pagina <,'A> Que resulta: tercera pagina

Una observación importante: Se esta suponiendo que la página en la que se esta escribiendo esta ia ::' y la otra página a la que se quiere saltar están en el mismo directorio. Porque pudiera ocurrlr q u t . I

organizado el sitio del Web con un directorio principal, y otros subdirectorios auxiliares. Si la páglna ci. !

se quiere saltar está, p. ej. en el subdirectorio subdir, entonces en la etiqueta tendría que haber . "subdirisegunda.htm1".

Y a la inversa, si quiero saltar desde una página a Gtra que está en un directorio anterior, en la t.: . I ' 3

tendría que haber puesto "../segunda,html". Esos 30s puntos hace que se dirija al directorio 31". .

Obsérvese que se debe utilizar el símbolo / para tndlcar los subdlrectorios, y no este otro \, que es L

únicamente de Windows.

Si se quiere evitar todas estas complicaciones, p o d e ~ o s tener todo junto en un Único directorio, per2 tiene el inconveniente de que esté todo más des:rdenado, y sean más difíciles de hacer las : modificaciones.

Enlaces con una página fuera de nuestro sistema

Si se qulere 2nlazar con una páglna que esté fuera de nuestro sistema (es decir, que esté en un servtdor distinto al que soporta nuestra páginaj, es necesario conocer su dirección completa, o URL (Untform Resource Locator). El URL podría ser, ademis de la dirección de una página del Web, una dirección de f?p, gopher, etc.

and vez conoclda la dirección (o URL), lo colocamos en vez de io que hemos lldmado anteriormente xxx (el deshrlo del enlace). SI se quiere eniazar con la página ae Netscape (cuyo URL es: http:// home,netscape.corn/), la etlqueta sería:

Es muy irnportante copiar estas direcciones correctamente (respetando las mayúsculas y minúsculas, Dues los servidores UNIX sí las distinguen)

Enlaces con una dirección de ernail

En este caso, se sustituye lo que se ha llamado antes xxx (el destino del enlace) por mailto: seguido de la dirección de email. La estructura de la etiqueta es:

Un ejemplo de esto serl'a:

Comentarios a

electrónico<iA> <A Hf?EF="mailto: [email protected]"> Nombre de la persona a la que se va a dirigir el correo

Pero hay algunos navegadores que no reconocen este tipo de enlace, y no tendrían medio para conocer el correo electrónico al que se va a dirlgir. Por Io tanLo, es más seguro poner algo así como: Comentarios a Nombre de la persona en <A HREF="mailto: [email protected]"> [email protected] < / A > . De ésta forma aparecerá en pantalla la dirección de correo electrónico al que se desea enviar con un link para envlarlo.

Imágenes

La etiqueta que sirve para incluir imágenes en ¡as páginas Web es muy similar a la de enlaces a c t r i \ páginas, que ya se ha visto. La única diferencia es que, en lugar de indicar al programa navegador el nonl t r t . y la ,ccahzaclÓn de un documento de texto HTML para que Io cargue, se le Indica el nombre y la IocaIlrac <;r7 de crn fichero que contiene una imagen.

La estructura de la etiqueta es:

Con el comando !MG SRC (image source, fuente de la Imagen) se indica que se quiere cargar una imaqe-n llarnada 1magen.glf (o el nombre que tenga).

Dentro de la etiqueta se pueden añadir otros comandos. tal romo ALT

Con el comando ALT se lntroducs una descripción (una palabra o una frase breve) Indicativa de !a Imagen. Este comando, que en principio se puede omitlr, es en beneficlo de !os que accedan a nuestra páglna ron un programa naveyador en forma de texto sólo. Ya que no son capaces de ver la imagen, por lo menos ,;leden hacerse una id?a sobre ella. Pero no es sólo por esto. Hay casos, en los que se utlliza una Imagen corno enlace a otra página. Si se omtiera este comando, los que utilizan dichos navegadores no podrían de nlnguna manera acceder a esas páginas.

Con respecto a la localización del fichero de esa Imagen, se puede decir aquí Io mismo anteriormente se había dicho anteriormente referente a los enlaces. SI no se indica nada especial, como en el caso que se ha expuesto, quiere decir que el fichero imagen.gif est6 en el mismo directorlo que el documento HTML que se esta escrlblendo. Si no es así, se siguen los mismos criterios que los indicados para los enlaces.

AI igual que una página con la que queremos enlazar puede estar fuera de nuestro sistema, (en cuyo caso había que indicar su URL o dirección completa), podemos cargicr una imagen que no esté en nuestro slstema siguiendo el mismo método, es decir, indicar en !a etiqueta el URL completo de la imagen. Aunque esto no es muy aconse~able, pues alargaría innecesariamente el tiempo de carga de nuestra página.

Las imágenes deben estar guardadas en un formato de fichero especial llamado GIF. (Hay también otro formato más avanzado). Este formato GIF almacena las imágenes con un máximo de 256 colores, en forma comprimida. Hay programas gráficos (como el Paint Shop Pro para el PC, o el Graphic Converter para el Mac) que permiten guardar las imágenes en este formato, además de cumplir otras muchas tareas de manipulación de las mismas.

Un aspecto muy importante a tener en cuenta es el tamaño de las imágenes, pues una imagen grande supone un fichero grande, y esto puede resultar en un tlempo excesivo de carga, con el consiaulente riesgo de que quien esté intentando cargar nuestra página se canse de esperar, y desista de ello.

Para elegir la posiciór: de la imagen con respecto al texto hay distintas posibitidades. La más sencllla es colocarla entre dos párrafos, con un titular a un lado. Los navegadores más actuales (como el Netscape Navigator y el Microsoft Internet Explorer) permiten que el texto pueda rodear a la imagen.

De momento nos limitaremos a escoger la posición del t i tdar con respecto a la imagen (si es que querernos ponerle un titular, claro está). Se puede poner arriba, en medio o abajo del lado de la imagen. Para ello ;t. añade el comando ALIGN a la etiqueta, de la siguiente manera:

Otra posibilidad muy interesante es la de utilizar una Imagen como enlace a otra página. Para estos casos st' utilizan generalmente imágenes pequeñas (iconos), aunque se puede usar cualquier tipo de imagen.

donde t x x Sr3 ? I ~ ~ s : ; R G ?el sriace e yyy el texto de! enlace (o más generalmente hablando, lo que aparece en la pantalla como el enlace. En este caso se sustituye xxx por el nombre del fichero de la páglna a la que se qulere acceder. Y en lugar de yyy ponemos la etiqueta completa de la Imagen (que queda así englobada dentrc de la etiqueta del enlace)

Como e;emli;lo se utllizará la imagen llamada imagen.gif.

Pulsando la Imagen se comprueba cómo efectlvamente enlaza con la págins deseada. Se puede observar que la imagen est i radeada de un rectágulo del color mrmal en los enlaces. Si no se desea que aparezca ese rectángulo, hay que Incluir dentro de la etiqueta de la imagen el atributo BORDER=O, es decir:

Posicionando el cursor sobre esta última imagen, se comprueba que actúa también como enlace aunque carezcd del rectángulo de color. Esto puede resultar más estético, pero se corre el riesgo de que el usuario no se dé cuenta de que la imagen sirve de eniace.

También se puede utilizar una imagen para enlazar con otra imagen, En este caso sustituimos xxx (el destlno del enlace) con el nombre del fichero de la imagen a la qce queremos acceder e wy (lo que aparece en pantalla como el enlace) por la etiqueta completa de la imagen que queremos que aparezca en la pantalla comc el enlace de la ctra.

Supongamos que queremos enlazar con la imagen imagen2.gif por medio de esta otra imagen, imagen3.qlf:

Por último, otra posibilidad es la de utilizar un texto para enlazar con una imagen. En este caso se sustituve xxx (el destino del enlace) con el nombre del fichero de la imagen a la que se quiera acceder e yyy (lo que aparece en pantalla como el enlace) por el texto.

Supongamos que queremos enlazar con la imagen irnagen2,gif por medio del texto "un paraíso tropical":

Se pueden capturar las imágenes que aparecen en pantalla, con objeto de guardarlas permanentemente ,:r nuestro disco duro. En los navegadores más actuales se hace pulsando sobre la imagen con la tecla derec5a del ratón, con 10 que se obtiene un menú en el que está la posibilidad de guardar ¡a imagen.

U n tipo de imágenes del que se hace abundante uso y que sirven para mejorar la presentación de la pagir'a son los iconos, botones, barras separadoras, etc. A pesar de su tamaño o forma, son imágenes comc cualquier otra.

Si tenemos la imagen (bgold.gif). Lo debemos guardar en el mismo directorio en el que va a estar nuestro documento. Para utilizarlo en el comienzo de una hnea, escribiríamos en el sitio correspondiente:

Se puede hacer lo mismo con la barra separadoraibarsold.glf). Se captura, se guarda y en el código se escribe:

8G

Existen algunas IImtacIones para 2scriSir el texto. Una de ellas es debido a que las etiquetas se fcrnlan 1:or'?o un comando escrito entre !cs l;ín-tbolos " c " y ">" , Por tanto, SI se quisleran escrlblr estos caracteres c ~ m o parte norm31 del teyto. daría esto iugar a una amblguedad, ya que el programa navegador podrla Interpretarlos con~o el cornienzo o final de una etlqdeta, en \vez de un car5cter m5s del texto.

Como se ve, estos códigos emplezan siempre ;an el signo & y acaban siempre con ;

De una manera simllar, existen códigos para escrlblr letras especificas de distintos idiomas. Hay muchos de ellos, pero, lógicamente, hablaré de los que más nos inkresan son los propios del castL"- %di'O

(las vocales acentuadas, la ñ y los signos ¿ y i )

Los códigos de las vocales acentuadas se forman comenzando con &, seguldo de la vacal en cut-itlCr; seguido de la palabra acute (aguda) y terminando con el signo ;

El resto de los códigos son:

Todo esto, que como se ve es muy laborioso, + Y : : ~ , x'i 'cer lnutll ya que si escribimos nuestro te..:: "

hacer ningún caso de estas convenciones, escrlblef-.-!- : ' t:!ras acentuadas y demás signos directamentcr . ' .

muy posible que el resultado lo veamos correcta"... ',, ..'? iuestro navegador, pero nunca podremoi : :' seguros que les ocurra 1 0 mismo a todos I G S , . .-:an a nuestras páginas C G ~ otros navegi?:? distintos.

En la práctica, el problema no es tan grave, pue'? . I ?;::as editores de HTML suelen tener la poslii~~lc: :,!

de escribir los códigos automáticarnente.

Incluso si se escribe en un procesador de textos :. ' . . : 1 \:cual, se puede escribir el texto en una pr!v!c'.j etapa de forma normai y luego aplicarle algún de ~ Y Y , que hacen la conversión adecuada.

Tablas

Hasta que no .e empezaron a usar las tabias, la única vanera de tabular las cosas era utllirar ia etlqueta d e preformafsado, c , ~ n la que es necesario poner manualmente los espacios en blanco para que quede todo alineado formando filas y columnas, con un resultado muy poco estétlco.

Estructura de una tabla

Las etiquetas necesarias ordenadas de afuera hacia adentro para hacer las tablas son:

1. La etiqueta general, que engloba a todas las demás es <TABLE> y </TABLE>. Es dear:

Con esto se presentarían los datos tabulados, pero faltaría la característica que hace más atractivas -i :\

tabias, y es que estos datos vayan dentro de unos cajetines formados por un borde. Para esto tenenwi ; , + >

añadir el atributo BORDER a la etiqueta, es decir:

2. En el siguiente nivel, der?tro de la anterior, están las etiquetas para formar cada fila (row) de !a ta::,l.f I . '

son <TR> y </TR>. Hay que repetirlas tantas veces como filas se quiere que tenga la tabla, Es dec I I

una t3bia con dos filas, sería:

3. En el ÚItinlo nivel (dentro de las anteriores) están las etiquetas de cada celda, que son <TD> f

que engloban el contenido de cada celda concreta :texto, imágenes, etc.). Hay que repetirla tantL?, como celdas queremos que haya en esa fila.

Veamos un ejemplo de una tabla con dos filas. Cada fila va a tener tres celdas. Dentro de cada mi lL !

a poner un texto indicativo de la posición de dicha celda:

.

Filas con desigual número de celdas

En los emplos anteriores se han puesto dos filas con igual numero de celdas. ¿Qué pasa S I ese número t's distinto' Pues el navegador forma el número de filas y columnas que haga falta, dejando espacios en bianco en las filas que tengan menos celdas.

En el e~empio anterlor podemos eliminar ia tercera celda de la segunda fila, es decir S I borramos:

Titular de la tabla

Se puede añadir un titular (caption) a la tabla, es decir un texto situado encima de la tabla que Indica cual es su contenldo. Se consigue con la etiqueta <CAPTION> y </CAPTION>.

Si en el ejemplo anterior añadimos la siguiente línea:

.. . . , ~

.~ - , . -.., . . . . , . - 1 ~

1 ~~ . . . . . . ~, .~ ~ ~- . . . I ". . . #

Variando e l espesor de los bordes

El atributo BORDER (visto más arriba) pone por defecto un borde de espesor Igual a la unidad. Pero se puede hacer que este borde sea tan grueso como queramos, ponlendo:

Si en el ejemplo anterior ponemos:

La tabla tendrá los bordes más gruesos.

Celdas d e cabecera

Además de las celdas que contienen datos normales, podemos poner, si nos conviene, celdas de cabecc-i (header), que se distinguen por estar el texto de dichas celdas en negrita y centrado.

Este ze coniigue con la etlqueta <TH> y < TH> (en ver de la normal <TD> y <.'TD>)

Vamos a añadir, en el ejemplo anterior, una fila de estas celdas de cabecera, antes de las otras dos $::,t. . : exlstian:

Se pueden coiocar en el sitio que se quiera, aunque Io normal es que vayan en los bordes, encabezando las columnas o las filas.

Contenido de las celdas

Hasta ahora, en todos los ejemplos se ha puesto un teuto normal dentro de las distintas celdas

Pero se puede poner en ellas cualquler otro elervc-rto de los que van en un documento HTML, con:; imágenes, enlaces, etc. No hay más que poner der;.: :t: la 2tlqueta de la ceida la etiqueta CorresponcIIc'"::~ a una imagen, un enlace, etc.

Ejemplo con una imagen:

E~emplo con un enlace:

Posicionamiento del contenido dentro de la celda

Normalmente, el contenido de una celda está alineado a la izquierda. Pero se puede cambiar esto añadiendo dentro de la etiqueta de la celda los siguientes atrlbutos:

El alineamiento por defecto en el sentldo vertical es en el medio. También se puede cambiar, añadiendo dentro de la etiqueta de la celda los siguientes atibutos:

Variando las dimensiones de la tabla

El navegador se encarga normalmente de dimensionar el tamaño total de la tabla de acuerdo con el ntirnerr, de filas, de columnas, por el contenido de las celdas, espesor de los bordes, etc.

A veces nos puede convenir forzarle para que la tabla tenga unas dimensiones totales mayores que la5 7 1::

le corresponden, tanto en anchura como en longitud. Esto se consigue añadiendo dentro de la etiqueta -:

tabla los atributos WIDTH y HEIGHT igual a un porcentaje de la dimensión de la pantalla, o a una c1f:a ~ ; ' . c

equivale al número de pixels.

Por ejemplo, si en el último ejemplo ponemos:

- . . . .

O, si en ese mismo ejemplo, ponemos:

. . ~ " _ _ .

Celdas que abarcan a otras varias

A veces puede ser interesante que una celda se t ,"ra sobre otras varias. Esto se consigue añadlerdo dentro de la etiqueta de la celda los atr ibutm . -=A!-l=número para extenderse sobre un nuwe-o

{ .;

de temivx ío de columnas, o ROLVSPAN-núnwro para extenderse ,verticalmente sobre un n c r ~ ~ determinado de Fi!ar.

Por elernplo, en !a prlmera tabla de los ejemplos vamos a a k d l r una fila con una sola celda, que abarca a dos cci1-1rnnas:

O, en la rnlsma tabla, vamos a añadir una ceida en la prlmera fila. Pero que abarque también a la sigulente:

Color de fondo en las tablas

Se puede conseguir que las tablas tengan un color de fondo, siguiendo un procedimie3to totalmente análogo al empleado para que una página tenga un color de fondo. Para ello so debe utilizar el atributo BGCOLOR="~XXYYZZ".

Se puede conseguir:

1.Que la totalidad de la tabla tenga un color de fondo. Para ello, colocarnos el atributo dentro de la etlqueta TABLE. Por ejemplo, vamos a hacer que la tabla tenga un fondo verde (2OOFFCO):

Resulta que quedan todas las celdas de la tabla verdes.

2.Que solamente una celda determinada tenga un color de fondo. Para ello, colocamas el atributo dentro ;C

la etiqueta de la celda correspondiente. Por ejemplo, vamos a hacer que sdlo la celda 1 de la fila 1 tenga <,I-

color verde:

Resulta que sólo la primer celda tiene color verde

3.Que la generalidad de las celdas tenga un color, pero que alguna celda tenga uno particular. El atributo c,.': color general se coloca en la etiqueta TABLE, y el del color particular en la etiqueta de la celda en cuestlor? (una combinación de los dos casos anteriores). Por elernplo, vamos a hacer que la generalidad de la tacla sea de color rojo (XFFOCOOj, pero que la celda 1 de ; a fila 1 sea de color verde (#OOFFOO):

Imágenes de fondo en las tablas

El Explorer de bllcrosoff soporta la colocación de irrágeres de fondo en el interlor de las tablas, de Ima manera analoga a corno se hace en una pagina. Para 2110 debe utlllzar el atrlbuto BA,Cr5ROUr~D="imagen.gi f " o BACKGFOLr;C= 'lr-qr;3'1.;pg ' ; J ; s t g dnLrrlorment?.

Si se utlliza clen;ro de la etiq&ta <TAGLE> la imagen en cuestlón se multiplicará detrás de todas Ids celdas Por e~emplo, se puede:

(Con el Netscape no se verá ninguna imagen de fondo, sólo con el Explorer)

Si, por el contrario, sólo se pone este atributo dentro de !a etiqueta de una celda concreta ( /TD> o <TH;- i I entonces la imagen de fondo se verá sólo en esa celda.

Separaciún entre las celdas de una tabla

Por defecto, la separaclón entre las distintas celdas de upa tabla es de dos plxels. Pero se puede varlar e< t: con el atrlbuto CELLSPACING, que se pone dentro de la etiqueta TABLE.

Por ejemplo, para obtener una separación de 20 pixels entr? celdas se pone:

A prlmera vista parece como si esto fuera Io mismo que S I hubléramos aumentado el espesor de los kr:!t:G

Pero para comprobar que no es así, hagamos que er; el caso anterior, tenga además unos bordes de i :ti

espesor

Con lo que se obtiene una tabla que parece estar reia!tada

Separación entre el borde y el contenido dentro de las celdas

Por defecto, la separación entre el borde y el cor,:t.r-,!lo dentro de las celdas es de u n p~xel . Se ; .+' :.. cambiar esto con el atributo CELLPADDING, que se x-, j e l t r o de la etiqueta TABLE.

Por ejemplo, para obtener una separación de 20 ~ 1 . c ' I '--: r l l contenido y los bcrdes, dentro de cada c . ,:,:

Con lo que se obtiene una tabla en la que cada ct- ' - . ' . ' . C I ~ , O espacio.

Se puede combinar este atributo con CELLSPACIrit

Por ejemplo, una tabla con bordes de 5 de espescf I ' ! c n entre celdas de 15 y separación del conter., :,- con respecto a los bordes de las celdas de 20, lo r,: * . ' . . - \ c m :

Con lo que SS obtlene una tabia con celdas m u y grandes y Tesaltada

Formularios

La manera ger:eral para que los iectores de nuestra oigina se puedan comJnlcar con nosotros es por medio de un enlace a nuestra dlrecclón de email, con lo que recibiríamos un emall convencional.

Pero puede ser que Io que necesitemos sea solamente una respuesta concreta a urlas opclones q.ie presentaremos nosotros Wsmos, o un comentario del u,uario, para lo que le suministraremos un espaclo donde introducirlo.

Se puede hacer todo esto, además de otras cosas, utilizando los formularlos, con los que se ; u e d e ~ confecclonar paglnas que contengan los elementos necesarios para ello, tal conlo botmes de radio, listas :e selección, calas de introducción de texto y de control, etc., como se verá adelante.

Los formularios permiten que los demás nos envíen la Información directamente a vosotros o bien a 4p ,~~~ . : - :

servidor, en donde hemos instalado un programa que procese esta inforniaclón.

Por ejemplo, vamos a suponer que queremos crear una lista de correo Los usuarios pueden introdia:mr nombres y direcciones de email y pulsar un botón de envío. Esos datos los podemos reclblr "en bruto ' .

nuestro correo, con los que confeccionaríamos manualmente dicha lista de correo, sin necesitar :1 r- ; : programa para ello. En este sistema una vez que se reciben los datos de un formulario la dl1 Interprctt. t.,

nuestro sistema irá a la base de datos y realizara las operaciones requeridas.

Estructura de un formulario

La estructura general de un formulario es:

1.Etiqueta de inicio:

2.Cuerpo del formulario, con los distintos elementos para poder introducir los datos. 3.Botones de envío y de borrado. 4.Etiqueta de cierre </FORM>

<FORM A(TION="mailto:dirección-de-email" METHOD="POST" ENCTYPE="TEXT/PLAIN">

Etiqueta de inicio

El atributo ACTION indica la zcción que se debe efectuar y que es que los datos sean enviados por V"

dirección indicada.

El atributo METHOD=POST indica que los datos sean inmediatamente enviados por correo a la dire(- email, nada más pulsar el usuario el botón de envio.

Con el atributo ENCTYPE="TEXT,'PLAIN" se conslgbe ;I:? las respuestas las recibamos como un f1c-V texto, perfectamente legible y sin codificar.

Elementos para introducir los datos

Los vamos a dividir en tres clases:

1.Introducclón por medio de texto 2.Introducc1ón por medio de menús

Gt-;clr,a 1J c:.si ~1 ZsI q-?' L ~ ~ ~~ ~~~ ~~

3,Intrclf~1c:f6n aor rried~o de 5otones

La 1nt:oduc;lon de lcs datos se cmslgue por medlo de la etiqueta:

I t

En donde: xxx es la palabra que Indica el tipo de introducción. yyv es el nombre que !e asignamos nosotros a la varlable de lntroducclón del dato. zzz es la palabra asociada a un elemento.

Todo esto, que de momento parece muy confuso, se aclarará al ir vlendo los dlstintos casos.

Introducción por medio de texto (una l ínea)

En este caso es xxx-text, es decir, INPUT TYPE="text". El atrlbuto VALUE no procede en este caso.

Vamos a poner un ejemplo: solicitamos el apellido del usuario.

. . . 8 , . - I , " .. . . . _I_. . .. - . . . . . -. - . . . . , 11 L ' " - - I t - -. ,' ' . - .. . . . . . . . . . . . . ~. . " ~~ ~. ~ ~ I !

- . - .. I-:. - . " ~ . . . - : ~ . 1 ~ .. ~ . ~ . - , . .~ . -. . .

, . - , , . ~. - I , _ . , - ! , , .~ . . . . . . . . . ." . . . . . . . . , . - . . - x - - , 1 - _ :. . 1 ,

- _ - 1 1 __ I - - . ....

Obtenemos un formularlo de la siguiente forma:

Escribe tc: apeilldo .

i

Si el usuario introduce su apellido, p. ej. b i z , y pulsa el botón de envío (que veremos más adeiante recibiremos un emall suyo con el siguiente texto:

Apellido=Ruiz

La longitud de este formulario es por defecto de 20 caracteres. Se puede variar incluyendo en la etlqueld .. atributo SIZE="número". Por otra parte, sea cual sea la longitud del formulario, si no se indica nada usuario puede introducir el número de caracteres que quiera. Se puede limitar esto, Incluyendo en la etiqueta el atributo MAXLENGTH="número".

En el caso que hemos vtsto, si hubiéramos cambiado la etiqueta correspondlente por:

. . . . . . ~ ,, . . " ,,. ,( l , . , . " I . . - . , ~ - I I - I , ~ - , .: !I -. . . , _ I t - ! I ~ - - .. . . . . . . . . . . . . . - 1 .. ~ . . -~

Escribe tu apellldo I- 1- ~"1 (Se puede comprobar cómo no se pueden introduclr mds de 12 caracteres).

También se puede hacer que el texto introducido no representen por asteriscos. Basta con camblar TYPE="password". En el Últlmo ejemplo, si cambtdrnos

sea reconocible, es decir que todos los caracteres ir en ¡a etlqueta INPUT TYPE="text" por INPL,; 'a etlquea correspondiente por:

SS

~ * ****

(Se puede comprobar cómo los caracteres lntroducldos se representan por asteriscos)

Introducción por medio de texto (múltiples líneas)

Cuando et texto a introducir puede alcanzar una gran longitud, por ejevplo un comentarlo, es conveniente utilizar un formulario de texto de múltiples lineas.

Esto se consigue con la etiqueta de inicio:

(En donde n3 se utiliza INPUT T Y P E y donde ROWS representa el número de filas, y COLS el de columnas;.

y la de cierre: </TEXTAREA>

(El salto de línea del texto introducido no se efectúa automáticamente).

Una vez que el usuario haya escrito sus comentarlos dentro del formulario, y haya pulsado el botón de em c . recibiremos un email suyo con el siguiente texto:

Comentarios=Bla bla bla ...

Introducci6n por medio de menú,

SI queremos que el usuario, en vez de introducir un t e l b , como se ha vlsto en los casos anteriores, e s m , ! ~ entre varias opciones que le presentamos nosotros, P ? r m c s uso de un formulario en forma de menú.

Se consigue COI; la etiqueta de inicio <SELECT NA.P-1E . . ' 4 la de cierre <,'SELECT> Las distintas opciones a escoger se consiguen con :a ' . ' : , ! J OPTION>.

L .

Elempio: Pehmos ai usl;arlo qLt. &lla su colcr preferido:

Si el !usuario ha escogido, p. ej. Azul y ha pulsado el botón de envío, recibiremos urI email suyo con el texto: ColorPreferido=Azul.

cual es tu coior favorito?

I verde 1 "_ r

En el ejemplo znterior, sólo es visible en el formulario una opción. Si queremos que Sean vwbles múiticks opcicnes a la vez, añadimos en la etiqueta los atributos MULTIPLE SIZE="número", donde especlfican-los t i l

número de opcrones visibles.

Si cambiamos en el ejemplo anterior la etiqueta correspondiente por:

cual es tu color preferido?

7 - - - ~

Formulario de confirmación (checkbox)

Si queremos que el usuario confirme una opción determnada, podemos hacer uso de un formularle :<: confirmación, o checkbox, que se consigue con la etiqueta:

E~ernplo: Solicitamos al usuario que confirme su incluslón en una lista de correo:

, !t., . ~- ~ .~ . , , - -.-,, ~ , . .-. , 1 , - ~ - - , 1, . . . . . . . . . . . . " 4 , ~ ~ _ , , ( I , ~ 1 - . - . S , - . , I -~ . . . " . . . - . . .

- I ~. I . . " .~ ~. I ~, . -~ . . . . . . :- ,

Si el usuario marca este formulario y pulsa el botdn d ~ ' ? w o , recibiremos un email suyo con el texto: Lista=On.

Quedaría

Obtenemos:

m Si deseo ser ~nclu~t io en !a lista de correo

Botones de radio

Cuando queremos que el uwarlo elija una única opción entre varias, podemos hace uso de los botones de radio, que se consiguen con la etiqueta:

Donde yyy es el nombre que le ponemos a la varlable que se trata de elegir, y zzz es el nombre de cada ~ n a de las opciones en concreto.

Ejemplo: solicitamos al usuario que defina cuál es su s1sten;a operativo preferLdo

Queda de la siguiente forma:

¿Cuál es t u sistema operatlvo pre fer ido?

0 PC O Mac O UNlX

Obsérvese el atrlbuto opcional CHECKED que se ha a r a d d o en la primera etiqueta. Esa será la opclc;r-, ; .'

aparece marcada por defecto.

Obsérvese también que no es posible escoger m i s de -,-a ,:pclon.

Si el usuario ha escogido la opción PC y pulsa el L l * :e envío, recibiremos un email suyo con el t e ~ t SlstemaOperativo=PC. Botones de envío y de borrado

Hasta ahora, -3n todos los ejemplos que hemos VIS ' . . : .n elemento esencial en cualquier f o r m d a m es el botón de envío de los datos, que se cons1gur s - ; .eta:

Erl donde Z Z I es el texto que queremos que apare: * 'rl

Vamos a aiiadirio ai grlmer ?;?mplo, en el que st? soiicitaba PI apeilldo aei 9sL;ario:

Otro boton Interesante es el de borrado de los datos introducidos, muy conveniente en un formulario con muchos elementos. Es muy slm!lar al de envio, pues se consigue con la etiqueta:

En donde zzz es el texto que queremos que aparezca en el botón.

Si añadimos al ejemplo anterior la etiqueta:

Consideraciones finales

Hasta ahora hemos visto uno a uno los diferentes elementos que se pueden utilizar. Pero no hay PIP:; . I -

inconveniente en usar, dentro del mismo formulario, distintos tipos de introducción de datos. AI pulsar - .

usuario el botón de envío recibiríamos en email suyo con las distintas pparejas NAME=VALIIE de 1: ; ': ?

elemento, encadenadas con el símbolo &.

Por ejemplo, con este formularlo, con dos elementos distintos:

Escrlbe tu apellldo

cCual ES t u color preferido?

I Roio

Recibiríamos un email con el texto (p. ej.): Apellido=Ruiz ColorPreferido=Azul.

Frames

Frames (en Inglés, marcos o cuadros) es un proceClr::it:nto del lenguaje HTML para dividir la par':.: :

diferentes zonas, o ventanas, que pueden actuar indt,pc,Tcientemente unas de otras, como S I se tratd: : páglnas diferentes, pues incluso cada una de a i a i ;utx!en tener sus propias barras deslizadora navegadores que lo implementan son el Netscape 2 3 - 1 Explorer 2.0 en adelante. Aunque no esta :'

en el actual estándar HTML 3.2, está previsto que Io +:e ?n el próximo (Cougar).

Una de sus características más importantes es que I- ,..??20 un enlace situado en un frame, se puede : . Y . en otro frame una página determinada. Esto se ut ' ~ : ? ' r x x n t e m e n t e para tener UT! frame estrecho .:' .

parte lateral (o superior) con un índice del con terx .'', k r m a de diferentes enlaces, que, al ser PC."-.: '

cargan en ¡a ,ventana pr,nclpal !as %intas p á g ~ r ~ ~ s . CP esta manera se facilita la navegación entre las paginas, pues aunque ;e vaya pasando de unas a otras, siempre estará a id vlsta el Indice del canjunto.

Para comprender los distintos conceptos vamos a desarrollar u n ejemplo, creando una página con dos frames. El de la irqulerda va a servir de índlce de lo que veamos en el de la derecha, y en este veremos Inicialmente una página de presentación. Se podra acceder también a otras páginas, si se pulsa el enlace correspondlente en el frame de la izquierda.

Documento de definición de los frames

Lo primero que tenemos que hacer es crear un documento HTML en el que definiremos cuántas zonas va a haber, qué distribución y tamaño van a tener, y c!iál va ser el contenido de cada una de ellas.

En el ejemplo que vamos a desarrollar, la página va a tener dos frames distribuidos en columnas (es dear, uno al lado del otro, en ve; de uno encima del otro, Io que seria una distribución en filas).

Con respecto al tamaño, haremos que el primero (el de¡ izquierda) ocupe el 20% del ancho de la pantalla, y el otro, el 80% restante.

Y con respecto al contenido, el frame de la Izquierda va a contener un documento HTML que va a servir 3e índice de lo que veamos en el otro ( y que vamos a llamar mipagind.html), y el de la derecha otro documentc HTML que va a servir de página de presentación (al que llamaremos mipagpre.htm1).

Todo Io anterior se refleja en el siguiente documento HTML:

Observese lo siguiente:

Es un documento parecido a los que conocíamos hasta ahora. La diferencia está en que en vez de utiil:d- ~:

etiqueta BODY, que sirve normalmente para delimltar lo que se va a ver en la pantalla, se hace uso :t. L j

etiqueta FRAMESET (definir los framesj.

En &:e caso, con la etiqueta <FRAMESFT COLS="ZOo/~, 8O%"> se define que va a haber dos frames 'Y x..- van a ir en columnas. Si hubiéramos querido que fueran en filas, habríamos puesto ROWS (filas, en 1 r q t . ~ - También se define el espacio en anchura que van a ocupar cada uno de ellos en la pantalla. Se ha p w : como porcentajes del total, pero se podría también haber puesto una cifra absoluta, que representar13 - 1 2

número de pixels a ocupar.

Ya se ha definido el número de frames, su distrlbuclon y su tamaño, pero falta por definir el contenido :t.

cada frame. Esto se hace con las etiquetas:

Con esto j e def!ne que el conten~do del primer frame '\el de la Izquierda) sea el documento hTPlL mlpagind.ntml y el del segundo (el de la derecha) sea ei documento HTML mlpdgpre.htmi.

Obsérvese que en la etiqueta del segundo se ha incluido el atributo NAME="principa!", pero no así en el prlmero. El motivo es que se necesita dar un nombre al segundo frame, pues, como veremos a contlnuaclon, en el documento del prlmer frame va a haber unos enlaces que van a Ir dlrigldos hacia él. En este caso sólo tenemos dos frames, pero podria haber más, y es necesario distinguirlos Linos de otros. Y el primero no neceslta nombre, pues no va a haber enlaces en el segbndo dlrlgidos nacla 61.

A este documento le vamos a lkmar mipaglna.html, pero todavía no Io vamos a guardar, pues falta por añadir algo que veremos más adelante.

Documentos HTML de cada frame

Se necesita ahora confeccionar el documento HTML de cada uno de los frames. Recuérdese que son como páginas independientes, que pueden tener cada una su proplo fondo, etc., y todo lo que queramos añadlr en ellos y que hemos aprendido hasta ahora. Documento del frame de la izquierda

Va a tener un fondo amarillo, y va a contener dos enlaces dirigidos al frame de la derecha. Además, como muestra de que se puede añadir cualquier cosa en un frame, vamos a incluir este logo animado (glogoan2.glf):

Dentro de las etiquetas de los enlaces podemos observar algo nuevo, y es el atributo TARGET (en Ingles. ob~et~vo, blanco), que sirve para hacer que al ser activado el enlace no se cargue en el proplo frame, Sino C Y

otro, precisamente en el que hayamos llamado con ese nombre en el documento de definición de los f r a n w

En nuestro caso, le hemos dado el nombre de "principal" al frame de la derecha, y es por tanto ahí dcnd? .t:

van a cargar los documentos HTML.

Guardamos este documento con el nombre de mlpagind.html. Además, capturamos la imagen glogoan2 ' I l f 4

la guardamos junto con el documento.

Documento del frame de la derecha

Va a tener un fondo negrc, y va a contener solament? dn texto.

..

Se guarda este documento con el nombre de mlpagpre.htm1

Alternativa para los navegadores que no soportan frames

Con Io visto anteriormente, ya tenemos las tres piezas que necesitamos:

Documento de definición de los frames Documento del contenido del prmer frame Documento del contenldo del segundo frame

En teoría no pecesitamos nada más. Sólo queda un detalle: ¿Qué ocurriría con los navegadores que IO

soportan los frames' Pues que al desconocer las etiquetas FWMESET y FRAME del documento de definlcron, no podría ejecutarlo y no podría cargar la página.

Para estos casos está prevista la etiqueta <NOFRAMES> y </NOFRAMES>. Se añaden al final del documento de definición de los frames, y a se pone entre ambas lo que queremos que vean los que aceden con un navegador que no soporta frames. Puede incluso ser el código HTML de una página completa (lo que normalmente va entre las etiquetas <BODY> y </BODY>)

Lo incluimos dentro del documento de definición de los frames, que hemos visto antes, y que queda de esta manera:

Atributos de la etiqueta <FRAMESET>

La etiqueta FRAMESET, como hemos visto en el e~empio, es la que define la distribución, el númer y tamaño de los frames. Tiene dos atributos: COLS (coiumnas) y ROWS (filas):

Define la dlstr!buclón de los frames en columnas o en filas, según se use uno u otro atrtbhto.

Defint-. E/ ?Omerg de frames qtie habrá, pues, por qemplo:

Define el tamaiio de lcs frames, según el vaior que demos a x x , yy, zz . . . . Este valor se puede expresar en

+ Un porcentaje del ancho del pantalla (para las coiumnas), o del alto de la pantalla (para las filas). Así, por ejemplo: <FRAMESE-i COLS="o/~2c), %8O"> (la columna de la lzquerda ocupará el 20% del ancho de la

<FRAMESET ROWS="O/olO, %70, %20"> (la fila superior oc'Jpará el 1O0/0 del alto de la pantalla, la del pantalla, y la d? la derecha e¡ SO% restante)

medio el 70'?/0, y la inferior el 20%)

+ Un número absoluto que representa el número de pixels que ocupará cada frave a Io a x h o o a 1 0 alto (según sean filas o columnas). Así, por ejemplo:

<FRAMESET COLS="40, 600", (la columna de la vquterda tendrá 43 pixels de ancho y la de ;a derecha 600) . Pero es peligroso utilizar sólo vaiores absolutos, pues el tamaño de la pantalla varia cit?

un usuario a otro. Si se va a usar algún valor absoiuto para un frame, es mejor mezclarlo con alquno relativo, con10 los que vamos a ver a continbaclón, para que se ajuste el total a la pantalla del usuarlc

+ Un valor relativo que se consigue poniendo un asterisco ( x ) , en vez de un número. Esto se interpreta como que ese frame debe tener el espacio restante. Por e~emplo: <FRAMESET ROWS="100,*,100"> (Habl-á tres filas, la superior y la inferior de una altura fija de Y:,:' pixels, y la del medio obtendrá el espacio restante).

Si nay más de un frame con asterisco, ese espacio restante se dividirá por igual entre ellos. Si hay un número 2 'tes del asterisco, ese frame obtiene esa cantidad más de espacio relatlvo 2."

"2",*" daría dos tercios para el primer frame y un tercio para el otro.

Frames sin bordes

Si se desea que no haya un borde de separacicn entre los frames, se deben incluir el at; !:.:

FRAMEBORDER=O dentro de la etiqueta FRAMESET. No todas ¡as versiones de los navegadorb, implementan.

Para que también desaparezcan los huecos de separac'on entre frames hay que añadir otros dos atrlbut:. primero es para el Explorer y el segundo para el Netscape): F?AMESPACING=O y BORDER=O con lo -: !

etiqueta completa quedaría:

Atributos de la etiqueta <FRAME>

Esta etiqueta define las características de un fra:. ...!a, no del conjunto de los frames, como t " 3 . '

caso con la etiqueta <FRAMESET>. Puede t e w ; 'entes posibles atrlbutos, que van dentro de 1

etiqueta <FRAME>:

SRC="dirección". Esta dirección puede ser la :. : ..[?-ento HTML (tal como hemos utillzadc SI' I

ejemplo), o cualquier otro recurso del Web 1 .:I este atributo se indica Io que se carC;d:J inicialmente en el frame. Si no se le pone estc . * . ? ,3 ettqueta <FRAME>, entonces dicho Fr3r - t '

aparecerá inicialmente vacío, aunque tendrá las c '. I gnadas.

NAME-"nonibre-de-la-ventana". Este atributo se lisa para asignar un nombre a un frame. De &a manera se podra "dar en el blanco" (en ingiés, target) en es:a págiva, desde un enlace situado en otrd página. Es decir, que pulsando en ctra pagina un enlace, ';e cargará precisamente en esta, tal como hemos visto en el e~emplo. E! atrlbuto NAME es opcior;al. Po; defecto, tcdas las ventanas carecen de nombre. L x nombres que se esco~an deben comenzar por un carácter alfanumérico (una letra o un número, pero no otro tipo de slmbolo)

MARGINWIDTH="núniero" . Se utlliza este atributo cuando se quiere controlar la el ancho de 105 márgenes dentro de un frame. El número que se ponga representa los pixels de los márgenes. Este atributo es opcional.

MARGINHEIGHT="número" , Igual que el anterior, pero referido a los márgenes en altura.

SCROLLING="yesI no I auto". Este atributo se utiliza para decidir SI el frame tendrá o no una b d r r j

deslizadora. Si se escoje "yes" tendrá siempre una barra deslizadora. Si se esco~e "no" no la tendrá nuncx , si se escoje "auto", será el navegador quien decida S I la tendrá o no. Este atributo es opcional. Su valGr x r defecto es "auto".

NORESIZE. A este atributo no se le asigna un valor numkrico, como a los demás. Es un indicador para : . I '

la ventana no se pueda re-dimensionar (en Inglés, resize) por parte d d usuario. Se puede comprobar e'' ejemplo con frames que si se coloca el cursor del ratón entre los dos frames, al pulsarlo y arrastrarlo e!> : sentido u otro, varían las dimensiones prefijadas de los frames. Este atributo impide que ocurra esto e!- .I frame. Es u n atributo opcional. Por defecto, todos los frames son re-dimensionables.

FRAMEBORDER-"no" . Este atributo elimina el borde en un frame, pero si se quiere que se c ... ' I '

complet;ttnente, también hay que ponérselo al frame contiguo. Si se quiere eliminar los bordes de toe;- frames, se debe colocar en la etiqueta FRAMESET, como hemos visto anteriormente.

El atributo TARGET

Por ejemplo si se quieren hacer enlaces situados en el frame de la Izquierda surti?+-an efecto no en e¡ sino en otro frame, es necesario poner dentro de cada enlace el atributo TARGET="prlnctpal" "principal" el nombre que se diera dado al segundo frame, en el documento de definicrón de f ra . +

decir, hemos utilizado este atributo de esta manera:

Estos nombres, se escojen con !a condición que el primer carácter sea alfanumérico (letra o número).

Pero hay unos nombres reservados (es decir, que no se pueden usar para defiominar a un frame), q w '

que este atributo efectúe unas funciones especiaies. Para que cumplan su cometido, es impre\c- 1 .

escribir estas palabras reservadas (blank, self y top) en mnusculas.

TARGET="-blank". Hace que se abra una nueva cr 'c la del navegador, y el enlace activado se c.?' : : ella, a pantalla completa. Es decir, tendríamos " 5 Loplas del navegador (Netscape, Explorer '

funcionando a la vez.

TARGET="-self". Hace que el enlace se cargue en t? ZrnDIo frame.

TARGET="-top". Hace que el enlace se cargue a L' ?",! J -ompieta, suprimiendo todos los frames, p" que se cargue una nueva copia del navegador. Est? . ' I , :-: cJlarmente útil. Un error muy común es CI' , : *

de poner este atributo en los enlaces que están en un frame, con lo que resulta que al ser activados, la paglna :Ian-lada se carga dentro del proplo frame, lo cual es muy molesto si esa paglna pertenece a otro sitio del Web, y aún más Grave si esa página tiene a su vez frames. Este inconveniente se evlta poniendo este atributo dentro de las etiquetas de los enlaces.

Cómo lnclulr JavascrlDt en u n dccumento iiTML

Recordemos que la estructura de un documento HTFlL es:

El scrpt-(documento) en Javascript lo tenemos que colocar dentro de la cabecera, después del título. Es decir, entre las etiquetas </TITLE> y </HEAD>, contenido dentro de la etiqueta:

Es decir, que queda de esta manera:

. ., .~ . - - . , . . "

I 4 - ~ .~ . . . - I : -. - I , - ~ . . . ., ",, , _ _ - - - - , -~ - . . .. > , 4 - , . , , . - - -

. .

Además de esto, se debe añadir algo dentro de la etrqueta <BODY>, corn3 se indicará en cada caso.

Etiquetas especiales

Estas son las etiquetas más importantes para la realización del proyecto, ya que son interpretadas por '$3 : para de esta forma generar las páginas html de manera drnámica.

e Hipervínculos 10s ejemplos son tomados de la pagina principal.html

AI observar la línea anterior, se puede observar aue la diferencia entre un hipervínculo nomal i ,:a

hlpervinculo interpretado por la dl1 es la sintaxis de la dirección de la página a la que se , q ~ t '. '

acceder, esto se escribe: :- . :. . . ~ . . > . _ , . ~. .

QRYLOGIN, ésta etiqueta se utiliza para !dept!iicar al usuario que quiere entrar a la aplicaclón

La etlqueta es baslcamente una et1q:;eta form, pero difiere en lo que aparece dentro de 3ctlon. esto es: . , . que esta mdicando que es una etiqueta que va a corroborar la wstencia del cisuarlo en la base de datos y que su contraseña sea Introducida de manera correcta.

, con ?ste para de palabras se le lndlca que la inforrnaclón d21 usuarlo lo debe c!e buscar en la base de datos con alias llamado posgrado. . , aquí se esta Indicando el nGn1er-o de sentencia sql que debe ejecutar, este query fue prevlamente elaborado en el SIC.

que sea positiva la identificaclón del usuario.

. . , - .

I . . . . , con esta Instrucción se indica que página debe desplegar en caso de

PROTECTDOCUMENT, ésta etiqbeta es la que brinda seguridad al sistema. Su sm:axls es la siguiente:

La etiqueta se inicia con -:I- 1:s ' : L . - 1 ' : ' , : para que de esta forma se indique el trpo de etiqueta. Utiliza dos prirámetros ' r l r -"L . _ - 1.- ", la cual como su nombre lo indica se encuentra en la galleta del navegador, y sólo va a tener el valor de logged si la persona que entro al slstema fue Identificado como usuarlo del slstema. I . ~ : I ' :", este valor es utillzado por la slgulente razón, como anterlormente se ha comentado, existen diferentes usuarlos en esta aplicación, cada uno de éstos usuarios tienen permisos para entrar a algunas secciones y no a otras, por lo tanto, para poder entrar a cada sección se verlficará que tipo de usuario es, para entrar a esta sección en concreto será necesario tener la clave 1.

QRYLIST, con esta etiqueta es posible elegir un valor de una lista desplegada dentro de una hsta de selección. La sintaxis es la siguiente:

Como se puede observar la etiqueta inicia con = =~: :LL:~I, con Io cual se indica que tipo de etlquetj es, utiliza varios parámetros: l.: I:.:=>-: :s.:: , que es el nombre del alias de la base de datos, . . . . . . . . . , indica el índice (número de query) que tiene que ejecutar de la base de datos, est's5 datos son los que llenarán la lista de donde se seleccionará. ~ I . I ~ '.

se!ecciona algún texto, este tiene asignado un valor, para hacer más sencilla la consulta, entoncec, o que el usuario ve es el texto y cuando elige se guarda un valor. .:: - 1 . . . . . . :- - = - . , C Z ~ I

este nombre es con el que se guarda en la cookie el valor que fue seleccionado.

/ / - , i

~~

~ . > " ,/ . . . . . ." . ", cuando se llena la lista de selección, se llena con un texto, pero cuarldc ,C

#DATASET, esta etiqueta es la encargada de desplegar los datos que se traen de la base de da!':.; su slntaxis es la siguiente:

- _. - .'L. - 1 , indica la etiqueta con la que se 'va a trabajar. .:.I :.I..,:- ~ . : - ' I , nombre del ailas de donde se van a extraer los datos. ~ , es el nbmero de petición a la base de dato.; - - .:: ., Indica que debe de desplegar todoa :cs datos que cumplan con la condición establecida en la petición a la base.

....... - -

La sIrjulepte línea ' ' , es una línea propia de HTML, que indlca que se va a hacer un renglón el cual va a estar centrado. Las siguientes dos líneas

. . . ( I . . . .~ . , - ~ 1 1 . . , I

!I . , ~ . . . . . - I .

, I . , . . . . - I , I * .. ~

. . ~. - . , . . . . , - . .

Indican que dentro del renqlón van a haber dos columnas, pero lo más Importante es que dentro de cada celda se debe desplegar el dato ::". .. - : 1 y en otra el dato = .- . , , esto es Interpretado por la dll, la cual Interpreta que no debe escribir las etiquetas como tal sino que debe buscar en la base de datos el dato correspondiente a la etiqueta contenlda en cada celda. La llnea es una etiqueta de uerre en HTML a la línea que inicia el renglón. La línea :: . , es la etiqueta de cierre a la etiqueta que mostrará los datos en la tabla.

-- .

Hojas de estilo en cascada

Introducción

Las hojas de esti!o representan un gran avance con respecto a cómo los diseñadores de páginas Web pueden aumentar grandemente su capacidad de mejorar la apariencia de sus páginas.

En su origen el Web fue concebi¿o en un entorno científico, como un medio de intercambio de documentaclón, en el que lo esencial era el contenido, siendo la presentaclón algo completamentc accesorio. Pero a medida que el Web era descubierto por toda clase personas como un fantástico medio de difusión, las limitaciones del HTML con respecto al control sobre la presentació? se convirtieron en una fuente continua de frustraciones.

Los nuevos diseñadores de páginas Web estaban acostumbrados a !os medios tradicionales sobre papel, sn los que tenían un control total sobre la apariencla. Han ido aprendiendo a utilizar diversos trucos para supilr las limitaciones estilisticas del HTML. Pero aunque su intención ha sido buena - mejorar la presentaclón de las paginas - las técnicas empleadas han tenido unos efectos secundarios a menudo desafortunados, Estas técnlcas o trucos suelen funcionar para algunas personas, algunas veces, pero nunca para todas 125

personas y en todos los casos.

Varios ejemplos de estas técnicas son:

Utilización de etiquetas no estándar, inventadas por los creadores de algunos navegadores (como Netscape o Explorer).

Convertir el texto en imagen.

Usar imágenes transparentes para crear espacios en blanco.

Uso de tablas para forzar determinadas presentaclones.

Utilizar programas o lenguajes ajenos al HTML para conseguir determinados fines, etc

Estas técnlcas aumentan considerablemente la complejidad de las páginas del Web, tienen una flexlbilidx limitada, y sobre todo, provocan problemas al ser u:iI~zados por distintos navegadores o plataformas.

Las hojas de estilo devuelven la facilidad de controlar la presentación y sobrepasan la limitada gama le mecanismos de presentaclón que se han ido añamrido al HTML durante estos últimos años. Por e~empio con ejlas es fácil determinar el espacio entre las líneas de texto, el tipo y tamaño de las fuentes, el grosor Ge los márgenes, los colores usados para el texto o ? I fondo, así como el formate0 a voluntad de cualqu:er etiqueta.

Además hay otro aspecto muy interesante de ias '-o!as de estilo, y es que separan por completo la información para la presentación de una página cle .L contenido, con Io que se facilita mucho el diseiic y

revlslon de ia.; oaqlnas, pues se rjuede variar la prewntaclon de ura página, O de tcdo el ConJunto de ?i ias. sin cambiar clna m a linea ,jei csdigo dei HTPlL.

Como verm:os mas adelante, se p w d e n ciefln:r variaciones de diseño por medio de las "clases". Por eJemDlo, st se necesitan clnco estilos de párrafos dlferentes, se pueden definir cinco clases para la etqueca <P> : P.normal, P.indentado, P.subrayado, P,roJo y P.doblesspacio.

Anteriormente se ha hecho una breve lntroduccion sobre las ho~as de estllo, a conttnuación se verar? con detalle 10s dlstlncos atributos y valores así como distintos con=e]os para su mejor utllizaclón.

¿Qué navegadores las soportan?

Debido a que se trata de una reciente innovación, hay un soporte todavla l iw tado para las Ho~as de estilo en cascada. Actualmente sólo Io soportan el Explorer 3.0 en adelante, así como el Netscape 4.0 en adelante.

Otros navegadores, o las versiones más antlguas de los anteriormente mencionados, simplemente l o ignorarán.

Las Hojas de estilo todavía no han sido incorporadas al vlgente estánda del HTML , el HTML 3.2, pero 13 van a ser en el próximo, el HTML 4.0, del cual se ha publicado ya un borrador.

iC6mo funcionan?

Las ho~as de esti lo m cascada nos permiten redefinir ias reglas que utiliza el navegador para presentar página del Web.

Todos los naveyadores tlenen su' reglas. Así, por ejemplo, el HTML define que las cabeceras del nivel uno (el texto que está entre las etiqueias <H1> y </Hl>) se muestre como un texto alineado a la izqulerca, un par de puntos mayor que el resto, en negrita y en la fuente Times New Roman.

Ejemplo: : ; - , " 5 z c I + - 3 -._ A - . . - - . +.,- - S- + 1 se vera como: . .

Cabecera de n i \ el I

Cada etiqueta deflne sus propias reglas para mostrar el texto que engloba. Con las hojas de estllo poden-.:,\ cambiar rada una de estas reglas si lo deseamos. Es decir, podemos modificar a nuestro antolo -:I

ccmportamiento de cada etiqueta.

Hay tres manera5 de ariadir estilos a nuestras páqnas '"'Jek

1. Ailadiendo instrucciones de estilo sólo a etiquetas concretas, o a un grupo de ellas.

2. Incluyendo las instrucciones de estilo en el documento HTML de una páqina cmcrtlta - de %:.,j

manera análoga a cómo se incluye un scrpt de lavascrlpt. Esto permtte cambtar la apar1enc.d :-, una hoja entera, cambiando unas pocas líneas.

3. Enlazando todos documentos HTML de toda5 pagtnas que componen un sitio del Web COP .-"

fichero de definición del estilo. De esta ' 7 - 3 - ~ 3 ~ se puede cambiar la apariencia de mult~?i:~~ páginas retocando un solo fichero.

Podemos utilizar en nuestras páginas uno, dos o [c., - . , S --t,!odos descritos, conlo se verá más adelante

1. Estilo para etiquetas concretas o grupos d e ctiquctas Este método es el apropiado si sólo se desea c ~ : - ' ! r ~~~ estllo en unas secciones determinadas de página. Con éI podemos manipular las propiedade- * # . I , . - J etloueta o de algún grupo de etiquetas.

Se hace añadiendo el atributo STYLE, qc;e cc"' + p :. 3 ier le de propiedades, dentro de la etlqw:,? correspondiente. Veamos el siguiente ejemplo:

. . .~ , .

. - . . . . . . . . . . . . . . . . I , . , , . . . , ,

. . . . I . . . . . . . . . . , . . . . . . . . . . . I . ._ . , .. - . , . . . . . . .

Como se ve en este ejemplo, hemos variado la manera de cómo se comporta habitualmente la ettqueta <P>. Podíamos haber conseguido otras muchas más cosas, como se verá más adelante.

Obsérvese la sintaxis del atributo STYLE. Se ponen entre comillas una serie de propiedades (por ejemplo, margin-left), y después de dos puntos se pone el valor de esa propiedad (en este caso, O.5in o sea, 0.5 pulqadas). Las distintas propiedades deberán estar separadzs por punto y coma.

Si queremos cambiar la apariencia de una sección entera (que agrupe un conjunto de etiquetas), se puede utilizar la etiqueta <DIV>, con la que definimos el estilo globalmente para esa sección.

En el siguiente ejemplo cambiamos el color (a rolo) y el tamaño de la fuente (a 16 ptjntos de altura) de :in bloque de etique!:s por medio de la etiqueta < D I V > , Io que tiene el mismo efecto que si hubleramcs asignado este estilo separadamente a cada una de las etiquetas englobadas (<P>, <UL> y < L I > ) :

- - . - . - - " - ! I : - . - < F . - . ~ " . , _ . I 7

_ _ , - . . . - ._ . . - .. _ , . . . . . . . . . . - . . . . - I - .

" < " . _ _ _ " ' I _ - . . - . . . . . . . . . . . . , .._ ".. -. " I . - ." . . I

. - " "

. . _ , .~ ~

-.- ". : ~ ~- . ^ _ -. .

- -~ " . . . . . . . . . . . . . . . . . . . . . . . . . ~

- . . - - , " .

.- . - . j _ _ 1 . _ . - - 7 z - ?z - .<- ,+ 1 v . = :

.. i _ . - .

¿Qué ocurre si a una de las etiquetas englobadas por DIV le introducimos un estllo dlitsi.,' ~

Comprobémoslo introduciendo un estilo propio a la segunda etiqueta <P>:

Aquí comenzamos a ver la noción de precedencia de unos métodos sobre otros, que como hem(:' .

antes, son muy 'variados. Este es el motivo de que se llamen Hojas de Estilo en Cascada (hay una 1:::

de métodos para aplicar los estilos, teniendo un orden de precedencia riguroso de unos sobre ot:" verá esto más adelante.

Hay otra etiqueta, <SPAN>, que tiene una mlslon oarsclda a <DIV>, pero que se usa para rL?.' ' elementos más pequeños (por ejemplo, palabras o inc!uso ietras), en lugar de bloques enteros. Por e;er-; , ., . ..- . ~ , _ _ ~ - - r ~ " "

_I" L . " - * - _ ( _ " _ . _ _ " -. - , _"--;~ .~ _ . - - . . . - . , . - . - ".

""i - " - . ,3 . :;= l @ ( - . "C". . . . . . . . . . . . . . . . . - -. ". " , . ._ . - " - - _ r " _ , I : " _ _ 3 L 7 , ~ ~ ~ ~ ~ ~ ~ ~ , , ' ~ ~ . ~ . ~ ~ , , -. . - - - . .

Este método de introducir el estilo en etiquetas cor-cF,~' 3 5 2 sn conjuntos de etiquetas es sencillo de 3 ; I

(como hemos visto), y es el adecuado si sólo se . : t ~ , , < . . > 'lscer algún cambio puntual en una paglrlLj

. __ " , "

- . . . . . . . . I . 1 ." .. - .--A - -I 71 "^"" , _ _ . - . r~ . ,= -~ ^ r - ... - " ~,~~ , ~ . ̂" _ i . "

embargo, no es un adelanto muy grande con respecto al HTML, donde existen etiquetas que hacen funclones slmllares.

Además, si se desean hacer cambios, hay que examinar todo el documento en busca de etiquetas dispersas. Si se desean hacer cambios globales a una o más páginas son más conveniente los otros dos metodos que veremos a contlnuaclón.

2. Inclusión global del estilo en un documento HTML

Se hace ponlendo un bloque de instrucciones dentro de las etlquetas <STYLE> </STYLE>, que deberá estar colocado dentro de !a cabecera del documento, después del título, entre las etiquetas </TITLE> y </HEAD> (de Igual manera que se hace con 10s scrlptsde Javascrlpt).

Esta etiqueta <STYLE> tiene un atributo, TYPE, que especifica el tipo de medio en que va a ser publicado en Internet, en nuestro caso será "text/css" (que permitirá a los navegadores que no sopcrten este tipo el Ignorar la hola de estilo). Es decir, la etiqueta queda de esta manera: <STYLE TYPE="text/css">

Por tanto, la estructura será la siguiente:

Como se ve en este ejemplo, se ponen las distintas etiquetas a las que se quiere atribuir un estilo (en e:e caso BODY, H l , H 2 y DIV, pero podrían haber sido otras cualesquiera); a continuación del nombre I t ,

cad? etiqueta, y englobadas por los signos "{" y "}" van las distintas propiedades con sus respect:\?., valores, separadas unas de otras por un punto y coma.

Si se coloca este bloque en la cabecera del documento HTML, donde se ha indicado antes, veremos Gi.c cada vez que se usa una de las etiquetas que tlenen una definición de estilo, no se comportará de la fcrrru habitual, sino tal como la hemos definido. El resto de las etiquetas, que no están incluidas en el bloqc'e :P definición del estilo, se comportaran de la forma habltbal.

3. Enlazando distintos documentos a una hoja de estilo

Si nuestro sitio del Web está compuesto por muchas paglnas, y queremos darles un estilo uniforme a una., cuantas, en vez de incluir un bloque de definición de estilo repetido en cada una de ellas (como se ha w t o en la sección anterior), se puede establecer un enlace a un fichero de texto que contiene el bloque cit. definición del estilo.

Supongamos que queremos acllcar a unas cusncas páginas el estilo visto en el ejemplo anterior. Tendr,amos que crear un fichero de texto C ~ Q ~ G este:

Obsérvese que no tiene ninguna etiquetz, pues no es un documento normal HTML, sino que es un fichero de texto que sólo contiene el bloque de definición del estilo.

Se guarda con el nombre que se quiera, pero tiene que tener necesariamente la extensión .css Supongamos que lo guardamos con el nombre de miestilo.css

En todas las páginas que queremos que tengan este estilo concreto, sólamente deberemos de añadir (en el mismo sitio de la cabecera que para el csso anteriol., es decir entre </TITLE> y </HEAD>, la siguente etiqueta:

En nuestro sistema el nombre del fichero es styles.css se ha puesto en el directorio styles, por lo tanto se le debe indicar toda la ruta que es: <link rel="stylesheet" href="../../styles/styles.css"> la cual es interpretada por la dl1 del sistema y de ésta manera encuentra la hoja de estilos.

Es posible mezclar los métodos anteri m t e descritos y en CESO de que hubiera información contradictorla entre ellos existe un orden de preceiencia, es decir, cuál prevalecer6 sobre el otro SI dan ordenes contradictorias sobre un aspecto concreto.

El orden de precedencia es el siguiente (de mayor a menor):

1. Estilo dentro de una etiaueta.

2. Bloque de estilo en la cabecera del documento.

3. Enlace a un tichero que contiene la hola de estrlo

Esto quiere decir que una orden de estilo, por e~emplo el color del texto, puesta dentro de una etlquets. prevalecerá sobre la que esté indicada en los otros dos metodos, si es que se usan en esa página.

Lo más práctico es utilizar el tercer método (enlace a una hoja de estilo) el cual fue utilizado pa!-a ! a realizacidn de éste proyecto, para dar una apariencla consistente a todas las páginas, y si es necesam modificar un aspecto concreto en alguna de ellas, utilizar el primero o el segundo.

Atributos

A continuación se muestra en una tabla el resumen 3e ¡os atributos que se pueden incluir en las ho~as de estilo.

Atributo Descripción Valores Ejemplo

font-size Establece el tamaño de text=; r,r,tos fpt) {font-size 12pt j r . :daas 'In)

. - * "CItrAC /f.m\

font-style

line-helqht

w r

text- decoratlon

marqln-left

m a r q n r i q u

marqin-top

text-allqn_

text-Indent

backqrolJnd

Establece :a fuente

Estabiece el espesor 3e la fuente

Convlerte el texto a curslva

Establece la distancia entre lineas

Establece el color del texto

Subraya o remarca el texto

Establece el márgen izqulerdo de la página

Establece el márgen derecho de la pagina

Establece el márgen superlor de la páglna

Establece la justificación del texto.

Establece la mdentacion del texto

Establece la Imagen o el cclor del fondo

0IX" lS I p x )

nombre de la ftiepte {font-famlly courler) nombre de ia famllia de !a fuente

extra-light llght demr-light medlum demi-boid bold extra-boid

normal Italic

puntos ( p t ) pulgadas (in) centímetros (cm) plxels !px) porcentaje i%i

nombre del colw valores RGB

none underline ltallc line-through

puntos (pt) pulgadas (in) centímetros (cm) plxels (px)

puntos ( p t ) pulgadas ; I n )

centimetros (cm) plxels i p x )

puntos (Pt) pulgadas ( I n )

centimetross (cm) pixels fpx)*

ieft center right

cuntos (pt) oulgadas ( I n ) cmtimetros (cm) ;:ixeis ípx)

L R L "cmore del color /a 'or R G B

{font-welght bold}

{iont-style Italic}

{line-height 24pt}

{color blue}

{text-decoratlon underline}

{margin-left 1 in}

{margln-right I m }

{margin-top -2Opx)

{text-allgn right]

{text-indent O 51n}

{background #33CCOO}

Explicación de los atributos

font-size

El atributo font-size establece el tamaño del texto en puntos (pt), pulgadas (in), centímetros (cm), o pixels (px). EjemplGS:

. "

font-family

el atributo font-family establece la fuente del texto. Se puede especificar una única fuente, como por ejemplo:

- . . - ." . . " . . , - . . . . - . I - - . I - .

u otras fuentes alternativas, separadas por una coma, como por ejemplo:

Estos nombres genéricos de familia de fuentes (serif, sans-serif, cursive, fantasy, o moncspace' t leren 13

ventaja de que son representados como las fuentes que tenga Instaladas el usuario.

Si se hace referencia a una fuente cuyo nombre consiste en varias palabras (separadas por e s p a x q Y-,

blanco), hay que englobarla entre comillas. Ejempio:

font-weight

El atributo font-weight establece el espesor de la fuente: - ~ , .~ -. . . , _ .- . .I ~ _j .- . - - ." . . - . . ~ - ~ ~ .

- . - . " . . - " 2 ' - , _ - . r .

Los valores aceptados (extra-light, light, deml-light, vedlurn, demi-bold, bold, y extra-bold) dependen e" : . fuentes que tenga instaladas el usuario. (Por e;mD¡o, S I sistema del usuario puede que sólo per!'. :A medium y bold para una determinada fuente).

font-style

El atributo font-style establece la fuente como c u r s l v d " _ - " . . . -

' - ~ ~ - 7 . "?IA: : ' -.

En el borrador de la W3C se contemplan además _ * I . "es estilos (minúsculas, oblicuas, etc.)

l ine-height

Este atributo establece la separación entre líneas, que se puede expresar en puntos (ptj, pulgadas (:ir), centímetros (cm), plxels (px) o porcentaje ("o). E~emplo:

. . " . . . . . . . .. ." " . ._ - . y - ,

También se puede expresar como un porcentaje del valor por defecto:

En el Explorer 3.0, el espaciado se añade antes de las líneas, no después de ellas. Además este atrlbuto se ccmporta de forma impredecible con texto que usa diferentes tamaños de texto en la misma línea.

color

Este atributo establece el color del texto de acuerdo con SIJ valor hexadecimal, o usando los nombres de colores:

text-decoration

Este atributo permite remarcar el texto. Los valores soportados son underline (subrayado), line- through (tachado), none (ninguno) e italic (cursiva). Ejemplos:

margin-left, margin-right, y margin-top

Estos atributos establecen los márgenes (izquierdo, derecho y superior respectivamente) en el ámblto : e ,

una etiqueta. Se pueden especificar los márgenes en puntos, pulgadas (inches), centímetros o plxels ; ~ r

e~emplo:

Se pueden usar valores negativos. Entonces, en vez de contraerse el margen, se extenderá en !a dlr.- opuesta.

text-indent

Además de establecer los márgenes, se puede provocar una indentación del texto (es decir, que la pr P t ' ?

palabra del párrafo se desplace una cantidad deseada). Se puede expresar en puntos, pulgadas, centln1t.r- o pixels. Por ejemplo:

hace que los párrafos que se crean con la etiqueta <P>, empiecen con su primera línea indentada Centímetros.

Se pueden usar valores negativos, que sacan el textc '-x J los márgenes

107

background

Se utiliza este atributo para destacar secciones de una págtna, estableciendo un color de fondo o una imagen de fondo.

Para establecer un color de fondo, se especifica su valor hexadecimal, o un nombre de color. Ejemplos: , . ~ . . 1 ~ _ , I I .

. . . . . . ~ - . . . _ . I . -:._. _. . . . -. .. , . . . 1 . "

También se puede colocar una imagen de fondo en el ámbto de la etiqueta, Es decir, se puede poner, por ejemplo, una imagen de fondo en un párrafo determinado.

Para colocar una imagen, se especifica el URL entre paréntesis (no entre comillas, como es lo habitual). Por ejemplo:

En este caso se ha puesto el URL absoluto, es decir, la referencia completa en el servidor. Pero es más conveniente hacerlo de forma relativa, es decir con respecto al documento HTML. Si el fichero de imagen y el documento HTML ?stán en el mismo directorio, no hay que poner ningún URL, sino el nombre del fichero de Imagen dlrectamer,te.

Vamos a ver una aplicación práctica: poner esta imagen de fondo a un párrafo, utilizando el método de incluir el estilo en la etiqueta <P>:

L'P <"" - "= 11 c - I _.__ " L a : < ~ ; r G ; p . z : - 5 - r . : ; t e s . - c - "" - - ~- - - ? - X - 2 r r G f 7 ;;?re un f c n a r , 3cr. LT.z;=:.

. , - - I . ..-. - ",- ~ , " ~ . ~ ~ _ . - - - -

I , L J " 3 - Z"? ::y. 2- ,1" ." - 3;7.51::e c a r 3 tGaa ur.3 cA.r j ina , g e r - .

~; " ~ ~ - .~ - - - - - - . _ _I .. 7 2 . = -1_':'?2'3 2 - - a?.k::2 2+ 2C.r; c - . ? , . a v A

"" - " 1 - _". " ~

,' ". ~i . ." , , 2 - . _ ". -. ~ ._ ~ . - . . - ,_ -

" - C . 1 T I Z T ' 7.3 1: "-2 : l i e ? . 23 :3r''c, c3r.?;e r.:3 3' , p . . ,- _2<.-.= = - < . _ L . - " ~ I _ "_ ~ - . - -E';: 3 .

Agrupando distintos atributos

Supongamos que se quieren atribuir los mismos atributos a diferentes etiquetas, como por ejemplo:

Se pueden agrupar de esta manera:

Agrupación de los atributos del texto

Los atributos relacionados con la apariencia del texto. Se pueden simplificar agrupándolos de una manera determinada. Así, por ejemplo, en lugar de:

Oficina Virtual de CBI

Se pueden agrupar en un Ú w o atrlbuto llamado font:

Nota: El orden de los atributos es significativo. Los atrlbutos font-weight y font-style se deben especificar antes que los demás

Agrupación de los atributos de los márgenes

También se pueden agrupar los tres distintos atributos para los márgenes (superior, derecho e izquierdo) en un Único atributo llamado margin. Así, por ejemplo, en lugar de:

Se puede poner:

El orden de colocación es significativo. Debe ser: superior (top), derecho (right) e izquierdo (left). Si se pone un Único valor, será aplicado a los tres márgenes.

Variaciones por medio de clases

Anteriormente vimos el código siguiente:

Como se puede ver, se define para la etiqueta HZ, por ejemplo, que su texto sea de color rojo (red). Pero esto hace que, obligatoriamente, todas las cabeceras de nivel H2 sean de este color en toda la páglna.

Oficrna Virtual de C B i HTML

Como se ve, esto nos da una fiexlblidad aún mayor para obtener la apariencia que queramos en rltiestra páglnas.

Aplicación de estilo a los enlaces

Las hojas de estilo también permiten modificar a voluntad la apariencia de los enlaces, asignando cualquiera de los atributos vistos (color del texto, tamaño de la fuente, existencia o no del subrayado, etc.:!.

Hay dos tlpos de enlaces que se pueden modificar:

.:- : . I:. .: enlaces que todavía no han sido visitados (pulsados)

.L.. . . , . . - - . - . ' z ~ . enlaces que ya han sido visitados (pulsados)

Por e~emplo: " . . .- . . . . " . . . " _ "> 7 ,

- . . . . _ _.. . , .: - : Y , " c . T V - ; " " ,

hace que los enlaces sin visitar sean de color rojo, y una vez visitados se pongan de colcr verde.

Si se les aplica el atributo text-decoration, ajustado al parámetro none (ninguno), hace que los enlaces no estén subrayados. Ejemplo:

. . . ~ . . - . - . - , - - ^ - I " ^ = - - T : - ~ " . - , - ? ' a , - " - I _ I . . _ .A"" ~~ ..i . . - ,

hace que los enlaces visitados sean de color fucsia y no estén subrayados.

Comentzrios

Se pueden añadir comentarios propios a las hojas de estilo, que pueden servir de recordatorio posteror. Se pueden colocar en cualquier sitio de la especificación, siempre que vayan englobados entre los caracteres / * y * / . Ejemplo:

Diseñando para todos los navegadores

Si se utiliza el método de incluir un bloque de estilo en la cabecera, que consiste en poner las distintas instrucclcnes de estilo entre las etiquetas <STYLE> y </STYLE>, tal como en el ejemplo que se vió:

en los navegadores que no implementen las holas de estilo se ignorarán las etiquetas <STYLE> y </STYLE>, pero podría ocurrir que aparezca como texto el bloque de definición del estilo.

110

Oficina Virtual de CBI HT14 L "~ . . - . -~

Para evttar esto, es conveniente englobar dicho bloque de información entre los stmbolos <!-- y -->, que son los que nos permiten hacer comentartos no visibles en la pantalla. Por tanto, es conveniente poner el bloque de definición del estilo de esta manera

Aprovechando la herencia entre etiquetas

Como sabemos, las etiquetas de un documento HTML tienen una estructura definida, que de manera muy resumida se puede poner de esta forma:

Como se puede ver, la etiqueta <BODY> engloba a todas las demás. Si se la asigna un estilo determicado a esta etiqueta, todos los elementos que est& dentro de la página (tablas, listas, párrafos, etc.) heredarhn este estilo.

Por tanto, para establecer un estilo global a la páglna entera, lo más apropiado es atribuirserlo a la etrqueta <BODY>. Por ejemplo:

establece para la página entera la fuente, separacldn entre líneas, imagen de fondo y espesor de 55

márgenes. Si se precisa que ciertos elementos concretos dentro de la página tengan otras caractertstmc v. distinta a la general, entonces hay que definlrlas por separado.

1: !

Oficina Virtuai de CBI Bibiiografia

Bibliografia

JACOBSON, Ivar Obiect Oriented Software Engineerinq, Addison-Wesley, 1995.

YOURDON, Edward Obiect Griented System Desiqn, Yourdon Press, 1994.

DATE, C.J.

Addison Wesley Longrnan, México 1998. _ _ ~ _ _ _ _ _ Introducción a los sistemas de bases de datos,

SILBERSCHATZ Abraham, KORTH Henry F., SUDARSHAN S. Fundamentos de Bases de Datos, McGraw-Hill, 1998.

CASTRO Careaga Luis Fernando Análisis Y Diseño Orientado a Obietos, Apuntes, México.

SCHMULLER Joseph Aprendiendo UML en 24 h-oras- Prentice Hall, México 2000.