You are on page 1of 177

UNIVERSIDAD PRIVADA TELESUP

UNIVERSIDAD PRIVADA TELESUP

Prefacio:

La asignatura es de naturaleza

terico prctico, orientada a

el desarrollo del estudiante, con un avanzado nivel de habilidades


en programacin orientada a objetos con .NET, desarrollando
aplicaciones para Windows, aplicaciones multinivel para la
web, aplicaciones Windows con GDI+, manejando
apropiadamente varios hilos de ejecucin, servicios
Web XML y excepciones.

Comprende cuatro Unidades de Aprendizaje:


Unidad I: ADO.NET
Unidad II: Arquitectura del ADO.NET
Unidad III: ADO.NET y Servicios WEB XML
Unidad IV: Servicios WEB XML

UNIVERSIDAD PRIVADA TELESUP

Estructura de los Contenidos

Arquitectura
del ADO.NET

ADO.NET

Entorno Integrado de
Desarrollo.

Introduccin a la
Sintaxis de Ado.net

Desarrollo de
Formularios Windows

ADO.NET y
SERVICIOS WEB
XML

Programacin
Orientada a
Objetos.

Aplicaciones
multitarea.

Manejo de
Excepciones.

Utilizacin de XML y
archivos de
configuracin.

Manejo de
Excepciones
(Continuacin)

Paginas activas de
servidor.

SERVICIOS
WEB XML

Realizacin de
informes.

Proceso de
instalacin de
aplicaciones.

Aplicaciones de
cliente inteligente

Uso de GDI+.

Utilizacin de
ADO.NET y
Aplicaciones
Desconectadas.

Servicios Web XML

La competencia que el estudiante debe lograr al


final de la asignatura es:
Reconoce

los

componentes

del

software

de

ADO.NET y el manejo adecuado de las aplicaciones


ejecutadas

durante la programacin, servicios

Web XML y excepciones.

Ensamblados y
Reflection

UNIVERSIDAD PRIVADA TELESUP

ndice del Contenido

I. PREFACIO
II. DESARROLLO DE LOS CONTENIDOS
UNIDAD DE APRENDIZAJE 1: ADO.NET
1.
Introduccin
a. Presentacin y contextualizacin
b. Competencia (logro)
c. Capacidades
d. Actitudes
e. Ideas bsicas y contenido
2.
Desarrollo de los temas
a.
Tema 01: Entorno Integrado de
Desarrollo
b.
Tema 02:Introduccion a la Sintaxis de
Ado.net c. Tema 03: Desarrollo de Formularios
Windows d. Tema 04: Uso de GDO+
3.
Lecturas recomendadas
4.
Actividades
5.
Autoevaluacin
6.
Resumen
UNIDAD
DE APRENDIZAJE 2: ARQUITECTURA DEL ADO.NET
1.
Introduccin
a. Presentacin y contextualizacin
b. Competencia
c. Capacidades
d. Actitudes
e. Ideas bsicas y contenido
2.
Desarrollo de los temas
a. Tema 01: Programacin Orientada a Objetos.
b. Tema 02: Manejo de Excepciones.
c. Tema 03: Manejo de Excepciones(Continuacin)
d. Tema 04: Utilizacin de ADO.NET y Aplicaciones Desconectadas.
3.
Lecturas recomendadas
4.
Actividades
5.
Autoevaluacin
6.
Resumen
UNIDAD DE APRENDIZAJE 3: ADO.NET y SERVICIOS WEB XML
1.
Introduccin
a. Presentacin y contextualizacin
b. Competencia
c. Capacidades
d. Actitudes
e. Ideas bsicas y contenido
2.
Desarrollo de los temas
a. Tema 01: Aplicaciones multitarea.
b. Tema 02: Utilizacin de XML y archivos de
configuracin. c. Tema 03: Paginas activas de servidor.
d. Tema 04: Servicios Web XML
3.
Lecturas recomendadas
4.
Actividades
5.
Autoevaluacin
6.
Resumen
UNIDAD DE APRENDIZAJE 4: SERVICIOS WEB XML
1.
Introduccin
a. Presentacin y contextualizacin
b. Competencia
c. Capacidades
d. Actitudes
e. Ideas bsicas y contenido
2.
Desarrollo de los temas
a. Tema 01: Realizacin de informes.
b. Tema 02: Proceso de instalacin de
aplicaciones. c. Tema 03: Aplicaciones de cliente
Inteligente.
d. Tema 04: Ensamblados y Reflection
3.
Lecturas recomendadas
4.
Actividades
5.
Autoevaluacin
6. GLOSARIO
Resumen
III.
IV. FUENTES DE INFORMACIN
V. SOLUCIONARIO

02
03 - 158
04-54
05
05
05
05
05
05
06-50
07
18
30
38
51
51
52
54
55-99
56
56
56
56
56
56
57-95
57
66
75
88
96
96
97
99
100-134
101
101
101
101
101
101
102-130
102
108
114
123
131
131
132
134
135-155
136
136
136
136
136
136
137-151
137
141
145
148
152
152
153
155
156
157
158

UNIVERSIDAD PRIVADA TELESUP

UNIVERSIDAD PRIVADA TELESUP

Introduccin

a) Presentacin y contextualizacin
Los temas que se tratan en la presente Unidad, tienen por finalidad que el
estudiante conozca la tecnologa ADO.NET que es un modelo de proveedor ms
sencillo que los dems y se puede integrar perfectamente con XML. ADO.NET es
la evolucin de ADO en la nueva plataforma .NET.

b) Competencia
Identifica los componentes y aplicaciones que conforma la tecnologa ADO.NET.

c) Capacidades
1. Identifica el entorno de desarrollo de Ado.Net.
2. Reconoce los componentes de la plataforma .Net.
3. Conoce las aplicaciones windows con programacin orientadas a objetos.
4. Explica la importancia del uso del GDI+

d) Actitudes
Posee capacidad creativa y empresarial.
Muestra habilidad para Investigar, analizar y sintetizar informacin.
Posee entusiasmo e inters por la programacin.
Toma iniciativa por la investigacin de nuevos programas novedosos.

e) Presentacin de Ideas bsicas y contenido esenciales de la Unidad:


La Unidad de Aprendizaje 01: Ado.Net comprende el desarrollo de
los siguientes temas:
TEMA 01: Entorno integrado de desarrollo
TEMA 02: Introduccin a la sintaxis de Ado.Net
TEMA 03: Desarrollo de formularios windows
TEMA 04: Uso de GDI+

UNIVERSIDAD PRIVADA TELESUP

Entorno
Integrado

TEMA
1

de

Desarrollo
Competencia:
Identificar el
Ado.Net.

entorno

de

desarrollo

de

UNIVERSIDAD PRIVADA TELESUP

Desarrollo de los Temas

Tema 01: Entorno Integrado de Desarrollo


ENTORNO DE DESARROLLO .NET
a. Caractersticas generales de .NET
Qu es .NET?
.NET es una plataforma de desarrollo, despliegue
y

ejecucin

de

aplicaciones

orientadas

servicios sobre entornos altamente distribuidos.


Cubre todas las capas de desarrollo de software,
y es el resultado de la conuencia de dos
proyectos: El primero tena como objetivo la
mejora del desarrollo sobre Windows, mejorando
especialmente el modelo COM. El segundo es NGWS, que tena como objetivo
la creacin de una plataforma para el desarrollo de software como servicio.

Objetivos de la tecnologa .NET


La tecnologa .NET proporciona un modelo de programacin simple y consistente,
liberando al programador de las cuestiones de infraestructura el framework .NET se
encarga de gestionar la memoria, los hilos, etc. . Los principales objetivos de la
tecnologa .NET son los siguientes:

1. Proporcionar
lenguajes.

integracin

2. Proporcionar
consistente.

un

3. Proporcionar
avanzado.

un

entre

mecanismo

mecanismo

diferentes

de

de

errores

seguridad

4. Disponer de un sistema de despliegue simple: con GUIS,


sin registro, etc.

5. Proporcionar una ejecucin multiplataforma: gracias


al lenguaje intermedio de Microsoft (MSIL)

UNIVERSIDAD PRIVADA TELESUP

6. Proporcionar soporte para arquitecturas fuertemente acopladas y


dbilmente acopladas.
Componentes principales de .NET Ver la gura

ASP.NET

Windows Forms

Servicios Web
Web Forms

Controles

Servidores de
Aplicaciones ASP.NET

XM
L

ADO.NET

Red
Seguridad

GDI+

Servidores de Aplicaciones Windows

Librera de
Clases base

Entrada / Salida

Hilos
Objetos
Remotos

Etc.

Lenguaje Comn en Tiempo de Ejecucin (CLR)


Gestin
de la
Memoria

Sistema de Tipos
Comn
(CT
S)

Monitorizaci
n del
Ciclo de
Vida

DENICION DE TIPOS
Una denicion de un tipo constituye un tipo nuevo a partir de los tipos
existentes. Dentro de la denicion de un tipo pueden denirse los siguientes
miembros:
Eventos: incidentes a los que se puede responder.
Campos: Variables.
Tipos anidados: Denen un tipo dentro de la denicion del tipo que los
contiene.
Mtodos: operaciones disponibles para un
tipo.
Propiedades: son la alternativa a las tradicionales formas de acceder a
un atributo.

Figura : Componentes de la tecnologa .NET

UNIVERSIDAD PRIVADA TELESUP


TIPOS REFERENCIA

10

Los tipos referencia son la combinacin de una localizacin y una secuencia de


bits. Las localizaciones denotan las reas de memoria que pueden ser utilizadas,
y poseen seguridad de tipos (para solo poder asignarle un tipo compatible).
Existen los siguientes tipos de referencias:
23Herramientas y Entornos de Programacin

Clases: como en cualquier lenguaje orientado a


objetos.

Delegados: son objetos con una nulidad


similar a los punteros de C++.

Interfaces: son especicaciones parciales


de un tipo.

Punteros: el CTS soporta algunos tipos de punteros: punteros gestionados,


punteros no gestionados, y punteros no gestionados a funciones.

Arrays
Sistema de metadatos
Los metadatos son informacin binaria que describe los tipos implementados por un
programa. El sistema de metadatos permite almacenar dichos metadatos junto a los
tipos a los que se reeran, en tiempo de compilacin, y obtenerlos en tiempo de
ejecucin.

Los benecios de la utilizacin de metadatos son los siguientes:


Proporcionan cheros de cdigo auto descriptivos, eliminando
la necesidad del registro. Proporcionan la informacin
necesaria para conseguir la interoperabilidad entre distintos
lenguajes.
Proporcionan la informacin que necesita el sistema para la gestin
de objetos.
Permite a .NET las invocaciones remotas.

Mediante los atributos es posible especicar aspectos ms detallados sobre el


comportamiento del programa en tiempo de ejecucin.
.NET almacena el cdigo MSIL, junto con los metadatos, en una unidad
auto descriptivo denominado ensamblado.

SISTEMA DE EJECUCIN
La traduccin de MSIL a cdigo nativo de la CPU es
realizada por un compilador JIT2 o Jitter. El Jitterva
convirtiendo dinmicamente el cdigo MSIL en cdigo
nativo segn sea necesario. La compilacin JIT tiene en
cuenta el hecho de que algunas porciones de cdigo no
sern llamadas durante la ejecucin, por lo que en lugar
de invertir tiempo y memoria en convertir todo el cdigo,
nicamente convierte el que es necesario durante la ejecucin, almacenndolo por si
volviera a ser necesario en el futuro. El recolector de basura del sistema de ejecucin
debe eliminar los objetos de la memoria cuando no van a ser referenciados
nunca ms. El proceso de recoleccin de basura puede ser lanzado automticamente
por el CLR o invocado explcitamente.

Para llevar a cabo la tarea de saber que objetos pueden ser


borrados, el recolector mantiene las referencias races
(aquellos

objetos

referenciados

directamente

por

la

aplicacin), y obtiene, a su vez, todos los objetos


referenciados por cada una de esas races, y as
sucesivamente. Los objetos por los que no haya Pasado en
este recorrido son los que puede borrar.

Especicaciones del lenguaje comn CLS

11

UNIVERSIDAD PRIVADA TELESUP

El CLR, mediante el sistema de tipos comn, o CTS, y los metadatos, proporciona


la infraestructura necesaria para lograr la interoperabilidad entre lenguajes. Todos
los lenguajes siguen las reglas denidas en el CTS para la denicion y uso de los
tipos, y los metadatos denen un mecanismo para el almacenamiento y
recuperacin de la informacin de dichos tipos.
2Just In Time
24Entorno de desarrollo .NET

Pese a esto, no hay ninguna garanta de que un


desarrollador de un lenguaje cualquiera dena
un tipo que luego pueda ser utilizado por otros
desarrolladores. Para asegurar que el cdigo
escrito en un lenguaje sea accesible desde otros
se ha denido la Especicacion del Lenguaje
Comn o CLS (Common Lenguaje Specication) que establece un conjunto
mnimo

de

caractersticas

interoperabilidad,

siendo

que

dicho

deben

conjunto

soportarse
de

para

asegurar

la

caractersticas

mnimas

un

subconjunto del CTS.

El CLS se ha diseado para ser lo sucientemente grande como para que incluya
las construcciones ms comunes de los lenguajes, y lo sucientemente pequeo
para que la mayora de lenguajes lo cumplan.

Estructura de ensamblados multichero


En los ensamblados compuestos por varios
cheros fsicos, solo un mdulo contiene el
manifest, mientras que el resto de mdulos
solo contienen metadatos sobre los tipos y
opcionalmente cdigo intermedio.
Los mdulos que componen un ensamblado multichero estn relacionados
lgicamente entre si por medio de la informacin del manifest, el cual referencia
a los cheros que componen el ensamblado.

Manifest de un Ensamblado
El manifest de los ensamblados es un conjunto de
metadatos que describe como estn relacionados los
elementos contenidos en el ensamblado (ya sea un
ensamblado de uno o varios cheros). El manifest puede
ser almacenado en un chero portable (.exe o .dll), junto a
metadatos de tipos y cdigo MSIL, o en un chero portable
que nicamente contiene el manifest (esto puede darse
solo en ensamblados multichero).

El manifest de un ensamblado contiene los siguientes elementos:


1. Identidad: un nombre, un nmero de versin, e informacin sobre
el idioma/cultura del ensamblado.
2.

Lista de cheros del ensamblado: para cada chero se almacena su nombre y


un hash criptograco con el contenido del chero.

Figura: Estructura de ensamblados multichero


3. Informacin sobre los ensamblados referenciados: una lista con la identicacion
de los ensamblados referenciados de los
que depende estticamente.

13

UNIVERSIDAD PRIVADA TELESUP

4. Informacin sobre los tipos y recursos exportados: informacin relativa al mapeo


de los tipos y los cheros fsicos que contienen sus metadatos e
implementacin, lo que es utilizado en tiempo de ejecucin.
5.

Permisos solicitados: son tres grupos: los permisos requeridos para ejecutarse,
los deseables, y los que el autor nunca quiere que le sean concedidos.

Tipos de Ensamblados
Existen dos

tipos de ensamblados: los privados y los

compartidos. No

existe diferencia estructural entre ambos tipos, sino que la diferencia radica en el
uso que se le da a los mismos. Realmente las diferencias residen en las
convenciones de nombrado, poltica de versiones y aspectos de despliegue.

Ensamblados privados
Nombrado El nombre de cada ensamblado, dentro de una misma
aplicacin, debe ser nico.

Poltica de versiones Ignorada.

Despliegue Los ensamblados privados son desplegados en el


directorio local de la aplicacin o en uno de sus subdirectorios.

Ensamblados compartidos
Nombrado Utilizan los denominados nombres fuertes. Los nombres fuertes garantizan
la unicidad del nombre (empleando claves criptogracas, una privada y otra pblica).
Adems previenen contra la suplantacin del nombrado (no se puede construir un
ensamblado casero y cargarlo en lugar de la versin de la aplicacin).
Un nombre fuerte est formado por un nombre amigable, un nmero de versin,
una clave pblica y una rma digital. Poltica de versiones El control de versiones
es de gran importancia. La poltica de versiones consiste en informacin de la
versin, la cual debe ajustarse a unas polticas.
27Herramientas y Entornos de Programacin

Despliegue Los ensamblados compartidos son desplegados en la cache global de


ensamblados (GAC). El mecanismo de almacenamiento de varias versiones de
un mismo ensamblado es realizado automticamente.

Ejecucin simultanea de varias versiones de un Ensamblado


El runtime posee la habilidad de ejecutar mltiples versiones de un mismo
ensamblado de forma simultnea. El runtime de .NET, concretamente permite
esta ejecucin no solo en la misma mquina, sino tambin dentro del mismo
proceso.

Integracin de ADO.NET con XML


La integracin del ADO clsico con XML se basaba
nicamente en que este posea una interfaz para
La entrada y salida de datos en XML. Sin embargo,
ADO.NET proporciona un soporte total de XML
Objetos de Datos ActiveX
28Entorno de desarrollo .NET
Representacin de datos, de forma que los
datos obtenidos de una fuente de datos son representados internamente y
transmitidos como XML. Los DataSets utilizan un esquema XML denominado XSD
(XML Shema Denicion) para representar
La estructura de tablas y relaciones que contiene, de modo que los datos del
DataSet son codicados de acuerdo a dicho esquema.
Por ltimo, aadir que la integracin de ADO.NET con XML resulta muy til para la
transmisin de datos entre las distintas capas de una aplicacin.

Mediante los metadatos se consigue un nico sistema de informacin sobre los


tipos, manteniendo adems informacin sobre las dependencias de un
componente. .NET elimina el denominado inerno de las DLLs
Que va asociado al modelo COM. Los problemas de COM que generaban
inconsistencias en el registro, causados por la separacin del Componente y
su

descripcin, han sido solucionados en .NET mediante unidades auto descriptivas,


los ensamblados.

.NET vs COM+
COM+ es una mejora del Servidor de Transacciones de Microsoft (MTS). COM+
amplio los servicios proporcionados por MTS y mejoro la interoperabilidad con el
modelo COM. Al contrario de lo que sucede con COM, no se puede decir que
.NET vaya a sustituir a COM+ como sistema proveedor de servicios de
componentes, al menos de momento, ya que .NET carece de dichos servicios por
s mismo, y requiere de interoperabilidad con COM+ para ello. Este es uno de los
aspectos por los que .NET denota cierta inmadurez, pues no ofrece por si sola
una serie de servicios que s estn presentes en los modelos de componentes
J2EE y CORBA, teniendo que recurrir a un modelo anterior.

.NET vs J2EE
Las plataformas .NET y J2EE son muy similares entre s, manteniendo bastantes
puntos comunes, y cuyas 2 diferencias principales son:
J2EE es una plataforma que utiliza nicamente el lenguaje Java, es
multiplataforma y con mltiples proveedores de tecnologa.NET es multilenguaje,
esta dice nada para una nica plataforma, Windows, y con un nico proveedor,
Microsoft.
En cuanto al modelo de componentes, con propiedades y eventos, ambas
plataformas son semejantes (En J2EE los componentes vienen dados por
JavaBeans, y en .NET vienen incluidos en el sistema comn de tipos).

Ambos

modelos

tambin

poseen

sistemas de acceso remotos (RMI en


J2EE y el framework remoto en .NET),
siendo en este aspecto algo ms potente
.NET. Tambin es algo ms potente en el
acceso

fuentes

de

datos,

pues

UNIVERSIDAD PRIVADA TELESUP

introduce la posibilidad de trabajar en modo desconectado con los denominados


DataSet y est altamente integrado con XML. Ambas plataformas soportan el uso
de delegados (skinny clients): J2EE posee los servlets y las paginas JSP,
mientras que .NET posee ASP.NET.

Para el desarrollo de clientes pesados (fat clients), J2EE tiene Java Swing, y .NET
WinForms. Ambos sistemas son similares, y sus pequeas diferencias radican en
el uso de eventos, que en Java se realiza mediante clases internas y en .NET
mediante delegados.

En cuanto al despliegue, ambos modelos son similares. En ambas plataformas los


empaquetados

contienen

un

manifest

en

el

que

expresan

sus

dependencias externas, as como una serie de meta informacin.


La mayor diferencia entre .NET y J2EE viene dada por el runtime de ambas
plataformas.

La

JVM

(Mquina

Virtual

de

Java)

ha

sido

dice

nada

para proporcionar soporte multiplataforma a Java, mientras que el CLR de .NET


ha sido diseado, adems de para ser multiplataforma, para ser independiente
del lenguaje.

UNIVERSIDAD PRIVADA TELESUP

Introd

TEMA
2

uccin
a la Sintaxis
de

Ado.Net
Competencia:
Reconocer
los
plataforma .Net.

componentes

de

la

18

UNIVERSIDAD PRIVADA TELESUP

Tema 02: Introduccin a la Sintaxis de


ADO.NET
ADO.NET constituye la interfaz fundamental de las aplicaciones
para proporcionar servicios de acceso a datos en la
plataforma
Microsoft .NET, donde existen, bsicamente, dos elementos:

El conjunto de datos desconectado: permiten al usuario trabajar con los


datos

de

una

Forma

desconectada

(System.Data.DataSet).

La

representacin interna de los datos del DataSet utiliza XML, por lo que el
flujo de datos transferido es independiente de lenguaje y plataforma.

Unos proveedores que facilitan la ejecucin de operaciones contra


un sistema RDBMS. Actualmente estn disponibles en .NET Framework 1.1:
- Proveedor de datos de .NET Framework para SQL Server
- Proveedor de datos de .NET Framework para OLE DB
- Proveedor de datos de .NET Framework para ODBC
- Proveedor de datos de .NET Framework para Oracle

Esquema de funcionamiento bsico: se utilizar uno de los


adaptadores para conectar con el RDBMS recuperando un conjunto
de datos y cerrando la conexin. Ese conjunto, que sera un
objeto DataSet, puede ser transferido entre aplicaciones y puede
operarse sobre l como si fuera una base de datos. Por
ltimo, se restablecer la conexin usando el proveedor
anterior y enviando al RDBMS las actualizaciones realizadas.

Objetivos de Diseo
Soportar el modelo de programacin multinivel (n-tier): en este modelo, los
datos se leen de la fuente de datos, se desconecta y pasan a travs de los
diferentes niveles

19

Integrar el estndar XML: se pueden transformar los datos a XML, pero tambin
se puede controlar el esquema y leer y escribir en XML.
Minimizar la curva de aprendizaje desde ADO: se busc la facilidad de
cambio desde ADO a ADO.NET de los programadores que estuvieran
familiarizados
con la anterior tecnologa.
Combinar el paradigma relacional con el orientado a objetos: se provee una
interfaz orientada a objetos de los datos a travs del tipo DataSet.
Reducir

los

errores

de programacin: esto se

consigue simplificando el modo en el que se accede a


los datos, ya que muchos programadores tuvieron
problemas en este campo con ADO. Se puede
acceder a los datos de dos formas: leyendo todos los
datos del resultado de la consulta y almacenndolos en un DataSet, o leerlos
poco a poco a travs de un objeto DataReader. Esto lleva a una prdida de
funcionalidad, pero se evita su uso incorrecto o inadvertido, ya que era lo que
causaba ms errores a los programadores en ADO.

Caractersticas
ADO.NET no depende de conexiones continuamente activas.
Las aplicaciones se conectan a la base de datos slo durante el tiempo necesario
para extraer o actualizar los datos. La base de datos ya no contiene
conexiones que la mayor parte del tiempo permanecen inactivas, as que puede
dar servicio a
muchos ms usuarios.

Las interacciones con la base de datos se realizan mediante comandos de


datos.
Para efectuar operaciones en una base de datos, se ejecutan instrucciones SQL
o
procedimientos almacenados (que incluyen instrucciones SQL). En ADO.NET los
comandos de datos se usan para empaquetar las instrucciones SQL o los
procedimientos almacenados. Por ejemplo, si se desea leer un conjunto de filas de
una base de datos, se crea un comando de datos y se configura con el texto de

una instruccin SQL Select o con el nombre del procedimiento almacenado que
recupera registros.

Los datos se pueden almacenar en memoria cach en conjuntos de datos


(DataSet)
Ya que slo son contenedores; se llenan con comandos SQL o procedimientos
almacenados que se ejecutan desde un adaptador de datos.

Los conjuntos de datos son independientes de los orgenes de datos


Dado que un conjunto de datos no est sujeto directamente a un origen de datos,
resulta un buen punto de integracin para datos procedentes de mltiples
orgenes.

Los datos se conservan como XML


Los datos deben moverse desde el almacn de datos hasta el conjunto de datos y
de ah a diversos componentes. En ADO.NET, el formato de transferencia de
datos es XML. En consecuencia, si es necesario conservar datos (por ejemplo, en
un archivo), se almacenarn como XML. Si se tiene un archivo XML, se puede
utilizar como cualquier otro origen de datos y crear un conjunto de datos a partir de
l. No es necesario saber XML para utilizar datos en ADO.NET, ya que convierte
automticamente los datos a XML y viceversa segn sea preciso; as que se
interacta con los datos utilizando mtodos de programacin ordinarios.

Las estructuras de datos estn definidas por esquemas


Los conjuntos de datos se representan como XML. La estructura del conjunto de
datos, es decir, la definicin de las tablas, columnas, tipos de datos, restricciones,
etc. que se encuentran en el conjunto de datos, se define por medio de un
esquema XML basado en el lenguaje de definicin de esquemas XML (XSD). Los
esquemas pueden ser generados y actualizados por Visual Studio .NET segn sea

21

Arquitectura
La siguiente ilustracin muestra los componentes principales de una aplicacin
ADO.NET
DataSets
Proveedores administrados

Figura 6.- Componentes ADO.NET1


Los componentes de ADO.NET estn diseados para separar el acceso a datos
de la manipulacin de datos. ADO.NET tiene dos componentes principales que
cumplen esta funcin:
El DataSet y el proveedor de datos de .NET Framework, que es un conjunto de
componentes entre los que se incluyen los objetos:
Connection
Command
Data Reader
DataAdapter.

En el siguiente diagrama se ilustran los componentes de la arquitectura de


ADO.NET.

Figura 7.- Arquitectura de ADO.NET


Para poder utilizar ADO.NET es necesario incluir el espacio de nombres
System.Data, para ellos basta con introducir en la aplicacin la directiva: using
System.Data

CONJUNTOS DE DATOS
Un conjunto de datos es una memoria cach desconectada de registros
recuperados de un origen de datos. Funciona como un almacn virtual de datos:
un conjunto de datos incluye una o ms tablas basadas en las tablas de la base
de datos real y puede incluir informacin acerca de las relaciones entre estas
tablas y las restricciones para los datos que puede contener cada tabla.
Espacio de nombres de conjunto de datos
Los mtodos y objetos contenidos en un DataSet son coherentes con los del
modelo de base de datos relacional.

23

Tipos proveedores de datos incluidos en .NET Framework 1.1


Proveedor de datos de .NET Framework para SQL Server.
El proveedor de datos de .NET Framework para SQL Server utiliza su propio
protocolo para establecer comunicaciones con SQL Server (versin 7.0 o
posterior).
Necesita
incluir
System.Data.SqlClient

el

espacio

de

nombres

Proveedor de datos de .NET Framework para OLE DB.


Para utilizar este proveedor se debe usar un proveedor OLE DB compatible.
Proveedores que se han probado con ADO.NET.

Controlador

Proveedor

SQLOLEDB

Proveedor OLE DB para SQL Server de Microsoft

MSDAORA

Proveedor OLE DB para Oracle de Microsoft

Microsoft. Jet.

Proveedor OLE DB para Microsoft Jet

OLEDB.4.0
Necesita incluir el espacio de nombres System.Data.OleDb, y la instalacin de MDAC
2.6 o posterior.

Propiedades importantes:

SelectCommand referencia a un comando (instruccin SQL o nombre de


procedimiento almacenado) que recupera filas del almacn de datos.

InsertCommand referencia a un comando para insertar filas en un almacn de


datos.

UpdateCommand referencia a un comando para modificar filas en el almacn


de datos.

NOTA: Dependiendo del proveedor de datos utilizado, sustityase xxx por: Sql,
OleDb, Odbc, OrecleClient o el que corresponda

DeleteCommand referencia a un comando para eliminar filas del almacn de


datos.

TableMappings -- Los nombres de la base de datos y del conjunto de datos no


tienen por qu coincidir. Se pueden crear nuevos nombres de tabla y columna
en el comando del conjunto de datos y, a continuacin, asignarlos a los nombres
que se utilizan en la base de datos. Los adaptadores utilizan la coleccin
TableMappings para mantener la correspondencia entre las estructuras del
conjunto de datos (tablas de datos y columnas de datos) y las estructuras del
almacn de datos (tablas y columnas).

Objetos Connection
El

objeto

Connection

proporciona

conectividad con un origen de datos. Un


adaptador de datos necesita una conexin
abierta con un origen de datos para leer y
escribir datos. Por tanto, un adaptador
utiliza

objetos

Connection

para

comunicarse con un origen de datos.


El adaptador puede contener como mximo cuatro referencias de conexin, una para
cada tipo de accin que puede ejecutar: seleccionar, actualizar, insertar y eliminar
(asociadas a sus propiedades).

El objeto Connection representa una sesin nica dentro del origen de datos.
Todos los objetos de conexin proporcionan propiedades para establecer y
modificar los detalles de la conexin (como el identificador de usuario, la
contrasea y el tiempo de espera).

Tambin proporcionan mtodos para iniciar, confirmar y desh acer transacciones


de base de datos. Se recomienda cerrar siempre el objeto Connection al terminar
de utilizarlo para que la conexin se devuelva a la agrupacin. Esta operacin se
puede realizar mediante los mtodos Close o Dispose del objeto Connection:

Ejemplos De Conexin
Conectar a SQL Server

SqlConnection conector =
new SqlConnection (Data Source=localhost;+
Integrated Security=SSPI;+
Initial Catalog=prueba);
conector.Open ();
conector.Close (); //o conector.Dispose ();

Conectar con un origen de datos OLE DB


OleDbConnection conector =
New OleDbConnection (Provider=SQLOLEDB;+
Data Source=localhost;+
Integrated Security=SSPI;+
Initial Catalog=prueba);
conector.Open();
conector.Close() ; //o conector.Dispose();

UNIVERSIDAD PRIVADA TELESUP

Conectar con un origen de datos ODBC


OdbcConnection conector =
New OdbcConnection (DRIVER={MySQL ODBC 3.51 Driver};+
SERVER=localhost;+
DATABASE=prueba;+
USER=naskar;);
conector.Open();
conector.Close(); // o conector.Dispose();

Conectar con un origen de datos Oracle


OracleConnection conector =
new OracleConnection (Data
Source=MyOracleServer;+ Integrated Security=yes;);
conector.Open();
conector.Close(); // o conector.Dispose();

Conectar con un origen de datos MySQL3


string conexion = "Database = prueba;Data Source =
localhost;"+ "User Id=naskar;";
MySqlConnection conector = new MySqlConnection(conexion);
conector.Open();
conector.Close(); // o conector.Dispose();

Objetos DataReader
DataReader proporciona una secuencia de datos de alto rendimiento, de slo
lectura y slo hacia delante, a partir de un origen de datos.
Siempre se debe llamar al mtodo Close cuando haya terminado de usar el
objeto DataReader. Si Command contiene parmetros de salida o valores
devueltos, stos no estarn disponibles hasta que se cierre el DataReader.
Mientras est abierto un DataReader, ste usa de forma exclusiva el objeto
Connection. Por eso no podr ejecutar ningn comando en el objeto Connection,
ni siquiera el de creacin de otro DataReader, hasta que se cierre el DataReader
original.

A la hora de decidir si una aplicacin debe utilizar un DataReader o un DataSet


se debe tener en cuenta el tipo de funcionalidad que la aplicacin requiere. Se usar
un DataSet para:
Utilizar datos de forma remota entre un nivel y otro o desde un servicio Web
XML.
Interactuar con datos dinmicamente, por ejemplo para enlazar con un control
de Windows Forms o para combinar y relacionar datos procedentes de varios
orgenes.
Almacenar datos en memoria cach localmente, dentro de su aplicacin.
Proporcionar una vista XML jerrquica de datos relacionales y utilizar
herramientas como una transformacin XSL o una consulta Xpath (XML
Path Language) en sus datos.
Realizar procesamientos exhaustivos de datos sin necesidad de tener una
conexin abierta con el origen de datos, lo que libera la conexin para que la
utilicen otros clientes.

Si no se necesita la funcionalidad proporcionada por el DataSet, se puede mejorar


el rendimiento de la aplicacin si se utiliza DataReader para devolver los datos de
slo avance y de slo lectura. Aunque el DataAdapter usa el DataReader para
rellenar el contenido de un DataSet, al utilizar el DataReader se puede mejorar el
rendimiento porque no usar la memoria que utilizara el DataSet, adems de
evitar el procesamiento necesario para crear y rellenar el contenido del DataSet.

Objetos Command

El objeto xxxCommand representa una instruccin SQL o un procedimiento


almacenado que ejecutar en un origen de datos, por lo que permite tener
acceso a comandos de base de datos para devolver datos, modificar datos,
ejecutar procedimientos almacenados y enviar o recuperar informacin sobre
parmetros.

UNIVERSIDAD PRIVADA TELESUP

Desarrollo
de

TEMA
3

Formularios
Windows
Competencia:
Conocer las aplicaciones windows
programacin orientadas a objetos.

con

30

UNIVERSIDAD PRIVADA TELESUP

Tema 03: Desarrollo de Formularios Windows


INTRODUCCIN A LOS FORMULARIOS WINDOWS
Qu hay tras Cdigo generado por el diseador?
Desde que empleamos un formulario, el entorno de desarrollo genera un
montn de cdigo.En primer lugar nos encontramos este conjunto de
instrucciones:

Estas instrucciones de arriba sirven para que el compilador encuentre las


clases que vamos a utilizar ms adelante.

Define el espacio de nombre y en principio, Visual Studio nos crea uno con
el nombre de la solucin.

/// > Lineas de documentacin.

31

Tras l, nos encontramos con todos que todos los formularios son clases, por lo
que declaramos una clase y asignamos un nombre(Form1), de las cuales hereda
de una de las clases del .NET Framework, en concreto, Form, ubicada en
el espacio de nombres System.WIndows.Forms.
Al estar basados en esta clase, los formularios presentan el aspecto,
propiedades y mtodos comunes a todos los formularios.

Gracias a estas lineas, se crea una variable necesaria para que el diseador
mantenga la coleccin de componentes visuales de la aplicacin. La variable
relacionada en este caso, es button1.

Lo primero de todo, el mtodo constructor (cuyo nombre debe ser


igual que el de la clase, sin ninguna devolucin de tipo).
Este, invoca al procedimiento InitializeComponent que es
el encargado de ejecutar todas las opciones que hayamos
establecido.
Aqu tambin podemos agregar a este constructor el
cdigo que queramos que se ejecute en el momento de crearse
nuestro formulario en tiempo de ejecucin. Como ejemplo,
podra ser la conexin a una base de datos.

El mtodo Disponse, es el destructor de la clase. Destruir el formulario en


tiempo de ejecucin una vez que sea cerrado. Podemos colocar diferentes
cdigos que se ejecute al destruir el formulario, sirviendo como ejemplo, el cerrar
la conexin a una BBDD o cerrar puertos que hayamos dejado a la escucha.

Tras este mtodo, encontraremos el mtodo Main, que sirve para la entrada de la
aplicacin. En l, se llama al metodo Run de la clase Application para arrancar el
formulario

Propiedades de los formularios


Los formularios nos muestran una amplia gama de propiedades, que
podemos aprovechar para configurar el aspecto y el comportamiento de los
mismos.
A la mayor parte de estas propiedades podemos asignarles valor tanto desde
cdigo como desde el diseador gracias a la ventana de propiedades.

UNIVERSIDAD PRIVADA TELESUP

Por defecto, aparece la propiedad Text, que establece el rtulo que va a


mostrar nuestro

formulario

en

la

barra

de

ttulo.

Podemos

modificar

esa

propiedad directamente en la ventana de propiedades o bien podemos hacerlos


desde el cdigo del formulario.

Empleamos, la clusula this, para hacer referencia al propio formulario.

Propiedades del Formulario:


AcceptButton Establece el boton que responde cuando el usuario pulsa la tecla
Return.
ActiveControl Obtiene el control activo.
AllowDrop Si el formulario acepta operaciones de arrastrar y soltar.
AutoScale Si se ajusta el tamao del formulario al tamao de la
fuente. AutoScroll Si el formulario acepta el scroll automtico.
BackColor Establece el color de fondo.
BackGroundImage Establece la imagen de fondo del formulario.
CancelButton

Que

boton

responde

cuando

se

pulsa

la

tecla

ESC.

ContextMenu Establece men contextual asociado.


ControlBox El formulario muestra el cuadro de control.
Controls Coleccin que contiene todos los controles del
formulario.
Cursor Obtiene o establece el cursor de ratn.
Enabled Si el formulario est disponible.
Font Establece la fuente de texto.
ForeColor El color de primer plano de formulario.

34

FormBorderStyle Establece el estilo de borde.


HelpButton El formulario muestra un botn de ayuda.
Icon Establece el icono.
Location Establece las coordenadas de posicin.
Locked Establece si se puede modificar la posicin y el tamao.
MaximizeBox Si se muestra el botn de maximizar.
Menu Men asociado al formulario.
MinimizeBox Si se muestra el boton de minimizar.
Name Establece el nombre del formulario.
Opacity Nivel de opacidad.
Size Tamao del formulario.
StartPosition Donde aparecer el formulario al comenzar la ejecucin.
Tag Datos definidos por el usuario y asociados al formulario.
Text Establece el rtulo a mostrar.
WindowState Estado inicial del formulario.

Mtodos de los formularios


Los mtodos nos permiten realizar acciones y siempre se invocan desde cdigo.
Por ejemplo, el mtodo Close, cierra el formulario.

35

Aqu algunos cuantos mtodos:


BringToFront Trae el formulario al frente
Close Cierra el formulario.
Dispose Invoca al destructor del formulario.
Focus Establece el foco en un control.
Hide Oculta el formulario.
Refresh Dibuja de nuevo los controles.
Select Activa un control.
Show Muestra el formulario

Eventos de los formularios


Evento = Acciones a las que el formulario puede responder (Ej: Como acta un
botn al hacer click).
Por ello, podemos elegir un buen listado de eventos, en el que tras l, se esconder el
cdigo asociado. En la vista diseo y ms en concreto en la ventana de
propiedades, se encuentra un icono con forma de rayo (Ah se muestran los
eventos).
Si por ejemplo, hacemos doble click sobre un nuevo formulario, se nos abrir el
cdigo especifico del evento Load.

Entre los eventos ms destacados de los formularios, se encuentran:

Activate : Cuando se activa el formulario.

Click : Cuando se hace click con el ratn.

Closed : Tras el cierre del formulario.

Closing : Durante el cierre del formulario.

Deactivate : Cuando el formulario se desactiva (o selecciona otro).

DoubleClick : Cuando se hace doble click con el ratn.

KeyDown : Cuando se aprieta una tecla.

KeyPress : Cuando se pulsa una tecla.

KeyUp : Cuando se suelta una tecla.

Load : Cuando se muestra el formulario por primera vez.

MouseDown: Cuando se aprieta un botn del ratn.

MouseUp : Cuando se suelta un botn del ratn.

MouseMove : Cuando se mueve el ratn.

Resize : Cuando se cambia el tamao del formulario.

Trabajar con varios formularios


Cuando una aplicacin maneja ms de un formulario, hay que tener en cuenta
que en tiempo de diseo, estamos creando clases (definiciones de objetos). En
tiempo de ejecucin, nos vemos obligados a crear objetos basados en las
definiciones creadas y trabajar con ellos.
Imaginar que tenemos Form1 y Form2, y queremos obtener mediante que
mediante un click en un botn se muestre el segundo:

Como se observa, instanciamos el Form2 para trabajar con ese


objeto de la clase Form2, pudiendo acceder a las propiedades,
mtodos y eventos del objeto. Como cambiar el rtulo de la
segunda ventana, con la propiedad Text, del Form2.

UNIVERSIDAD PRIVADA TELESUP

Uso
de

TEMA
4

GDI+
Competencia:
Explicar la importancia del uso del GDI+

38

UNIVERSIDAD PRIVADA TELESUP

Tema 04: Uso de GDI+


INTRODUCCIN GDI+
En este captulo se introduce la programacin grfica utilizando las clases del
Graphics Device Interface (GDI+). GDI+ es la evolucin de GDI, que resultaba
compleja de utilizar. En Visual Studio .NET, se puede decir que Microsoft ha
cuidado, simplificado y mejorado la manera de trabajar con objetos grficos.
El namespace System.Drawing proporciona acceso a la funcionalidad bsica
del GDI+. Adems,

se proporcionan otras clases y estructuras en los

namespace System.Text,
System.Drawing2D

System.Printing,

System.Imaging,

El namespace System.Drawing
Las clases y estructuras ms importantes del namespace System.Drawing son:

Clases
Bitmap

Encapsula un bitmap GDI+ . Se utiliza para trabajar


con imgenes.

Brush y Brushes

Se utilizan para rellenar reas cerradas con un

Font

determinado patrn, color o bitmap.


Define el tipo de letra.

FontFamily

Define una familia de tipos de letra co


similitud bsica en el diseo y una cierta variacin una
n en el
estilo.

Graphics

Encapsula la superficie grfica del

Icon

Se utilizan para trabajar con iconos.

Image

Clase base abstracta que proporciona

GDI+

funcionalidad para las clases Bitmap, Icony Metafile.

39

Pen y Pens

Para dibujar lneas, curvas, figuras, etc..

Region

Describe el interior de una superficie.


simple.
Define un objeto brush de color

SolidBrush

Estructuras
Color

Color ARGB

Point y PointF

Para trabajar con puntos en el

plano. Rectangle y RectangleF

Para trabajar con

rectngulos.
Size y SizeF
figura.

Para trabajar con las dimensiones de una

Enumeraciones
ContentAlignment

Especfica el alineamiento del contenido de


una figura.

FontStyle

Estilo deltexto.

GraphicsUnit

Especifica la unidad de medida de los datos.

Para trabajar con el GDI+ es imprescindible comprender la clase Graphics


que proporciona mtodos para dibujar en la pantalla, como Rectangle y Point.
Por eso, se estudiar en primer

lugar. Posteriormente se explicarn las

clases y estructuras ms utilizadas y comunes del GDI+ como Pen, Brush,


Rectangle, Point, etc.

40

Clases y estructuras del namespace System.Drawing


La clase Graphics
Graphics encapsula las superficies de dibujo de los formularios. Antes de
dibujar cualquier objeto grfico -un punto, una elipse o un rectgulo, etc- es
necesario crear u obtener el objeto Graphics de la superficie. En general,
se utiliza el evento Paint del formulario
objeto Graphics del formulario

para

obtener

una

referencia

al

porque cuando ocurre ese evento se le pasa

como argumento al mtodo manejador un objeto de la clase PaintEventArgs


que tiene una propiedad que tambin se llama Graphics que devuelve el
objeto Graphics del formulario.
private void formulario_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
//cdigo
}

Otras formas de obtener el objeto Graphics son las siguientes:


a) Sobreescrir el mtodo OnPaint: Que es un mtodo virtual que la clase
Form hereda de la clase Control. Por ejemplo
protected override void OnPaint ( PaintEventArgs e)
{
g Graphics = e.Graphics;

41

UNIVERSIDAD PRIVADA TELESUP

b) Si se desea utilizar otro evento :por ejemplo, si se quiere dibujar al pulsar un


botn del formulario- no resulta lgico esperar a que se produzca el evento
Paint. En estas situaciones,

se puede obtener el objeto Graphics invocando

al mtodo CreateGraphics() del formulario. En este ltimo caso cuando lo


obtiene

el programador directamente a travs de CreateGraphics()- es

muy importante invocar al mtodo Dispose() al final del mtodo, para liberar
esos recursos, ya que el Garbage Collector no lo har por defecto en este caso.
No es necesario hacerlo cuando se obtiene a travs de la propiedad Graphics:
private void formulario_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
//cdigo
g.Dispose();

//Muy importante liberar recursos


//cuando se utiliza este mtodo

}
c)

El objeto Graphics se puede tambin obtener a travs de distintos


mtodos estticos
aceptan

de

la

clase

System.Drawing.Graphics

que

como parmetro un fichero y devuelven un objeto grfico.

Por ejemplo:
Graphicsg=Graphics.FromFile(@c:\temporal\fichero.jpg)
; Mtodos
Una vez que se tiene la referencia del objeto Graphics se puede invocar
cualquier miembro de la clase Graphics para dibujar objetos. Los mtodos
ms importantes de esta clase son:
DrawArc

Dibuja un arco.

DrawBezier

Dibuja una curva de Bezier.

DrawCurve

Dibuja una curva definida por un array de

puntos. DrawEllips

Dibuja una elipse DrawLine


Dibuja una lnea recta

DrawPolygon

Dibuja un polgono.

DrawRectangle

Dibuja un rectngulo.

FillEllipse

Rellena el interior de una elipse.

FillPolygon

Rellena el interior de un polgono definido por un array de

puntos. FillRectangle

Rellena el interior de un rectngulo con un determinado

Brush. FillRectangles

Rellena el interior de una serie de rectngulos con un

determinado.
FillRegion
regin.

Rellena el interior de una

Esta clase posee ms mtodos para dibujar. Aqu se han


sealado los ms importantes. Adems, tiene mtodos
muy tiles para trabajar con imgenes e iconos posteriormente se estudiarn ambas clases-:

Los mtodos ms importantes en este sentido son:


DrawIcon: Dibuja un icono
DrawIconUnstretched: Dibuja un

icono

con

su

tamao

original

en

una determinada posicin.


DrawImage : Sita una imagen en la pantalla
DrawImageUnscaled: Dibuja una

imagen

con

su

tamao original y en un determinado lugar.


DrawString: Escribe texto
RotateTransform:

Gira

la

imagen

un

Angulo

especificado
ScaleTransform: Aplica una escala a la imagen
TranslateTransform: Desplaza la imagen

43

UNIVERSIDAD PRIVADA TELESUP

La gran mayora de ellos estn sobrecargados. Por ejemplo, considrese el


mtodo DrawIco:

Para dibujar el icono unIconoen el rectngulo r.


public void DrawIcon(Icon unIcono, Rectangle r);

Para dibujar el icono unIconoen la posicin (x, y).


public void DrawIcon(Icon unIcono, int x, int y);

Otro ejemplo lo constituye el mtodo DrawImage. Los parmetros son


muy elocuentes de la funcin que realizan y por eso no se explicarn aqu:

Con los dems mtodos sucede algo similar. Sera muy extenso definir aqu todas
las definiciones de todos los mtodos.
Otros tres mtodos de inters son:
Graphics FromImage(Image unaImagen) Crea un Nuevo objeto Graphicsa partir
del objeto Imageespecificado.
void Clear(Color unColor) Rellena la superficie con el color de
fondo. void Dispose() Borra el objeto Graphics y libera la
memoria.
Antes de comenzar a dibujar nada, es preciso definir el estilo del trabajo es
decir, especificar el color, la anchura y tipo, etc de las lneas del
Brush, Pen, Font y Color.
grfico-, utilizando las estructuras definidas en este namespace. Los

44

La clase Pen
La clase System.Drawing.Pen sirve para especificar el ancho y el estilo de la
lnea de dibujo o de la figura geomtrica. No slo indica el color del trazado
sino el tipo a rayas, puntos, contnua...-.

Los constructores de la clase Pen son:


public Pen(Color colorDeLinea);
public Pen(Brush brocha);
public Pen(Brush brocha, float anchoDeLinea);
public Pen(Color colorDeLinea, float anchoDeLinea);

Por ejemplo:
Pen unLapiz = new Pen( Color.Orange );
Pen
);

otroLapiz= new Pen( Color.Yellow, 30

Sin embargo, se puede utilizar la clase System.Drawing.Pens que no


tiene constructor pblico y se utiliza a travs de sus propiedades
estticas que devuelven un objeto Pende la anchura de un pxel.
Por ejemplo:
Pen lapizSolidoAmarillo = Pens.Yellow;
Las propiedades ms importantes de la clase Pen son:
Brush

Define el brush (la brocha). Color Define el

color. Width

Define el ancho.

Pen tiene otras propiedades y mtodos para definir el estilo de la lnea a


puntos, contnua, etc- o para rotar, trasladar o escalar una imagen o figura. Como
por ejemplo:
public void RotateTransform(float angulo);
public void TranslateTransform(float dx, float dy);
public void ScaleTransform(float sx, float sy);

Por ejemplo:
// Crea un objeto Pen
Pen lapiz = new Pen(Color.Black, 5);
//

Dibuja

un

rectangulo

con

el

Pen

lapiz

e.Graphics.DrawRectangle(lapiz, 10, 10, 100, 100);


// Escala el lapiz en la direccion X
lapiz.ScaleTransform(2, 1);
//

Rota

90

grados

lapiz.RotateTransform(90);
//

Dibuja

un

segundo

rectangulo

con

lapiz

e.Graphics.DrawRectangle(lapiz, 120, 10, 100, 100);

La clase Brush
Esta clase proporciona funcionalidad para
rellenar una determinada regin o figura con
el color slido color, textura, etc- que se
indique. La clase System.Drawing.Brush es
una clase base abstracta y no puede ser
instanciada, es decir, no se pueden crear
objetos de esta clase. Para crear un objeto Brushse debe utilizar alguna de sus
clases derivadas como SolidBrush, TextureBrusho LinearGradientBrush.
Por ejemplo:
Brush colorSolidoBeige = new SolidBrush(Color.Beige);
Brush colorNaranjaMarron = new SolidBrush(Color.FromArgb(255,150,0));
Tambin puede utilizarse la clase System.Drawing.Brused. No
pueden crearse objetos de esta clase porque no tiene un
constructor

pblico

se

utiliza

travs

de

sus

propiedades estticas que devuelven un objeto Brush del


color que se ha especificado.

46

Por ejemplo:
Brush solidoAzul = Brushes.Blue;
Brush solidoChocolate = Brused.Chocolate;

La clase Font
Esta clase permite trabajar y definir las caractersticas tipo, tamao, color,
estilo, etc- de letra en el objeto Graphics.
Los constructores ms importantes son:
public Font(FontFamily familia, float tamao);
public Font(FontFamily familia, float tamao,
FontStyle estilo);
public Font(string tipoDeLetra, float tamao);
public Font(string tipoDeLetra, float tamao,
FontStyle estilo);
public Font(Font fuente, FontStyle estilo);
FontStylees una enumeracin con los siguientes
miembros: Bold
Italic

Texto en negrita.

Texto en cursiva.

Regular

Texto Normal.

Strikeout

Texto tachado.

Underline

Texto subrayado

Por ejemplo:
Font unaFuente = new Font(Verdana, 22); Font
otraFuente = new Font(Courier, 12);

Si se desea que la letra asigne varios de los estilos, basta con sumar el
estilo de la letra, utilizando el operador

Font segundaFuente = new Font(Georgia, 22, Bold | Italic);


Las propiedades de Fontms importantes son:
Bold

Indica si la fuente es negrita.

FontFamily

Obtiene el FontFamilyde

esafuente.
Height

Obtiene la altura de la fuente.

Italic

Indica si la fuente es cursiva.

Name

Nombre de la fuente.

Size

Tamao de la fuente..

SizeInPoints

Tamao, en puntos, de la fuente.

Strikeout

Indica si la fuente est tachada.

Style

Estilo de la fuente.

Underline

Indica si la fuente est subrayada.

Unit

Define la medida para la fuente actual.

Ejemplo:
protected override OnPaint(PaintEventArgs e)
{
Graphics dc = e.Graphics;
Brush

brochaAzul

Brushes.Blue;

Brush brochaNegra = Brushes.Black;


Font unaFuente = new Font(Verdana, 22);
Font otraFuente = new Font(Times New Roman, FontStyle.Italic |

FontStyle.Underline);

dc.DrawString(Una frase, unaFuente, brochaAzul, 10,100);


/

Ms

codigo

base.OnPaint(e);
}

Para obtener

todas las

fuentes del

sistema, se puede utilizar la clase

InstalledFontCollection, del namespace System.Drawing.Text. Esta clase tiene


una propiedad, Familie, que devuelve un array con todas las fuentes disponibles del
sistema.
InstalledFontCollection

fuentes

InstalledFontCollection();
familia

new

FontFamily[]

= fuentes.Families;
foreach ( FontFamily f in familia)
{
//codigo
}

La estructura Color
La estructura Color est representada por un color ARGB (Alpha, Red, Green,
Blue). Las propiedades son:
byte A

valor del componente alpha del Color.

byte B

valor del componente azul (Blue) del Color.

byte G

valor del componente verde (Green) del

Color.
byte R

valor del componente rojo (Red) del

Color.

49

Casi todos los miembros de la estructura Color son estticos y no es


necesario crear un objeto de esta clase para trabajar con color determinado. Esta
clase tiene un importante mtodo esttico sobrecargado denominado FromArgb,
que define un objeto color. Este mtodo est sobrecargado:

public
Azul);

static

public
static
baseColor);

Color

FromArgb (int
Color

rojo,

FromArgb (int

public
static
Color FromArgb(int
int azul);
public Static Color FromArgb(int argb);

alpha,

int

int

Verde,

alpha,

rojo,

int
Color

int

verde,

50

UNIVERSIDAD PRIVADA TELESUP

Recomendadas

Lecturas

ENTORNO DE DESARROLLO INTEGRADO


http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado

INTRODUCCIN A ALA GDI+


http://www.ehu.es/mrodriguez/archivos/csharppdf/WinForms/GDI.pdf

Actividades y Ejercicios

1.

En un documento en Word realice un informe acadmico sobre


las diferencias entre las tecnoligas ADO y ADO.NET.
Envalo a travs de "ADOs".

2. En un documento en Word defina con sus palabras el concepto


de Managed Providers (M.P)
Envalo a travs de "M.P".

51

UNIVERSIDAD PRIVADA TELESUP

Autoevaluaciones

1. Es una plataforma de desarrollo, despliegue y ejecucin de aplicaciones


orientadas a servicios sobre entornos altamente distribuidos.
a. .NET
b. NGWS
c. ADO
d. Framework
e. MSIL
2. Son la alternativa a las tradicionales formas de acceder a un atributo.
a. Eventos.
b. Campos.
c. Tipos anidados.
d. Mtodos.
e. Propiedades.
3. Las plataformas..son muy similares entre s, manteniendo
bastantes puntos comunes.
a. .NET vs COM+
b. .NET y J2EE
c. J2EE y CORBA
d. RMI y J2EE
e. .NET y ASP.NET
4. Cul de estas opciones no es un objetivo de diseo?
a. Se pueden transformar los datos a XML, pero tambin se puede controlar el
esquema y leer y escribir en XML.
b. Soporta el modelo de programacin multinivel (ntier).
c. Construye intefaces para las aplicaciones.
d.
Minimiza la curva de aprendizaje desde
ADO.
e.
Combina el paradigma relacional con el orientado a
objetos.
5. Las interacciones con la base de datos se realizan mediante:
a. Aplicaciones.
b. Comandos de base de datos.
c. Las clases predeterminadas.
d. Las tecnologas.
e. Las instrucciones.

52

UNIVERSIDAD PRIVADA TELESUP

6. Que nos encontramos tras un cdigo generado por el diseador?


a. Un conjunto de instrucciones.
b. Una aplicacin.
c. Un compilador.
d. Mtodos.
e. Conexiones con BD.
7. El mtodo
mtodo
a. Sub out.

sirve para entrada de la aplicacin. En l, se llama al


de la clase Application para arrancar el formulario.

b. System print
c. Form () run.
d. Main run.
e. Void - this.close.
8. Empleamos, la clusula
propio formulario.
a. Tag.

, para hacer referencia al

b. WindowState.
c. AllowDrop.
d. Form.
e. This.
9. El namespace System.Drawing proporciona acceso a la funcionalidad
bsica del:
a. GDI+.
b. Visual studio .NET
c. Drawing.
d. Printing.
e. Drawing2D.
10. Clase base abstracta que proporciona funcionalidad para las clases Bitmap,
Icony Metafile. Nos referimos a:
a. Bitmap.
b. Graphics.
c. Image.
d. Pen y Pens.
e. SolidBrush.

53

UNIVERSIDAD PRIVADA TELESUP

Resumen

UNIDAD DE APRENDIZAJE I:

.NET es una plataforma de desarrollo, despliegue y ejecucin de aplicaciones


orientadas a servicios sobre entornos altamente distribuidos. La tecnologa .NET
proporciona un modelo de programacin simple y consistente, liberando al
programador de las cuestiones de infraestructura. Proporcionar una ejecucin
multiplataforma: gracias al lenguaje intermedio de Microsoft (MSIL). La traduccin de
MSIL a cdigo nativo de la CPU es realizada por un compilador JIT2 o Jitter. Tipos de
ensamblado: ensamblado privados, ensamblados compartivos. ADO.NET proporciona
un soporte total de XML Objetos de Datos ActiveX.
ADO.NET constituye la interfaz fundamental de las aplicaciones para proporcionar
servicios deacceso a datos en la plataforma Microsoft .NET, donde existen,
bsicamente, dos elementos: El conjunto de datos desconectado y Unos proveedores
que facilitan la ejecucin de operaciones contra un sistema RDBMS. Su objetivo es
Soportar el modelo de programacin multinivel (n-tier): en este modelo, los datos se
leen de la fuente de datos, se desconecta y pasan a travs de los diferentes
niveles.
Las interacciones con la base de datos se realizan mediante comandos de
datos.
Tras el cdigo del diseador nos encontramos con un conjunto de instrucciones.
Estas instrucciones sirven para que el compilador. Tras l, nos encontramos con
todos que todos los formularios son clases, por lo que declaramos una clase y
asignamos un nombre(Form1), de las cuales hereda de una de las clases del .NET
Framework, en concreto, Form,
ubicada
en
el
espacio
de
nombres
System.WIndows.Forms. El mtodo Disponse, es el destructor de la clase. Destruir
el formulario en tiempo de ejecucin una vez que sea cerrado. Cuando una aplicacin
maneja ms de un formulario, hay que tener en cuenta que en tiempo de diseo,
estamos creando clases (definiciones de objetos).

En este captulo se introduce la programacin grfica utilizando las clases del


Graphics Device Interface (GDI+). GDI+ es la evolucin de GDI, que resultaba
compleja de utilizar. Para trabajar con el GDI+ es imprescindible comprender la
clase
Graphics que proporciona mtodos para dibujar en la pantalla, como
Rectangle y Point. Por eso, se estudiar en primer lugar. Posteriormente se
explicarn las clases y estructuras ms utilizadas y comunes del GDI+ como Pen,
Brush, Rectangle, Point, etc. Graphics encapsula las superficies de dibujo de los
formularios. Antes de dibujar cualquier objeto grfico es necesario crear u
obtener el objeto Graphics de la superficie.

UNIVERSIDAD PRIVADA TELESUP

55

UNIVERSIDAD PRIVADA TELESUP

Introduccin

a) Presentacin y contextualizacin
Los temas que se tratan en la presente Unidad, tienen por finalidad que el
estudiante conozca la arquitectura del ADO.NET como un conjunto de
componentes del software para acceder a datos y a servicios de datos, con el fin
de proporcionar una escalabilidad mejor para sus aplicaciones, a medida que el
procesamiento de datos utiliza cada vez ms arquitecturas de varios niveles.

b) Competencia
Conoce la arquitectura, aplicaciones

y herramientas

bsicas de la

programacin estableciendo una estructura jerrquica para los programas.

c) Capacidades
1. Reconoce a la POO como una programacin de objetos para disear
aplicaciones y programas informticos.
2. Analiza los eventos del manejo de las excepciones en la ejecucin
del programa.
3. Identifica los bloques protegidos cuando se produce una excepcin en el
programa.
4. Conoce la utilizacin de Ado.net y aplicaciones desconectadas para
la manipulacin de datos.

d) Actitudes
Promueve el desarrollo de la POO.
Muestra inters ante el manejo de excepciones.
Proporciona mtodos al programa para protegerlos de los errores.
Asume el desarrollo de la utilizacin de ADO.NET.

e) Presentacin de Ideas bsicas y contenido esenciales de la Unidad:


La Unidad de Aprendizaje 02: Arquitectura del ADO.NET, comprende
el desarrollo de los siguientes temas:
TEMA 01: Programacin Orientada a Objetos.
TEMA 02: Manejo de Excepciones.
TEMA 03: Manejo de Excepciones (Continuacin)
TEMA 04: Utilizacin de ADO.NET y aplicaciones Desconectadas.

56

UNIVERSIDAD PRIVADA TELESUP

Programacin
Orientada
a Objetos

TEMA
1

Competencia:
Reconoce a la POO como una programacin
de objetos para disear aplicaciones y
programas informticos.

57

UNIVERSIDAD PRIVADA TELESUP

Desarrollo de los Temas

Tema 01: Programacin Orientada a Objetos


PROGRAMACIN ORIENTADA A OBJETOS.
La programacin orientada a objetos o POO (OOP segn sus siglas
en ingls) es un paradigma de programacin que usa objetos y sus
interacciones, para disear aplicaciones y programas informticos.
Est basado en varias tcnicas, incluyendo herencia,
abstraccin, polimorfismo y encapsulamiento. Su uso se populariz
a principios
de la dcada de los aos 1990. En la actualidad, existe variedad de
lenguajes de programacin que soportan la orientacin a
objetos. La programacin orientada a objetos, intenta simular el
mundo real
a travs del significado de objetos que contiene caractersticas y funciones. Los
lenguajes orientados a objetos se clasifican como lenguajes de quinta generacin.
Como su mismo nombre indica, la programacin orientada a objetos se basa en la
idea de un objeto, que es una combinacin de variables locales y procedim
ientos llamados

mtodos

que

juntos

conforman

una

entidad

de

programacin.

Origen de la POO.
Los conceptos de la programacin orientada a objetos tienen origen en Simula 67,
un lenguaje diseado para hacer simulaciones, creado por Ole-Johan Dahl y
Kristen Nygaard del Centro de Cmputo Noruego en Oslo. En este centro, se
trabajaba en simulaciones de naves, que fueron confundidas por la explosin
combinatoria de cmo las diversas cualidades de diferentes naves podan afectar
unas a las otras. La idea ocurri para agrupar los diversos tipos de naves en
diversas clases de objetos, siendo responsable cada clase de objetos de definir sus
propios datos
y comportamientos. Fueron refinados ms tarde en Smalltalk,
que fue desarrollado en Simula en Xerox PARC (cuya primera
versin fue escrita sobre Basic) pero diseado para ser un

58

sistema completamente dinmico en el cual los objetos se


podran crear y modificar "en marcha" (en tiempo de ejecucin)
en lugar de tener un sistema basado en programas estticos.

58

UNIVERSIDAD PRIVADA TELESUP

La programacin orientada a objetos tom posicin como el estilo


de programacin dominante a mediados de los aos ochenta, en gran
parte debido a la influencia de C++, una extensin del lenguaje de
programacin C. Su dominacin fue consolidada gracias al auge de
las

Interfaces

grficas

de

usuario,

para

las

cuales

la

programacin orientada a objetos est particularmente bien


adaptada. En este caso, se habla tambin de programacin
dirigida por eventos.

Las caractersticas de orientacin a objetos fueron agregadas a muchos


lenguajes existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp, Pascal,
entre otros. La adicin de estas caractersticas a los lenguajes que no fueron
diseados inicialmente para ellas condujo a menudo a problemas de compatibilidad y
en
la capacidad de mantenimiento del cdigo. Los
lenguajes orientados a objetos "puros", por su parte,
carecan de las caractersticas de las cuales muchos
programadores haban venido a depender. Para saltar este
obstculo, se
hicieron muchas tentativas para crear nuevos lenguajes
basados en mtodos orientados a objetos, pero permitiendo algunas caractersticas
imperativas de maneras "seguras". El Eiffel de Bertrand Meyer fue un temprano y
moderadamente acertado lenguaje con esos objetivos pero ahora ha sido
esencialmente reemplazado por Java, en gran parte debido a la aparicin de
Internet, y a la implementacin de la mquina virtual de Java en la mayora de
navegadores. PHP en su versin 5 se ha modificado, soporta una orientacin
completa a objetos, cumpliendo todas las caractersticas propias de la orientacin a
objetos.

1. Ventajas de la POO.
Fomenta la reutilizacin y extensin del cdigo.
Permite crear sistemas ms complejos.
Relacionar el sistema al mundo real.
Facilita la creacin de programas visuales.
Construccin de prototipos
59

UNIVERSIDAD PRIVADA TELESUP


Agiliza el desarrollo de software
Facilita el trabajo en equipo
Facilita el mantenimiento del software

60

Lo interesante de la POO es que proporciona conceptos y herramientas con las


cuales se modela y representa el mundo real tan fielmente como sea posible.

Modelos: La POO permite realizar un modelo de sistema casi independientemente de


los requisitos del proyecto. La razn es que en la POO, la jerarqua la establecen los
datos, en cambio en la programacin estructurada la jerarqua viene definida por los
programas. Este cambio hace que los modelos se establezcan de forma similar al
razonamiento

humano

y,

por

lo

tanto,

resulte

ms

natural.

Modularidad: Un programa es modular si se compone de mdulos independientes y


robustos. Esto permite la reutilizacin y facilita la verificacin y depuracin de los
mismos. En POO, los mdulos estn directamente relacionados con los objetos. Los
objetos son mdulos naturales ya que corresponden
a

una

imagen

lgica

de

la

realidad.

Extensibilidad: Durante el desarrollo de sistemas,


ocurre la aparicin de nuevos requisitos, por eso es
deseable

que

las

permitan

aadirlos

herramientas
sin

modificar

de

desarrollo

la

estructura

bsica
del Diseo. En POO es posible lograr esto siempre y cuando se hayan definido de
forma

adecuada

la

jerarqua

de

clases,

los

atributos

mtodos.

Eliminacin de redundancia: En el desarrollo de sistemas se desea evitar la


definicin mltiple de datos y funciones comunes. En POO esto se logra mediante la
herencia (evita la definicin mltiple de propiedades comunes a muchos objetos) y el
polimorfismo (permite la modificacin de mtodos heredados). Solo hay que definir los
atributos y los mtodos en el antepasado ms lejano que los comparte.

Reutilizacin: La POO proporciona un marco perfecto para la reutilizacin de las


clases. El encapsulamiento y la modularidad nos permiten utilizar una y otra vez las
mismas

clases

en

aplicaciones

distintas.

En

efecto,

el

aislamiento

entre

distintas clases significa que es posible aadir una nueva clase o un modulo nuevo
(extensibilidad) sin afectar al resto de la aplicacin.

2. Conceptos Fundamentales.
La programacin orientada a objetos es una forma de
programar que trata de encontrar una solucin a estos
problemas. Introduce nuevos conceptos, que superan y
amplan conceptos antiguos ya conocidos.

Entre ellos destacan los siguientes:

2.1. Objeto.
Entender que es un objeto es la clave para entender cualquier lenguaje
orientado a objetos. Existen muchas definiciones que se le ha dado al
Objeto. Primero empecemos entendiendo que es un objeto del mundo real.
Un objeto del mundo real es cualquier cosa que vemos a nuestro alrededor.
Digamos que para leer este artculo lo hacemos a travs del monitor y una
computadora, ambos son objetos, al igual que nuestro telfono celular, un
rbol o un automvil.

Analicemos un poco ms a un objeto del mundo real, como la computadora. No


necesitamos ser expertos en hardware para saber que una computadora est
compuesta internamente por varios componentes: la tarjeta madre, el chip del
procesador, un disco duro, una tarjeta de video, y otras partes ms. El trabajo en
conjunto de todos estos componentes hace operar a una computadora.

Internamente, cada uno de estos componentes puede ser sumamente complicado y


puede ser fabricado por diversas compaas con diversos mtodos de diseo. Pero
nosotros no necesitamos saber cmo trabajan cada uno de estos componentes, como
saber qu hace cada uno de los chips de la tarjeta madre, o cmo funciona
internamente el procesador. Cada componente es una unidad autnoma, y todo lo
que necesitamos saber de adentro es cmo interactan entre s los componentes,
saber por ejemplo si el procesador y las memorias son compatibles con la tarjeta
madre, o conocer donde se coloca la tarjeta de video. Cuando conocemos como
interaccionan los

componentes

entre

s,

podremos

armar

fcilmente

una

computadora.
Qu tiene que ver esto con la programacin? La programacin orientada a objetos
trabaja de esta manera. Todo el programa est construido en base a
diferentes componentes (Objetos), cada uno tiene un rol especfico en el programa
y todos los componentes

pueden

comunicarse

entre

ellos

de

formas

predefinidas. Todo objeto del mundo real tiene 2 componentes: caractersticas y


comportamiento. Por ejemplo, los automviles tienen caractersticas (marca,
modelo, color, velocidad mxima, etc.) y comportamiento (frenar, acelerar,
retroceder, llenar combustible, cambiar llantas, etc.).
61

Los Objetos de Software, al igual que los objetos del mundo real, tambin
tienen caractersticas y comportamientos. Un objeto de software mantiene sus
caractersticas

en

una

ms

"variables",

implementa

su

comportamiento con "mtodos". Un mtodo es una funcin o subrutina


asociada a un objeto.
Para redondear estas ideas, imaginemos que tenemos estacionado
en nuestra cochera un Ford Focus color azul que corre hasta 260 km/h.
Si pasamos ese objeto del mundo real al mundo del software,
tendremos un objeto Automvil con sus caractersticas predeterminadas:
Marca = Ford
Modelo = Focus
Color = Azul
Velocidad Mxima = 260 km/h
Cuando a las caractersticas del objeto le ponemos valores decimos que el objeto
tiene estados. Las variables almacenan los estados de un objeto en un determinado
momento.
Definicin terica: Un objeto es una unidad de cdigo compuesto de variables y
mtodos relacionados. Entidad provista de un conjunto de propiedades o atributos
(datos)

de

comportamiento

funcionalidad

(mtodos)

los

mismos

que

consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del


mundo que nos rodea, o a objetos internos del sistema (del programa). Es una
instancia a una clase.

2.2. Clases.
En el mundo real, normalmente tenemos muchos objetos del mismo
tipo. Por ejemplo, nuestro telfono celular es slo uno de los miles
que hay en el mundo. Si hablamos en trminos de la programacin
orientada a objetos, podemos decir que nuestro objeto celular es una
instancia de una
celulares

clase

conocida

como

"celular".

Los

tienen caractersticas (marca, modelo, sistema operativo,

pantalla, teclado, etc.) y comportamientos (hacer y recibir llamadas,


enviar mensajes
multimedia, transmisin de datos, etc.).

UNIVERSIDAD PRIVADA TELESUP

Cuando se fabrican los celulares, los fabricantes aprovechan el hecho de que los
celulares comparten esas caractersticas comunes y construyen modelos o plantillas
comunes, para que a partir de esas se puedan crear muchos equipos celulares del
mismo modelo. A ese modelo o plantilla le llamamos CLASE, y a los equipos que
sacamos a partir de ella la llamamos OBJETOS.
Esto mismo se aplica a los objetos de software, se puede tener muchos objetos del
mismo tipo y mismas caractersticas.
Definicin terica: La clase es un modelo o prototipo que define las variables
y
mtodos comunes a todos los objetos de cierta clase. Tambin se puede decir
que una clase es una plantilla genrica para un conjunto de objetos de similares
caractersticas.
Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. En
realidad no existe diferencia entre un objeto y una instancia. Slo que el objeto es un
trmino ms general, pero los objetos y las instancias son ambas representacin de
una clase.
Definicin Terica: Una instancia es un objeto de una clase en particular.
Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La
instanciacin es la lectura de estas definiciones y la creacin de un objeto a partir de
ellas.

2.3. Herencia.
Por ejemplo, herencia de la clase C a la clase D; es la facilidad mediante la
cual la clase D hereda en ella cada uno de los atributos y operaciones de C,
como si esos atributos y operaciones hubiesen sido definidos por la misma
D. Por lo tanto, puede usar los mismos mtodos y variables
pblicas

declaradas

en

C.

Los

componentes

registrados como "privados" (private) tambin se


heredan, pero como no pertenecen a la clase,
se mantienen escondidos al programador y
slo pueden ser accedidos a travs de otros
mtodos pblicos. Esto es as para mantener
hegemnico el ideal de OOP.

63

2.4. Mtodo
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin se
desencadena tras la recepcin de un "mensaje". Desde el punto de vista del
comportamiento, es lo que el objeto puede hacer. Un mtodo puede producir
un cambio en las propiedades del objeto, o la generacin de un "evento" con
un nuevo mensaje para otro objeto del sistema.

2.5. Evento
Es un suceso en el sistema (tal como una interaccin del
usuario con la mquina, o un mensaje enviado por un objeto).
El sistema maneja el evento enviando el mensaje adecuado al
objeto pertinente. Tambin se puede definir como evento, a
la
reaccin que puede desencadenar un objeto, es decir la accin que
genera.

2.6. Mensaje.
Una comunicacin dirigida a un objeto, que le ordena que ejecute uno de sus
mtodos con ciertos parmetros asociados al evento que lo gener. Un
objeto es intil si est aislado. El medio empleado para que un objeto
interacte con otro son los mensajes. Hablando en trminos un poco ms
tcnicos, los mensajes son invocaciones a los mtodos de los objetos.

2.7. Propiedad o atributo.


Contenedor de un tipo de datos asociados a un objeto (o
a una clase de objetos), que hace los datos visibles desde
fuera del objeto y esto se define como sus caractersticas predeterminadas, y
cuyo valor puede ser alterado por la ejecucin de algn mtodo.

2.8. Estado interno.


Es una variable que se declara privada, que puede ser nicamente
accedida y alterada por un mtodo del objeto, y que se utiliza para indicar

64

distintas situaciones posibles para el objeto (o clase de objetos). No es


visible al programador que maneja una instancia de la clase.

65

2.9. Componentes de un objeto.


Atributos,
mtodos.

identidad,

relaciones

Identificacin de un objeto: un objeto se representa por medio de una tabla o


entidad que est compuesta por sus atributos y funciones correspondientes.

3. Caractersticas de la POO
Existe un acuerdo acerca de qu caractersticas contempla la "orientacin
a objetos", las caractersticas siguientes son las ms importantes:

3.1. Abstraccin.
Denota las caractersticas esenciales de un
objeto,

donde

se

comportamientos.

capturan

Cada

objeto

sus
en

el

sistema sirve como modelo de un "agente"


abstracto

que

puede

realizar

trabajo,

informar y cambiar su estado, y "comunicarse" con otros objetos en el


sistema sin revelar cmo se implementan estas caractersticas. Los
procesos, las funciones o los mtodos pueden tambin ser abstrados
y cuando lo estn, una variedad de tcnicas son requeridas para ampliar una
abstraccin.
caractersticas

El

proceso
relevantes

de

abstraccin

dentro

de

un

permite

seleccionar

conjunto

las

identificar

comportamientos comunes para definir nuevos tipos de entidades en el


mundo real. La abstraccin es clave en el proceso de anlisis y diseo
orientado a objetos, ya que mediante ella podemos llegar a armar un
conjunto de clases que permitan modelar la realidad o el problema que se
quiere atacar.

Por ejemplo, volvamos al ejemplo de los automviles, Qu caractersticas


podemos abstraer de los automviles? O lo que es lo mismo
Qu caractersticas semejantes tienen todos los automviles?
Todos tendrn una marca, un modelo, nmero de chasis, peso, llantas,

puertas, ventanas, etc. Y en cuanto a su comportamiento todos los


automviles podrn acelerar, frenar, retroceder, etc.

UNIVERSIDAD PRIVADA TELESUP

Manejo
de

TEMA
2

Excepciones
Competencia:
Analizar los eventos del manejo de las
excepciones en la ejecucin del programa.

66

UNIVERSIDAD PRIVADA TELESUP

Tema 02: Manejo de Excepciones


MANEJO DE EXCEPCIONES
Las excepciones

son eventos que ocurren por un error del programa en

tiempo de ejecucin, las cuales son generadas para indicarle al programador


que ha ocurrido un error que impide la normal ejecucin del programa.

Para controlar estos errores es necesario


tener en cuenta una gran cantidad de
situaciones, dependiendo del caso que se
est tratando. Por ejemplo, para manipular
un archivo el programador debera tomar
en cuenta: la existencia del archivo, una
ruta de acceso vlida, la integridad del
archivo, entre otras cosas si el archivo est en una red tendra que verificar que la
conexin est activa. Aunque el cdigo para utilizar el archivo sea pequeo todas
las verificaciones retardaran la ejecucin del programa.

El manejo de las excepciones permite independizar el cdigo de uso de


un recurso

del manejo de los errores, lo cual no retrasara la ejecucin

del programa porque el cdigo de acceso al recurso se ejecuta siempre, pero


el cdigo de manejo de errores se ejecuta slo cuando estos suceden.

El mtodo que proporciona Delphi para protegerse de los errores son las
excepciones. Cuando ocurre

un

error

en

tiempo

de

ejecucin Delphi genera una excepcin; crea una instancia de


una

clase

especial

denominada

Exception

algn

descendiente, el flujo del programa se altera y nicamente se


ejecuta el cdigo de respuesta a excepcin. Este cdigo puede
tratar el error (procesarlo y responder si corresponde) o no, en
cuyo caso se genera un evento OnException en la aplicacin.

67

Deteccin y procesamiento de excepciones


Una excepcin se mantiene hasta que se atiende o termina el programa.
Normalmente procesaremos las excepciones que se produzcan en nuestro cdigo
para recuperarnos sin problemas de los errores. Delphi nos da una va para
escapar airosos de las situaciones no previstas, cuando se producen errores
inesperados que haran caer nuestro sistema sin remedio, tal vez dejando archivos
abiertos y con prdida de datos.
Para ver el tratamiento por defecto de los errores en Delphi se utilizar
un programa que calcule el cuadrado de un nmero entero.
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
i := StrToInt (edit1.text);
label1.caption := format (El cuadrado es: %d, [ i * i ]);
end;

Fig. 2: Mensaje de error por defecto.


Fig. 1: Programa para
calcular el cuadrado de
un entero.

68

Cuando se presiona el botn, el texto escrito en el editor se convierte en un


nmero entero, se eleva al cuadrado y se muestra el resultado. Pero si se escribe
algo que no sea un nmero entero o se deja vaco el editor se producir un
error de conversin. Delphi procesa este error mostrando un pequeo mensaje
indicativo.

El resultado es que no ocurre nada grave. La respuesta por


defecto de Delphi a las excepciones es slo mostrar el
mensaje correspondiente en una caja de dilogo como la
anterior. En una aplicacin simple no es necesario mucho
ms, pero sera agradable para el usuario que se le explique
un poco mejor que ha sucedido. Adems, no hay nada ms
frustrante que un mensaje donde se nos dice que Se ha
producido un error. La nica opcin que tiene es presionar un nico botn
que puede ver, para hacer desaparecer este mensaje.

Cambio de la respuesta por defecto de las excepciones


Para modificar la respuesta estndar de Delphi ante un error hay que
escribir un procedimiento de respuesta al evento OnException, que se
produce en el objeto Application.
El objeto Application no es un componente visible. Se crea automticamente
cada vez que se ejecuta una aplicacin y se referencia con la variable
global Application. Para indicar que se ejecute un mtodo al producirse el
evento OnException,

se

puede utilizar

el hecho que

los

eventos son

propiedades. Como tales, se les puede asignar un valor (en el caso de los
eventos, un procedimiento que se ejecutar al producirse el evento). La definicin
de la propiedad OnException indica
de

al

programador

qu

tipo

mtodo se le puede asignar. En el caso de OnException:

property OnException: TExceptionEvent;


El tipo TExceptionEvent es un tipo procedural:
TExceptionEvent = procedure (Sender: TObject; E: Exception) of object;

69

Por lo tanto, el procedimiento debe esperar dos parmetros, uno de tipo tObject y
otro de tipo Exception, y debe ser un mtodo de un objeto (el mtodo
puede pertenecer a cualquiera de los forms (ventana en Delphi) que componen el
proyecto). Se escribe un mtodo nuevo al form principal:
procedure tForm1.TratarExcepciones (sender: tObject; e:Exception);
begin
MessageDlg (Se ha producido un error. Por favor intente de nuevo,
mtError, [mbOk],0);
end;
La declaracin de este mtodo debe ser escrita en la definicin del tipo
Tform1 (cuando se asigna un mtodo a un evento a travs del Inspector de
Objetos, Delphi escribe esta declaracin por nosotros).
Definicin de la clase entera (declaracin del nuevo
mtodo): TForm1 = class
(TForm) Button1:
TButton; Edit1:
TEdit;
Label1:
TLabel;
Label2:
TLabel;
procedure Button1Click (Sender: TObject);
private
procedure TratarExcepciones (sender: tObject; e : Exception);
public
{ Public declarationes }
end;
Se realiza la asignacin al crear el form principal, en el evento
OnCreate:
procedure TForm1.FormCreate (sender: TObject);
begin
Application.OnException := TratarExcepciones;
end;
70

Ahora el programa presenta un mensaje de error distinto del predeterminado


cuando se produce un error de cualquier tipo. El siguiente paso es filtrar los
errores, respondiendo de distinta manera a cada uno de ellos.
Es posible ver de qu tipo es una excepcin mirando la clase a la que pertenece el
parmetro E.

Categoras y clases de Excepciones


Las excepciones en Delphi se pueden dividir en las siguientes
categoras:

Conversin de tipo: Se producen cuando tratamos de convertir un tipo


de dato en otro,

por

ejemplo utilizando las funciones IntToStr, StrToInt

o StrToFloat. Delphi dispara una excepcin EConvertError.

Tipo forzado (typecast): Se producen cuando tratamos de forzar el


reconocimiento de una excepcin de un tipo como si fuera de otro usando
el operador as. Si no son compatibles, se dispara la excepcin EInvalidCast.

Aritmtica de punto flotante: Se produce al hacer operaciones con


expresiones de tipo real. Existe una clase general para este tipo de
excepciones (EmathError) pero Delphi utiliza slo los descendientes de sta:
2. EinvalidOp: El procesador encontr una instruccin invlida.
3. EzeroDivide: Divisin por cero.
4. Eoverflow: Se excede en ms la capacidad aritmtica
(nmero demasiado grandes).
5. Eunderflow: S e excede en menos la capacidad
aritmtica (nmeros demasiado pequeos).

Aritmtica entera: Se producen al hacer operaciones con expresiones


de tipo entero.

Existe una clase general definida para este tipo de

excepciones llamada EintError, pero Delphi slo utiliza los descendientes:


1. EDivByZero: Divisin por cero.
2. ERangeError: Nmero fuera del rango disponible segn el t ipo de
dato.
La comprobacin de rango debe estar activada (indicador $R).
3. EIntOverflow: Se excede en ms la capacidad aritmtica (nmeros
demasiado

grandes).

La comprobacin

estar activada (indicador $O).

de

sobre pasamiento debe

Falta de memoria: Se produce cuando hay un problema al acceder o


reservar memoria. Se definen dos clases:
1. EOutOfMemory: No hay suficiente memoria disponible para completar
la operacin.
2. EInvalidPointer: La aplicacin trata de disponer de la informacin
referenciada por un puntero que indica una direccin invlida (fuera del
rango de direcciones permitido a la aplicacin). Generalmente significa que
la memoria ya ha sido liberada.

Entrada/Salida:

Se

produce

cuando

hay

un

error

al

acceder

dispositivos de entrada/salida o archivos. Se define una clase


genrica
(EInOutError) con ua propiedad que contiene el cdigo de error (ErrorCode).

Hardware: Se producen cuando el procesador detecta un error que no


puede manejar
interrupcin
excepciones

o cuando la aplicacin genera intencionalmente una

para detener la ejecucin. El cdigo para manejar estas


no

se

incluye

en

las

DLL complicadas,

slo

en

las

aplicaciones. Se define una clase base que no es directamente utilizada


(EProcessorException). Las clases tiles son los descendientes:

1. EFault: Es una clase base para todas las excepciones de


faltas del procesador.
2. EGPFault: E r r o r de Proteccin General, cuando un puntero trata
de acceder a posiciones de memoria protegidas.
3. EStackFault: Acceso ilegal al segmento de pila del procesador.
4. EPageFault:

El

manejador

de

memoria

de

W indows

tuvo

problemas al utilizae el archivo de intercambio.


5. EInvalidOpcode: El procesador trata de ejecutar una instruccin
invlida.
6.
EBreakpoint: La aplicacin ha generado una interrupcin de
ejecucin (punto de ruptura, utilizado por el debugger de Delphi para
7.

inspeccionar las variables en un punto).


ESingleStep: La
ejecucin

aplicacin

ha

generado

una

interrupcin

de

72

paso a paso. Despus de cada paso de programa se produce


la interrupcin. Es utilizada tambin por el debugger de Delphi.

72

Excepciones silenciosas: Se disparan intencionalmente por la aplicacin


para interrumpir el flujo de ejecucin; no generan mensajes de error. Se
define una clase: EAbort. Esta excepcin es automticamente generado
cuando invocamos el
silenciosa

provocada

procedimiento
por

global

Abort.

La

excepcin

el procedimiento Abort se puede utilizar para

interrumpir la ejecucin del programa en cualquier punto.

Manejadores de excepciones
Delphi tiene dos tipos de manejadores de excepciones:

El primero es slo para el manejo de errores, su representacin es la siguiente:

El segundo es para liberar recursos y se puede representar as:

El cdigo llamado "bloque protegido" es el que se coloca entre el try y el finally o


entre try y el except, este cdigo es el que va a quedar protegido por el
manejador de errores o excepciones.

73

UNIVERSIDAD PRIVADA TELESUP

La diferencia entre estos dos tipos de manejadores es que el primero slo ejecuta el
bloque entre el except y el end si ocurre un error en el bloque protegido y el
segundo ejecuta el bloque entre el finally y el end siempre, tanto si ocurre un
error como si finaliza exitosamente.

Para manejar los errores Delphi define un objeto llamado


Exception del cual derivan todos los objetos manejadores
de excepciones. Estos objetos son los que se colocan entre
las palabras reservadas on y do con el fin de manejar
el tipo de excepcin que se desee. Se pueden declarar
tantas
quieran

expresiones
manejar,

on
o

do

tambin

como excepciones
se

pueden

se

declarar

manejadores genricos de excepciones omitiendo las declaraciones on y


do.

Hay casos en que una excepcin no puede ser manejada, para esto se utiliza la
palabra reservada raise con el fin de levantar la excepcin de nuevo; de esta
forma la excepcin salta al manejador de excepciones anterior, si no encuentra un
manejador sigue

recursivamente

cayendo

en

los

contextos

de

excepcin

definidos, si no existe quien la maneje primero despliega un mensaje de error y


en muchos casos puede abortar el programa.
El uso de los manejadores de excepciones de cualquiera de las formas
expuestas anteriormente ayuda a proteger los recursos que utilice el
programa, haciendo ste ms seguro.
Los recursos que necesitan proteccin en Delphi son los
siguientes:
Archivos: Solicitud, liberacin de archivos y adems controlar cualquier tipo
de error que pueda provocar que este quede abierto.
Memoria: Se controla que la memoria sea liberada una vez que se
ha solicitado y ocurra un error de ejecucin.
Recursos de Windows: Por ejemplo, poder finalizar
conexiones con otros sistemas si ocurre un error en la ejecucin del
programa.

UNIVERSIDAD PRIVADA TELESUP


Objetos: Poder liberar los recursos o memoria asignada a cada uno de los
objetos.

UNIVERSIDAD PRIVADA TELESUP

Manejo de

TEMA
3

Excepciones
(Continuacin)
Competencia:
Identificar los bloques protegidos cuando se
produce una excepcin en el programa.

75

UNIVERSIDAD PRIVADA TELESUP

Tema 03: Manejo de Excepciones


(Continuacin)
TRY...EXCEPT
Para proteger una porcin de cdigo se debe encerrar en un bloque try...except. Entre
estas dos palabras reservadas se ubica el cdigo que est expuesto a errores;
despus de except se procesan estos ltimos, cerrando todo el bloque con end.

Los bloques protegidos forman como capas al resto del programa; cuando se
produce una excepcin en un lugar del cdigo la ejecucin salta directamente a
la capa de proteccin donde se est ejecutando. Si el error no se procesa en esta
capa se pasa a la siguiente, y as sucesivamente. Las aplicaciones de Delphi corren
dentro de un bloque protegido, por lo que todas las excepciones no tratadas
especialmente se procesan en el objeto de Application.
Esquema de una aplicacin con varios bloques protegidos que muestra
cmo se redirige la ejecucin cuando se produce un error:

Fig. 3:
Bloques de
proteccin
anidados.

Como se puede ver en el grfico, los errores que se producen fuera de las
estructuras try...except son tratadas en la parte correspondiente al bloque anterior; en
ltima instancia se procesan en el evento OnException de la aplicacin; es como si
toda la aplicacin estuviera encerrada en un gran bloque try...except.

76

Este mtodo de declarar como clases a las excepciones permite tratarlas de


modo jerrquico. Por tanto un manejador de una clase de excepciones trata
tambin las
clases descendientes, podra usarse un cdigo como el siguiente:
try
{Cdigo}
Except
on <clase de la excepcin> do
{manejar la excepcin o sus descendientes}
on <otra clase > do
:
end;

Por ejemplo para atrapar un error aritmtico que se pueda producir en una
operacin, se podra escribir:
try

{operacin}

except
on eMathError do
ShowMessage(Error de punto flotante);
on eIntError do
ShowMessage (Error aritmtico entero);
end;
Algunas situaciones comunes donde es necesario un control de errores
y la correccin de los mismos son:

Divisin por cero


Cada vez que se realiza una divisin hay que tener en cuenta el error que puede
producirse si el divisor es cero. Segn se trate de una divisin entera (div) o de una
de punto flotante, se dispara una excepcin eDivByZero
o eZeroDivide, respectivamente.
Las siguientes funciones permiten probar un mtodo de
recuperacin del error de divisin por cero. En este
caso no se presenta ningn mensaje al usuario, slo
se devuelve un valor por defecto.

77

function DivisionEntera (a, b: integer) : integer;


begin
try
Result := a div b;
except
on eDivByZero do
Result := 0;
end;
end;
function DivisionReal (a,b : real): real;
begin
try
Result := a/b;
except
end;
end;

Acceso a un fichero
Abrir un archivo y leer datos.
El siguiente fragmento de cdigo abre un archivo y lee 50 bytes en un
array, mostrando un mensaje si se produce cualquier error en el proceso.
var
f: file;
b: array [0..49 of byte];
begin
try

AssignFile ( f , nombre );
ResetFile ( f , 1 );
BlockRead ( f , b , 50 );
CloseFIle ( f );

Except on eInOutError do
ShowMessage ( Error al trabajar con el archivo );
end;
end;

78

Abrir un archivo. Bloques anidados


El procedimiento siguiente se puede usar cuando necesitamos utilizar
un archivo; si existe, se abre y si no existe se crea.
Se tienen dos bloques anidados, uno dentro del otro. El interior captura un error al
abrir ( por ejemplo, cuando no existe el archivo); mientras que el exterior intercepta un
posible error de creacin, presentando un mensaje al usuario y abandonando
inmediatamente el procedimiento. Si todo va bien, se puede utilizar el archivo abierto
(con posible comprobacin de errores al leer o escribir) y finalmente se debe cerrar
el archivo.
Var
f: file;
begin
try
AssignFile ( f , ARCH.TXT ); Reset ( f , 1 );
except
On eInOutError do
Rewrite ( f , 1 );
end;
except

on InOutError do begin
ShowMessage ( No se puede crear el archivo ); Exit;

end;
{ utilizar el archivo }
CloseFile ( f );
end;
Se puede ver que de producirse un error al abrir o leer el archivo, la instruccin
de cierre no se ejecutar. En el caso de una lectura no hay mayores problemas,
pero

TRY...FINALLY
A veces es necesario ejecutar una porcin de cdigo suceda un error o no. Para
esto, existe en Delphi la estructura try...finally. Cuando se produce un error dentro
de este bloque se suspende el tratamiento de la excepcin para ejecutar el cdigo
que sigue a finally. Y cuando ha terminado, se sigue con el proceso normal de
proceso de error.

UNIVERSIDAD PRIVADA TELESUP

Ejemplo:
Cuando se realiza una tarea que puede extenderse en el tiempo, es bueno
indicarlo al usuario mediante el cursor de espera (el reloj de arena, en
DelphicrHourglass); al terminar la operacin se debe sustituir el cursor anterior.
Pero si ocurre

un error durante el proceso, la instruccin de restitucin del

cursor no se ejecutar nunca

y el usuario puede quedarse horas esperando

a que el cursor le indique que puede seguir trabajando. Se puede evitar esto con
el
siguiente cdigo:
try

screen.cursor := crHourglass; { se pone el cursor de

espera }
{ aqu se hace el proceso }
finally
screen.cursor := crDefault;

{ se restituye el cursor por defecto }

end;

Si en la seccin finally se produce un error, la ejecucin saltar inmediatamente a la


siguiente capa de proteccin (seccin except correspondiente o al manejador por
defecto de la aplicacin). Por lo tanto, se debe evitar en esta seccin utilizar cdigo
propenso a errores, o desactivar la deteccin de los mismos.
Algunos de los casos ms comunes que necesitan cdigo de ejecucin
obligatoria son:

Cerrar un archivo
Si se produce un error mientras se accede al archivo o
se procesan sus datos, no se ejecutar la orden
CloseFile y el archivo permanecer abierto. Esto puede
ocasionar prdida de datos ya que el sistema de
directorios se vuelve inestable.

Para arreglar esto puede usarse un cdigo como ste:


var

f: file;
b: array [0..49 of byte];

begin
try
try
AssignFile ( f , nombre );
ResetFile ( f , 1 );
BlockRead ( f , b , 50 );
except
on eInOutError do
ShowMessage ( Error al trabajar con el archivo );
end;
finally
CloseFile ( f );
end;
end;

Liberar memoria
Si se crea una estructura dinmica, es responsabilidad del programador devolver
la memoria utilizada al sistema.
Ejemplo utilizando GetMem y FreeMem:
type
aInt = array [0..0] of integer;
paInt = ^aInt;
var
a: paInt;
begin
GetMem ( a , SiezOf (integer) * 10000 );{ se solicita memoria para
10000 enteros }
try
{Utilizacin de la memoria}

finally
if assigned (a) then FreeMem ( a , SizeOf (integer) * 10000 );
end;
end;

Devolver Recursos grficos


En Windows, los recursos deben ser compartidos entre todas las aplicaciones que
corren en un determinado momento. Esto es especialmente crtico para los recursos
grficos, ya que el sistema posee pocos y siempre son solicitados. Por lo que es
indispensable devolverlos despus de usarlos.
Ejemplo que utiliza un Device Context para acceder a la
pantalla:
var

MiDC: hDC;

begin
try

GetDC (0); {se pide un manejador para la pantalla


entera }
{ cdigo dibuja en la pantalla usando la API }
ReleaseDC (0); { libera el DC al sistema }

finally
end;
end;

Utilizar el objeto de la excepcin


Cuando se dispara una excepcin se crea una instancia de la clase correspondiente.
Por lo tanto, se puede, en principio, tener acceso a las propiedades y mtodos de la
misma.
La definicin de la clase Exception es la
siguiente: Exception = class (TObject)
private

82

FMessage: PString; FHelpContext: Longint;


function GetMessage: string;
procedure SetMessage (const Value: string);
public
constructor Create (const Msg: string);
constructor CreateFmt (const Msg: string; const Args: array of const);
constructor CreateRes (Ident: Word);
constructor CreateResFmt (Ident: Word; const Args: array of const);
constructor CreateHelp (const Msg: string; AHelpContext: Longint);
constructor CreateFmtHelp (const Msg: string; const Args: array of const;
AHelpContect: Longint);
constructor CreateResHelp (Ident: Word; AHelpContext: Longint);
constructor CreateResFmtHelp (Ident: Word; const Args: array of const;
AHelpContext: Longint);
destructor Destroy; overrride;
property HelpContext: Longint read FHelpContext write FHelpContext;
property Message: string read GetMessage write SetMessage;
property MessagePtr: PString read FMessage;
end;

Hay disponibles tres propiedades: una indica el contexto de ayuda y las otras dos
dan acceso al mensaje de error en los dos formatos utilizados en Windows.
Para acceder al objeto de la excepcin se debe utilizar una variable temporal.
La forma de hacerlo es:
try
{ Algn proceso }
expect
on e: eDivByZero do
ShowMessage (Error! #13+e.Message);
end;
Con este cdigo no se est creando una nueva instancia de la excepcin.
nicamente se define una variable que apunta al objeto creado por Delphi. La clase
Exception (y la mayora de los descendientes directos) tiene pocas propiedades de
utilidad, pero nada impide en los descendientes creados por el programador agregar

83

otras nuevas.
Esto es precisamente lo que hace Delphi con la clase eInOutError, definiendo
una propiedad que almacena el cdigo de error devuelto por el sistema:
EInOutError = class(Exception)
public
errorCode: Integer;
end;
Por la tanto, se puede saber cual fue el error que provoc la excepcin. El
siguiente fragmento indica cmo mostrar este cdigo al usuario, a la vez que
muestra una forma de asegurar el cierre del archivo:
var

f: file;
st: array[0..50] of char

begin
try
try
AssignFile ( f , PRUEBA.TXT ); Reset ( f , 1 );
BlockRead ( f , st , SizeOf(st) );
except
on e: eInOutError do
ShowMessage( format ( Error %d al acceder al archivo
PRUEBA.TXT, [e.ErrorCode] ) );
finally

end;
{$I-}

{ descativa la deteccin de errores }

CloseFile ( f ); { puede dar error si f no est abierto }


{$I+}

{ activa la deteccin de errores de nuevo }

end;
end;

Se utilizan {$I-} y {$I+} en la parte finally. Si el archivo no se pudo abrir se produce el


error, se muestra el mensaje y se ejecuta CloseFile sobre un archivo que no
est

abierto, lo que genera otro cdigo de error.


Para evitar que la ejecucin salte al bloque protegido superior con

este ltimo

error, se desactiva la deteccin de los mismos cuanto se intenta cerrar el archivo. De


esta forma, si el archivo est abierto se cierra normalmente, y si no est abierto no
pasa nada. Una aplicacin ms elaborada podra mantener una lista con los
mensajes de error correspondientes y utilizar el cdigo de error como ndice.

Provocar una excepcin


Hay ocasiones en las que es conveniente llamar a una capa de tratamiento de
errores superior. Por ejemplo, se podra mostrar un mensaje en un bloque local y
despus dejar que la capa superior libere recursos. Pero una vez que se ha
tratado una excepcin, sta se da por terminada y el cdigo de
los bloques protegidos superiores no se ejecuta. Se
debe indicar a Delphi que se quiere mantener la
excepcin para que pueda tratarla el bloque superior:
algo as como llamar a un mtodo heredado desde
una clase descendiente. Para lograrlo, el lenguaje
contempla la opcin de re-lanzar la excepcin, como si se volviera a producir. Slo
hay que insertar en el cdigo la palabra reservada
raise:
try

StrToInt (a45);

except
on exception do
begin
ShowMessage (Se ha producido un error);
raise;
end;
end;

En el ejemplo anterior se utiliza raise para disparar la misma excepcin que


estbamos procesando. La ejecucin salta inmediatamente al bloque protegido
anterior.
del

Tambin se utiliza raise para disparar las propias excepciones

programador.

Definir nuevas excepciones


Cuando se produce un error en un procedimiento del programador (ya sea de un
objeto o no), ste puede tratar de recuperarse en el lugar o bien lanzar una excepcin
indicando que algo anduvo mal. Esta segunda alternativa es la preferida, porque le
permite al programador tratar todos los errores del mismo modo.
Para definir una nueva excepcin se debe crear un descendiente
de Exception o alguna

clase

ms

especializada.

en

este

descendiente se pueden definir nuevas propiedades o


mtodos
de la manera usual, lo cual permitir al programador un mejor tratamiento del
error.

Si se implementa una funcin que transforma un nmero entero en una cadena de


unos y ceros que conforman su representacin binaria, pero no se desea tratar los
nmeros negativos, se puede definir una excepcin nueva y dispararla cuando se
detecte que el nmero es incorrecto. No es necesaria ninguna propiedad ni mtodo
nuevo, por lo que la excepcin puede ser un descendiente directo de Exception. No
obstante, como se trata en realidad de un error durante una conversin, se har que
descienda de eConvertError:
type

eSoloPosit = class (eConvertError)

end;
y ahora se escribe el procedimiento de conversin:
function DecToBin (v: integer): string;
var
temps: string;
begin
if v < 0 then
raise eSoloPosit.Create (No se permiten nmeros negativos );
if v > 0 then temps :=
else temps := 0;
while v > 0 do begin

temps := Chr (v Mod 2+48 ) + temps;


v := v div 2;
end;
result := temps;
end;

La llamada a esta funcin se realiza desde un bloque protegido, en una


aplicacin simple de conversin:

procedure TForm1.Button1Clic (Sender: TObject);


begin
try

Label3.caption := DecToBin (StrToBin (StrToInt (edit1.text) );

except
on e: eConvertError do
ShowMessage (Error! +e.Message);
end;
end;

87

UNIVERSIDAD PRIVADA TELESUP

Utilizacin
de ADO.NET
y Aplicaciones

TEMA
4

Desconectadas
Competencia:
Conocer la utilizacin de
aplicaciones
desconectadas
manipulacin de datos.

Ado.net y
para
la

88

UNIVERSIDAD PRIVADA TELESUP

Tema 04: Utilizacin de ADO.NET y


Aplicaciones Desconectadas

QU ES ADO.NET?
Tecnologa .Net para el acceso y manipulacin de datos.
Es especialmente diseado para trabajar sobre ambientes
desconectados. El espacio de nombres es System.Data.

OBJETOS DE ADO. NET (I)


Connection
Permite que se establezca un canal de
comunicacin con la fuente de datos.
Command
Permite que se ejecuten las instrucciones sobre la fuente de datos.

89

Las clases exactas de CONNECTION y COMMAND dependern del proveedor


de
datos que se utilice y ste a su vez depende del tipo de fuente de datos a la que se
quiera conectar, sin importar cul sea los pasos para utilizarlo siempre son los
mismos: Abrir la conexin.
Ejecutas los comandos.
Cerrar la conexin.

OBJETOS DE ADO. NET (II)


Para leer los datos hay dos modos:

1. Data Reader

Es un objeto ligero y rpido que permite leer UN registro a la vez, de


modo secuencial.

Es un objeto de solo lectura.

No da informacin del tipo de dato que est leyendo, el


desarrollador debe conocerlos y tambin el orden de las columnas.

2. Data Set

hacen
Es un objeto que a su vez contiene otros subobjetos que lo
ms lento que el DataReader pero que tiene ms flexibilidad
para el
uso de los datos.

El papel del DataAdapter es el de sincronizador de datos por


medio de sus dos mtodos principales, Fill() y Update().

UNIVERSIDAD PRIVADA TELESUP

La forma de trabajar seria:


1. Llenar el DataSet.
2. Realizar las acciones.
3. Actualizar al fuente de datos.

Mejor rendimiento con el proveedor adecuado

91

MODELO DESCONECTADO
Qu es un DataSet?
Es una representacin de datos que se residen memoria
Un modelo de programacin relacional coherente, independiente del origen
de datos al que se encuentra asociado.
Representa un conjunto completo de datos, incluyendo las tablas, relaciones
y restricciones.
Los cambios hechos en el DataSet no afectan inmediatamente la base
de datos.
Los datos pueden seguir siendo manipulados sin necesidad de
tener la conexin establecida con la fuente de datos
Permite el ordenamiento, bsqueda y filtrado de datos de
una forma sencilla.
Permite trabajar con estructuras XML

Representacin grfica

La Coleccin DataTable

Cero o ms tablas representadas por objetos DataTable.

Cada DataTable contiene:


Una coleccin de columnas representadas por una DataColumnCollection.

UNIVERSIDAD PRIVADA TELESUP

Un conjunto de constraints representado en la ConstraintCollection.


Un conjunto de filas en la DataRowCollection, que representa los datos de
la tabla.

DataColumns
Otras propiedades:

AllowDBNull Si acepta o no valores nulos.

MaxLength Tamao de la columna.

Unique Si se duplican datos, se lanza ConstraintException.

La coleccin de Constraints (Restricciones)

PrimaryKey Llave primaria.

93

ForeignKeyConstraint Llave fornea: Se crea cuando se agrega una relacin


entre dos tablas

La coleccin DataRelationCollection

Objetos DataRelation que asocian las filas de un DataTable con las de otro
DataTable.

Cada DataRelation consta de el nombre de la relacin, el nombre de las


tablas relacionadas y las columnas relacionadas de cada tabla.

Pueden existir relaciones con ms de una columna por tabla.


Las relaciones pueden tener restricciones de integridad:
UniqueKeyConstraint y ForeignKeyConstraint.

Refrescando datos a travs de un DataSet

Se utiliza el mtodo DataAdapter.Fill.


Si el DataTable tiene llaves primarias definidas se refrescan
las filas teniendo en cuenta la restriccin de pk.

A travs de la propiedad RowState de las filas


pueden identificarse aquellas que cambiaron.

Si se quiere refrescar conservando lo nuevo del servidor y lo nuevo en memoria:


En una nueva tabla recuperar los datos con el mtodo fill del DataAdapter.
Luego ejecutar un Merge con la propiedad PreserveChanges en true.

Buscando datos en el DataSet

La idea es hacerlo de forma ptima utilizando los ndice de las tablas en caso
de que se tengan.

Los ndices son creados cuando se crea una llave primaria


o una vista asociada a una tabla.

Si la consulta se hace sobre el PK de la tabla:


Usar el mtodo DataTable.Rows.Find.

Para consultas que no involucran el PK:


Construir una vista (DataView), ordenarla para que se
construya el ndice y utilizar los mtodos Find y FindRows de la
vista.

Elegir un DataReader o un DataSet

Use un DataSet para:


Usar datos de forma remota entre un nivel y otro o desde un servicio web
XML.
Interactuar con datos dinmicamente, enlazar con un control de Windows
o web Forms.
Para combinar y relacionar datos procedentes de diferentes orgenes.
Almacenar datos en memoria cach dentro de la aplicacin.
Proporcionar una vista XML de los datos.
Procesamiento de datos sin necesidad de tener una conexin abierta con
el origen.

Utilizar

el

DataReader

sino

necesita

la funcionalidad de modo desconectado


que proporciona el DataSet. El rendimiento es
mejor
por no requerir la memoria y el
procesamiento que se requiere con el DataSet.

Lecturas Recomendadas

UNIVERSIDAD PRIVADA TELESUP

DATASET
http://msdn.microsoft.com/es-es/library/system.data.dataset(v=vs.80).aspx

ACCESO A DATOS ADO.NET


https://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r61092.PDF

POO
http://java.ciberaula.com/articulo/tecnologia_orientada_objetos/

Actividades y Ejercicios

1.

En un documento en Word realice un informe acadmico con las


caractersticas principales de la datatablecollection.
Envalo a travs de "DataTableCollection".

2. En un documento en Word elabore un cuadro comparativo entre


objetos datatablecollection, dataadapter y objetos datareader.
Envalo a travs de "Diferencias de Objetivos".

96

UNIVERSIDAD PRIVADA TELESUP

Autoevaluaciones

1. Cundo un programa es modular?


a. si se compone de mdulos dependientes.
b. si se compone de mdulos robustos.
c. si se compone de mdulos independientes y robustos.
d. si se compone de mdulos independientes.
e. si se compone de sistemas.
2. Es un modelo o prototipo que define las variables y mtodos comunes a
todos los objetos de cierta clase.
a. La clase.
b. El objeto.
c. Las propiedades.
d. La instancia.
e. La Herencia.
3. Cual son los Componentes de un objeto?
a. Atributos y identidad.
b. Atributos, identidad, relaciones y mtodos.
c. Relaciones y mtodos.
d. Objetos, identidad y atributos.
e. Relaciones y mtodos.
4. Qu son las excepciones?
a. Eventos que ocurren por un error del programa en tiempo de ejecucin.
b. manejo de errores.
c. Verificacion del codigo fuente.
d. Independizacion del codigo.
e. Ejecucion del programa.
5. S e excede en menos la
pequeos). Nos referimos a:
a. EinvalidOp.

capacidad

aritmtica

(nmeros demasiado

b. EzeroDivide.
c. Eoverflow.
d. Eunderflow.
e. EDivByZero.

97

UNIVERSIDAD PRIVADA TELESUP

6. Para cerrar un archivo si se produce un error mientras se accede al archivo


o se procesan sus datos, no se ejecutar la orden ..
a. Finally.
b.

Try finallu.

c.

Divbyzero.

d. Zerodivide.
e. CloseFile.
7. Cuando se dispara una excepcin se crea__________ _ de la
clase correspondiente.
a. Un mtodo.
b. Una instancia.
c. Una herencia.
d. Un objeto.
e. Un clase.
8. Se utiliza
para disparar las propias excepciones del
programador. a. Raise.
b. Begin.
c. EConvertError.
d. Function.
e. While.
9. El ADO.NET es especialmente diseado para trabajar sobre ambientes:
a. Conectados.
b. Logeados.
c. Desconectados.
d. Manipulados.
e. Programados.
10. Cual es el papel del DataAdapter?
a. leer un registro a la vez.
b. ordenar columnas.
c. representar datos completos.
d. sincronizador de datos.
e. almacenar la fuente de datos.

98

UNIVERSIDAD PRIVADA TELESUP

Resumen

UNIDAD DE APRENDIZAJE II:


La programacin orientada a objetos es un paradigma de programacin que usa
objetos y sus interacciones, para disear aplicaciones y programas informticos. Lo
interesante de la POO es que proporciona conceptos y herramientas con las cuales
se modela y representa el mundo real tan fielmente como sea posible. La
programacin orientada a objetos es una forma de programar trata de encontrar una
solucin a estos problemas. Introduce nuevos conceptos, que superan y amplan
conceptos antiguos ya conocidos.

Las excepciones son eventos que ocurren por un error del programa en tiempo de
ejecucin, las cuales son generadas para indicarle al programador que ha
ocurrido un error que impide la normal ejecucin del programa. El
de

manejo

las excepciones permite independizar el cdigo de uso de un recurso

del manejo de los errores, lo cual no retrasara la ejecucin del programa.


Cuando ocurre un error en tiempo de ejecucin Delphi genera una excepcin;
crea una instancia de una clase especial denominada Exception o algn
descendiente.

try...except es un bloque para proteger una porcin de cdigo. Entre estas


palabras

reservadas

se

ubica

el

cdigo

que

est

expuesto

dos

errores;

despus de except se procesan estos ltimos, cerrando todo el bloque con end. A
veces es necesario ejecutar una porcin de cdigo suceda un error o no. Para esto,
existe en Delphi la estructura try...finally. Cuando se produce un error dentro de
este bloque se suspende el tratamiento de la excepcin para ejecutar el cdigo que
sigue a finally.

ADO.NET es una tecnologa para el acceso y manipulacin de datos, es


especialmente diseado para trabajar sobre ambientes desconectados. Objetos de
Ado.Net : Connection, Command, datareader, dataset. A travs de la propiedad
RowState de las filas pueden identificarse aquellas que cambiaron. Utilizar el
DataReader sino necesita la funcionalidad de modo desconectado que proporciona el

99

Resumen
DataSet. El rendimiento es mejor por no requerir la memoria y el procesamiento que
se requiere con el DataSet.

99

UNIVERSIDAD PRIVADA TELESUP

100

UNIVERSIDAD PRIVADA TELESUP

Introduccin

a) Presentacin y contextualizacin
El ADO.NET es un conjunto de componentes del software que pueden ser usados
por los programadores para acceder a datos y a servicios de datos. Es una
parte de la biblioteca de clases base que estn incluidas en
el Microsoft .NET Framework. Es comnmente usado por los programadores
para acceder y para modificar los datos almacenados en un Sistema Gestor de
Bases de Datos Relacionales, aunque tambin puede ser usado para acceder a
datos en fuentes no relacionales. ADO.NET es a veces considerado como una
evolucin de la tecnologa ActiveX Data Objects (ADO), pero fue cambiado tan
extensivamente que puede ser concebido como un producto enteramente nuevo.
La infraestructura de servicios Web XML se fundamenta en la comunicacin por
medio de mensajes basados en XML que cumplen con una descripcin de servicio
publicada.

b) Competencia
Conoce la importancia y describe la utilidad de Ado.net y los servicios Web XML.

c) Capacidades
1. Define y explica el empleo adecuada aplicaciones multitarea.
2. Aplica los archivos de configuracin.
3. Reconoce el entorno de publicacin y transformacin de documentos XML.
4. Conoce los beneficios y ventajas que brindan los servicios Web y XML

d) Actitudes
Muestra agrado por el uso y manejo de la tecnologa.
Posee voluntad e inters por satisfacer a sus clientes.
Expresa habilidad y originalidad en su trabajo.
Promueven el uso y manejo responsable de los programas.

e) Presentacin de Ideas bsicas y contenido esenciales de la unidad:


La Unidad de Aprendizaje 03: Ado.Net y Servicios Web XML, comprende el
desarrollo de los siguientes temas:
TEMA 01: Aplicaciones Multitarea.
TEMA 02: Utilizacin de XML y archivos de configuracin.
TEMA 03: Paginas activas de servidor.
TEMA 04: Servicios Web XML.

101

UNIVERSIDAD PRIVADA TELESUP

Aplicaciones

TEMA
1

Multitarea
Competencia:
Definir y explicar el empleo
aplicaciones multitarea.

adecuada

102

UNIVERSIDAD PRIVADA TELESUP

Desarrollo de los Temas

Tema 01: Aplicaciones Multitarea.


APLICACIONES MULTI-HILO (C SHARP)
Threads -- Programacin multihilo
La programacin con hilos, tambin conocida como multiproceso, tiene la ventaja de
poder trabajar de manera asncrona. Esto permite que aquellos procesos que pueden
requerir

un

tiempo ms

o menos largo

en llevarse a cabo se pongan a

trabajar
'paralelamente' al proceso principal, de manera que la aplicacin pueda retomar el
control y as el usuario seguir trabajando con ella.

Nota1: la programacin multihilo no es siempre la solucin correcta para todas


las aplicaciones e incluso en algunos casos puede relentizar la aplicacin aunque
parezca que no es as o cosas an peores como prdida de datos, etc.
Nota2: la implementacin que hace Mono de las
clases del espacio de nombres System.Threading
est basada en los pthreads (los hilos POSIX que
tan bien implementados estn en Linux) y es fcil
comprobar que el paso de trabajar con unos a
trabajar con otros es casi inmediato. Una buena
referencia es el libro "Programacin Linux al
descubierto" de Kurt Wall, as como la propia
pthreads.h.

Igualmente el recolector de basura que se usa hasta ahora en Mono (el GC de


Bohem puede ser y debe ser compilado pasndole la opcin --enablethreads=pthreads
Veamos los conceptos generales:

Hilo:
Un hilo de ejecucin
procesamiento.

es

una

unidad

de

103

UNIVERSIDAD PRIVADA TELESUP

Multitarea:
La ejecucin simultnea de varios hilos.
La multitarea puede ser de dos tipos, uno de los cuales est bastante obsoleto y
adems queda fuera de .NET de manera que no podremos usar los hilos de la
mquina virtual en sistemas operativos que usen este clase primitiva de multitarea
conocida como 'preferente'.
El que vamos a usar nosotros es el tipo 'cooperativo'. La diferencia fundamental
radica en que en el caso de la multitarea preferente el programador tiene que
encargarse de liberar los hilos, etc, mientras que en la multitarea preferente el
procesador asigna fracciones de tiempo de procesado a cada hilo y salta de hilo en
hilo cada tiempo.

Nota: los hilos y la forma de trabajar con ellos tal y como lo vamos a hacer aqu no
es algo propio de C# sino que es extensible a todo el Framework de .NET (i.e. a
cualquier lenguaje en .NET). Si en algn momento se est tratando alguna
caracterstica exclusiva de C#, se comentar explictamente. As, quin ya posea
conocimientos de Threads en .NET puede saltarse el resto de este tema.

Nuestra receta para crear un hilo simple es como sigue:


Metemos el espacio de nombres System.Theading en nuestra
clase.
Asignamos qu mtodo ejecutar el hilo, para ello usamos un delegado de
tipo
ThreadStart que encapsule el mtodo.
Creamos el hilo pasndole al constructor el delegado anteriormente
creado. Ponemos el hilo en ejecucin.
Ya tenemos
multitarea

el

procedimiento

seguir

para

crear

una

elemental. Veamos el cdigo:


// Incluid esto en un mtodo cualquiera que queris que lance el
nuevo
// hilo. Por ejemplo en un Main. De hecho podemos hacer que Main solo
// haga eso!.
// metodo es un mtodo que queremos poner en un hilo
aparte.
ThreadStart

delegadoQueGuardaElMetodo

new

aplicacin

UNIVERSIDAD PRIVADA TELESUP


ThreadStart (metodo);
// creamos el hilo pasndole el delegado al constructor.

Thread nuevoHilo = new Thread (delegadoQueGuardaElMetodo);


// Empezamos a ejecutar el hilo.
nuevoHilo.Start ();
Otra forma de instanciar un hilo es consiguiendo una referencia al hilo actual de
ejecucin, esto se hace sin ms que llamar a la propiedad esttica
Thread.CurrentThread.
Thread t = Thread.CurrentThread;

Dejadme un segundo que muestre el equivalente en pthreads de este ejemplo


sencillo para que comprobis por vosotros mismos los que he comentado antes
de la similitud Threads/pthreads:
#include <stdio.h>
#include <stdlib.h>;
#include <pthread.h>;
void funcion();
int
main (int argc, char *argv[])
{
pthread_t pthrd1; /* declaramos el hilo */
intret;

/*

el

valor

de

retorno

para

/* estado de lacreacin del hilo */

ret = pthread_create (&pthrd1, NULL, (void *) funcion, NULL);


if (ret) {
perror ("No se pudo crear el primer hilo");
exit (EXIT_FAILURE);
}
pthread_join (pthrd1, NULL);
exit (EXIT_SUCCESS);
}
void
funcion ()
{
/* Ponle lo que quieras hacer aqui */
}

gestionar

el

Controlando el tiempo de vida del hilo Los mtodos fundamentales que se deben
conocer si se quiere tener un control absoluto de los hilos en .NET son cinco:
Thread.Sleep, Thread.Suspend, Thread.Resume, Thread.Interrupt y Thread.Abort. Es
ms, para casi todas las aplicaciones que vayis a desarrollar, os bastar con
conocer Thread.Sleep!.

Antes de ver cmo funcionan, presentmoslos:


Thread.Sleep
milisegudos.

(int time)

--

Para el

hilo durante

'time'

Thread.Interrupt -- Interrumpe el hilo parada para que vuelva a la ejecucin antes de


que se acabe 'time'.
Thread.Suspend -- El hilo se queda suspendido hasta que otro hilo lo llame
con
Thread.Resume.
Thread.Resume -- Recupera un hilo suspendido.
Thread.Abort -- Destruye un hilo.
La utilizacin de esos mtodos es muy sencilla. Thread.Sleep acepta como parmetro
el tiempo que se quiere que la hebra (o hilo, es lo mismo) permanezca dormida. Si le
decimos Thread.Sleep (5000) se detendr durante cinco segundos o lo que es lo
mismo, 5000ms.
// ms codigo por aqu...
// Llamada a Thread.Sleep para parar la hebra durante 3 segundos
Thread.Sleep (3000);
// seguimos poniendo cdigo...
// mas codigo.....

Si el valor pasado es 0 la hebra devolver


devolver el resto del timeslice que le quedaba.
Si por el contrario se le pasa Timeout.Infinite, el
hilo se nos para indefinidamente hasta que
alguna otra hebra llame al metodo Interrupt de
la hebra suspendida.

La diferencia fundamental entre Thread.Sleep y la otra manera de detener una


hebra, llamando a Thread.Suspend, es que este ltimo puede ser invocado desde
la hebra
actual o desde otra. Adems, en caso de detener una hebra con Suspend, no
podremos volver a ponerla en ejecucin hasta que no se haga desde otra con el
mtodo Thread.Resume.

Nota:

cuando

se

escriba

este

prrafo

los

mtodos

Thread.Suspend

Thread.Resume
parcialmente

estaban
implementados

en

Mono y cabe la posibilidad de que lo


sigan estando cuando leis esto. Si
ves que cdigo que los usa no
funciona como debiera, los hilos no
se

suspenden

cuando

debieran,

comprobad que no se lanz una


excepcin

del

tipo

NotImplementedException o ningn WARNING. Hace poco esos mtodos no hacan


nada pero despus de intentar probar estos ejemplos aadimos esos avisos a la clase
Thread). Por ltimo nos queda ver Thread.Abort.

Thread.Abort es un mtodo un tanto particular. En caso de ser llamado, el CLI o(


CLR), aborta el hilo lanzando una excepcin ThreadAbortException que no puede ser
recogida. El CLI no permite recoger esa excepcin y lo ms que podremos
hacer, si queremos hacer un cleanup, ser llevar a cabo las medidas
oportunas dentro de un bloque finally. Hay que tener
en cuenta que mono no detendr la ejecucin del hilo
inmediatamente. Se esperar alcanzar un punto
seguro para hacer esto y ese punto lo escoger
mono. Si queris que el hilo deje de ejecutarse
inmediatamente,

podis

hacer

una

llamada

Thread.Join que siendo una llamada sncrona


detendr el hilo hasta que se finalice la ejecucin.

UNIVERSIDAD PRIVADA TELESUP

Utilizacin de
XML y
Archivos de
Configuracin

TEMA
2

Competencia:
Aplicar los archivos de configuracin.

108

UNIVERSIDAD PRIVADA TELESUP

Tema 02: Utilizacin de XML y Archivos de


Configuracin
QU ES UN SERVIVIO WEB XML?
Lgica programable
estndares

accesible

por

protocolos

web

Permite a las aplicaciones enviar y recibir informacin a travs de internet


Independiente de lenguaje, protocolo y plataforma
Arquitectura sin estado
Puede se asncrono basado en un estndar W3C en desarrollo

POR QU UTILIZAR LOS SERVIOS WEB XML?

ARCHIVO DE CONFIGURACIN EN XML


Este da dar un breve ejemplo de cmo hacer un archivo de configuracin para
alguna aplicacin que creemos en el entorno Visual Studio, y si dgito
entorno debido que para hacer usar este excelente recurso se necesitan unas tres
lneas de cdigo y todo lo dems en el entorno de Visual Studio.
Muchos han escuchado hablar de la serializacion XML, es entretenida hacerla por
cdigo pero hay muchos que por cuestin de tiempo no la han utilizado, pues para
todos los que la quieren aprender de una forma fcil y que es 100% funcional en
cualquier aplicacin en este post pondr la forma sencilla de realizarla.

109

PARA QU SIRVE UN ARCHIVO DE CONFIGURACIN?


Un archivo de configuracin se puede realizar para muchas cosas que realmente
le dan una funcionalidad muy poderosa a un programa, por ejemplo guardar el tipo de
fuente establecido, el tipo de color establecido, un campo de texto en especfico.
Los archivos de configuracin comunes en el entorno de Microsoft Office, es
opciones, que es donde se elige el tipo de letra predeterminada, tipo de pgina,
tipo de bordes entre otros.

Para realizar este ejemplo utilizar:


Un formulario Windows
Cinco Botones
2 Cajas De Texto
5 Label
1 Color Dialog
1 Font Dialog
*El ejemplo esta realizado en Visual Basic 2005

Pasos:
1-Ir al men:
Project->Propiedades Del Proyecto
Luego busquen Settings:
Explicando Los campos:
Name: Aqu ira el nombre de la opcin.
type: Aqu ira el tipo de variable a guardar.
Scope: El alcance de la serializacion
Value: El valor de la variable
2- Creamos 4 nuevos settings:
1Name = ColorDeFondo
Type = System.Drawing.Color
Scope = User
Value = El que deseen

2Name = ColorDeTexto
Type = System.Drawing.Color
Scope = User
Value = El que deseen

3*Name = Firma
Type = String
Scope = User
Value = Lo que deseen
4Name = TipoDeLetra
Type = System.Drawing.Font
Scope = User
Value = La que deseen

3- Dibujamos el formulario
4- Pegamos el Siguiente Cdigo
Public Class frmMiniNotepad
Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Label2.Click, Label1.Click
End Sub
Private Sub btnColorFondo_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnColorFondo.Click
'Se selecciona el color que el usuario escogio
Me.ColorDialog1.ShowDialog()

End Sub
Private Sub btnColorTexto_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnColorTexto.Click
'Se selecciona el color que el usuario escogio
Me.ColorDialog1.ShowDialog()
Me.btnColorTexto.BackColor =
ColorDialog1.Color

End Sub
Private Sub btnTipoDeLetra_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnTipoDeLetra.Click
'Se selecciona el tipo de letra que el usuario
escogio Me.FontDialog1.ShowDialog()
Me.txtTipoDeLetra.Font = FontDialog1.Font

End Sub
Private Sub btnNuevoDocumento_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnNuevoDocumento.Click
'Se limpia el textbox
Me.txtNotePad.Text = String.Empty
'Se crea el textbox con los datos del archivo de configuracio
Me.txtNotePad.BackColor

My.MySettings.Default.ColorDeFondo
Me.txtNotePad.Font

My.MySettings.Default.TipoDeLetra
Me.txtNotePad.ForeColor

My.MySettings.Default.ColorDeLetra
Me.txtNotePad.Text

My.MySettings.Default.Firma

"

"

&

End Sub
Private Sub frmMiniNotepad_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Se cargan los datos del archivo de configuracion XML
Me.btnColorTexto.BackColor = My.MySettings.Default.ColorDeLetra
Me.btnColorFondo.BackColor =
My.MySettings.Default.ColorDeFondo Me.txtTipoDeLetra.Font =
My.MySettings.Default.TipoDeLetra Me.txtFirma.Text =
My.MySettings.Default.Firma

End Sub
Private Sub btnGuardarDatos_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnGuardarDatos.Click
'Se pasan los datos al archivo de configuracion
My.MySettings.Default.ColorDeLetra = Me.btnColorTexto.BackColor
My.MySettings.Default.ColorDeFondo =
Me.btnColorFondo.BackColor My.MySettings.Default.TipoDeLetra =
Me.txtTipoDeLetra.Font My.MySettings.Default.Firma =
Me.txtFirma.Text
'En este punto del codigo se guarda la configuracion
My.MySettings.Default.Save()
End Sub
End Class
Al final El funcionamiento ser el
siguiente:

UNIVERSIDAD PRIVADA TELESUP

Pginas
Activas

TEMA 3
de

Servidor
Competencia:
Reconocer el entorno de publicacin
transformacin de documentos XML.

114

UNIVERSIDAD PRIVADA TELESUP

Tema 03: Pginas Activas de Servidor


ENTORNOS DE TRANSCODIFICACIN: COCOON
De qu estamos hablando: Cocoon es un entorno de publicacin y transformacin
de documentos XML basado en Java. Cocoon funciona como un servlet, o sea, que
en principio, se podr ejecutar desde cualquier servidor que pueda contener
servlets, tales como el Apache, que es el mejor con diferencia,
el Internet Informacin Server, o, incluso, si me
apuris, el Roxen, aunque no he odo a nadie que
haya conseguido hacer funcionar Cocoon con Roxen.
Los servlets son hebras en Java, que se
ejecutan en el mismo contexto que el servidor;
por lo tanto, es ms rpido de ejecutar que
otros mtodos tales como los CGIs; y adems,
son persistentes, o sea que no hace falta cargarlos. Para ms informacin,
se puede mirar la FAQ de los servlets.

El nombre de Cocoon viene de la pelcula, y se le ocurri al autor inicial de Cocoon,


Stefano Mazocchi, porque precisamente despus de ver dicha pelcula decidi hacer
un entorno de publicacin basado en XML, cuando casi nadie tena todava claro qu
era eso del XML. Por eso ha tenido tanto xito, y hoy en da es uno de los ms
completos.
La versin actual, en febrero de 2001, es la 1.8.2, con ligeras modificaciones con
respecto a la 1.8 y algunos bugfixes respecto a la 1.8.1. Ya hay alfas de la siguiente
versin, la 2.0, que permitir transformaciones ms completas a partir de los URL, e
incorporar los ltimos estndares.

Cocoon incluye lo siguiente:


XML: Se pueden servir pginas XML, tal cual, para navegadores que entiedan
XML, tales como las ltimas versiones del Netscape o el IE. Cocoon comprobar
de que se trate de cdigo XML bien formado, usando el parser Xerces.

115

XSLT:

las

transformaciones

documentos

XML

las

puede

aplicar

directamente el servidor, resultando un documento XML que se enva al cliente.


Tambin se pueden aplicar transformaciones XSLT en cascada. Para ello usa el
procesador Xalan.
FO: mediante el mdulo FOP, se pueden aplicar transformaciones a
DTD
finales, tales como PDF, pudindose servir documentos que no sean
XML.
XSP, XML Server Pages, o pginas de servidor en XML, tecnologa
equivalente a las ASP o JSP (Java Server Pages); son pginas "activas" que
incluyen cdigo Java (o de cualquier otro lenguaje que se pueda interpretar
dentro del Bean Scripting Framework).
Otras tecnologas: desde la versin 1.8, incluye un "pool de conexiones" a base
de datos, que permite reutilizar un conjunto de conexiones a la base de datos,
en vez de tener que abrir y cerrar conexiones cada vez que se hace una peticin
al servidor. Tambin detecta el cliente, y puede servir diferentes contenidos
dependiendo de l.

El procesamiento que lleva a cabo Cocoon se hace en tres fases:


La creacin de contenidos XML la hace el
usuario.
El procesamiento del fichero XML lo lleva a cabo cocoon, incluyendo la lgica
incluida (si se trata de un XSP). La lgica est totalmente separada del
contenido.
Finalmente, se crea el documento aplicando las hojas de estilo, y se formatea al
tipo requerido: HTML, WML, PDF, lo que encarte.

Internamente, Cocoon procesa las peticiones de la forma siguiente:


Segn llega la peticin, se rodea del contexto en el que se ha hecho; la peticin

debe indicar el cliente que ha hecho la peticin, qu URI necesita y qu


productor debera manejar la peticin.
El productor maneja el URI solicitado, y produce un documento XML; los

productores funcionan como subservlets, y en principio, se puede enchufar


cualquier productor. Los productores producen un
documento que se enva al reactor.

El reactor evala qu procesador debera aplicarse


al documento a partir de las etiquetas XML. Tambin lo
enviar al formateador adecuado.

El formateador toma la representacin en memoria del documento XML, y lo


pasa a un stream que pasa directamente al cliente. La salida depende del tipo
MIME generado.
Finalmente, se encapsula el documento junto con sus propiedades: longigud, tipo
MIME, etctera.

La mayora de los sitios Cocoon son sitios de produccin; hay una lista bastante

completa en el sitio de Cocoon ; tambin hay una lista de proveedores


comerciales

con

Cocoon.

Nosotros

lo

usamos

en

el

sitio

de

enseanzahttp://genmagic.ugr.es:8080 yde"produccin"en http://mercurio.ugr.es:8


080.

Instalando el Tomcat
El Tomcat es el contenedor de servlets que hemos elegido para insertar el cocoon;
habr que instalarlo antes. Para empezar, hay que bajrselo. Te lo puedes bajar de
dos sitios, principalmente:
Contenido de esta seccin
Instalando Tomcat.
Instalando Tomcat con Apache.

La pgina principal de Tomcat, donde estn los fuentes, y los "binarios" (es
decir, los .jar de Java) ya dispuestos. Estos servirn para cualquier
distribucin de Linux, e incluso para Windows.
En RPMized,

estn

los

paquetes RPM para RedHat.


Hay

varias

versiones

en

danza de Tomcat (en febrero


de 2001): la 3.1.1, la 3.2.1, la
3.3, que es la que est en
desarrollo actual (y en el
milestone 1), y la 4.0, que
actualmente est en alfa.
Nosotros usaremos en este tutorial la 3.2.1.

117

En realidad, instalar el Tomcat no puede ser ms fcil. Simplemente se


descomprime (o se instala el RPM), se cambia uno al directorio de
Tomcat, por ejemplo, /usr/local/jakarta-tomcat, y simplemente hay que
indicarle dnde hemos metido la mquina virtual java. Se edita el
ficherotomcat.sh y se insertan dos lneas tales como las siguientes:
A partir de ahora, todas las instrucciones de instalacin sern para
una mquina con el sistema operativo Linux, en concreto, la distro RedHat
7.0. Debera funcionar en todos los Linux, e incluso en todos los Unices. Si
tienes la desgracia de tener alguna versin de Windows, mira en la
pgina de instalacin original , que definen dos variables de entorno que
indican dnde se puede encontrar el directorio raz del Tomcat y el de la
JVM.

En Windows, se tendr que hacer algo similar. A partir de ese momento,


ya se puede ejecutar bin/startup.sh para arrancar el servidor en el puerto
8080

y bin/shutdown.sh para pararlo. Al ejecutarlo, saldr algo


as:

Adems, si usamos el url http://localhost:8080 debera salir la


pgina de Tomcat.
La configuracin de Tomcat est en los ficheros que cuelgan del
directorio$TOMCAT_HOME/conf;

el

principal

es

el server.xml,

que,

casualmente, est escrito en XML.

118

Este fichero contiene toda la configuracin del servidor, y define los


conectores, contextos, y, en general, toco lo que necesita un servidor. En
principio, no hay que tocarla para nada, pero s ms adelante cuando
decidamos instalar el Cocoon.
Tal cual lo hemos instalado, ya podemos servir directamente pginas JSP, servlets,
y, por supuesto, pginas HTML; el problema es que si queremos hacer algo fuera
de eso, por ejemplo CGIs, o incluso si queremos tener un servidor "serio",
gestionando varios dominios virtuales, con PHP, CGI y lo que se nos ocurra,
necesitamos usar eso precisamente, un servidor serio, tal como el Apache, dentro del
cual Tomcat se usar como contenedor de servlets. En ese caso, tenemos que
instalar el mdulo mod_jk de Apache, para manejar la interaccin entre Apache y
Tomcat.

Algo que s puede convenir tocar enserver.xml, sobre todo si no hay mucha memoria
disponible, es el nmero de hebras disponibles para conexin. Por defecto, se lanzan
hasta 50, lo cual puede chupar del orden de 600 megas de memoria (aunque usa
memoria virtual). Para cambiarlo, hay que cambiar la configuracin de todos los
Connector, cambiando el nmero de hebras que pueden usar

Hay tres conectores; se puede cambiar el nmero de hebras de cualquiera


de ellos, aunque yo no he conseguido bajar de 180 megas el consumo de
memoria. Se pueden cambiar tambin los puertos que se van a usar, sobre
todo si hay problemas de colisin con otros usuarios, o simplemente se
quiere usar el puerto por defecto, que es el 80. Habr que modificar las lneas
siguientes del ficheroserver.xml:

Y cambiar el valor por defecto, que es 8080, por el valor que se desee, tal
como
18335 (mximo 65535). Igualmente se pueden cambiar los valores de los puertos de
los otros tres conectores: el 8043, que es el que se usa en las conexiones SSL, y el
del conector AJP12, que adems se usa para cerrar Tomcat. Tericamente, la
instalacin de mod_jk es simple. Consiste en bajarse el mod_jk.so desde el sitio web,
copiarlo a /directorio/de/apache/libexec/mod_jk.so, y hacer lo siguiente:
Arrancar Tomcat, con lo cual se crea un fichero mod_jk.conf-auto.
Modificar el fichero de configuracin del Apache, que nos
tendremos
ya instalado por otro lado, aadiendo lo siguiente:
Include DIRECTORIO_TOMCAT/conf/mod_jk.conf-auto

En

realidad,

lo

de

instalar

el

mod_jk.so no es tan simple. El


binario en el sitio de Tomcat slo
sirve si tienes un Apache con SSL,
que use el API llamado EAPI para
conectarse con los mdulos. Si usas
STDAPI, que es el normal, y que es
el que viene en la distribucin por
defecto, tendrs que compilar el
mdulo t mismo. Bjate los fuentes
de

tomcat,

te

cambias

al

directorio:src/native/apache1.3 y haz un make -f Makefile.linux. Como es posible


que eso no funcione, porque no te compila al final el .so, tendrs que aadir un gcc
-shared
-o mod_jk.so *.o. Si todava ests ms perdido que el barco del arroz, consulta en
alguno de los grupos de noticias al efecto.
Si tenemos ya un Apache funcionando, y queremos que sirva los servlets
por otro puerto, tendremos que hacer una bsqueda y sustitucin de la
cadena "80", que es el puerto por defecto, por "9000" o el puerto en el que
queramos que escuche. Si queremos tener varios servidores Apache a la

vez, tambin habr que modificar la ubicacin de los ficheros .log,


.pid,
.scoreboard y los ficheros de accesos y los de
errores.

Arrancar Apache:
/usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd-mio.conf
donde habr que sustituir /usr/local/apache por el directorio adecuado. Si todo
va bien, el URL http://localhost:9000/examplesdebera dar el directorio de
ejemplos de Tomcat; y metindose en l, tendran que
salir los ejemplos de servlets y JSPs de
Tomcat.
Como se suele decir, hay otros contenedores
de servlets, pero no son Tomcat. Se puede
encontrar un

listado

completo en servlets.com .

Entre

ellos,

destacaEnhydra, otro servidor Open Source,


y Jetty. Los dems suelen ser de pago, y
adems, bastante caros. Por su popularidad, destacan Bea Weblogic y el
IBM Trancoding Publisher. Con todos ellos se puede instalar Cocoon, siguiendo
las instrucciones de la pgina web, o bien instalndolo como cualquier otro
servlet.

EJERCICIOS 1
1. InstalarTomcat,

usando

el

paquete

especial

para

el

curso

en

~jmerelo/cursoxml- tomcat-cocoon.tgz. Descomprimirlo en el directorio propio, y


lanzar el servidor de servlets, usando los puertos indicados por el profesor. El
nmero mximo de hebras permitidas por conector sern 2.

2. Instalacin de Cocoon
El siguiente paso es instalar Cocoon junto con Tomcat; en

realidad, no hace falta Apache, porque Cocoon es simplemente un servlet con


su propio contexto dentro de Tomcat. Despus de bajarnos el cocoon , en su
distribucin

binaria,

lo

descomprimimos

en

un

directorio,

por

ejemplo, el /usr/local. Para que funcione con Tomcat, hay que aadir los .jar
a

los

que

coge

Tomcat

cuando

arranca.

Se

hace

lo

siguiente

($TOMCAT_HOME es el directorio donde est Tomcat, y $COCOON_HOME


donde est Cocoon):

UNIVERSIDAD PRIVADA TELESUP

Contenido de esta seccin

Instalando Cocoon con Tomcat

Instalando Cocoon con Tomcat y Apache.


mkdir

$TOMCAT_HOME/webapps/cocoonmkdir

$TOMCAT_HOME/webapps/cocoon/WEB-INFcp
$COCOON_HOME/bin/cocoon.jar

$TOMCAT_HOME/libcp

$COCOON_HOME/lib/*.jar

$TOMCAT_HOME/libcp

$COCOON_HOME/src/WEB-INF/web.xml
$TOMCAT_HOME/webapps/cocoon/WEB-INFcp
$COCOON_HOME/conf/cocoon.properties
$TOMCAT_HOME/webapps/cocoon/WEB-INFcp

-R

$COCOON_HOME/samples
$TOMCAT_HOME/webapps/cocoon/samples

A continuacin, hay que cambiar unos cuantos ficheros:


En $TOMCAT_HOME/conf/server.xml, aadir la siguiente
lnea.
La estructura es bastante similar a la anterior, salvo que se declara el namespace util
en vez del request; en cuanto a las peticiones, dan, por este orden, la hora con un
formato determinado (y no se puede omitir la cadena de formato), incluyen un fichero
externo, que debe ser XML, y adems te cuenta las veces que ha pedido la pgina.
Esto ltimo es posible porque en realidad cada pgina XML se convierte en un servlet
(lo cual puede dar lugar a mltiples problemas cuando se trata de recargar una
pgina que uno ha modificado), y en realidad se contar mientras

est

ejecutndose el servidor. La salida que dar est en el servidor, pero en todo caso
ser algo similar a esto.

122

UNIVERSIDAD PRIVADA TELESUP

Servicios

TEMA 4

Web
XML
Competencia:
Conocer los beneficios y ventajas que brindan
los servicios Web y XML.

123

UNIVERSIDAD PRIVADA TELESUP

Tema 04: Servicios Web XML


VISTA GENERAL DE XML
El cdigo HTML permite insertar mens, tablas, imgenes o bases de datos en los
documentos, pero no permite al usuario que maneje esos elementos como mejor le
convenga con la poderosa ayuda del ordenador. Esa es la principal novedad que XML
aporta. Con HTML se pueden hacer accesos a informacin comparativa en
diferentes tiendas por ejemplo, pero nada ms. Con XML el usuario podr ordenar los
datos o actualizarlos en tiempo real o realizar un pedido.

La informacin que manejan las empresas es uno de sus principales activos. Pero lo
normal es que esa informacin est fragmentada, en diferentes departamentos,
ordenadores conectados o no, etc. El reto ahora est en interrelacionar toda esa
informacin para rendir todo su potencial y ponerlo a trabajar para aumentar los
beneficios o reducir los costes. Para realizar esto se necesita un estndar de
almacenamiento estructurado que es lo que nos ofrece XML.

Una gran cantidad de gente ha odo hablar ltimamente de XML y mucha gente que
es una especie de HTML pero ms avanzado. Pero todo el mundo lo que
debera preguntarse es qu es exactamente XML y qu aplicaciones tiene
actualmente. De estas dos cuestiones el mayor error que se suele cometer es
considerar a XML un HTML extendido.
Lo que s tenemos ms o menos claro es que XML es un lenguaje de Marcas,
pero qu es exactamente un lenguaje de marcas.

Lenguajes de Marcas
En los aos 60, IBM intent resolver sus
problemas

asociados

al

tratamiento

de

documentos en diferentes plataformas a travs de


GML

(Generalized

markup

Language.

124

El principal problema era que cada aplicacin utilizaba sus propias marcas para
describir los diferentes elementos. Las marcas son cdigos que indican a un
programa cmo debe tratar su contenido y as, si se desea que un texto aparezca con
un formato determinado, dicho texto debe ir delimitado por la
correspondiente marca que indique como debe ser
mostrado en pantalla o impreso. Y lo mismo ocurre
con todas las dems caractersticas de cualquier
texto. Ejemplos pueden tenerlos en mente los
usuarios de WordPerfect.

Conociendo este sistema y conociendo a la perfeccin el sistema de marcas de cada


aplicacin sera posible pasar informacin de un sistema a otro sin necesidad
de perder el formato indicado. La forma que IBM cre para solventar esto se basaba
en tratar las marcas como texto accesible desde cualquier sistema, texto plano,
cdigo ASCII. Y la norma se denomin GML (General Modeling Language.
Ms tarde GML pas a manos de ISO y se convirti en SGML ( ISO 8879),
Standart Generalized Markup Language. Esta norma es la que se aplica desde
entonces a todos los lenguajes de marcas, cuyos ejemplos ms conocidos son
el HTML y el RTF.
Los lenguajes de marcas no son equivalentes a los lenguajes de programacin
aunque se definan igualmente como "lenguajes". Son sistemas complejos de
descripcin de informacin, normalmente documentos, que si se ajustan a
SGML, se pueden controlar desde cualquier editor ASCII. Las marcas ms
utilizadas suelen describirse por textos descriptivos encerrados entre signos de
"menor" (<) y "mayor" (>), siendo lo ms usual que existan una marca de principio y
otra de final. Se puede decir que existen tres utilizaciones bsicas de los
lenguajes de marcas: los que sirven principalmente para describir su contenido,
los que sirven ms que
nada para definir su formato y los que realizan las dos funciones
indistintamente. Las aplicaciones de bases de datos son buenas
referencias del primer sistema, los programas de tratamiento de
textos son ejemplos tpicos del segundo tipo, y aunque no lo
parezca, el HTML es la muestra ms conocida del tercer modelo.

Qu es XML?
XML, es el estndar de Extensible Markup Language. XML no es ms que un conjunto
de reglas para definir etiquetas semnticas que nos organizan un documento
en diferentes partes. XML es un metalenguaje que define la sintaxis utilizada para
definir otros lenguajes de etiquetas estructurados.
En primer lugar para entenderlo bien hay que olvidarse un poco, slo un poco de
HTML. En teora HTML es un subconjunto de XML especializado en presentacin de
documentos para la Web, mientras que XML es un subconjunto de SGML
especializado en la gestin de informacin para la Web. En la prctica XML contiene a
HTML aunque no en su totalidad. La definicin de HTML contenido totalmente dentro
de XML y por lo tanto que cumple a rajatabla la especificacin SGML es XHTML
(Extensible, Hypertext Markup Language.

Desde su creacin, XML ha despertado encontradas pasiones, y como para cualquier


tema en Internet, hay gente que desde el principio se deja iluminar por sus
expectativas, mientras otras muchas lo han ignorado.

HISTORIA DE XML
XML fue creado al amparo del Word Wide Web Consortium (W3C) organismo que
vela por el desarrollo de WWW partiendo de las amplias especificaciones de
SGML. Su desarrollo se comenz en 1996 y la primera versin sali a la luz el 10 de
febrero de 1998. La primera definicin que apareci fue: Sistema para definir
validar y compartir formatos de documentos en la web. Durante el ao 1998
XML tuvo un crecimiento exponencial, y con ello me refiero a sus apariciones
en medios de comunicacin, menciones en pginas web, soporte software, etc.

Respecto a sus objetivos son:


XML debe ser directamente utilizable sobre Internet.
XML

debe

soportar

una

amplia

variedad

de

aplicaciones.
XML debe ser compatible con SGML.
Debe ser fcil la escritura de programas que procesen
documentos XML.

El nmero de caractersticas opcionales en XML debe ser absolutamente


mnimo, idealmente cero.
Los documentos XML deben ser legibles por humanos y razonablemente
claros.

El diseo de XML debe ser preparado rpidamente.

El diseo de XML debe ser formal y conciso.


Los documentos XML deben ser fcilmente creables.
La concisin en las marcas XML es de mnima importancia.
Esta especificacin, junto con los estndares asociados (Unicode e ISO/IEC
10646 para caracteres, Internet RFC 1766 para identificacin de lenguajes, ISO
Versin 1.0 de XML y construir programas de computador que los procesen.

Principales caractersticas
Es una arquitectura ms abierta y extensible. No se necesita versiones para que
puedan funcionar en futuros navegadores. Los identificadores pueden crearse de
manera simple y ser adaptados en el acto en internet/intranet por medio de un
validador de documentos (parser.
Mayor consistencia, homogeneidad y amplitud de los identificadores descriptivos
del documento con XML (los RDF Resource Description FrameWork), en
comparacin a los atributos de la etiqueta del HTML.
Integracin de los datos de las fuentes ms dispares. Se podr hacer el
intercambio de documentos entre las aplicaciones tanto en el propio PC como en
una red local o extensa.
Datos compuestos de mltiples aplicaciones. La extensibilidad y flexibilidad de
este lenguaje nos permitir agrupar una variedad amplia de aplicaciones,
desde pginas web hasta bases de datos.
Gestin y manipulacin de los datos desde el propio cliente web.
Los motores de bsqueda devolvern respuestas ms adecuadas y precisas,
ya que la codificacin del contenido web en XML consigue que la estructura de
la informacin resulte ms accesible.
Se desarrollarn de manera extensible

las bsquedas personalizables

y subjetivas para robots y agentes inteligentes. Tambin conllevar que los


ejecutan
el servidor.
clientes en
web
puedan ser ms autnomos para desarrollar tareas que

Se permitir un comportamiento ms estable y actualizable de las aplicaciones


web, incluyendo enlaces bidireccionales y almacenados de forma externa (El
famoso epgrafe "404 file not found" desaparecer).
El

concepto

de

"hipertexto"

se

desarrollar

ampliamente

(permitir

denominacin independiente de la ubicacin, enlaces bidireccionales, enlaces


que pueden especificarse

gestionarse

desde

fuera del documento,

hiperenlaces mltiples, enlaces agrupados, atributos para los enlaces, etc.


Creado a travs del Lenguaje de enlaces extensible (XLL).
Exportabilidad a otros formatos de publicacin (papel, web, cd-rom, etc.). El
documento maestro de la edicin electrnica podra ser un documento XML que
se integrara en el formato deseado de manera directa.

Estructura del XML


El metalenguaje XML consta de cuatro especificaciones (el propio XML sienta
las bases sintcticas y el alcance de su implementacin):

DTD (Document Type Definition) Definicin del tipo de documento. Es, en


general, un archivo/s que encierra una definicin formal de un tipo de documento
y
, a la vez, especifica la estructura lgica de cada documento. Define tanto los
elementos de una pgina como sus atributos. El DTD del XML es opcional. En
tareas sencillas no es necesario construir una DTD, entonces se tratara de un
documento "bien formado"(well-formed) y si lleva DTD ser un documento
"validado" (valid).

XSL (eXtensible Stylesheet Language) Define o implementa el lenguaje de


estilo de los documentos escritos para XML. Desde el verano de 1997 varias
empresas informticas como Arbortext, Microsoft e Inso vienen trabajando en una
propuesta de XSL (antes llamado "xmlstyle") que presentaron a W3C. Permite
modificar el aspecto de un documento.
Se puede lograr mltiple columnas, texto
girado, orden de visualizacin de los
datos de una tabla, mltiples tipos de
letra

con

tamaos.

amplia

variedad

en

los

UNIVERSIDAD PRIVADA TELESUP

Este estndar est basado en el lenguaje de semntica y especificacin de estilo


de documento (DSSSL, Document Style Semantics and Specification Language,
ISO/IEC 10179) y, por otro lado, se considera ms potente que las hojas de estilo
en cascada (CSS, Cascading Style Sheets), usado en un principio con el lenguaje
DHTML. "Se espera que el CSS sea usado para visualizar simples estructuras de
documentos XML (actualmente se ha conseguido mayor integracin en XML
con el protocolo CSS2 (Cascading Style Sheets, level 2) ofreciendo nuevas
formas de composicin y una ms rpida visualizacin) y, por otra parte, XSL
pueda ser utilizado donde se requiera ms potencia de diseo como documentos
XML que encierran datos estructurados (tablas, organigramas, etc.)

XLL (eXtensible Linking Language) Define el modo de enlace entre


diferentes

enlaces.

Se

considera

que

es

un

subconjunto

de

HyTime

(Hipermedia/Timed-based structuring Language o Lenguaje de estructuracin


hipermedia/basado en el tiempo, ISO 10744) y sigue algunas especificaciones del
TEI (Text Encoding Initiative o Iniciativa de codificacin de texto). Desde marzo
de
1998

el W3C

trabajo

en

los

enlaces

direccionamientos

del

XML.

Provisionalmente se le renombr como Xlink y a partir de junio se le


denomina XLL. Este lenguaje de enlaces extensible tiene dos importantes
componentes: Xlink y el Xpointer. Va ms all de los enlaces simples que slo
soporta el HTML. Se podr implementar con enlaces extendidos. Jon Bosak
establece los

siguientes mecanismos

hipertextuales

que soportar esta

especificacin:

Denominacin independiente de la ubicacin.

Enlaces que pueden ser tambin bidirecccionales.

Enlaces

que

pueden

especificarse

gestionarse

desde

fuera

del

documento a los que se apliquen (Esto permitir crear en un entorno


intranet/extranet un banco de datos de enlaces en los que se puede
gestionar y actualizar automticamente. No habr ms errores del tipo "404
Not Found").

Hiperenlaces mltiples (anillos, mltiples ventanas, etc.).

Enlaces agrupados (mltiples orgenes).

Transclusin (el documento destino al que apunta el enlace aparece como

parte integrante del documento orgen del enlace).

Se pueden aplicar atributos a los enlaces (tipos de enlaces).

XUA (XML User Agent): Estandarizacin de navegadores XML. Todava

est en proceso de creacin de borradores de trabajo. Se aplicar


a los

UNIVERSIDAD PRIVADA TELESUP


navegadores para que compartan todas las especificaciones XML.

129

XML y Los Servicios Web


Finalmente ahora que ya conocemos algo ms
sobre XML no queda responde porque XML es
utilizado en los servicios Web? Si recapitulamos
todo los captulos

anteriores

seguro

ya

tendremos alguna pista para esta pregunta,


pero para
hacerlo ms prctico diremos que se utiliza XML porque:

Es un estndar abierto es decir que es reconocido mundialmente ya que muchas


compaas tecnolgicas integran en sus software compatibilidad con dicho
lenguaje. Esto quiere decir que la gran mayora de software de escritorio de
sistema operativo, aplicaciones mviles permiten la compatibilidad con XML esto
lo hace muy potente a la hora de permite la comunicacin entre distintas
plataformas de software y hardware (y si bien recordamos este es el sentido final
de los Servicios Web).

Simplicidad de sintaxis esto quiere decir que es muy fcil de escribir cdigo en
XML y la representacin de los datos es casi entendible por cualquier ser
humano. Esto lo hace muy flexible a la hora de querer reprensar datos de
cualquier especie, bastara con contar con cualquier editor de texto y aprende
unas cuantas intrusiones bsicas y ya esta en condiciones de escribir
cdigo XML el cual ser soportado o entendido por cualquier aplicacin que
pueda leer documentos XML. El hecho de que XML sea tan fcil de codificar y
de entender lo hace el lenguaje ideal para utilizarlo en los servicios Web.

Independencia del protocolo de Transporte, el hecho de que XML es un


lenguaje de Marcado de Texto, no necesita de ningn protocolo de trasporte
especial, solo necesita de un protocolo que pueda trasferir texto o
documentos simples. Esto nos trae a la memoria que en mercado
existen muchos protocolos con estas caracterstica
como lo son los mas conocidos en HTTP y SMTP por
nombrar algunos. Volviendo la tema de los servicios
Web una de las caracterstica de estos es la
independencia del protocolo de trasporte.

130

Lecturas Recomendadas

UNIVERSIDAD PRIVADA TELESUP

CREAR Y CONSUMIR SERVICIOS WEB XML


http://www.slideshare.net/guest3cf6ff/11-servicios-web-xml

SERVICIOS WEB XML


http://www.docirs.cl/webservices4.html

Actividades y Ejercicios

1. En un archivo de Word explique las diferentes formas de utilizar los


mtodos de los formularios. Envalo a travs de "Formularios".
2. Crea un formulario: dentro de ello un botn que al hacer click llame
a otro formulario, presente el script utilizado y su respectiva imagen
que comprueba que funciona. Envalo a travs de "Scripts".

UNIVERSIDAD PRIVADA TELESUP

Autoevaluaciones
1. Qu es un hilo de ejecucin?
a.
b.
c.
d.
e.

Es una unidad de programacin.


Es una unidad de procesamiento.
Es una multitarea.
Es una aplicacin para controlar.
Es una multitarea elemental.

2. Cuntos mtodos fundamentales se deben conocer si se quiere tener un


control absoluto de los hilos en .NET?
a. Uno.
b. Dos.
c. Cuatro.
d. Cinco.
e. Siete.
3. Qu es un servicio Web XML?
a.
b.
c.
d.
e.

Lgica programable accesible por protocolos web estndares.


Interface programable.
El alcance de la serializacion.
Programacin controlada por la web.
Interface para las webs.

4. Para qu sirve un archivo de configuracin?


a. Solo para programar.
b. Para realizar formularios y tablas.
c. para muchas cosas que realmente le dan una funcionalidad muy poderosa
a un programa.
d. Para realizar aplicaciones en un determinado programa.
e. Para configuracin de un sistema.
5. Qu es Cocoon?
a. Es un entorno
en Java.
b. Es un entorno
JSP.
c. Es un entorno
en C++.
d. Es un entorno
en PHP.
e. Es un entorno
en AJAX.

de publicacin y transformacin de documentos XML basado


de publicacin y transformacin de documentos XML basado
de publicacin y transformacin de documentos XML basado
de publicacin y transformacin de documentos XML basado
de publicacin y transformacin de documentos XML basado

UNIVERSIDAD PRIVADA TELESUP

6. Son hebras en Java, que se ejecutan en el mismo contexto que el servidor.


a. Cocoon.
b. Los servlets.
c. XML.
d. XSLT.
e. FO.
7. En cuantas fases se realiza el procesamiento que lleva a cabo cocoon?
a. Una fase.
b. Dos fases.
c. Tres fases.
d. Cinco fases.
e. Nueve fases.
8. Qu es XML?
a. Un conjunto de reglas para definir etiquetas semnticas que nos
organizan un documento en diferentes partes.
b. Un conjunto de reglas para definir configuraciones que nos organizan
un documento en diferentes partes.
c. Un conjunto de reglas para definir etiquetas masivas que nos organizan
un documento en diferentes partes.
d. Un conjunto de reglas para definir informacin til que nos organizan
un documento en diferentes partes.
e. Un conjunto de reglas para definir estructuras que nos organizan
un documento en diferentes partes.
9. fue creado al amparo del Word Wide Web Consortium
a. DTD.
b. XSL.
c. XLL.
d. HTML.
e. XML.
10. Durante el ao .. XML tuvo un crecimiento exponencial, y con ello me refiero a sus
apariciones en medios de comunicacin, menciones en pginas web, soporte software, etc.
a.
b.
c.
d.
e.

1998.
1999.
1996.
1995.
1997.

UNIVERSIDAD PRIVADA TELESUP

Resumen

UNIDAD DE APRENDIZAJE III:


La programacin con hilos, tambin conocida como multiproceso, tiene la ventaja de
poder trabajar de manera asncrona. Esto permite que aquellos procesos que pueden
requerir un tiempo ms o menos largo en llevarse a cabo se pongan a trabajar
'paralelamente' al proceso principal, de manera que la aplicacin pueda retomar el
control y as el usuario seguir trabajando con ella. La multitarea puede ser de
dos
tipos, uno de los cuales est bastante obsoleto y adems queda fuera de .NET de
manera que no podremos usar los hilos de la mquina virtual en sistemas
operativos
que usen este clase primitiva de multitarea conocida como 'preferente'. El que vamos
a usar nosotros es el tipo 'cooperativo'. La diferencia fundamental radica en que en
el
caso de la multitarea preferente el programador tiene que encargarse de liberar los
hilos, etc, mientras que en la multitarea preferente el procesador asigna fracciones de
tiempo de procesado a cada hilo y salta de hilo en hilo cada tiempo.
Un archivo de configuracin se puede realizar para muchas cosas que realmente
le dan una funcionalidad muy poderosa a un programa, por ejemplo guardar el tipo de
fuente establecido, el tipo de color establecido, un campo de texto en especfico.Los
archivos de configuracin comunes en el entorno de Microsoft Office, es opciones,
que es donde se elige el tipo de letra predeterminada, tipo de pgina, tipo de bordes
entre otros.
Los servlets son hebras en Java, que se ejecutan en el mismo contexto que
el servidor; por lo tanto, es ms rpido de ejecutar que otros mtodos tales como los
CGIs; y adems, son persistentes, o sea que no hace falta cargarlos. Para ms
informacin, se puede mirar la FAQ de los servlets.
El nombre de Cocoon viene de la pelcula, y se le ocurri al autor inicial de Cocoon,
Stefano Mazocchi, porque precisamente despus de ver dicha pelcula decidi hacer
un entorno de publicacin basado en XML, cuando casi nadie tena todava claro qu
era eso del XML. Por eso ha tenido tanto xito, y hoy en da es uno de los ms
completos.La versin actual, en febrero de 2001, es la 1.8.2, con ligeras
modificaciones con respecto a la 1.8 y algunos bugfixes respecto a la 1.8.1. Ya hay
alfas de la siguiente versin, la 2.0, que permitir transformaciones ms completas a
partir de los URL, e incorporar los ltimos estndares.
La informacin que manejan las empresas es uno de sus principales activos. Pero lo
normal es que esa informacin est fragmentada, en diferentes departamentos,
ordenadores conectados o no, etc. El reto ahora est en interrelacionar toda esa
informacin para rendir todo su potencial y ponerlo a trabajar para aumentar los
beneficios o reducir los costes. Para realizar esto se necesita un estndar de
almacenamiento estructurado que es lo que nos ofrece XML. Una gran cantidad de
gente ha odo hablar ltimamente de XML y mucha gente que es una especie de
HTML pero ms avanzado. Pero todo el mundo lo que debera preguntarse es qu es
exactamente XML y qu aplicaciones tiene actualmente. De estas dos cuestiones el
mayor error que se suele cometer es considerar a XML un HTML extendido.

134

UNIVERSIDAD PRIVADA TELESUP

135

UNIVERSIDAD PRIVADA TELESUP

Introduccin

a) Presentacin y contextualizacin
En la presente unidad veremos cmo se resaltar el proceso de instalaciones de
aplicaciones; aprendiendo a utilizar la realizacin de informes. Teniendo presente
los conceptos sealados ya anteriormente se espera que el estudiante este
satisfecho de obtener estos conocimientos le den una ventaja superior en al
momento de ejercer su profesin, haciendo que este curso mejore los
conocimientos orientados a la carrera del estudiante convirtindolo en un
profesional de calidad.

b) Competencia
Comprende, cuales son los adecuados procedimientos para realizar un
servicio web XML.

c) Capacidades
1. Conoce la realizacin de informes de los servicios web XML.
2. Comprende el procedimiento empleado para la instalacin de aplicaciones
de servicio web XML.
3. Reconoce las aplicaciones de clientes inteligentes.
4. Diferencia los ensamblados de las reflectiones.

d) Actitudes
Muestra disposicin para las realizaciones de informes.
Respeto a las normas de convivencia.
Tiene sentido de organizacin en la instalacin de aplicaciones.
Perseverancia en las tareas de Psicologa colectiva.

e) Presentacin de Ideas bsicas y contenidos esenciales de la Unidad:


La Unidad de Aprendizaje 04: Servicio Web XML, comprende el desarrollo de
los siguientes temas:
TEMA 01: Realizacin de Informes.
TEMA 02: Proceso de Instalacin de Aplicaciones.
TEMA 03: Aplicaciones de Cliente Inteligente.
TEMA 04: Ensamblados y Reflection.

136

UNIVERSIDAD PRIVADA TELESUP

Realizacin
de

TEMA
1

Informes
Competencia:
Conocer la realizacin de informes de los
servicios web XML.

137

Desarrollo de los Temas

UNIVERSIDAD PRIVADA TELESUP

Tema 01: Realizacin de Informes


REQUISITOS DE UN WEB SERVICE

Interoperabilidad: Un servicio remoto debe


permitir su utilizacin por clientes de otras
plataformas.

Amigabilidad con Internet: La solucin


debe poder funcionar para soportar clientes que
accedan a los servicios remotos desde internet.

Interfaces Fuertemente Tipadas: No debera haber ambigedad acerca del


tipo de dato enviado y recibido desde un servicio remoto. Ms an, los tipos de
datos

definidos

en

el

servicio

remoto

deben

poderse

corresponder

razonablemente bien con los tipos de datos de la mayora de los lenguaje de


programacin procedimentales.

Posibilidad de Aprovechar los Estndares de Internet Existentes: La


implementacin del servicio remoto debera aprovechar estndares de Internet
existentes tanto como sea posible y evitar reinventar soluciones a problema que
ya se han resuelto. Una solucin construida sobre un estndar de Internet
ampliamente adoptado puede aprovechar conjuntos de herramientas y productos
existentes creados para dicha tecnologa.

Soporte Para Cualquier Lenguaje: La solucin no debera ligarse a un


lenguaje de programacin particular Java RMI, por ejemplo,
est ligada completamente a lenguaje Java. Sera muy
difcil invocar funcionalidad de un objeto Java remoto desde
Visual Basic o PERL. Un cliente debera ser capaz de
implementar

un

nuevo

servicio

Web

existente

independientemente del lenguaje de programacin en el


que

138

UNIVERSIDAD PRIVADA TELESUP

Soporte Para Cualquier Infraestructura de Componente Distribuida:


La solucin no debe estar fuertemente ligada a una infraestructura de
componentes en particular. De hecho, no se bebera requerir el comprar, instalar
o mantener una infraestructura de objetos distribuidos, solo construir un nuevo
servicio remoto utilizar un servicio existente. Los protocolos subyacentes
deberan proporcionar un nivel base de comunicacin entre infraestructura de
objeto distribuidos existentes tales como DCOM y CORBA.

Bloques Constructivos de Servicios Web


Se muestran los bloques constructivos principales necesarios para facilitar
las comunicaciones remotas entre aflicciones.

Descubrimiento
UDDI,DISCO

Descripcin
WSDL, Esquema XML, Docs

Formato de Mensaje
SOAP

Codificacin
XML

Transporte
HTTP,SMTP y otros

Descubrimiento: La aplicacin cliente que necesita acceder a la funcionalidad


que expone un Servicio Web necesita una forma de resolver la ubicacin de
servicio remoto. Se logra mediante un proceso llamado, normalmente
descubrimiento (discovery). El descubrimiento se puede proporcionar mediante
un directorio centralizado as como por otros mtodos ad hoc. En DCOM, el
servicio de descubrimiento lo proporciona el Administrador de control de
servicios (SCM, Services Control Manager).

Descripcin: Una vez que se ha resuelto el extremo de un servicio Web dado,


el cliente necesita suficiente informacin para interactuar adecuadamente con el
mismo.

La

descripcin

de

un

servicio

Web

implica

meta

datos

estructurados sobre la interfaz que intenta utilizar la aplicacin cliente as como


documentacin escrita sobr el servicio Web incluyendo ejemplo de uso. Un
componente DCOM expone meta datos estructurados sobre sus interfaces
mediante una biblioteca de tipo (typelib). Los meta datos dentro de una
typelib de componente se guardan en un formato binario propietario a los que
se accede mediante una interfaz de programacin de aplicacin (API)
propietaria.

Formato del Mensaje: Para el intercambio de datos, el cliente y el servidor


tienen que estar de acuerdo en un mecanismo comn de codificacin y formato
de mensaje. El uso de un mecanismo estndar de codificar los datos asegura
que los datos que codifica el cliente los interpretar correctamente el servidor.
En DCOM los mensajes que se envan entre un cliente y un servidor tienen un
formato definido por el protocolo DCOM Object RPC (ORPC).

Codificacin: Los datos que se trasmiten entre el cliente y el servidor necesitan


codificarse en un cuerpo de mensaje. Dcom utiliza un esquema de codificacin
binaria para serializar los datos de los parmetros que se intercambian entre el
cliente y el servidor.

Transporte: Una vez se ha dado formato al mensaje y se han serializado los


datos en el cuerpo del mensaje se debe transferir entre el cliente y el serv
idor utilizando algn protocolo de transporte. DCOM dispone de varios
protocolos propietarios como TCP, SPX, NetBEUI y NetBIOS sobre IPX.

UNIVERSIDAD PRIVADA TELESUP

Proceso

de

Instalacin

TEMA
2

de

Aplicaciones
Competencia:
Comprender el procedimiento empleado
para la instalacin de aplicaciones de
servicio web XML.

141

UNIVERSIDAD PRIVADA TELESUP

Tema 02: Proceso de Instalacin de


Aplicaciones
CREAR UN SERVICIO WEB
1. Agregar un nuevo elemento tipo Servicio Web al proyecto Web.
Nombrar al proyecto:
Calculadora.asmx

142

CREAR UN SERVICIO WEB


2. Escribir el cdigo que define la funcionalidad del servicio.

CREAR UN SERVICIO WEB


3. Ejecutar archivo .asmx en el explorador.

Al hacer clic en el vnculo Sumar se puede ejecutar y probar el Servicio Web.

Nota: observar las opciones para ver la descripcin de servicios (Service


Description) y probar la funcin del Servicio Web (Sumar).

Al hacer un clic en la opcin Service Description se muestra el archivo

XML que escribe el servicio (protocolos, parmetros, etc.)

UNIVERSIDAD PRIVADA TELESUP

Aplicaciones
de

Cliente
Inteligente

TEMA
3

Competencia:
Reconocer las
inteligentes.

aplicaciones

de

clientes

145

UNIVERSIDAD PRIVADA TELESUP

Tema 03: Aplicaciones de Cliente Inteligente

Nota: En primer lugar, permtanme comparar las caractersticas de un cliente ligero


frente a un cliente pesado o ricos.
El cliente ligero es generalmente administrado centralmente por la aplicacin y
los datos se ejecutan en el servidor. Con el fin de acceder a la aplicacin todo lo
que tienes es un navegador, por ejemplo. Eso hace que sea fcil de administrar e
implementar. Tambin significa que se puede llegar a un gran nmero de usuarios sin
mucho esfuerzo.

146

Por otro lado la experiencia del usuario no es tan grande


debido a las limitaciones de un navegador. Interfaces de
usuario ricas son posibles, pero complejas de desarrollar.
El mayor inconveniente de este modelo es su dependencia
de la red. En caso de que perdi su conexin de red no se
puede utilizar la aplicacin ms.

En contraste con los que tenemos los clientes pesados, o ricos. Por lo general son
aplicaciones nativas que da al usuario una interfaz muy rica y sensible, ya que no
tiene ningn retraso de la red. El inconveniente de este enfoque es que la huella de
estos clientes pesados se suele dejar de fumar grande y una de las razones por las
que es difcil de implementar. El otro es que hay una gran cantidad de dependencias
de la plataforma.

Con

la

introduccin

de

los

clientes

de

servidores

administrados, tambin llamada de cliente inteligente el


enfoque

consista

en

combinar

los

beneficios

de

la

experiencia de cliente enriquecido (respuesta de usuario rica,


la productividad del desarrollador) y Thin Client (facilidad
de
despliegue,
alcance).

gestin

PRINCIPALES

del

cambio

ATRIBUTOS

fcil,

DE

amplio

LAS

APLICACIONES

INTELIGENTE:
Usa el poder de procesamiento local.
Consume servicios Web XML.
Soporta escenarios en y fuera de lnea.
Adaptable al dispositivo husped.
Desarrollo centralizado y modelo de actualizacin.

DE

CLIENTE

UNIVERSIDAD PRIVADA TELESUP

Ensamblados
y

TEMA
4

Reflection
Competencia:
Diferenciar
reflectiones.

los

ensamblados

de

las

148

UNIVERSIDAD PRIVADA TELESUP

Tema 04: Ensamblados y Reflection


Uno de los pilares del Framework NET y una de las mayores
ventajas del CLR es la gran cantidad de informacin que tenemos
disponible en tiempo de ejecucin. El sistema de reflexin permite
interrogar esta informacin y crear cdigo al vuelo,
permitiendo
crear fcilmente sistemas basados en plug-ins.
Aunque siempre pensamos que es un fichero, un ensamblado es realmente
un contenedor lgico de las distintas partes de datos que el CLR necesita para
ejecutar
cdigo: metadatos de ensamblado, metadatos de tipo, cdigo (IL) y recursos.

El Metadata o manifest incluye informacin que define el ensamblado, como el


nombre, versin, strongname e informacin de la cultura. Los metadatos de tipos es
toda la informacin que describe, incluyendo el espacio de nombres, los nombres
de
El cdigo es el cdigo de lenguaje intermedio (IL) que se compila a cdigo mquina
cuando el ensamblado se ejecuta. Los recursos son objetos (cadenas, imgenes o
ficheros) que se utilizan desde el cdigo.

La mayora de veces, todas estas partes de un ensamblado se compilan en un nico


fichero, aunque esto no debe ser siempre necesariamente as. Los metadatos de
ensamblado s que necesitan estar en el ensamblado principal, pero los metadatos
de

149

Los mdulos son contenedores de tipos en un ensamblado. En general, utilizaremos


mltiples mdulos por ensamblado slo en casos muy especiales. Visual Studio no
soporta

mltiples

mdulos

por

ensamblado, as que si queremos crear


ensamblados multi-mdulo necesitaremos
hacerlo mediante la lnea de comandos o
mediante otras herramientas, como por
ejemplo MSBuild.

Para examinar un ensamblado tenemos que instanciar un objeto de la clase Assembly


mediante alguno de los nueve siguientes mtodos estticos:
GetAssembly,
Load,

GetCallingAssembly,

GetEntryAssembly,

LoadFile,LoadFrom,
ReflectionOnlyLoadFrom.

GetExecutingAssembly,

ReflectionOnlyLoad,

string fullName = "System.Drawing, Version=2.0.0.0,


Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
Assembly a=
Assembly.ReflectionOnlyLoad(fullName);
Console.Write("Location: {0}", a.Location);
// Lanza una excepcin porque se carga slo para reflexinobject o =
a.CreateInstance("System.Drawing.Bitmap");

Una

vez tenemos una instancia de clase Assembly, podemos


interrogar las propiedades del ensamblado mediante los
siguientes mtodos y propiedades.
Propiedades:EntryPoint, FullName, GlobalAssemblyCache,
Location, ReflectionOnly.

Mtodos: CreateInstance, GetCustomAttributes, GetExportedTypes, GetFile, GetFiles,


GetLoadedModules,

GetModule,GetModules,

GetName,

GetSatelliteAssembly,

GetTypes, IsDefined.

150

El siguiente cdigo muestra el nombre todos los mdulos del ensamblado que est
en ejecucin.

Assembly a = Assembly.GetExecutingAssembly();
Console.WriteLine("Nombre completo: {0}", a.FullName);
Console.WriteLine("Ubicacin: {0}", a.Location);
Console.WriteLine("Slo reflexin?: {0}", a.ReflectionOnly);
Module[] mods = a.GetModules();
foreach (Module m in mods)
{
Console.WriteLine("Module Name: {0}", m.Name);
}

ENSAMBLADO USANDO REFLECTION


En este cdigo veremos cmo saber las clases que contiene un ensamblado, esto
puede ser til para cargar dinmicamente (en tiempo de ejecucin) alguna de las
clases que contiene, es decir, crear nuevos objetos de alguna de esas clases, como
por ejemplo un formulario, ya que al fin y al cabo, un formulario no es ni ms ni menos
que una clase.

Cuando trabajamos con VB6, podemos acceder a una


coleccin que nos indica los formularios en ejecucin, es
decir,

los

formularios

que

nuestra

aplicacin

ha

cargado en la memoria (instanciado), lo que no es posible


(con VB6) es averiguar los formularios (y clases) que
nuestra aplicacin contiene. Realmente en VB6 puede
que no tenga

mucho

sentido,

salvo

algunas

ocasiones, saber
cules son los formularios que la aplicacin contiene... pero en .NET si que puede
tener ms inters ya que podemos crear nuestros propios ensamblados de forma
dinmica, es decir, "al vuelo", todo ello mediante cdigo.

151

Lecturas Recomendadas

UNIVERSIDAD PRIVADA TELESUP

APLICACIONES DE CLIENTE INTELIGENTE


http://es.wikipedia.org/wiki/Smart_client

WEB SERVICE
http://msdn.microsoft.com/es-es/library/bb972248.aspx

INFORMES DE LOS SERVICIOS WEB XML


http://msdn.microsoft.com/es-es/library/ms152787.aspx

Actividades y Ejercicios

1. En un documento en Word realice un informe acadmico sobre


las clases y estructuras ms importantes de namespace
system.drawing.
Envalo a travs de "Drawing".
2. Especifique cuales son los tipos de ficheros que utiliza la clase
Image.
Desarrllalo a travs de Image.

UNIVERSIDAD PRIVADA TELESUP

Autoevaluacin

1. Para el intercambio de datos, el cliente y el servidor tienen que estar de


acuerdo en un mecanismo comn de..
a. Codificacin y decodificacin de mensaje.
b. Codificacin y formato de informacin.
c. Codificacin y formato de mensaje.
d. Codificacin y formato de archivos.
e. Codificacin y formato de documentos.
2. .. lo proporciona el administrador de control de servicios (SCM,
Services Control Manager).
a. El servicio de mensajera.
b. El servicio de informacin.
c. El servicio de codificacin.
d. El servicio de descubrimiento.
e. El servicio de decodificacin.
3. implica meta datos estructurados sobre la interfaz que intenta
utilizar la aplicacin cliente as como documentacin escrita sobre el
servicio.
a. La descripcin de un servicio de internet.
b. La descripcin de un servicio XML.
c. La descripcin de un servicio HTML.
d. La descripcin de un servicio instantneo.
e. La descripcin de un servicio Web.
4. El paso para crear un Servicio Web es:
a. Escribir el cdigo que define la funcionalidad del servicio.
b. Escribir el cdigo que define la funcionalidad del mensaje.
c. Escribir el cdigo que acelera la funcionalidad del servicio.
d. Escribir el cdigo que rectifica la funcionalidad del servicio.
e. Escribir el cdigo que mejora la funcionalidad del servicio.

5. Al hacer un clic en la opcin Service Description se muestra el archivo


que escribe el servicio (protocolos, parmetros, etc.).
a. XML.
b. HTML.
c. CDL.
d. SLM.
e. CLR

UNIVERSIDAD PRIVADA TELESUP

6. .. es generalmente administrado centralmente por la aplicacin y los


datos se ejecutan en el servidor.
a. El cliente intermedio.
b. El cliente pesado.
c. El cliente ligero.
d. El cliente especial.
e. El cliente proporcional.
7. No es uno de los principales atributos de las aplicaciones de cliente
inteligente:
a.
b.
c.
d.
e.

Usa el poder de procesamiento local


Consume servicios Web XML
Soporta escenarios en y fuera de lnea
Adaptable al dispositivo husped.
Utiliza nicamente los servicios HTML.

8. Y una de las mayores ventajas del. es la gran cantidad de informacin


que tenemos disponible en tiempo de ejecucin.
a.
b.
c.
d.
e.

CLR.
HTML.
XML.
CDL.
XDL.

9. El metadata o manifest.., como el nombre, versin, strongname e


informacin de la cultura.
a.
b.
c.
d.
e.

Incluye informacin que define la informacin.


Incluye informacin que define el internet.
Incluye informacin que define el ensamblado.
Incluye informacin que define el uso de la web.
Incluye informacin que define el mensaje.

10. Los mdulos son. en un ensamblado.


a. Contenedores de documentos.
b. Contenedores de tiempos.
c. Contenedores de mensaje.
d. Contenedores de formas.
e. Contenedores de tipos.

UNIVERSIDAD PRIVADA TELESUP

Resumen

UNIDAD DE APRENDIZAJE IV:


Requisitos del web service:
Interoperabilidad: Un servicio remoto debe permitir su utilizacin por clientes de otras
plataformas.
Amigabilidad con Internet: La solucin debe poder funcionar para soportar clientes que
accedan a los servicios remotos desde internet.
Codificacin: Los datos que se
trasmiten
entre el cliente y el servidor necesitan codificarse en un cuerpo de mensaje. Dcom utiliza un
esquema de codificacin binaria para serializar los datos de los parmetros que se
intercambian entre el cliente y el servidor. Transporte: Una vez se ha dado formato al
mensaje y se han serializado los datos en el cuerpo del mensaje se debe transferir entre
el
cliente y el servidor utilizando algn protocolo de transporte. DCOM dispone de varios
protocolos propietarios como TCP, SPX, NetBEUI y NetBIOS sobre IPX.

Visual Basic es una aplicacin y un lenguaje de programacin desarrollados por Alan Cooper
para Microsoft. Se origina en el clsico lenguaje BASIC. La primera versin sali en 1991 en
un entorno relativamente sencillo para facilitar la creacin de programas grficos.
Visual Basic, como su nombre lo indica, utiliza una interfaz totalmente visual.
Actualmente, los programas creados en Visual Basic slo funcionan en Windows. La
aplicacin Visual Basic, permite crear ventanas, botones, mens, etc. de forma sencilla con
solo arrastrar y soltar los elementos. Luego se pueden definir las apariencias, posiciones y
comportamientos tanto de forma visual como utilizando cdigos de programacin. Este
lenguaje toma elementos de diferentes paradigmas como el orientado a objetos y el
orientado a eventos. Visual Basic suele considerarse un sistema RAD (Rapid Application
Development), porque permite crear aplicaciones de forma rpida, especialmente para
prototipos.

El cliente ligero es generalmente administrado centralmente por la aplicacin y los datos se


ejecutan en el servidor. Con el fin de acceder a la aplicacin todo lo que tienes es un
navegador, por ejemplo. Eso hace que sea fcil de administrar e implementar. Tambin
significa que se puede llegar a un gran nmero de usuarios sin mucho esfuerzo. En
contraste con los que tenemos los clientes pesados, o ricos. Por lo general son
aplicaciones nativas que da al usuario una interfaz muy rica y sensible, ya que no tiene
ningn retraso de la red. El inconveniente de este enfoque es que la huella de estos clientes
pesados se suele dejar de fumar grande y una de las razones por las que es difcil de
implementar. El otro es que hay una gran cantidad de dependencias de la plataforma.
Los pilares del Framework NET y una de las mayores ventajas del CLR es la gran cantidad
de informacin que tenemos disponible en tiempo de ejecucin. El Metadata o manifest
incluye informacin que define el ensamblado, como el nombre, versin, strongname e
informacin de la cultura. Los metadatos de tipos es toda la informacin que describe,
incluyendo el espacio de nombres, los nombres de las clases (tipos) y miembros de una
clase (mtodos, propiedades y constructores). Los metadatos de ensamblado s que
necesitan estar en el ensamblado principal, pero los metadatos de tipos, cdigo y recursos
se pueden referenciar desde otros ficheros. Los mdulos son contenedores de tipos en un
155

Resumen
ensamblado. En general, utilizaremos mltiples mdulos por ensamblado slo en casos muy
especiales. Visual Studio no soporta mltiples mdulos por ensamblado.

156

UNIVERSIDAD PRIVADA TELESUP

Glosario

AOL: Siglas en ingls de America On-line, es uno de los proveedores de Internet


ms antiguos de Estados Unidos.

APACHE: Apache es programa de servidor HTTP Web de cdigo abierto (open


source). Su desarrollo empez en 1995 y actualmente es uno de los servidores
web ms utilizados en la red.

API: Del ingls Application Programming Interface. Interfaz de Programacin de


Aplicaciones. Una serie de rutinas usadas por una aplicacin para gestionar
generalmente servicios de bajo nivel, realizados por el sistema operativo de la
computadora.

APLICACIN: Cualquier programa que corra en un sistema operativo y que haga


una funcin especfica para un usuario. Por ejemplo, procesadores de palabras,
bases de datos, agendas electrnicas, etc.

APPLET: Pequea aplicacin escrita en Java la cual se difunde a travs de la red


en orden de ejecutarse en el navegador cliente.

BACKBONE: la parte de la red que transporta el trfico ms denso: conecta LANs,


ya sea dentro de un edificio o a travs de una ciudad o regin.

BACKUP: Copia de Respaldo o Seguridad. Accin de copiar archivos o datos de


forma que estn disponibles en caso de que un fallo produzca la perdida de los
originales. Esta sencilla accin evita numerosos, y a veces irremediables,
problemas si se realiza de forma habitual y peridica.

BACKUP REMOTO: es hacer respaldo de la data de una computadora,


servidor, etc. en otra ubicacin fsica, y por medio de la nube (Internet), la data
se pueda accesar desde cualquier parte del mundo. Un ejemplo de backup
remoto es Solubackup.

CONTRASEA:

Cdigo utilizado para accesar un sistema restringido. Pueden


contener caracteres alfanumricos e incluso algunos otros smbolos. Se destaca
que la contrasea no es visible en la pantalla al momento de ser tecleada con el
propsito de que slo pueda ser conocida por el usuario.

COOKIE: Un cookie es un pequeo pedazo de data enviado desde un


servidor web al navegador del cliente (i.e. Internet Explorer, Firefox, Chrome y
Safari) que se guarda localmente en la mquina del usuario.

UNIVERSIDAD PRIVADA TELESUP

Fuentes de Informacin
BIBLIOGRFICAS:

JOS LUIS HEVIA Y NGEL RAYO, (ado.net), Acceso a Datos Con Ado .net
4.0, Editorial: Luarna Ediciones S.l. 2009.
WILDERMUTH, SHAWN, (ado.net) Pragmatic Ado.net, Editorial: Addison-wesley
Ao: 2010.
MINERA, FRANCISCO JOS, (XML) Editorial: Mp Ediciones Corp, 2011.
JOSHI, BIPIN, (xml) Beginning Xml With C# 2008 Editorial: Springer-verlag New
York Inc, 2010.

ELECTRNICAS:

Introduccin a la sintaxis PHP


http://www.desarrolloweb.com/articulos/307.php

Entorno de desarrollo integrado


http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado

Servicios Web XML


http://es.scribd.com/doc/78438754/31/Servicios -Web-XML

Ado.NET
http://www.elguille.info/net/adonet/

Introduccin a XML
http://www.desarrolloweb.com/manuales/18/

157

Solucionario
1. A

1. C

2. E

2. A

3. B

3. B

4. C

4. A

5. B

5. D

6. A

6. E

7. D

7. B

8. E

8. A

9. A

9. C

10. C

10. D

158

UNIVERSIDAD PRIVADA TELESUP

1. B

1. C

2. D

2. D

3. A

3. E

4. C

4. A

5. A

5. A

6. B

6. C

7. C

7. E

8. A

8. A

9. E

9. C

10. A

10. E