Академический Документы
Профессиональный Документы
Культура Документы
ndice_
1. INTRODUCCIN ...............................................................................3 2. ASP.NET ...........................................................................................5 3. JAVA (JSP, SERVLETS) .....................................................................5 4. PHP..................................................................................................6 5. DHTML .............................................................................................6
formacin digital
Como ejemplo podemos citar una plataforma de teleformacin que soporte matriculacin de alumnos, subida de cursos, exmenes, almacenamiento de notas, estadsticas de tiempos sobre conexiones al centro virtual, visitas por curso y alumno, etc. Cada vez que el alumno entra en la plataforma y se identifica (introduce su nombre de usuario y contrasea), se le presenta una pgina personalizada (con acceso a cada uno de los cursos en que est matriculado). Asimismo, cuando el alumno realiza un ejercicio o examen, el sistema puede comprobar los resultados introducidos y otorgarle una nota que almacena en una base de datos para ir elaborando un expediente. Estos son ejemplos de pginas dinmicas, cuyo aspecto final va a depender de las acciones del usuario y de la forma de interactuar que tenga con la aplicacin: en cuntos cursos se ha matriculado, si ha aprobado o suspendido un examen, los temas o respuestas que ha dado en los foros de su curso, etc.
Entre las aplicaciones tpicas desarrolladas en la actualidad, se encuentran los portales, las tiendas o comercios virtuales, aplicaciones publicitarias, de ocio (portales de juegos), etc. Estos desarrollos se caracterizan por el alto nmero de usuarios que tienen que soportar y por la calidad de la interfaz de usuario, el diseo y el sistema de navegacin presentados.
Por otra parte, los desarrollos Internet se implementan sobre los protocolos y los lenguajes de Internet. A su vez, estos protocolos son estndares que implementan una serie de mecanismos bsicos para permitir el paso de informacin entre los equipos clientes de los usuarios (que contienen los navegadores de Internet) y los equipos servidores (que contienen la aplicacin), y son principalmente el protocolo TCP/IP (Protocolo de Control de Transmisin / Protocolo de Internet) y HTTP (Protocolo de Transmisin de Hipertexto).
A mayor complejidad de aplicaciones, mayor complejidad y potencia de herramientas y nuevas tecnologas usadas en su programacin.
En los prximos apartados, vamos a estudiar una serie de tecnologas de desarrollo web utilizadas en la actualidad.
3. JAVA (JSP, SERVLETS) Java es la solucin de SUN Microsystems para el desarrollo de aplicaciones web. Consta de un conjunto de libreras y API (Interfaz de Programacin de Aplicaciones) de desarrollo, que incluye un conjunto de objetos de servidor o Servlets, y un sistema de programacin de pginas con un modelo similar al de ASP (introduciendo cdigo Java embebido en pginas HTML): pginas JSP (Java Server Pages, Pginas de Servidor Java). Este modelo de Servlets y pginas JSP, al estar directamente basado en Java presenta todas las ventajas de este lenguaje, como la orientacin a objetos o la disponibilidad de todas las libreras adicionales de Java (generacin de imgenes, comunicaciones, seguridad, encriptacin, etc.).
5. DHTML Sus siglas significan Dinamic HTML (HTML dinmico). Se forma de una conjuncin de HTML, hojas de estilo en cascada (CSS), lenguajes de script como JavaScript o VBScript, y la jerarqua de objetos DOM. Estos lenguajes de script se ejecutan en la mquina cliente (en el navegador del usuario que solicita una pgina). De hecho, sta es una gran diferencia con el resto de las anteriores tecnologas que hemos estudiado en los apartados anteriores. En la actualidad, el desarrollador web utilizar alguna de estas tecnologas de servidor. Dichas tecnologas aportarn numerosas ventajas como la unin entre la lgica principal de la aplicacin y el HTML dinmico. Con este ltimo, se consiguen pginas ms eficientes y con efectos que la hacen mucho ms vistosas (alternancia de imgenes, capas, cambios de estado provocados por eventos, etc.). En definitiva, estos lenguajes no permiten el desarrollo de cualquier proyecto en Internet. Es ms un complemento para los desarrolladores que el ncleo de verdaderas aplicaciones web.
recuerde_
Introduccin a .NET
ndice_
formacin digital
1. INTRODUCCIN ...............................................................................3 2. REQUISITOS DEL SISTEMA ...............................................................3 3. MICROSOFT .NET FRAMEWORK.........................................................4 3.1. CLR O COMMON LANGUAGE RUNTIME ....................................6 3.1.1. CLS o Common Language Specification .......................6 3.1.2. CTS o Common Type System.......................................6 3.1.3. IL, MSIL o Microsoft Intermediate Lenguaje ...............7 3.2. BIBLIOTECA DE CLASES .NET FRAMEWORK ...........................8 3.3. LO NUEVO DE .NET FRAMEWORK 3.0 Y 3.5...........................10 3.3.1. WPF o Windows Presentation Foundation .................11 3.3.2. WCF o Windows Communication Foundation.............11 3.3.3. WWF o Windows Workflow Foundation.....................12 3.3.4. CardSpace ................................................................12 3.3.5. LINQ o Lenguaje-Integrated Query ..........................12 3.3.6. ASP.NET AJAX ..........................................................12 3.3.7. ADO.NET Entity Framework ......................................13
Introduccin a .NET
1. INTRODUCCIN En este tema estudiaremos los requisitos necesarios para instalar .NET. Adems, explicaremos varios conceptos bsicos sobre la arquitectura de la plataforma y conoceremos cmo ha evolucionado hasta llegar a la versin actual .Net Framework 3.5. Esta base terica nos facilitar el entendimiento y contextualizacin de ASP.NET como un Framework de .NET para el desarrollo de aplicaciones web desarrollado por Microsoft.
2. REQUISITOS DEL SISTEMA A continuacin, enumeramos los requisitos necesarios para poder instalar .NET Framework: Sistema operativo de la familia Windows (32-bit y 64-bit) excepto los siguientes: Microsoft Windows 95, Microsoft Windows 98, Microsoft Windows Millennium Edition, Microsoft Windows NT Server, Windows NT Workstation, Windows NT Server Enterprise Edition, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, Windows 2000 Datacenter Server, Windows Server 2003, Enterprise Edition for Itanium-based Systems, Windows Server 2003, Datacenter Edition for Itanium-based Systems. Tambin se pueden desarrollar aplicaciones ASP.NET usando otros sistemas operativos gracias al proyecto Mono (http://www.mono-project.com/Main_Page), que es un grupo de herramientas libres compatible con .NET. Microsoft Data Access Components (MDAC) 2.8 for data access applications y Windows Installer version 3.0 (probablemente, ambas herramientas estn ya instaladas en nuestro sistema). Requisitos del hardware:
Memoria 96 MB 256 MB
Servidor Web Internet Information Server y permisos para guardar archivos en el servidor web. Puede ser que an teniendo uno de los sistemas operativos necesarios no tengamos instalado el IIS, que no viene en la configuracin por defecto de instalacin. En este caso, instalaremos el IIS (slo ser indispensable si queremos alojar y publicar la pgina web en nuestro equipo).
Introduccin a .NET
Microsoft .NET Framework SDK (Software Development Kit): es la implementacin de la plataforma .NET sobre la que se ejecutarn las pginas ASP.NET. Es decir, el .NET Framework SDK contiene todas las clases que componen la plataforma .NET. Su distribucin es gratuita y podemos descargarlo del sitio web de desarrolladores de Microsoft en http://msdn.microsoft.com. Adems, en esta direccin podemos encontrar abundante documentacin sobre el tema. Por otra parte, tambin es recomendable, aunque no obligatorio, disponer de la aplicacin Visual Studio .NET, que es un entorno de desarrollo para la plataforma .NET. Este entorno integrado ofrece una serie de ayudas visuales y utilidades muy interesantes, adems de valiosa documentacin que nos ayudar en el desarrollo, prueba y depuracin de nuestras aplicaciones ASP.NET. Adems, las distribuciones de la aplicacin de Visual Studio .NET suelen incluir el paquete Microsoft .NET Framework SDK, como parte opcional de la instalacin, por si el equipo donde va a ser instalado el Visual Studio .NET1 no lo tiene todava. Este entorno es muy recomendable pero no imprescindible para escribir nuestras aplicaciones ASP.NET. De hecho, tambin puede usarse cualquier otro editor de texto comn, como el bloc de notas de Windows o la aplicacin EditPlus, aunque stos no proporcionan las utilidades del entorno Visual Studio .NET. Adems, si utilizamos Visual Studio o Visual Web Developer podemos probar las pginas web de ASP.NET usando el servidor de desarrollo de ASP.NET, que ejecuta las pginas localmente en el equipo sin necesidad de instalar IIS.
3. MICROSOFT .NET FRAMEWORK .NET Framework 3.5 permite el desarrollo de aplicaciones a travs del uso de un conjunto de herramientas y servicios que proporciona, y que podemos agrupar en tres bloques principales: El Entorno de Ejecucin Comn o Common Language Runtime (CLR) es el ncleo de .NET Framework. Se encarga de la gestin del cdigo, su ejecucin, los temas de manipulacin de memoria, etc.
Podemos
conseguir
una
versin
de
evaluacin
de
Visual
Studio
.NET
en
el
sitio
http://www.microsoft.com/express/download/
Introduccin a .NET
La jerarqua de clases bsicas de la plataforma o .NET Framework Base Classes. Este conjunto de clases constituye un API de servicios para utilizar en la programacin de nuestras aplicaciones. Por ejemplo, las clases para acceder a bases de datos (ADO.NET), para gestionar ficheros XML, gestin de hilos (threading), para el desarrollo de aplicaciones web (ASP.NET), etc. El motor de generacin de interfaz de usuario. Permite crear interfaces para la Web (con la tecnologa ASP.NET), para el tradicional entorno Windows (Windows Forms) o para el nuevo Windows Presentation Foundation (WPF). En este manual vamos a profundizar en aspectos relacionados con ASP.NET aunque tambin veremos otros ms generales dentro de la plataforma .NET. Por otra parte, ASP.NET es un Framework para aplicaciones web. Podemos definirlo como un subconjunto de .NET Framework dedicado al desarrollo de sitios web dinmicos, aplicaciones web y servicios web XML. A continuacin, podemos observar un esquema de la composicin del .NET Framework y como ha ido evolucionando gracias a la insercin de nuevas tecnologas y mejora de sus caractersticas.
LINQ
ASP.NET AJAX
WPF
WCF
WF
CardSpace
ASP.NET
Windows Forms
ADO.NET
IO
XML
THREADING
Etc.
CTS
CLS
MSIL
Gestin de memoria
.NET Framework
Introduccin a .NET
En este manual vamos a centrarnos en la parte de ASP.NET que, como hemos dicho, constituye la solucin de Microsoft para desarrollar aplicaciones web, aunque la base sobre la que se apoya, el paquete .NET, es comn para desarrollar otro tipo de aplicaciones para Windows. 3.1. CLR O COMMON LANGUAGE RUNTIME El CLR es la base del sistema Microsoft .NET. Este motor hace que sea posible el desarrollo basado en mltiples lenguajes y que sea posible la integracin y ejecucin de todos ellos en el entorno .NET. Esto se realiza gracias al seguimiento de las especificaciones del CLR por parte de los creadores de lenguajes y herramientas de desarrollo. En los prximos apartados vamos a estudiar una serie de trminos relacionados con el CLR (Common Language Runtime) o Lenguaje comn en tiempo de ejecucin: CLS, CTS e IL. 3.1.1. CLS o Common Language Specification Esta Especificacin Comn de Lenguajes se conoce como CLS (Common Language Specification) y consiste en un conjunto de caractersticas comunes que deben cumplir todos los lenguajes de la plataforma, para poder integrarse entre s. Esta integracin se refiere a que, por ejemplo, es posible escribir una clase en C# y heredar de dicha clase desde VB.NET. Esto se produce gracias a que el entorno de ejecucin es comn y el cdigo compilado no pasa directamente a cdigo ejecutable puro, sino a un cdigo intermedio (como veremos en el apartado de IL). Por ello, podemos decir que la plataforma .NET tiene soporte multi-lenguaje. Algunos de los lenguajes soportados actualmente son: C#, Visual Basic .NET, Delphi (Object Pascal), C++, C, J#, Perl, Python, Fortran, Ruby, Cobol y PowerBuilder. 3.1.2. CTS o Common Type System Estas siglas corresponden a Common Type System o Sistema Comn de Tipos. Es el mecanismo del CLR que permite definir el modo en que los tipos sern creados y manipulados por el entorno de ejecucin de .NET Framework. As, todos los lenguajes pueden trabajar basndose en una serie de especificaciones de datos que hacen posible el intercambio de informacin y trabajo con las libreras bsicas de la plataforma .NET.
Introduccin a .NET
3.1.3. IL, MSIL o Microsoft Intermediate Lenguaje Es un lenguaje parecido al bytecode de Java, hacia el cual cualquier compilador integrado con Microsoft .NET (c#, VisalBasic, etc.) deber compilar su cdigo fuente, ya que es el nico entendible por el CLR. La siguiente figura muestra un diagrama con el proceso de generacin de lenguaje intermedio a partir del cdigo fuente:
Cdigo IL
HW y SO
Lo que hace posible que todos los lenguajes usados en .NET puedan compilarse a un lenguaje unificado (IL) es que cumplen con una especificacin comn (CLS) y con un sistema comn de tipos (CTS).
Introduccin a .NET
El cdigo auxiliar generado se compila a continuacin en cdigo nativo y se optimiza para la arquitectura de hardware concreta en la que se ejecuta, utilizando los servicios de compilacin JIT (Just In Time) de CLR. En resumen, el JIT es otro elemento de .NET Framework que se encarga de convertir el cdigo MSIL en cdigo de nuestro sistema operativo. En definitiva, este cdigo es independiente de la plataforma y del lenguaje que lo haya originado y es un lenguaje intermedio comn a todos los sistemas operativos que soporten .NET Framework. 3.2. BIBLIOTECA DE CLASES .NET FRAMEWORK Las bibliotecas de clases proporcionan la base constitutiva y fundamental para cualquier aplicacin que se desarrolle. Es un componente de .NET Framework que incluye clases, interfaces y tipos de valores que proporcionan acceso a variadas funciones del sistema como: Representar tipos de datos base y excepciones. Encapsular estructuras de datos. Realizar E/S. Obtener acceso a informacin sobre tipos cargados. Control y comprobacin de seguridad de .NET Framework. Proporcionar: acceso a datos, interfaz grfica para el usuario (GUI).
Los tipos en .NET Framework son la base para crear aplicaciones, componentes y controles de .NET. Dichos tipos utilizan un esquema sintctico de punto lo que revela la presencia de una jerarqua (por ejemplo, en System.IO donde System es un espacio de nombres superior en la jerarqua a System.IO). Este esquema agrupa tipos relacionados en espacios de nombres o namespaces que evita ambigedades y hace ms fcil buscar y hacer referencia a cada uno de ellos. Los espacios de nombres ms usados son: (ver pgina siguiente).
Introduccin a .NET
ESPACIO DE NOMBRES
Tipos de uso muy frecuente como: los tipos bsicos, tablas, System excepciones, fechas, nmeros aleatorios, recolector de basura, entrada/salida en consola, etc. Colecciones de datos de uso comn como: pilas, colas, listas, diccionarios, etc.
System.Collections
System.Data
Manipulacin
de
bases
de
datos.
Forman
la
denominada
arquitectura ADO.NET.
System.IO
System.Net
System.Reflection
System.Runtime.Remoting
System.Security
System.Threading
Manipulacin de hilos.
System.Web.UI.WebControls
System.XML
System.Linq
Consultar archivos XML, bases de datos relacionales, objetos .NET y/u otro tipo de estructura de datos.
Introduccin a .NET
En resumen, se trata de una coleccin orientada a objetos de tipos reutilizables que se emplean para desarrollar aplicaciones nuevas y de distinta naturaleza: aplicaciones clsicas de interfaz de usuario, de lnea de comandos, aplicaciones basadas en Web Forms, servicios web, servicios Windows, aplicaciones de Windows Presentation Foundation, etc. 3.3. LO NUEVO DE .NET FRAMEWORK 3.0 Y 3.5 En los primeros aos de desarrollo de aplicaciones Windows, todas las aplicaciones estaban escritas sobre la Interfaz de Programacin de Aplicaciones (API) de Windows en C o C++. Cuando apareci Visual Basic y posteriormente Internet, los programadores deban especializarse en el desarrollo de aplicaciones C, C++ (MFC/ATL), aplicaciones Visual Basic o aplicaciones Active Server Page (ASP). Con .NET Framework se puede desarrollar cualquier tipo de aplicacin. An as, qu ganamos? La respuesta es un modelo de programacin ms unificado, la mejora de la seguridad y una nueva forma de escribir potentes aplicaciones web completas.
MFC/ATL
Basado en estndares
Windows API
RAD Composicin Delegacin
ASP
Web Estndar en HTML
Extensible
En los siguientes apartados, haremos un repaso por alguna de las nuevas funcionalidades y caractersticas que fueron incluidas en las versiones posteriores a la 2.0 del Framework y que se utilizan actualmente.
10
Introduccin a .NET
3.3.1. WPF o Windows Presentation Foundation Windows Presentation Foundation representa a la nueva generacin de aplicaciones cliente de Windows. Se caracteriza por un estilo de presentacin de ventanas muy llamativo y novedoso para el usuario desde el punto de vista visual. Algunos ejemplos de ellos son: Yahoo Messenger (http://messenger.yahoo.com/platform/win) o la aplicacin de ejemplo para atencin sanitaria: Contoso Healthcare Sample Application (http://windowsclient.net/downloads/folders/wpfsamples/entry3754.aspx) que se muestra en la ilustracin siguiente:
3.3.2. WCF o Windows Communication Foundation Es un conjunto de tecnologas orientadas al desarrollo de sistemas interconectados o distribuidos y al desarrollo de aplicaciones basadas en arquitecturas orientadas a servicios. WCF engloba una gran variedad de funcionalidades de sistemas distribuidos que abarca transportes, mensajera, codificacin, etc. Adems, puede ejecutarse en una mquina local, una LAN o sobre Internet. De forma predeterminada se incluye en Windows Vista.
11
Introduccin a .NET
3.3.3. WWF o Windows Workflow Foundation Se trata del nuevo componente del Framework destinado a desarrollos empresariales relacionados con procesos de negocios. Es una tecnologa que nos permite definir e implementar flujos de trabajo que controlen el buen comportamiento y operacin de nuestras aplicaciones de una manera ms sencilla. Las empresas evolucionan y necesitan continuamente adaptar sus sistemas a las nuevas necesidades. Con WWF se evita que los cambios y mejoras en las aplicaciones desemboquen en procesos demasiado complejos. 3.3.4. CardSpace Se trata de un cliente de un servicio de identificacin digital para servicios on-line muy seguro y simple. De hecho, nos brinda la posibilidad de iniciar sesin en los sitios web compatibles sin tener que dar nuestro nombre de usuario y contrasea. CardSpace nos posibilita crear tarjetas de identificacin basadas en XML con las que podemos identificarnos en aquellos servicios que admitan esta tecnologa. En suma, Microsoft proporciona a los usuarios la capacidad de crear y administrar sus tarjetas de informacin y de tener acceso a ellas. 3.3.5. LINQ o Lenguaje-Integrated Query Es una nueva caracterstica de .NET Framework 3.5 y Visual Studio 2008 que incorpora capacidades de consulta a la sintaxis de C# y Visual Basic. .NET Framework 3.5 incluye ensamblados de proveedor de LINQ que habilitan su uso para realizar consultas sobre bases de datos de SQL Server, conjuntos de datos de ADO.NET, ficheros XML y tambin sobre colecciones de .NET Framework. 3.3.6. ASP.NET AJAX AJAX o Asynchronous JavaScript And Xml (JavaScript asncrono y XML) es una tecnologa de desarrollo web para crear aplicaciones interactivas o RIA (Rich Internet Applications). Estas aplicaciones se ejecutan en el cliente mientras se mantiene una comunicacin asncrona con el servidor en segundo plano.
12
Introduccin a .NET
AJAX est basado en estndares abiertos lo que hace que sea una tcnica admitida por mltiples plataformas utilizable en muchos navegadores. As pues, .NET Framework 3.5 incorpora mejoras en las caractersticas de ASP.NET y Visual Web Developer, siendo el avance ms significativo la compatibilidad con el desarrollo de sitios web habilitados para AJAX. 3.3.7. ADO.NET Entity Framework Entity Framework es un conjunto de tecnologas de ADO.NET que ha sido diseado para aplicaciones centradas en datos y que proporciona una plataforma para la programacin con datos que eleva el nivel de abstraccin del nivel lgico relacional al nivel conceptual. Entity Framework admite cdigo que es independiente de cualquier motor de
almacenamiento de datos. Asimismo, permite trabajar con datos en forma de objetos, por ejemplo, con empleados y ventas, sin tener que pensar en las tablas ni en las columnas que almacenan los datos.
13
Introduccin a .NET
Para desarrollar aplicaciones ASP.NET necesitamos como mnimo: un sistema operativo de la familia Windows compatible con dichas aplicaciones, MDAC, Windows Installer version 3.0 y el paquete Microsoft .NET Framework SDK (Software Development Kit). Tambin se pueden desarrollar aplicaciones ASP.NET en otros sistemas operativos con .NET. Es recomendable disponer de la aplicacin Visual Studio .NET, que es un entorno de desarrollo para la plataforma .NET. Aunque no es imprescindible, nuestras pginas ASP.NET podemos escribirlas en cualquier editor de textos. ASP.NET es un subconjunto de la tecnologa .NET de Microsoft, en concreto, la parte relativa a la programacin web. El paquete .NET tambin incluye las clases necesarias para soportar las aplicaciones tradicionales de Windows, las denominadas aplicaciones Windows Forms. La plataforma .NET tiene soporte multi-lenguaje. Algunos de los lenguajes soportados actualmente son: C#, Visual Basic .NET, Delphi (Object Pascal), C++, C, J#, Perl, Python, Fortran, Ruby, Cobol y PowerBuilder. Las mejoras incluidas en el Framework tienen como objetivo una mayor abstraccin desde el punto de vista del programador as como de los datos relacionales, independencia del origen de los datos, interfaces de usuario ms vistosas, etc. Basar la comunicacin en estndares para asegurar que el cdigo de .NET Framework se pueda integrar con otros tipos de cdigo y ofrecer al programador rutinas entre tipos de aplicaciones muy diferentes, como las basadas en Windows o en el Web, es el objetivo de Microsoft con la integracin de nuevos componentes y mejora de sus caractersticas. El CLR es la base del sistema Microsoft .NET. Este motor hace que sea posible el desarrollo basado en mltiples lenguajes (tienen que cumplir una especificacin comn, CLS), y la integracin y ejecucin de todos ellos en el entorno .NET -esta integracin es posible gracias al sistema comn de tipos, CTS-. gracias al proyecto Mono (http://www.monoproject.com/Main_Page) que es un grupo de herramientas libres compatible
recuerde_
14
ndice_
formacin digital
1. INTRODUCCIN A LA PROGRAMACIN ORIENTADA A OBJETOS (POO) ..............................................................................................3 2. OBJETOS Y CLASES...........................................................................3 3. CARACTERSTICAS DE LOS SISTEMAS ORIENTACIN A OBJETOS (OO) ................................................................................................4 3.1. ENCAPSULACIN .....................................................................4 3.2. ABSTRACCIN .........................................................................5 3.3. HERENCIA................................................................................6 3.4. POLIMORFISMO .......................................................................8 4. MENSAJES Y MTODOS. SOBRECARGA ..............................................8 4.1. MENSAJES................................................................................8 4.2. MTODOS.................................................................................9 4.3. SOBRECARGA ...........................................................................9 5. MODELO DE OBJETOS Y RELACIONES ENTRE CLASES ......................10 6. VENTAJAS E INCONVENIENTES DE LA POO .....................................11
2. OBJETOS Y CLASES El objeto es el concepto principal sobre el cual se fundamenta la tecnologa orientada a objetos. Un objeto puede ser visto como: Una entidad que posee un conjunto de atributos y que es capaz de realizar una serie de acciones. Esto es lo que define al objeto. Una representacin o modelizacin de un objeto real perteneciente a nuestro mundo.
Podemos tener un objeto bicicleta que represente a una bicicleta dentro de nuestra realidad, o bien un objeto factura, automvil o persona.
Estos objetos son casos particulares de entidades llamadas clases en donde se definen las caractersticas comunes a tales objetos.
Ejemplo: Del objeto automvil podemos mencionar como atributos: el modelo, la marca, el color, el nmero de matrcula, nmero de bastidor, entre otros. Algunas acciones que es capaz de realizar un automvil son: frenar, acelerar y cambiar la velocidad. Este objeto automvil es una instancia particular de la clase automvil.
Siguiendo con el mismo ejemplo, nuestro automvil es una instancia de la clase de objetos denominada automviles. Esta clase tiene algunos estados (marcha actual, nmero de marchas, color, potencia...) y comportamiento (frenar, girar, encender luces...) en comn. Sin embargo, el estado de cada objeto automvil es independiente y puede ser diferente al del resto de objetos automvil.
Por ltimo, la especificacin comn para todos los objetos del mismo tipo es lo que denominamos clase. Dicho de otro modo, la clase la vamos a utilizar para definir la estructura de un objeto, es decir: estado (atributos) y comportamiento (mtodos). Una vez implementada una clase podremos instanciar (crear) objetos que pertenezcan a esa clase. Asimismo, utilizaremos la misma clase para crear distintos objetos.
3. CARACTERSTICAS DE LOS SISTEMAS ORIENTACIN A OBJETOS (OO) 3.1. ENCAPSULACIN Se trata de la tcnica de ocultar la implementacin interna de un objeto, es decir, cmo est construido y de qu se compone.
Cuando necesitemos indicarle al objeto automvil que acelere, no nos interesa conocer cmo realiza el objeto este proceso internamente (a travs de un cambio de marcha, mayor consumo de combustible, etc.) sino nicamente el resultado de acelerar, es decir, el resultado de indicarle que realice dicho comportamiento.
En definitiva, un objeto lo podemos representar como dos circunferencias: una interna que contiene todos los detalles de implementacin (variables y mtodos privados) y que permanece oculta al resto de objetos, y otra circunferencia concntrica externa, que representa lo que el objeto muestra al mundo exterior, la interfaz pblica que permite interactuar con l.
Como conclusin, podemos decir que no es necesario entender la implementacin interna de un objeto para poder utilizarlo. 3.3. HERENCIA Es el mecanismo mediante el cual podemos reutilizar clases ya definidas. As, una vez definida una clase, podemos usarla como base para generar clases ms complicadas o especializadas. Es decir, los mtodos y atributos de una clase pueden transmitirse a las clases que descienden de ella. Como la clase hija puede aadir atributos, mtodos y redefinir los mtodos de la clase padre, podemos ver la herencia como una sucesiva especializacin de las clases. La clase de la que se hereda se denomina clase padre o superclase, y la clase que hereda se denomina clase hija o subclase.
Un turismo y una limusina son distintos tipos de automviles. En una aplicacin orientada a objetos, el turismo y la limusina podran ser subclases de la clase automvil. El turismo y la limusina comparten los atributos velocidad actual, marcha actual, nmero de plazas, etc. definidos en la clase automvil. Igualmente, cada subclase tambin hereda el mismo comportamiento definido en la superclase, por lo que, un turismo y una limusina tambin pueden realizar las acciones (mtodos) definidos en la clase automvil: frenar, cambiar de marcha, girar, etc.
Para verificar que la herencia entre dos clases es correcta, debemos hacernos la pregunta es un tipo de...?.
En nuestro ejemplo tenemos una clase limusina que hereda de la clase automvil. Esta herencia contesta claramente a esta pregunta: una limusina es tambin un automvil?: cierto.
Por otra parte, cada subclase puede definir atributos y mtodos propios para ella que permiten diferenciar a la subclase de su superclase.
Una limusina puede incluir un telfono incorporado, una nevera o una televisin, caractersticas que no tiene un automvil normal.
Adems, las subclases tambin pueden sobrescribir mtodos de la superclase para proporcionar un comportamiento especial.
La clase automvil puede contener un mtodo ObtenerNmeroDeMarchas() que siempre devuelva 5, mientras que un frmula 1 puede tener hasta 7 marchas, por lo que sobrescribira este mtodo para devolver 7 en lugar de 5.
No hay lmite en cuanto al nivel de herencia. Esto da lugar a una jerarqua de clases.
Podramos seguir definiendo nuevas clases que hereden de la clase Turismo, por ejemplo, las clases Monovolumen o Familiar.
La herencia puede ser simple, si la clase hija hereda de una nica clase padre, o mltiple, si hereda de varias clases1. Por ltimo, tambin podemos definir clases abstractas, que son clases que definen comportamientos genricos y en las que algunos mtodos no han sido implementados (son mtodos abstractos). El comportamiento de estos mtodos es totalmente libre para las subclases que hereden de sta y que debern implementar dichos mtodos abstractos para poder ser instanciadas.
Turismo
Limusina
Familiar
Monovolumen
El lenguaje que usaremos en la programacin de las pginas ASP.NET de este manual, C#, soporta
herencia simple.
Por ejemplo, supongamos que tenemos en nuestra aplicacin, una clase Enteros para modelar un nmero entero, y una clase Matrices, para modelar una matriz matemtica. Ambas clases necesitarn saber cmo se suman (cmo se suman dos objetos enteros y cmo lo hacen dos objetos matrices). Podemos definir un mtodo suma() para la clase Enteros y otro mtodo suma() para la clase Matrices (ambas clases comparten el mismo nombre para esa operacin pero la implementacin de estos mtodos ser distinta en cada clase, ya que no es lo mismo sumar enteros que matrices).
4. MENSAJES Y MTODOS. SOBRECARGA 4.1. MENSAJES Los mensajes son el mecanismo mediante el cual dos objetos pueden interactuar, comunicarse entre s. Un objeto solitario generalmente no es muy til. Casi siempre aparece como un componente de un programa mayor o una aplicacin que contiene muchos otros objetos. A travs de la interaccin de esos objetos, conseguimos una funcionalidad mayor. Los objetos interactan y se comunican mediante el envo de mensajes. As, cuando un objeto A quiere que otro objeto B realice una accin (denominado mtodo de la interfaz de B), el objeto A enva un mensaje al objeto B. Por tanto, un mensaje enviado a un objeto representa la invocacin de un determinado mtodo sobre dicho objeto, es decir, la ejecucin de una operacin sobre el objeto. De esta forma, los dos objetos implicados se comunican, ya que la ejecucin de ese mtodo devolver el estado del objeto invocado o lo modificar (cambiar su estado).
En nuestro ejemplo, el objeto automvil es capaz de realizar la accin de cambiar de marcha, pero necesita de otro objeto (por ejemplo, un objeto persona) que interacte con l, que le indique la accin a realizar (tambin podr frenar, acelerar, etc.), y adems necesitar recibir la marcha a la que deseamos cambiar.
Por tanto, para interactuar dos objetos se necesita enviar un mensaje que debe especificar: El objeto al que vamos a enviar el mensaje. El nombre del mtodo (accin o comportamiento que queremos que realice). Los parmetros necesarios para el mtodo en cuestin.
El objeto automvil. Cambiar de marcha en nuestro automvil, etc. La marcha a la que deseamos cambiar.
Como ya hemos comentado anteriormente, los mtodos son las acciones que se pueden realizar con los objetos. No obstante, tambin podemos considerar un mtodo como la implementacin de un mensaje. Dentro de un objeto existen mtodos de uso interno (ocultos o privados), y mtodos pblicos, que constituyen la interfaz del objeto con el resto de objetos con quienes puede interaccionar. Cuando un objeto le enva un mensaje a otro, se produce la llamada o invocacin de un mtodo de dicho objeto. Por otra parte, los mtodos consultan o modifican el estado de un objeto. Son funciones dentro de un objeto y, como tales, pueden retornar un valor (informacin sobre el estado del objeto), o realizar una accin sobre el estado del mismo. 4.3. SOBRECARGA Se trata de otra de las tcnicas usadas en la POO que hace referencia a la posibilidad de tener en una misma clase mtodos con el mismo nombre pero que difieren en el tipo de los parmetros que reciben, en el nmero de ellos o bien en el tipo y nmero de parmetros.
Por ejemplo, podemos tener en la clase Matriz dos mtodos sumar(), uno de ellos recibira un entero para sumar a la matriz y el otro mtodo sumar(), podra recibir otro objeto matriz. El primer mtodo implementa la suma matemtica entre un entero y una matriz, y el segundo, la suma de matrices.
5. MODELO DE OBJETOS Y RELACIONES ENTRE CLASES Una vez definido e identificado el problema que deseamos solucionar en nuestra aplicacin, debemos realizar una representacin lgica de los objetos que forman parte del problema en el mundo real y utilizar en nuestro programa estos objetos computacionales (objetos dentro de nuestro cdigo), y las relaciones existentes entre dichos objetos, todo ello para que nuestra aplicacin funcione adecuadamente. Por tanto, debemos aplicar los principios de la POO que hemos introducido en los apartados anteriores: abstraccin, encapsulacin, herencia y polimorfismo. Cada clase en nuestra aplicacin estar especializada en una funcin o tarea especfica. No obstante, para ofrecer una mayor funcionalidad y realizar tareas ms complejas es necesario que exista una relacin entre distintas clases, es decir, una forma de interaccin o comunicacin entre ellas. As, una clase puede relacionarse con otra a travs de: Una relacin de composicin: una clase est compuesta de otras clases. Esto ocurre cuando los atributos de una clase se implementan como objetos de otra clase.
La clase automvil tiene atributos como son la clase puerta, motor, rueda, chasis, etc.
Una relacin de uso: una clase se relaciona con otra a travs de los mensajes que le enva, pasndole una instancia de una clase como parmetro del mtodo invocado por el mensaje.
Al invocar al mtodo suma de una matriz, le pasamos un objeto entero para que lo sume a un objeto matriz.
Una relacin de herencia: como ya adelantamos, consiste en que una clase hereda de una clase padre o superclase, obteniendo as toda la funcionalidad ofrecida por la clase padre y pudiendo aadir nuevas funcionalidades. Con esta forma de relacin conseguimos una mayor reutilizacin del cdigo y una mayor especializacin a travs de la jerarqua de clases. Las clases iniciales en esta jerarqua son ms generales y, a medida que profundizamos en la jerarqua de la descendencia, las clases hijas estn ms especializadas, implementan tareas ms concretas.
10
11
recuerde_
encapsulamiento, la abstraccin, la herencia y el polimorfismo. El encapsulamiento separa la interfaz de la implementacin ocultando los datos dentro del objeto y permitiendo el acceso a los datos de dicho objeto a travs de funciones miembro (mtodos). Las subclases heredan las funciones miembro y las variables de sus clases padre, haciendo sencilla la reutilizacin de las funcionalidades de las clases padre. El polimorfismo permite crear cdigo genrico y reutilizable que podr funcionar con una amplia gama de clases diferentes.
12
Fundamentos de programacin en C#
ndice_
formacin digital
1. INTRODUCCIN ...............................................................................3 2. MI PRIMERA PGINA EN ASP.NET ....................................................4 3. SINTAXIS DE C#. DECLARACIN DE VARIABLES Y COMENTARIOS ....9 3.1. TIPOS PREDEFINIDOS ...........................................................10 3.2. TIPOS DEFINIDOS POR EL USUARIO ......................................11 3.3. DECLARACIN DE VARIABLES ................................................12 3.4. COMENTARIOS .......................................................................12 4. SENTENCIAS CONDICIONALES, BUCLES Y OPERADORES.................13 4.1. SENTENCIAS CONDICIONALES ...............................................13 4.2. BUCLES ..................................................................................14 4.3. OPERADORES .........................................................................16 5. DEFINICIN E INSTANCIACIN DE CLASES....................................18 5.1. DEFINICIN DE UNA CLASE ...................................................18 5.2. INSTANCIACIN DE UNA CLASE .............................................19 6. MANEJADORES DE EVENTOS...........................................................21 7. TRATAMIENTO DE ERRORES ...........................................................22 8. MODIFICADORES ...........................................................................23 8.1. MODIFICADORES DE ACCESO .................................................24 8.2. OTROS MODIFICADORES........................................................24
Fundamentos de programacin en C#
1. INTRODUCCIN En este captulo realizaremos un recorrido por los fundamentos de C#. Utilizaremos dicho lenguaje a lo largo del manual por ser un lenguaje de ltima generacin, pensado para los desarrolladores web y que se adapta mejor a los estndares de C++ y Java. Antes vamos a realizar una pgina ASP.NET que muestre el famoso mensaje Hola Mundo cuando pulsemos sobre el botn incluido en la pgina, ello nos servir para ir familiarizndonos con ASP.NET y el lenguaje. Convenciones tipogrficas para el cdigo fuente: A lo largo de este manual haremos uso de programas de ejemplo, escribiendo el cdigo fuente con una tipografa determinada por la naturaleza de cada palabra: En rojo oscuro y tipo de letra Courier:
Los nombres de los controles HTML y controles web (p.ej. <input o <asp:Label). Las directivas (p.ej. @ Page o @ Import). Las etiquetas HTML (p.ej. <html>, <head>, <body>, etc.). Cadenas de caracteres en C# (p.ej. etiqueta.Text=Fecha/Hora actuales).
Las propiedades de controles HTML y controles web (p.ej. <input type=button o <asp:Label id=etiqueta).
Las palabras reservadas del lenguaje C# (p.ej. public, class, int, true).
El valor de las propiedades de controles HTML y controles Web (p.ej. <input type=button o <asp:Label id=etiqueta).
Fundamentos de programacin en C#
En azul claro y tipo de letra Courier:
Los
nombres
de
las
clases
(p.ej.
DateTime
fecha
new
DateTime
estilo.BorderColor=Color.Green).
2. MI PRIMERA PGINA EN ASP.NET Vamos a realizar una prctica muy simple cuyo objetivo ser introducirnos en la creacin de un nuevo sitio web desde cero usando Visual Web Developer 2008 Express. Para ello, creamos un nuevo sitio web, le damos un nombre (p.ej. WebHolaMundo) y establecemos Visual C# como lenguaje:
Microsoft recomienda que para realizar la programacin dinmica se use el modelo codebehind, (cdigo por detrs o cdigo oculto). Esta tcnica de separacin de cdigo, muy utilizada en la plataforma ASP.NET, consiste en separar la interfaz de usuario de la lgica de la aplicacin. La lgica se encuentra en el archivo .cs (la definicin de la clase con sus mtodos y atributos) y la interfaz de usuario (la presentacin de la aplicacin) en el archivo .aspx.
Fundamentos de programacin en C#
Comenzaremos incluyendo un Label y un Button en la capa de presentacin
(holamundo.aspx). Encontraremos los controles mencionados en el cuadro de herramientas que tenemos a la izquierda, slo tendremos que arrastrarlos para insertarlos en nuestra pgina:
holamundo.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="holamundo.aspx.cs" Inherits="_Default" %> <html> <head id="Head1" runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="etiqueta" runat="server" Text="" /> <asp:Button ID="Button1" runat="server" onclick="pulsado" Text="Plsame"/> </div> </form> </body> </html>
Fundamentos de programacin en C#
En el fichero holamundo.aspx.cs introducimos el siguiente cdigo
public partial class _Default : System.Web.UI.Page { protected void Page_Load(Object sender, EventArgs e) { } protected void pulsado(Object sender, EventArgs e) { etiqueta.Style["font-size"] = "XX-Large"; etiqueta.Text = "Hola Mundo!"; } }
Para poder visualizar esta pgina ASP.NET, debemos colocarlo en un directorio de publicacin en Internet (que adems posea el permiso de ejecucin de secuencias de comandos) y ejecutar la pgina a travs del servidor web (por ejemplo, escribiendo en nuestro navegador http://localhost/holamundo.aspx). Si no, el entorno de Visual Web Developer 2008 Express tambin nos permite visualizar la pgina en nuestro navegador. Para ello, usamos la opcin Ver en el Explorador como muestra la siguiente captura:
Fundamentos de programacin en C#
Al hacerlo, aparecer una pgina vaca que presenta nicamente un botn con el texto Plsame. Si hacemos clic sobre el botn, se mostrar el mensaje Hola Mundo! como podemos ver en la imagen:
Hemos de saber que: (<%@ %>) es un bloque de directivas que utiliza nuestro holamundo.aspx para inicializar una serie de variables de configuracin del sitio web. El atributo Inherits se emplea para indicar la clase que se est usando. El atributo CodeFile sirve para indicar el archivo que contiene el cdigo subyacente.
En el fichero holamundo.aspx nos encontramos con la definicin de un web form (formulario web), que ser el que va a contener la etiqueta y el botn. Podemos ver que las sintaxis es muy similar a la utilizada para definir un formulario tpico HTML, la diferencia est en la inclusin de la propiedad runat que posee el valor server, para indicar que se trata de un formulario de servidor.
Fundamentos de programacin en C#
Por otra parte, dentro del formulario se encuentran dos controles web que pertenecen a las clases Label y Button. Recordemos que estos dos controles web son los objetos que utilizaremos en nuestro cdigo, siendo cada uno de ellos una instancia de su clase correspondiente. El objeto Label representa a la etiqueta que mostrar el mensaje en la pgina. El objeto Button es el botn que invocar al mtodo pulsado() cuando el usuario haga clic sobre l. Estos dos controles tienen un atributo id, que es el nombre a travs del cual podremos acceder a sus propiedades. As, en el mtodo pulsado utilizamos el identificador etiqueta para acceder al objeto Label y modificar su propiedad Text, que inicialmente no tena valor. El control Button posee la propiedad onclick, en la que podemos indicar el mtodo responsable de tratar el evento de pulsacin. Mediante los web forms de ASP.NET, tenemos acceso a todos los controles, ya que forman parte de la pgina y se comportan como propiedades de la misma. En holamundo.aspx.cs tenemos el mtodo void pulsado(object sender, EventArgs e), que se ejecutar cuando el usuario pulse el botn que pertenece al web form. Este mtodo trata el evento de pulsacin del botn (onclick=pulsado en la definicin del control <asp:button> del fichero holamundo.aspx). Este mtodo no devuelve ningn valor (void) y recibe dos parmetros que ofrecen informacin acerca del evento que se ha producido (aunque en este ejemplo no usamos dichos parmetros porque no es necesario para mostrar nuestro mensaje). Dentro del mtodo accedemos al estilo de la etiqueta definida (<asp:label id=etiqueta>), para darle un tamao determinado y, a continuacin, establecemos el valor de la propiedad Text de la etiqueta con el mensaje Hola Mundo!. Por ltimo, podemos observar que el delimitador de sentencias en C# es el punto y coma (;), y el de bloques de cdigo las llaves ({}).
Fundamentos de programacin en C#
3. SINTAXIS DE C#. DECLARACIN DE VARIABLES Y COMENTARIOS El lenguaje C# presenta una serie de palabras bsicas reservadas para el propio lenguaje. Por este motivo, no podremos usarlas en nuestros nombres de clases, variables, propiedades, funciones o mtodos. Estas palabras reservadas son:
abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum
event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace
new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string
struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual volatile while
Por otra parte, C# se asimila bastante a lenguajes como C++ o Java. Distingue entre maysculas y minsculas. Por lo tanto, debemos tener cuidado al escribir nuestro cdigo. Por ejemplo, si queremos declarar una variable de tipo long, debemos escribir long y no Long o LONG (para el compilador del lenguaje estas tres palabras son distintas). Asimismo, por convencin: Los nombres de mtodos y las clases tienen la primera letra de cada una de sus partes en maysculas. As, por ejemplo, tenemos la clase DropDownList. Los tipos simples del lenguaje C# se escriben con todas sus letras en minsculas. Todas las instrucciones en C# acaban con un punto y coma ;.
Fundamentos de programacin en C#
El separador de bloques de cdigo, como ya hemos mencionado, son las llaves ({}).
3.1. TIPOS PREDEFINIDOS C# provee de 15 tipos predefinidos, los cuales se muestran en la figura de abajo y en una lista detallada seguidamente. Del total, 13 son tipos simples y 2 no simples. Los nombres de todos los tipos predefinidos lo constituyen letras en minsculas. Los tipos predefinidos simples incluyen 11 tipos numricos: Ocho tipos enteros con distintas longitudes, con signo y sin signo. Tipos de punto flotante -float y double-. Decimales de alta precisin llamados decimal. A diferencia de los tipos float y double, el tipo decimal puede representar nmeros fraccionarios decimales exactos. Se usa frecuentemente para clculos monetarios. Los tipos predefinidos simples no numricos son: Un tipo carcter, llamado char. Un tipo bool que representa valores booleanos y toman como valor true o false.
Por otra parte, los dos tipos no simples son los siguientes: El tipo string, que es un array (vector o matriz) de caracteres. El tipo object, que es el tipo en el cual est basado el resto de los tipos.
10
Fundamentos de programacin en C#
Tipos predefinidos
Simple
object
string
Numrico
Entero
Punto flotante
decimal
float
double
3.2. TIPOS DEFINIDOS POR EL USUARIO Adems de los 15 tipos predefinidos de los que nos provee C#, tambin podemos crear nuestros propios tipos. Hay una variedad de tipos que podemos crear. Son los siguientes: Tipo class. Tipo struct. Tipo enum. Tipo delegate. Tipo interface.
Por otra parte, los tipos son creados usando una declaracin de tipo en la que se incluye la siguiente informacin: La variedad del tipo que estamos creando. El nombre del nuevo tipo. Una declaracin (nombre y especificacin) de cada uno de los miembros del tipo excepto para los tipos array y delegate, los cuales no tienen un nombre miembro-.
11
Fundamentos de programacin en C#
Por ltimo, una vez hemos declarado un tipo, podemos crear y usar objetos del tipo como si fueran tipos predefinidos (como un entero o un carcter). 3.3. DECLARACIN DE VARIABLES Para declarar una variable (tanto si es una referencia a un objeto o a un tipo simple), primero indicamos el tipo de la variable, es decir, el tipo simple o clase, y a continuacin el nombre de la variable. No obstante, si la variable posee algn modificador de acceso (como private o public) o de otro tipo, este modificador debe aparecer antes del tipo de la variable (veremos los modificadores al final del captulo). Ejemplo:
// Cdigo comentado de lnea simple /* Cdigo comentado que ocupa varias lneas. Siguiente lnea de comentario. El cdigo comentado no se ejecutar.
*/
Esto resulta til para despus entender mejor el cdigo. Si trabajamos en grupo nos ser ms accesible y entendible el cdigo que tenga comentarios aclaratorios. Tambin nos ayudar en el caso en que tengamos que abordar un cdigo que escribimos nosotros mismos y que hemos olvidado con el tiempo. Por lo tanto, es una prctica casi obligatoria, adems de una buena costumbre, aclarar el cdigo que escribamos con comentarios.
12
Fundamentos de programacin en C#
4. SENTENCIAS CONDICIONALES, BUCLES Y OPERADORES 4.1. SENTENCIAS CONDICIONALES Condicional if else. Su sintaxis es la siguiente (la inclusin de la sentencia else es opcional, por eso va entre corchetes):
if (expresin) { //cdigo para expresin "verdadera"; }[else { //cdigo para expresin "falsa"; }] //Veamos un ejemplo de su uso: protected void pulsado(Object sender, EventArgs e) { if (etiqueta1.Text.Equals(etiqueta2.Text)) { Response.Write("Las etiquetas son iguales"); } else { Response.Write("Las etiquetas no son iguales"); } } Condicional mltiple switch
switch (expresin) { case expresin_constante1: //cdigo break; case expresin_constante2: //cdigo break; ... default: //cdigo break; }
13
Fundamentos de programacin en C#
Veamos un ejemplo de su uso:
protected void pulsado(Object sender, EventArgs e) { string respuesta = TextBox1.Text; switch (respuesta) { case "1": Response.Write ("Ha elegido la respuesta 1"); break; case "2": Response.Write ("Ha elegido la respuesta 2"); break; case "3": Response.Write ("Ha elegido la respuesta 3"); break; default: Response.Write ("Debe elegir una de estas respuestas: 1, 2, 3"); break; } }
4.2. BUCLES Estos bucles se utilizan cuando queremos repetir la ejecucin de unas sentencias un nmero indefinido de veces, siempre que se cumpla una condicin. Bucle while. En este bucle se evala primero la condicin y si se cumple, se repetir la ejecucin hasta que la condicin deje de hacerlo.
while (expresin) { //cdigo } //Ejemplo de su uso: protected void pulsado(Object sender, EventArgs e) { int contador= 0; while(contador <= 10) { Response.Write ( contador + "<br>"); contador++; } }
Bucle do while. Se utiliza generalmente cuando no sabemos cuantas veces se habr de ejecutar el bucle, igual que el bucle while, con la diferencia de que sabemos seguro que el bucle por lo menos se ejecutar una vez ya que la condicin se evala al final.
14
Fundamentos de programacin en C#
Ejemplo de su uso:
protected void pulsado(Object sender, EventArgs e) { int contador = 7; do{ Response.Write ("Quedan " + contador + "segundos para el final<br>"); System.Threading.Thread.Sleep(1000); contador = contador - 1; } while (contador > 0); }
Bucle for. Es un bucle que permite ejecutar un conjunto de sentencias un nmero determinado de veces. Para ello, se fija el valor inicial al principio del mismo y, a continuacin, la condicin que debe cumplir. Se ha de definir tambin el incremento que ir tomando la variable del bucle, la cual puede ser utilizada en las funciones que incorpora. Su expresin general sera como la que sigue:
Ejemplo de uso:
private void Pulsado(object sender, EventArgs e) { for (int contador = 7; contador >0; contador--) { Response.Write("Quedan " + contador + "segundos para el final<br>"); System.Threading.Thread.Sleep(1000); } }
Bucle foreach in. Este bucle suele utilizarse para recorrer los elementos de un array o de una coleccin y, por tanto, la expresin en este bucle ser el nombre de un array o coleccin.
15
Fundamentos de programacin en C#
Ejemplo de su uso:
protected void pulsado(object sender, EventArgs e) { string [] colores={"rojo","azul","negro","naranja","blanco"}; foreach(string color in colores) { Response.Write ( color + "<br>"); } }
4.3. OPERADORES En C#, un operador es un trmino o un smbolo que acepta como entrada una o ms expresiones, denominadas operandos, y devuelve un valor, es decir, es un smbolo formado por uno o ms caracteres que permite realizar una determinada operacin entre uno o ms datos y produce un resultado. En este apartado veremos los principales operadores del lenguaje C#, algunos de los cuales ya hemos usado en los ejemplos anteriores para formar sentencias o expresiones condicionales. Operadores aritmticos:
+ * / % ++ --
Suma. Resta. Multiplicacin. Divisin. Mdulo (resto de la divisin). Operador de incremento. Operador de decremento.
16
Fundamentos de programacin en C#
Operadores lgicos:
AND: Devuelve true si las dos expresiones son verdaderas. OR: Devuelve true si una de las dos expresiones es verdadera. XOR: Devuelve true si slo una de las expresiones es verdadera. NOT: Cambia una expresin de verdadera a falsa y viceversa. Similar a & pero, en el caso de que no se cumpla alguna expresin, el resto de las comparaciones (tomndolas de izquierda a derecha) no se evaluarn y devolver false. Similar a |, pero en el caso de que se cumpla alguna expresin, el resto de las comparaciones (tomndolas de izquierda a derecha) no se evaluarn y devolver true. Literal y operador que devuelve el valor booleano de verdadero. Literal y operador que devuelve el valor booleano de falso.
Operadores de asignacin: se utilizan para asignar un valor nuevo a una variable o propiedad. Hay que tener en cuenta que utilizar operadores compuestos en expresiones como contador+=1 es equivalente a contador=contador+1.
= ^= *= /= += -= &= %=
Operador bsico de asignacin. Operador de potencia. Operador de multiplicacin. Operador de divisin. Operador de suma. Operador de resta. Operador de concatenacin de cadenas. Operador de mdulo.
Operadores de comparacin:
Igual que. Distinto que. Mayor que. Menor que. Mayor o igual que. Menor o igual que.
Operadores de concatenacin. Este operador sirve para unir dos cadenas de texto (tipo string) en una sola, y es el operador ms (+).
17
Fundamentos de programacin en C#
Otros operadores:
. [] ?: is sizeof typeof
Acceso a miembros de objetos (propiedades y mtodos). Operador de ndice, para acceder a los distintos elementos de un array. Realiza una operacin condicional en una sola lnea. Su formato es: expresin? Caso-siverdadero: caso-si-falso Se utiliza para ver si un objeto es de un determinado tipo (o es compatible con dicho tipo debido a la herencia). Devuelve el tamao en bytes de un tipo de datos. Devuelve el tipo de un objeto.
5. DEFINICIN E INSTANCIACIN DE CLASES 5.1. DEFINICIN DE UNA CLASE La sintaxis general para declarar una clase en C# es:
using Namespace; namespace NombreDeEspacio { modificadores class NombreDeClase : ClasePadre { //implementacin de la clase } }
Un namespace es una forma de clasificar y organizar clases para evitar conflictos de nombres (podemos tener clases con igual nombre en distintos namespaces). Cada namespace contiene un conjunto de clases relacionadas (como una librera). Incluiremos una sentencia using por cada uno de los espacios con nombre (namespace) que necesitemos. Asimismo, podemos definir nuestra clase dentro de un namespace. Para ello, utilizaremos la palabra clave namespace seguida del nombre que le damos a nuestro espacio con nombre. Por otra parte, entre las llaves del namespace incluimos la declaracin de la clase en la cual aparecen: los modificadores de la clase estamos definiendo.
1
dicha clase), la palabra reservada class y el nombre que hemos elegido para la clase que
18
Fundamentos de programacin en C#
Si nuestra clase hereda de una clase padre (superclase), lo indicaremos poniendo los dos puntos (:) y a continuacin, el nombre de la clase de la que heredamos. Despus, entre las dos llaves escribimos la implementacin de la clase, donde definimos sus propiedades y mtodos. 5.2. INSTANCIACIN DE UNA CLASE Para crear una nueva instancia de una clase (nuestra o de las proporcionadas por el entorno), utilizamos el operador new. Este operador informa al sistema de que queremos crear un nuevo objeto y asignarlo a un nombre de objeto que elegimos. Cuando se utiliza este operador, el sistema llama automticamente al constructor de la clase, donde se inicializan las propiedades de la actual instancia (objeto) que estamos creando. Su sintaxis es la siguiente:
El operador new se utiliza para crear nuevos objetos, no para tipos bsicos como int, long, bool, char, etc. Para estos ltimos es suficiente una declaracin indicando el tipo de la variable, seguido del nombre dado a la variable, por ejemplo:
Por otra parte, el CLR de Microsoft .NET cuenta con un recolector de basura que se encarga de liberar automticamente todos los objetos creados mediante el operador new cuando detecta que el objeto deja de ser utilizado. Veamos un ejemplo de clases. Por un lado, el archivo Vehiculo.cs que contiene una clase denominada Vehiculo, dentro del espacio de nombres aplicacionWeb y, por otro lado, las pginas ASP.NET pagina.aspx y pagina.aspx.cs.
Vehiculo.cs using System; namespace aplicacionWeb { public class Vehiculo { private int n_puertas = 0; private string marca = ; public Vehiculo (int num_puertas, string nombre_marca)
19
Fundamentos de programacin en C#
{ n_puertas = num_puertas; marca = nombre_marca; } public string getMarca() { return marca; } public int getNumeroPuertas() { return n_puertas; } } } pagina.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="pagina.aspx.cs" Inherits="_Default" %> <html> <head id="Head1" runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Button ID="btnMostrar" runat="server" onclick="mostrar" Text="Mostrar Vehculo" /> </div> </form> </body> </html>
pagina.aspx.cs using System; using aplicacionWeb; public partial class _Default : System.Web.UI.Page { protected void Page_Load(Object sender, EventArgs e) { } protected void mostrar(Object sender, EventArgs e) { Vehiculo coche1 = new Vehiculo(5, "Renault"); Response.Write(coche1.getMarca() + "<br>"); Response.Write("El nmero de puertas es: " + coche1.getNumeroPuertas() + "<br>"); } }
20
Fundamentos de programacin en C#
Cuando aadimos una clase nueva al proyecto, Visual Web Developer 2008 Express nos preguntar si queremos guardar el fichero en la carpeta App_Code: Si decimos que s no har falta usar la directiva Assembly puesto que el cdigo fuente se compilar automticamente. La carpeta ser creada automticamente por Visual Studio o Visual Web Developer 2008 Express en el caso de no haber sido creada por el usuario. Por otra parte, hemos insertado un objeto Button cuyo evento onclick ser el desencadenante de la llamada al mtodo mostrar() del fichero pagina.aspx.cs. En este mtodo creamos una nueva instancia de la clase Vehiculo mediante el operador new. Lo inicializamos con 5 puertas y marca Renault (valor para sus propiedades), y una vez que ya tenemos creado nuestro objeto, podemos acceder a sus mtodos miembro disponibles (getMarca() y getNumeroPuertas()). Por ltimo, en la cabecera del fichero pagina.aspx.cs importamos el namespace
aplicacionesWeb con using, para poder hacer referencia a la clase Vehiculo que est contenida en el espacio de nombres mencionado.
6. MANEJADORES DE EVENTOS Se trata de mtodos especiales que se encargan del tratamiento de eventos en el cliente (por ejemplo, pulsar un botn o cambiar la opcin de un desplegable), pero que ejecutan cdigo de servidor. Estos mtodos para el tratamiento de eventos poseen parmetros (recordemos el mtodo pulsado de nuestra primera pgina ASP.NET, que mostraba el mensaje Hola mundo al hacer clic sobre el botn plsame, al comienzo de este captulo): El control que gener el evento (en dicho ejemplo, el botn plsame). Los argumentos adicionales que necesite el mtodo y que normalmente dependern del tipo de evento a tratar.
21
Fundamentos de programacin en C#
La sintaxis general de un mtodo para el tratamiento de eventos es la siguiente:
7. TRATAMIENTO DE ERRORES C# dispone de una serie de sentencias y mecanismos orientados a capturar los errores o situaciones anmalas que puedan ocurrir dentro de nuestros programas, para poder tratarlos de forma adecuada. Este tratamiento se conoce como gestin estructurada de excepciones, que manejamos con las siguientes palabras reservadas: try. Con esta palabra clave definimos la zona de nuestro cdigo que va a ser inspeccionada y tratada bajo la gestin estructurada de excepciones. catch. Con ella definimos el cdigo que debe ejecutarse cuando se produce la excepcin o situacin anmala. Podemos tener mltiples catch para un solo try, ejecutndose aquel catch que tenga el tipo de excepcin u error que se haya producido en la zona del try para esa ejecucin. finally. Define el cdigo que se ejecutar siempre despus de llevarse a cabo el cdigo dentro de una sentencia try, es decir, el cdigo que pongamos en este bloque se ejecutar siempre, independientemente de si se ha producido o no una excepcin. throw. Esta sentencia se utiliza para lanzar2 una excepcin. Debe ir seguida de un objeto que representa la excepcin que se ha producido (debe ser un objeto que hereda de la clase System.Exception).
Lanzar la excepcin significa que dicho error puede propagarse y ser tratado en otro punto de la secuencia de llamadas a mtodos.
22
Fundamentos de programacin en C#
La sintaxis de un bloque try-catch-finally es la siguiente:
try { //cdigo a inspeccionar }catch (tipo de excepcin variable) { //tratamiento de esta excepcin }catch (tipo de excepcin variable) { //tratamiento de esta excepcin } [ ... ] finally { //cdigo que siempre se ejecutar, se produzca o no una excepcin en el //bloque try }
Veamos un ejemplo. En el siguiente cdigo se intenta realizar una operacin matemtica de divisin de un nmero por cero, lo que dentro del entorno de ejecucin causar una excepcin del tipo System.DivideByZeroException, que deriva directamente de la clase System.Exception, y que nos encargaremos de capturar de forma adecuada mediante una sentencia catch para presentar al usuario un mensaje de error controlado.
protected void pulsado(Object sender, EventArgs e) { int numero1 = 50; int numero2 = 0; int resultado; try { resultado = numero1 / numero2; }catch(System.DivideByZeroException error){ Response.Write("Se ha producido un error. No se puede dividir por cero. Excepcion: " + error.Message); } }
8. MODIFICADORES Los modificadores son palabras clave cuya funcin es especificar el mbito o cualidades de nuestras clases, objetos, variables o mtodos.
23
Fundamentos de programacin en C#
8.1. MODIFICADORES DE ACCESO Estos modificadores se encargan de especificar el nivel de accesibilidad de los miembros de las clases (propiedades y mtodos). Disponemos de los siguientes: public. Informa al entorno de que la propiedad o mtodo es accesible desde cualquier clase o parte del programa. Este modificador otorga el mximo nivel de accesibilidad. private. Con este modificador informamos al sistema de que la propiedad o mtodo nicamente es accesible desde los mtodos internos de la misma clase (es decir, slo podemos acceder a un miembro private desde la propia clase, no desde otras clases, ni siquiera desde las subclases que hereden de la clase que contiene los miembros private). protected. Los miembros protected son accesibles desde la propia clase donde se encuentran, y desde las clases derivadas de ella. internal. Los miembros que llevan este modificador slo son accesibles desde los archivos del mismo proyecto. 8.2. OTROS MODIFICADORES El lenguaje C# dispone de otra serie de modificadores, aplicables a clases o miembros de clase: abstract. Las clases abstractas son aquellas que no tienen la implementacin de todos sus mtodos, sino que contienen algn mtodo no implementado. Las clases abstractas no pueden ser instanciadas directamente (mediante el operador new), sino que sirven como clases base a otras clases, donde se proporcionar la implementacin de esos mtodos no definidos. const. Este modificador indica que la propiedad de clase o variable es una constante, es decir, tiene carcter de slo lectura y su valor no puede modificarse. extern. Este modificador se aplica a un mtodo e indica que la implementacin de dicho mtodo es realizada de forma externa, mediante la inclusin de alguna librera externa a .NET Framework.
24
Fundamentos de programacin en C#
readonly. Este modificador marca a una propiedad como de slo lectura pero puede inicializarse dentro de un constructor de dicha clase. sealed. Es aplicable exclusivamente a las clases y significa que no se pueden heredar. static. Este modificador indica que la propiedad o mtodo de una clase pertenece al propio tipo o clase, es decir, el elemento static no se crea por cada instancia de la clase. Podemos acceder a los miembros estticos a travs de su clase, sin tener que crear un nuevo objeto de esa clase. virtual. Este modificador marca a un mtodo para que las clases derivadas puedan implementarlo. override. Se utiliza para generar una nueva implementacin de una funcin virtual de una clase. Aparece en las clases derivadas de una clase base (abstracta) para implementar funcionalidad especfica a dichas clases derivadas.
25
Fundamentos de programacin en C#
recuerde_
C# es uno de los lenguajes ms utilizados en la plataforma .NET. Se caracteriza por: Es un lenguaje orientado a objetos que permite aplicar los mecanismos propios de la POO, como derivacin, abstraccin o encapsulamiento. Su sintaxis es bastante similar a C++ o Java. Distingue entre maysculas y minsculas. Cuenta con las estructuras tpicas (sentencias condicionales, bucles, operadores, modificadores, etc.). Permite una gestin estructurada de excepciones con la que controlar los errores o las situaciones anmalas que puedan ocurrir durante la ejecucin de nuestra aplicacin. Permite separar la interfaz de usuario de la lgica de la aplicacin (tcnica Code-Behind).
26
ndice_
1. CONCEPTOS DE WEB FORMS.............................................................3 2. LA CLASE PAGE ................................................................................3 2.1. EVENTOS DE LA PGINA ..........................................................3 2.2. PROPIEDADES DE LA CLASE PAGE ............................................6 2.3. MTODOS DE LA CLASE PAGE ...................................................8 3. WEB FORMS ...................................................................................10 4. INTRODUCCIN A LOS CONTROLES DE SERVIDOR DE ASP.NET.......11 5. INTRODUCCIN A LOS CONTROLES HTML.......................................12 5.1. EJEMPLOS CON CONTROLES HTML..........................................15 6. INTRODUCCIN A LOS CONTROLES WEB ........................................20 6.1. EJEMPLOS CON CONTROLES WEB ........................................... 24
formacin digital
2. LA CLASE PAGE Cada vez que pedimos una pgina ASP.NET a un servidor web, es decir, cada vez que un cliente a travs de un navegador web solicita una URL que indica un fichero .ASPX en el servidor, se crea una serie de componentes que constituyen la pgina solicitada y que se compilan en una unidad. Estos componentes pueden ser: el fichero .ASPX solicitado, los controles de la pgina, las clases que contiene el cdigo de la pgina, etc. Los distintos componentes compilados dan lugar a un objeto de la clase
Object.Control.TemplateControl.Page. Esta clase se crea de forma dinmica. Adems, se crear una instancia cada vez que se realice una peticin del fichero .ASPX. Dentro del cdigo de una pgina siempre vamos a tener acceso a la clase Page, pues podemos decir que el objeto instancia de esta clase Page representa a la pgina ASP.NET actual. Este objeto nos sirve como contenedor de todos los componentes que constituyen la pgina y nos permite acceder a sus propiedades, mtodos y eventos. A continuacin, vamos a comentar los principales eventos, propiedades y mtodos que nos ofrece la clase Page: 2.1. EVENTOS DE LA PGINA Cuando se solicita una pgina ASP.NET, se desencadena una serie de eventos de pgina. Estos eventos siempre ocurren en el mismo orden, denominado ciclo de vida de los eventos de pgina. Los eventos de pgina se producen en el siguiente orden a lo largo del ciclo de vida de la pgina: Init: este evento es lanzado cuando la pgina es inicializada. En ese momento, todava no se han creado por completo los distintos controles de la pgina. Este evento es tratado en el mtodo Page_Init.
ejemploEventos.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ejemploEventos.aspx.cs" Inherits="_Default" <html> <head id="Head1" runat="server"> <title>Ejemplo de ejecucin de los eventos en una pgina ASP.NET</title> </head> <body> <form id="form1" runat="server" visible="True"> <asp:Label ID="Label1" runat="server">Eventos de la pgina</asp:Label> </form> </body> </html> %>
La directiva using se utiliza para permitir el uso de tipos en un espacio de nombres, de modo que no sea necesario especificar en la declaracin el namespace del que proviene, como por ejemplo: aplicacionesWeb.vehiculo = new aplicacionesWeb.vehiculo(5, "Renault"). De esta forma, si en el ejemplo anterior tenemos declarado el namespace con la directiva using, podramos escribirlo as: vehiculo = new.vehiculo(5, "Renault"). Al ejecutar este ejemplo veremos una serie de mensajes que ilustran el orden de ejecucin de los distintos eventos que tratamos: (ver pgina siguiente).
2.2. PROPIEDADES DE LA CLASE PAGE Para acceder a una propiedad de la clase Page podemos indicar delante de la propiedad la clase Page o utilizar la propiedad directamente, por ejemplo:
Las propiedades principales de la clase Page son: Application: esta propiedad es una referencia a un objeto de la clase
System.Web.HttpApplicationState. Nos permite almacenar y acceder a informacin compartida y comn a toda la aplicacin web. ClientTarget: es un objeto de la clase String. Nos permite sobrescribir la deteccin automtica de navegador web ofrecida por ASP.NET.
mantenimiento del estado entre distintas llamadas de los controles web de la pgina. Por defecto, su valor es true. IsPostBack: propiedad de tipo Bolean que devuelve true si la pgina actual ya ha sido enviada al servidor en alguna ocasin. Si tiene el valor false significa que es la primera vez que se carga la pgina. Este indicador nos servir para inicializar los controles web y propiedades de la pgina. Request: esta propiedad es una referencia a un objeto de la clase
System.Web.HttpRequest. Esta propiedad nos permite acceder a toda la informacin necesaria de la peticin del protocolo HTTP que ha sido utilizada para solicitar la pgina del servidor web. Cuando esto ocurre, se genera un objeto HttpRequest para tratar con toda la informacin enviada. De este modo, Request representa la peticin de un cliente. Request.UserHostAddress obtiene la ip del host del cliente remoto. Response: esta propiedad es una referencia a un objeto de la clase System.Web. Nos permite manipular la respuesta devuelta al cliente que ha realizado la peticin de la pgina, es decir, este objeto representa la respuesta HTTP que se enva al cliente. Server: este atributo es una referencia a un objeto de la clase System.Web. Entre sus principales funcionalidades est la creacin de componentes existentes en el servidor. En ASP.NET los objetos se crean de distinta manera, importamos el espacio de nombres necesario (para tener acceso a todas sus clases) y a travs del operador new creamos nuevas instancias de objetos. Session: esta propiedad es una referencia a un objeto de la clase
System.Web.SessionState.HttpSessionState. Nos permite almacenar informacin entre diferentes pginas incluidas en una misma aplicacin ASP.NET para cada usuario. User: esta propiedad devuelve informacin sobre el usuario que ha solicitado la pgina ASP.NET.
EjemploPage.aspx
<html> <head id="Head1" runat="server"> <title>Ejemplo de ejecucin de los eventos en una pgina ASP.NET</title>
EjemploPage.aspx.cs
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page { protected void Page_Load(Object sender, EventArgs e) { if (!Page.IsPostBack) { Label1.Text = DateTime.Now.ToString(); } } protected void Button1_Click(object sender, EventArgs e) { Page.Response.Write("Has pulsado el botn 1 <br>"); } protected void Button2_Click(object sender, EventArgs e) { Page.Response.Write("Has pulsado el botn 2 <br>"); Page.Response.Write("La direccin IP del host del cliente es: " +Page.Request.UserHostAddress); } }
3. WEB FORMS Los web forms (formularios web) son una caracterstica de ASP.NET que ofrece un nuevo modelo de programacin y nos va a permitir generar contenidos dinmicos de una forma ms sencilla. Los web forms sustituyen a los formularios HTML dentro del entorno de programacin de ASP.NET. Es un web form el que va a generar el cdigo HTML correspondiente al formulario que estamos diseando. Asimismo, permiten el tratamiento de los eventos del cliente con cdigo ASP.NET, es decir, con cdigo que ser ejecutado en el servidor web. Este modelo de programacin ofrece algunas ventajas: Ofrece un modelo de programacin ms visual (en el entorno Visual Studio .NET podemos usar los distintos controles que nos suministran distintas paletas y arrastrarlos y soltarlos hasta la vista de diseo). Se ahorra tiempo de desarrollo en crear la interfaz de usuario y adems podemos reutilizar estos controles que encapsulan su funcionalidad. El cdigo resultante es ms limpio en la pgina, ya que no aparece mezclado con cdigo HTML como ocurra en las versiones anteriores de ASP (donde lo habitual es mezclar cdigo HTML con cdigo ASP). ASP.NET ofrece una mayor separacin entre la lgica de la aplicacin y la presentacin de la misma. Integra el tratamiento de eventos del cliente con el cdigo correspondiente en el servidor. Lleva a cabo el mantenimiento del estado del formulario de forma automtica entre peticiones. Esto significa que, si seleccionamos una serie de valores en el web form, al enviarlo, de forma automtica se van a mantener estos valores en el caso de que se vuelva a recargar el formulario.
10
Dentro del formulario web colocaremos los distintos controles de servidor de ASP.NET que necesitemos para recoger la informacin correspondiente. Estos controles van a realizar las mismas funciones que los tpicos controles del lenguaje HTML que constituan los campos de un formulario.
4. INTRODUCCIN A LOS CONTROLES DE SERVIDOR DE ASP.NET Los controles ASP.NET son una serie de objetos de servidor que generarn el
correspondiente cdigo HTML para que el usuario pueda visualizarlos y utilizarlos en la pgina cargada en su navegador. Estos controles se encargan de manejar los eventos generados por el cliente (como la pulsacin de un botn, seleccin de una opcin en un desplegable, etc.). Cada control de servidor se corresponde con una clase determinada perteneciente a un espacio de nombres especfico. Existe un gran nmero de controles de servidor y cada uno de ellos pertenece a una clase del paquete .NET Framework. Podemos realizar la siguiente clasificacin: Controles HTML: representan controles puramente HTML. Son los que este lenguaje define para su uso en formularios. Controles Web: son otros componentes que ASP.NET trae preconfigurados y que implementan elementos ms complejos. Controles de lista: son utilizados para distribuir y mostrar datos en una pgina. Controles avanzados: cada vez se desarrollan ms controles de este tipo, que ofrecen funcionalidades avanzadas, como controles para rotar anuncios en nuestras pginas o para simular un calendario completo.
11
coordenadas X e Y. Se realiza gracias a la integracin en los navegadores de las hojas de estilo en cascada y su posicionamiento dinmico de elementos HTML. FlowLayout: este sistema utiliza el mtodo tradicional de HTML de posicionamiento mediante prrafos y tablas, colocando los elementos de forma secuencial.
5. INTRODUCCIN A LOS CONTROLES HTML La sintaxis que ofrecen los controles HTML de servidor es muy similar a la de los controles clsicos del lenguaje HTML. Estos controles ofrecen la potencia de los web forms y mantienen la familiaridad y facilidad de uso de las etiquetas HTML que representan los campos de un formulario. Estos controles tienen el mismo aspecto que una etiqueta HTML, a excepcin de que presentan el atributo runat con el valor server. Otra diferencia es que posee un atributo especial para el tratamiento de eventos del cliente con cdigo del servidor. Para realizar el tratamiento de eventos de estos controles con cdigo de servidor, utilizaremos el atributo onserverevento. A este atributo se le indica como valor el nombre del mtodo que queremos ejecutar. Por otra parte, para identificar de forma nica un control ASP.NET, debemos utilizar la propiedad id. Mediante este identificador podemos hacer referencia al objeto correspondiente en la pgina y as utilizar el cdigo de servidor para acceder a sus mtodos o manipular sus propiedades. Cada control del formulario es un objeto (objetos de la pgina ASP.NET), es decir, una instancia de una clase determinada y, por tanto, cada uno de ellos poseer sus propiedades y mtodos. As, la sintaxis general de un control HTML es:
12
13
type=password>, que son cajas de texto y contrasea de un formulario HTML. HTMLSelect: se refiere al elemento <select> que es un desplegable de un formulario HTML. HTMLTable: este control se corresponde con una tabla del lenguaje HTML y por tanto, permite el acceso desde el servidor a una etiqueta <table>. Esta clase posee una coleccin llamada Rows, que contiene objetos de la clase HTMLTableRow. HTMLTableRow: es el control HTML que permite manipular una fila de una tabla. HTMLTableCell: esta clase permite el acceso a las celdas de una tabla, es decir, se corresponde con las etiquetas <td> y <th>. HTMLTextArea: este control permite manipular en el servidor la etiqueta <textarea>, que es una caja de texto de gran capacidad en un formulario HTML.
14
Ejemplo1.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Ejemplo1.aspx.cs" Inherits="_Default" %> <html> <head> <title>Ejemplo de uso de controles HTML en una pgina ASP.NET</title> </head> <body> <form id=formulario runat=server method=post> <select id=lista runat=server> <option selected>Azul</option> <option>Rojo</option> <option>Verde</option> <option>Blanco</option> </select> <input type=button id=boton runat=server value=Seleccione un color onserverclick=cambia> <div id=etiqueta runat=server></div> </form> </body> </html>
Ejemplo1.aspx.cs using System; public partial class _Default : System.Web.UI.Page { protected void Page_Load(Object sender, EventArgs e) { } protected void cambia(Object origen, EventArgs args) { etiqueta.InnerText = lista.Value; } }
15
16
<html> <head> <title>Ejemplo de uso de controles HTML en una pgina ASP.NET</title> </head> <body id="cuerpo" runat="server"> <form id="formulario" runat="server" method="post"> <select id="lista" runat="server"> <option value="blue" selected>Azul</option> <option value="red">Rojo</option> <option value="green">Verde</option> <option value="white">Blanco</option> <option value="yellow">Amarillo</option> </select> <input type="button" id="boton" runat="server" value="Seleccione un color" onserverclick="cambia"> </form> </body> </html>
Ejemplo2.aspx.cs
using System;
public partial class _Default : System.Web.UI.Page { protected void Page_Load(Object sender, EventArgs e) { } protected void cambia(Object origen, EventArgs args) { cuerpo.Style["background-color"] = lista.Value; } }
17
Ejemplo3.aspx
<html>
18
<select id="lista" runat="server"> <option>imagen1.jpg</option> <option>imagen2.jpg</option> </select> <input type="button" id="boton" runat="server" value="Cambia" onserverclick="cambiaImagen"> <br /> <img src="imagen2.jpg" runat="server" id="imagen"> </form> </body> </html>
Ejemplo3.aspx.cs
using System;
public partial class _Default : System.Web.UI.Page { protected void Page_Load(Object sender, EventArgs e) {
En este ejemplo se muestra la imagen que se indica en la caja de texto. La imagen se actualiza con la que indiquemos cada vez que se pulse el botn del formulario.
19
6. INTRODUCCIN A LOS CONTROLES WEB Estos controles cumplen la misma funcionalidad que los anteriores pero su sintaxis es distinta, ya que est basada en XML y adems, no existe una correspondencia directa entre los controles y las etiquetas HTML que se generan (como suceda con los controles HTML). Estos controles pertenecen al espacio de nombres System.Web.UI.WebControls. Adems, ofrecen un nivel de abstraccin mayor que los anteriores y su modelo de objetos no refleja la sintaxis HTML necesariamente (cuando la pgina se carga en el navegador, el control web determina el navegador que ha realizado la peticin y de acuerdo con esta informacin genera el cdigo HTML apropiado y especfico para ese navegador web). La sintaxis general de un control web es:
20
Adems de la diferencia de sintaxis entre los controles HTML y controles web, existen otras: Algunos nombres de propiedades cambian. Por ejemplo, el control HTML button posee la propiedad value, y sin embargo el control web equivalente posee la propiedad text para mostrar el texto del botn. Aunque para indicar los mtodos para el tratamiento de eventos de la pulsacin de un botn del ratn en los controles HTML hemos visto que utilizamos la propiedad onserverclick, en los controles web utilizamos la propiedad OnClick. En los controles HTML se debe distinguir si se trata de un evento de cliente o de servidor (ya que podemos tratar ambos tipos, de servidor como hemos visto en el apartado de controles HTML, y de cliente, a travs de algn lenguaje de Script de cliente, como JavaScript). Sin embargo, desde los controles web slo tenemos la posibilidad de utilizar eventos de servidor, es decir, eventos que son tratados por rutinas que se ejecutan en el servidor. Por otra parte, al igual que ocurra con los controles HTML, para permitir hacer referencia a los controles dentro del cdigo fuente de la pgina, debemos utilizar el atributo id. De esta forma, podemos utilizar el objeto que se corresponde con el control de servidor para utilizar sus mtodos o manipular sus propiedades. A continuacin, vamos a ver los principales controles web que vienen predefinidos en el sistema ASP.NET1: Button: se refiere a un botn. Se corresponde con la etiqueta <input type=submit>, es decir, un botn que enva el contenido de un formulario al servidor. Para tratar el evento de pulsacin del botn, utilizamos la propiedad OnClick de la clase Button. CheckBox: describe una casilla de verificacin. Se corresponde con la etiqueta <input type=checkbox>. El evento que se lanza al pulsar sobre un CheckBox es el evento CheckedChanged. Para utilizar checkbox mltiples podemos usar el control CheckBoxList. CheckBoxList: permite utilizar una lista de seleccin mltiple de elementos Checkbox.
Para una referencia completa de todos ellos, debemos consultar la referencia tcnica de Microsoft.
21
22
Creando un web form en la vista diseo de Visual Web Developer 2008 Express
23
<asp:ListBox id="lista" runat="server"> <asp:ListItem selected>Java</asp:ListItem> <asp:ListItem>ASP</asp:ListItem> <asp:ListItem>PHP</asp:ListItem> <asp:ListItem>JSP</asp:ListItem> </asp:ListBox> <asp:Button id="boton" runat="server" Text="Seleccione un lenguaje" OnClick="cambia" /><br> <asp:Label id="etiqueta" runat="server" /> </form> </body> </html> Ejemplo4.aspx.cs using System; public partial class _Default : System.Web.UI.Page { protected void Page_Load(Object sender, EventArgs e) { } protected void cambia(Object origen, EventArgs args) { etiqueta.Text = "Ha seleccionado " + lista.SelectedItem.Text; } }
24
Ejemplo5.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Ejemplo5.aspx.cs" Inherits="_Default" %> <html> <head> <title>Ejemplo de uso de controles Web en una pgina ASP.NET</title> </head> <body> <form id="formulario" runat="server" method="post">
<asp:Button id="boton" runat="server" Text="Obtener fecha" OnClick="obtenerFecha" /><br> <asp:Label id="etiqueta" runat="server" /> </form> </body> </html>
25
using System;
public partial class _Default : System.Web.UI.Page { protected void Page_Load(Object sender, EventArgs e) {
} protected void obtenerFecha(Object origen, EventArgs args) { DateTime ahora; ahora = DateTime.Now; etiqueta.Text = "Fecha/Hora actuales: " + ahora.ToString(); } }
En este ejemplo se muestra la fecha y hora actuales en un objeto de la clase Label al capturar el evento de pulsacin del botn.
26
id="casilla"
<asp:Button
OnClick="compruebaCasilla" /><br> <asp:Label </form> </body> </html> Ejemplo6.aspx.cs using System; public partial class _Default : System.Web.UI.Page { protected void Page_Load(Object sender, EventArgs e) { } protected void compruebaCasilla(Object origen, EventArgs args) { if (casilla.Checked == true) { etiqueta.Text = "La casilla de verificacin est marcada "; } else { etiqueta.Text = "La casilla de verificacin no est marcada "; } } } id="etiqueta" runat="server" />
27
Ejemplo7.aspx
<html> <head> <title>Ejemplo de uso de controles Web en una pgina ASP.NET</title> <style> .estilo{ font: 14px verdana; color: red; backgroundcolor:#CCCCCC }
</style> </head> <body> <asp:Label id=etiqueta runat=server CssClass=estilo > Ejemplo de aplicacin de estilos sobre un control Web Label</asp:Label> </body> </html>
28
Ejemplo8.aspx
<html> <head> <title>Ejemplo de uso de controles Web en una pgina ASP.NET</title> </head> <body> <asp:Label id="etiqueta" runat="server" > Ejemplo de aplicacin de estilos sobre un control Web </asp:Label> </body> </html>
29
Por ltimo, otra forma de aplicar un estilo a un control web es a travs del mtodo ApplyStyle. Este mtodo recibe como parmetro un objeto de la clase Style (cuyas propiedades contienen los valores del estilo). En este ejemplo hemos importado el espacio de nombres System.Drawing, para tener acceso a las clases Color y BorderStyle.
30
<html> <head> <title>Ejemplo de uso de controles Web en una pgina ASP.NET</title> </head> <body> <form id="formulario" runat="server" method="post">
<asp:ListItem value="imagen1.gif">imagen 1</asp:ListItem> <asp:ListItem value="imagen2.jpg">imagen 2</asp:ListItem> </asp:DropDownList> <br /> <asp:Image id="imagen" runat="server" ImageUrl=" " AlternateText="" /> </form> </body> </html>
Ejemplo9.aspx.cs
public partial class _Default : System.Web.UI.Page { void cambiaImagen(Object origen, EventArgs args) { imagen.ImageUrl = lista.SelectedItem.Value; imagen.AlternateText = lista.SelectedItem.Text; } }
31
32
recuerde_
33
ndice_
1. INTRODUCCIN ...............................................................................3 2. ARQUITECTURA Y FUNCIONAMIENTO DE ADO.NET ...........................3 2.1. MODO CONECTADO Y DESCONECTADO .....................................7 3. ACCESO A BASES DE DATOS SIN ADO.NET ........................................8 3.1. CONTROLES DE ORIGEN DE DATOS ..........................................9 3.2. CONTROLES DE ENLACE A DATOS .............................................9 4. ACCEDIENDO A DATOS CON ADO.NET .............................................11 5. ACCEDIENDO A DATOS SIN ADO.NET..............................................15 6. LINQ ..............................................................................................18
formacin digital
2. ARQUITECTURA Y FUNCIONAMIENTO DE ADO.NET En los ltimos aos, ADO.NET ha sido considerado como una de las tecnologas pioneras para realizar conexiones a bases de datos con C#. Ofrece un alto nivel de abstraccin, lo que nos permite trabajar con datos con un enfoque orientado a objetos. Una perspectiva a alto nivel de la arquitectura formada por los componentes de ADO.NET puede ayudarnos a entender cmo encajan las piezas entre s y facilitar mucho la tarea cuando vayamos a elegir los objetos que necesitemos:
Application
Command
Connection
Almacn de Datos
Arquitectura de ADO.NET
Fuente: Mayo, Joe. C# 3.0 Unleashed with the .NET Framework 3.5. Pearson Education. United States of America. 2008. En la figura podemos ver varios componentes que van desde la aplicacin hasta el almacn de datos. La aplicacin es nuestro programa. Puede ser una aplicacin web, de escritorio o algn otro programa que requiera del acceso a datos. A continuacin, describiremos los componentes de ADO.NET por separado, explicando su utilidad: DataReader es un objeto avanzado para leer datos. Es el camino ms rpido para leer informacin desde una base de datos. No obstante, tambin necesitamos un objeto Command si lo que necesitamos son operaciones de insercin, actualizacin y borrado.
Command Connection CommandText CommandType DataAdapter Command Connection Connection UpdateCommand ConnectionString CommandText CommandType InsertCommand SelectCommand
Fuente: MacDonald, Matthew; Szpuszta, Mario. Pro ASP.NET 3.5 in C# 2008. Apress. United States of America. 2007. El DataSet representa un conjunto completo de datos que incluye tablas y relaciones entre ellas. Una representacin de la arquitectura de un DataSet la podemos observar en la siguiente figura:
DataSet
DataRelation
Arquitectura de un DataSet
Fuente: MacDonald; Matthew Szpuszta, Mario. Pro ASP.NET 3.5 in C# 2008. Apress. United States of America. 2007. Todos los objetos de ADO.NET usan uno o ms objetos Command y, como podemos observar en la figura, tambin podemos utilizar un objeto Command directamente desde nuestra aplicacin. El objeto Command contiene la consulta que ser enviada a la fuente de datos. Por cada consulta, es necesario un objeto Connection que sepa donde est la base de datos. Un objeto Command no sabe dnde ser ejecutado, por lo que contiene la referencia al objeto Connection para ello. Es importante realizar un seguimiento de cundo se abre y cierra un objeto Connection. La fuente de datos es un recurso del que somos responsables. Por lo tanto, es esencial cerrar las conexiones correctamente para que la aplicacin gane en rendimiento y escalabilidad.
Trabajar con operaciones en modo Desconectado significa que podemos trabajar con los datos en memoria sin tener la conexin a la base de datos abierta, lo que reduce al mximo el nmero de conexiones abiertas en la base de datos.
3. ACCESO A BASES DE DATOS SIN ADO.NET El enlace de datos sin ADO.NET representa una conexin directa a una base de datos en una aplicacin web, que puede ser usada por los controles de enlazado de datos (p.ej. GridView) para obtener los datos de forma automtica. Dependiendo de nuestras necesidades, podemos utilizar uno o ms de estos enfoques para complementar el cdigo del acceso a datos con ADO.NET (o evitar que lo escriba completamente). Las opciones de acceso a bases de datos sin incluir ADO.NET, son las siguientes: El control SqlDataSource: es un control que permite definir consultas declarativamente. LINQ to SQL: con LINQ to SQL, podemos definir una consulta usando cdigo C# (o usando el control LinqDataSource). Ninguna de estas opciones puede reemplazar a ADO.NET completamente, ya que ninguno ofrece la flexibilidad, personalizacin y el rendimiento que ofrece el cdigo escrito a mano. Sin embargo, dependiendo de nuestras necesidades, podemos utilizar una de estas opciones para obtener mejor productividad. De esta forma, el acceso a datos sin ADO.NET est dirigido hacia los sitios pequeos hechos por hobby o personales, que no requieren una encapsulacin total de los objetos de datos.
3.2. CONTROLES DE ENLACE A DATOS Los controles de enlace a datos son controles de Interfaz de Usuario (UI) que representan los datos en un navegador cliente u otro dispositivo. Un control de este tipo puede autoenlazar una fuente de datos y traer los datos dentro del ciclo de vida de la pgina.
AdRotator representa los anuncios de una pgina como una imagen en la que se puede hacer clic para ir a una URL asociada al anuncio.
GridView presenta los datos en formato de rejilla. Es una evolucin del DataGrid y puede aprovechar automticamente las caractersticas de la fuente de datos.
DataList resulta til para mostrar datos que se encuentran en una estructura que se repite, como una tabla. Adems, puede mostrar los datos con diferentes diseos, como por ejemplo, ordenados en columnas o filas.
DetailsView presenta un solo elemento en una tabla de parejas etiqueta/valor, similar a las vista de formulario de Microsoft Access. Este control tambin puede aprovechar automticamente las caractersticas de la fuente de datos.
FormView resulta til para mostrar un registro individual de un origen de datos. Es similar al control DetailsView, exceptuando que muestra plantillas definidas por el usuario, en lugar de campos de fila.
TreeView presenta los datos en una vista de rbol jerrquico de nodos expandibles. ListView. La versin ASP.NET 3.5 introduce este nuevo control de enlace a datos. Puede reemplazar literalmente el resto de los controles de enlace de datos en ASP.NET. De hecho, podra omitir cualquier otro control de la lista superior con este control. Asimismo, ListView facilita en gran medida numerosas tareas de enlace de datos en comparacin con los controles anteriores, incluidos los estilos con CSS, la paginacin flexible y un complemento completo para clasificar, insertar, eliminar y actualizar caractersticas.
10
4. ACCEDIENDO A DATOS CON ADO.NET Vamos a realizar un ejemplo que consiste en visualizar los datos de una tabla en un GridView. Se ha usado la tcnica de separacin de cdigo core-behind y el acceso a datos en modo Desconectado (DataSet y DataAdapter). No obstante, antes veremos cmo podemos crear una base de datos desde Visual Web Developer: En el men vamos a Ver Explorador de bases de datos. Una vez en la pantalla del
11
Una vez que hemos creado la base de datos vaca, tendremos que crear una tabla y rellenarla con algn dato:
12
Para introducir registros en la base de datos hacemos clic en Mostrar datos de la tabla:
13
Una vez realizado todo lo anterior, ya podemos usar la base de datos relacional creada para realizar las tareas bsicas que nos propusimos para este apartado.
Procedemos pues a realizar nuestro ejemplo: En el fichero EjemploDatos1.aspx hemos incluido slo un GridView y el fichero
EjemploDatos1.aspx.cs using System; using System.Data; using System.Data.SqlClient; using System.Data.Sql; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { String sConex="Data Source=.\\SQLEXPRESS; AttachDbFilename=|DataDirectory|\\pruebaBD.mdf; Integrated Security=True; Connect Timeout=30; User Instance=True"; SqlConnection conex = new SqlConnection(); DataSet dset = new DataSet(); conex.ConnectionString = sConex; SqlDataAdapter adaptador = new SqlDataAdapter("SELECT Titulo, Descripcion FROM PROYECTOS",conex); adaptador.Fill(dset, "Proyectos"); GridView1.DataSource = dset; GridView1.DataBind(); } } Si nos fijamos en la cadena de conexin sConex, vemos que cuando hacemos referencia al fichero de la base de datos bdprueba.mdf ponemos delante |DataDirectory|. Esto hace referencia a la carpeta App_Data que se encuentra en el directorio del proyecto. Nos hemos servido de un objeto SqlConnection para realizar la conexin a la base de datos, un objeto DataSet para volcar los datos en l, lo cual nos habilita operar en modo Desconectado y, por ltimo, incluimos el objeto SqlAdapter que ser el encargado de lanzar la consulta sobre la base de datos y volcar el resultado en el DataSet con el mtodo Fill(dSet,Proyectos). Este mtodo crea, de forma implcita, un objeto DataTable (con la tabla devuelta por la consulta) dentro del DataSet y lo llama Proyectos. Si volvisemos a llamar al mtodo Fill con otra consulta distinta cargada en el DataAdapter, aadiramos otra nueva tabla al DataSet. Como vimos, el objeto DataSet representa a una abstraccin de un almacn de datos, en este caso es una abstraccin de una base de datos compuesta nicamente por la tabla devuelta por la consulta que ha realizado el SqlDataAdapter.
14
5. ACCEDIENDO A DATOS SIN ADO.NET Como estudiamos anteriormente, el acceso a datos sin usar ADO.NET permite a los controles de enlace a datos obtener los datos de forma automtica, sin apenas escribir cdigo. A continuacin veremos un ejemplo. Con la base de datos ya creada, queremos incluir un control GridView a nuestra pgina de una forma muy sencilla.
15
Como podemos observar se han creado dos controles: un control de origen de datos (SqlDataSource) y otro de enlazado de datos (GridView). De igual forma, podemos configurar varios aspectos del GridView (habilitar paginacin, ordenacin, edicin, eliminacin), y modificar la apariencia del control y las columnas que queramos que aparezcan: ( ver pgina siguiente).
16
17
C#
VB.NET .NET Language Integrated Quero (LINQ) LINQ habilitado para fuentes de datos LINQ habilitado para ADO.NET
Otros Lenguajes
LINQ to Objects
LINQ to DataSets
LINQ to SQL
LINQ to Entities
LINQ to XML
Objetos
BD Relacional
XML
Arquitectura de LINQ
Fuente: Fuente: http://msdn.microsoft.com/en-us/magazine/cc163400.aspx Vamos a ver un programa de ejemplo donde utilizamos un array de nombres y determinamos, mediante una enumeracin, la consulta que queremos realizar, que sera saber todos los nombres que empiezan con la letra E. Tenemos que nuestros operadores seran: from, where, order by, select.
18
{ string[] _nombres = { "Edison", "Daniel", "Edgar", "Esperanza", "Alberto", "Jorge", "Omar", "David" }; protected void Page_Load(object sender, EventArgs e) { Response.Write("<b>El vector de nombres se compone de los siguientes nombres: </b><br>"); foreach (string elemento in _nombres) { Response.Write(elemento + "<br>"); } IEnumerable<string> expresion = from nom in _nombres where nom.StartsWith("E") orderby nom select nom; Response.Write("<br><b>Los nombres que empiezan por 'E' son: </b><br>"); foreach (string elemento in expresion) { Response.Write(elemento + "<br>"); } } }
19
recuerde_
20
Directivas de pgina
ndice_
1. INTRODUCCIN ...............................................................................3 2. LA DIRECTIVA @PAGE ......................................................................3 3. LA DIRECTIVA @IMPORT ..................................................................6 4. LA DIRECTIVA @IMPLEMENTS ..........................................................7 5. LA DIRECTIVA @ASSEMBLY ..............................................................7
formacin digital
Directivas de pgina
1. INTRODUCCIN Una directiva es un identificador que incluimos en una nuestra pgina ASP.NET y que informa al entorno de ejecucin de ciertas caractersticas clave de dicha pgina, como el lenguaje en que est programada (recordemos que la plataforma .NET soporta varios lenguajes) o las libreras que se importarn. Es decir, mediante estas directivas podremos declarar una serie de atributos de la pgina ASP.NET actual, que tendrn repercusin a la hora de crearla. Estas directivas de pgina tienen el siguiente formato:
Lo primero que escribimos es el nombre de la directiva, seguida de una serie de pares atributo-valor que definen los datos relativos a cada una de las directivas. Estos pares atributo-valor van separados por el carcter espacio y el valor va entrecomillado. Por otra parte, podemos situar estas directivas en cualquier lugar de la pgina, pero por convencin, se suelen situar al principio del cdigo. Cada directiva comienza con el identificador <%@ y termina con %>. En los siguientes apartados vamos a ver las directivas disponibles en ASP.NET1.
2. LA DIRECTIVA @PAGE Esta directiva es la ms utilizada de todas y la que mayor nmero de atributos tiene. En cada pgina nicamente puede existir una directiva Page. Los valores principales que puede llevar esta directiva son los siguientes: AspCompat. El sistema ASP.NET guarda compatibilidad con ASP 3.0. Debemos poner este atributo a true para poder ejecutar DLL ActiveX desarrolladas para el sistema anterior de pginas ASP. Valores: true o false.
En la referencia general de MSDN podemos encontrar una descripcin completa de todas las directivas
en ASP.NET (http://msdn.microsoft.com/es-es/library/xz702w3e.aspx).
Directivas de pgina
Valor por defecto: false.
AutoEventWireup. Indica si los eventos de la pgina (UnLoad, Load, Init, etc.) se van a lanzar de forma automtica. Valores: true o false. Valor por defecto: false.
Buffer. Se utiliza para activar o desactivar el bfer de la pgina ASP.NET actual. ClassName. Contiene un valor de cadena que indica el nombre de la clase de la pgina actual.
ContentType. Contiene una cadena que describe el tipo MIME devuelto por la pgina. Esta informacin se enviar como cabecera HTTP al navegador. Habitualmente, este tipo ser text/html o text/plain.
EnableSessionState. Este atributo informa al sistema si esta pgina tendr acceso al sistema de gestin y mantenimiento de sesiones, es decir, si se permite o no la utilizacin de la propiedad Session de la clase Page. El valor ReadOnly indica que la pgina nicamente podr leer variables de sesin, pero no modificarlas ni crear variables nuevas. Valores: true, false o ReadOnly. Valor por defecto: true.
EnableViewState. Esta propiedad permite activar o desactivar el mantenimiento automtico de los valores de los controles web dentro de un formulario. Valores: true o false. Valor por defecto: true.
ErrorPage. Este atributo contiene la pgina de error que se va a utilizar en el caso de que se produzca una excepcin no tratada en la ejecucin de la pgina. Valores: URL de la pgina de error.
Directivas de pgina
CodeFile: este atributo se utiliza junto con el atributo Inherits para asociar un archivo de cdigo fuente subyacente a una pgina web. Este atributo slo es vlido para las pginas compiladas. Valores: nombre del archivo de cdigo fuente.
Inherits: con esta propiedad informamos al compilador de que la pgina actual hereda de la clase especificada. Valores: nombre de clase.
Language: Define el lenguaje en que est programada la pgina actual, siendo este al que se compilar todo el cdigo fuente de la pgina. Valores: vb, c# e identificadores de lenguajes compatibles con Microsoft .NET true o false. Valor por defecto: vb.
Src: este atributo contiene el nombre de un fichero que tiene cdigo que podr ser utilizado en la pgina (es una forma de separacin de cdigo, permite tener un bloque de cdigo en un fichero separado de la pgina ASP.NET).
WarningLevel: define el nivel de informacin que queremos utilizar al compilar nuestras pginas. Cuanto mayor nivel especifiquemos, ms estricto ser el compilador a la hora de informar sobre potenciales fallos de sintaxis o funcionamiento de nuestro cdigo fuente. Valores: de 0 a 4.
En este caso, hemos indicado que el lenguaje utilizado en el cdigo fuente de la pgina es C#, que los eventos de la pgina (UnLoad, Load, Init, etc.) se van a lanzar de forma automtica, que el nombre del archivo de cdigo fuente es EjemploDatos1.aspx.cs y que la pgina actual hereda de la clase _Default.
Directivas de pgina
3. LA DIRECTIVA @IMPORT Esta directiva la usaremos para importar de forma explcita un espacio de nombres (NameSpace) determinado y conseguir con ello tener acceso a todas las clases definidas en l. Este espacio de nombres puede ser propio de la plataforma .NET Framework, o bien un espacio de nombres definido por nosotros. nicamente podemos indicar un espacio de nombres por directiva Import, por lo que si queremos importar ms de un espacio de nombres, deberemos utilizar una directiva Import por cada uno. Su sintaxis es:
Por otra parte, el sistema importa automticamente una serie de espacios de nombres para las pginas ASP.NET, por lo que no tenemos que importarlas de forma explcita con la directiva Import, y tendremos acceso a todas sus clases: System System.Collections System.Collections.Specialized System.Configuration System.IO System.Text System.Text.RegularExpressions System.Web System.Web.Caching System.Web.Security System.Web.SessionState System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls
Directivas de pgina
4. LA DIRECTIVA @IMPLEMENTS Esta directiva nos permite implementar2 un interfaz determinado dentro de una pgina ASP.NET. Al igual que ocurra con la directiva anterior, si deseamos implementar varios interfaces en la pgina, debemos utilizar varias directivas Implements, una por cada interfaz. Su sintaxis es:
5. LA DIRECTIVA @ASSEMBLY Esta directiva importa una librera DLL o Assembly dentro de nuestra aplicacin, haciendo visibles todos sus espacios de nombres y clases a nuestro cdigo. Normalmente, esta directiva no se utiliza, ya que cuando una librera DLL se encuentra en el directorio bin de la aplicacin web, no es necesario indicar dicha librera mediante la directiva Assembly, porque ya se encuentra disponible por encontrarse en este directorio especial. Si deseamos hacer referencia a varias libreras DLL, debemos utilizar una directiva por cada una. Esta directiva cuenta con los siguientes atributos: Name: especifica el nombre del assembly compilado (sin extensin). Src: especifica la ruta del fichero de cdigo fuente que define el assembly. En este caso, s debemos indicar la extensin correspondiente. El sistema compilar de forma dinmica el cdigo fuente en vez de encontrarse con el Assembly ya compilado. Ejemplo de su uso:
Directivas de pgina
Hemos visto las directivas @Page, @Import, @Implements y @Assembly. Las directivas son identificadores que suelen aadirse al principio de cada pgina ASP.NET y que informan al sistema de ciertas caractersticas clave de dicha pgina. Cada directiva puede contener uno o ms pares atributo-valor. Las directivas nos permiten especificar datos como el lenguaje en que est programada la pgina, tipo de acceso a las variables de sesin, tipo de contenido devuelto por la pgina, importacin de los espacios de nombres necesarios, etc.
recuerde_
ndice_
1. EL FICHERO GLOBAL.ASAX ...............................................................3 1.1. EVENTOS DE SERVIDOR ...........................................................4 1.2. GESTIN DEL ESTADO DE LA APLICACIN ASP.NET .................5 2. EL FICHERO WEB.CONFIG.................................................................7 2.1. FORMATO DE LOS FICHEROS DE CONFIGURACIN ...................8 2.2. CONFIGURACIN GENERAL ......................................................9 2.3. CONFIGURACIN DE PGINA .................................................10 2.4. CONFIGURACIN DE LA SESIN ............................................11 3. EJEMPLO DE MANEJADOR HTTP ......................................................12
formacin digital
<script runat="server"> [Mtodos para el tratamiento de eventos, inicializacin de objetos con mbito de Sesin y Aplicacin] </script>
En Visual Studio 2008 este fichero es opcional. Para agregarlo, pulsamos con el botn derecho del ratn encima del nombre del proyecto en la Ventana del Explorador de Soluciones. Seguidamente, hacemos clic en Agregar siguiente imagen: Nuevo Elemento... Por ltimo, en la ventana seleccionamos el elemento Clase de aplicacin global. Podemos verlo en la
aplicacin.
La sesin caduca.
Session_OnEnd
Aplication_OnEnd
1.2. GESTIN DEL ESTADO DE LA APLICACIN ASP.NET La gestin del estado de la aplicacin ASP.NET consiste en la permanencia de objetos o valores a lo largo de la vida de la aplicacin y a lo largo de cada sesin de usuario en la aplicacin.
El objeto Application: hace posible almacenar la informacin que es comn para toda la aplicacin. Las variables almacenadas dentro de estos objetos son accesibles a todos los usuarios que estn utilizando la misma aplicacin ASP.NET en cualquiera de sus pginas. En contraposicin al objeto Session, cuyas variables son particulares para cada uno de los usuarios conectados, no se comparten y son propias de la sesin de cada uno. Este objeto es una instancia de la clase System.Web.HttpApplicationState. El
almacenamiento de los objetos se basa en una estructura en forma de pares clave/valor, como en el objeto Session. As, la sintaxis para almacenar objetos en el estado de la aplicacin y recuperarlos es:
1 2
Protocolo sobre el que se apoya el sistema ASP.NET, ya que es un protocolo sin estado. Estos objetos ya se encontraban disponibles en la versin anterior de ASP.
Este fichero representa la configuracin por defecto de todas las aplicaciones ASP.NET existentes en el servidor.
<configuration> <system.web> <httpRuntime executionTimeout ="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl ="FALSE" /> </system.web> </configuration>
10
2.4. CONFIGURACIN DE LA SESIN Podemos configurar el estado de sesin mediante la etiqueta <sessionState>. Sus atributos ms comunes son: cookieless: este atributo indica si el objeto Session utilizar el mecanismo de cookies para almacenar el identificador de sesin. Puede tomar los valores true o false. Por defecto tiene el valor false, por lo que ASP.NET se apoyar en las cookies para mantener la sesin. Cuando tiene el valor true, la sesin se mantiene a travs del mecanismo de URL (el identificador de la sesin se aade a la ruta de las pginas ASP.NET solicitadas). Timeout: este atributo indica el intervalo de tiempo en minutos de inactividad para el objeto Session. Esta inactividad significa que si el usuario no actualiza o solicita una pgina durante ese tiempo, la sesin termina. Por defecto presenta el valor de 20 minutos. Tambin podemos modificar este valor en la aplicacin a travs de la propiedad Timeout del objeto Session. Por ejemplo, para aumentar el timeout de la sesin hasta 30 minutos y evitar el uso de cookies para mantener la sesin, tendramos la siguiente configuracin:
11
<httpHandlers>. Esta etiqueta tiene los siguientes atributos: verb: contiene el tipo de verbo HTTP correspondiente al manejador que va a procesar la peticin. Estos valores pueden ser: Get, Head, Post, etc. El carcter asterisco (*) para indicar que el manejador tratar todos los verbos o acciones del protocolo HTTP. path: en este atributo indicamos la ruta del recurso que se debe tratar. Tambin acepta el carcter especial de asterisco, que generalmente se utiliza seguido de la extensin de los ficheros a tratar. type: especifica la combinacin clase/ensamblado separados por comas que implementa el manejador HTTP. En nuestro caso no usaremos assembly ya que cuando aadamos la clase manejador a nuestro proyecto le indicaremos que nos la guarde en el directorio
12
namespace Componentes.Pruebas
{ {
public void ProcessRequest (HttpContext entorno) { HttpResponse respuesta=entorno.Response; respuesta.Write("<html><body><h2>"); respuesta.Write("Saludos); respuesta.Write("</h2></body></html>"); } public bool IsReusable { get { return true; } } } }
13
<configuration> <system.web> <httpHandlers> <add verb="*" path="pruebaManejador.aspx" type="Componentes.Pruebas.miManejador"/> </httpHandlers> <httpModules> </httpModules> </system.web> </configuration>
En este ejemplo, la clase del manejador es miManejador (que incluimos aadiendo un nuevo elemento clase al proyecto) y se encuentra en el espacio de nombres Componentes.Pruebas. Adems, la pgina .aspx la llamaremos pruebaManejador.aspx. Por ltimo, si solicitamos la pgina pruebaManejador.aspx, sera la clase del manejador (miManejador) la que atendera la solicitud y mostrara una pgina con el mensaje Saludos.
14
recuerde_
15
recuerde_
La clase del manejador HTTP debe implementar la propiedad IsReusable y el mtodo ProcessRequest() del interfaz System.Web.IHttpHandler.
16
glosario_
A ASP (Active Server Pages). Pginas activas del servidor Internet Information Server. ASP es la versin anterior a la tecnologa ASP.NET de Microsoft. API (Application Programming Interface Interfaz de programacin de aplicaciones). Es el conjunto de funciones y procedimientos que ofrece una biblioteca especfica para la comunicacin entre componentes software. ATL. (Active Template Library). Es una librera basada en templates, que se cre para realizar controles y libreras ActiveX (COM) de bajo peso. El excesivo peso que MFC aada a los ActiveX perjudicaba su distribucin desde Internet. C CLR (Common Language Runtime). Motor de ejecucin comn incluido en el paquete Microsoft .NET. Cookie. Archivo creado por un sitio de Internet para almacenar informacin en el ordenador, como por ejemplo, las preferencias de visitas a un sitio determinado. As, cuando visitamos un sitio que utiliza cookies, el sitio puede pedirle a Firefox que guarde una o ms cookies en el disco duro. CSS (Cascading Style Sheets - Hojas de Estilo en Cascada). Se utilizan para dar formato a documentos HTML o XML, separando los datos del formato de presentacin. CTS (Common Type System). Especificacin de tipos bsicos para la integracin de distintos lenguajes de programacin en Microsoft .NET (como C#, Visual Basic .NET, JScript, .NET). C#. Lenguaje creado por Microsoft para su plataforma .NET. Es parecido a C++ y Java. D DHTML (Dinamic HTML - HTML dinmico). Se forma de una conjuncin de HTML, hojas de estilo en cascada (CSS) y lenguajes de Script como JavaScript o VBScript. DLL (Dynamic Link Library - Bibliotecas de Enlace Dinmico). Es un archivo que contiene funciones que se pueden llamar desde aplicaciones u otras DLL. Los desarrolladores utilizan las DLL para poder reciclar el cdigo y aislar las diferentes tareas. Las DLL no pueden ejecutarse directamente, es necesario llamarlas desde un cdigo externo. Las DLL de Windows permiten que las aplicaciones puedan operar en el entorno de Windows.
glosario_
F Framework (Marco de trabajo). Es un esquema o estructura que puede incluir soporte de programas, bibliotecas y un lenguaje interpretado para la organizacin, desarrollo y/o la implementacin de una aplicacin. H HTML (HiperText Markup Language). Lenguaje para la creacin de pginas web relacionadas entre s por hipertexto. HTTP (HiperText Transport Protocol). Protocolo de comunicaciones utilizado por los navegadores de Internet para el acceso a recursos web, como ficheros de imgenes, vdeo, pginas HTML, pginas ASP, pginas ASPX, etc. I IIS (Internet Information Server). Es el servidor web de Microsoft. ASP.NET funciona sobre IIS 5.0. J Java. Lenguaje de programacin orientado a objetos desarrollado por Sun Microsystems. JavaScript. Lenguaje de Script desarrollado por Netscape y utilizado en los navegadores de Internet. J2EE (Java 2, Enterprise Edition). Modelo de desarrollo y aplicacin propuesto por SUN y basado en el desarrollo de componentes Java. JSP (Java Server Pages). Solucin de SUN Microsystems para el desarrollo de aplicaciones web. Se basan en la especificacin de Servlets de SUN. M MDAC (Microsoft Data Access Components). Componentes Microsoft de acceso a datos. MFC (Microsoft Fundation Classes). Librera basada en jerarqua de clases. Bsicamente encapsula el API de Windows en una forma orientada a objetos. MSIL. Lenguaje intermedio para la ejecucin de aplicaciones en Microsoft .NET.
glosario_
O ODBC (Open Database Connectivity). Es un estndar de acceso a bases de datos que utilizan los sistemas Microsoft. A travs de ODBC, un sistema Windows se puede conectar con cualquier base de datos de la que exista un driver ODBC. OleDb (Object Linking and Embedding for Databases). Enlace e incrustacin de objetos para bases de datos. Permite el acceso a datos almacenados en cualquier formato (bases de datos, hojas de clculo, archivos de texto, etc.) para el que haya un proveedor OLE DB disponible. P PHP (Personal Home Page - Procesador de Hipertexto). Las pginas PHP presentan una tcnica similar a las pginas ASP de Microsoft, es decir, las pginas HTML incluyen el cdigo PHP embebido en ellas y al ejecutarlas, se genera cdigo HTML dinmicamente. Proceso de negocio. Es un conjunto de tareas relacionadas lgicamente, que toman uno o ms tipos de entradas (Inputs), llevadas a cabo para lograr un resultado de negocio definido (Outputs). Tambin puede verse como un conjunto de actividades que colectivamente consiguen alcanzar un objetivo de negocio. Es, por ejemplo, el proceso a travs del cual una organizacin ofrece sus servicios a sus clientes. R RAD (Rapid Application Development - Desarrollo rpido de aplicaciones). Es un proceso de desarrollo de software desarrollado inicialmente en 1980. Tiende a englobar la usabilidad, la utilidad y la rapidez de ejecucin. RIA (Rich Internet Applications - Aplicaciones de Internet Enriquecidas). Son un nuevo tipo de aplicaciones con ms ventajas que las tradicionales aplicaciones web. Esta surge como una combinacin de las ventajas que ofrecen las aplicaciones web y las aplicaciones tradicionales. S Script. Es un guin o conjunto de instrucciones. Permiten la automatizacin de tareas creando pequeas utilidades. SDK (Software Development Kit - Kit de desarrollo de software). Es un conjunto de herramientas de desarrollo que le permite a un programador crear software.
glosario_
SQL (Structured Query Language - Lenguaje de consulta estructurado). Es un lenguaje normalizado que nos permite trabajar con cualquier tipo de lenguaje (ASP.NET, PHP) en combinacin con cualquier tipo de base de datos (MS Access, SQL Server, MySQL...). V VBScript (Visual Basic Script). Lenguaje de Script desarrollado por Microsoft. X XML (eXtensible Markup Language - Lenguaje de marcado extensible). Se utiliza para la construccin de documentos de datos estructurados multi-propsito.
referencias web_
Informacin y recursos para crear pginas web ASP.NET Referencia completa de todas las directivas en ASP.NET. Blog sobre ASP.NET Pgina ASP.NET con recursos
http://msdn.microsoft.com/es-es/library/fddycb06.aspx
http://msdn.microsoft.com/es-es/library/xz702w3e.aspx http://www.asp.net/es/aprender/
http://www.elguille.info/NET/ASPNET/Default.aspx
bibliografa_
Esposito, Liberty,
Dino. Jesse;
Microsoft
ASP.NET .NET
3.5. 3.5.
Microsoft OReilly
Press. Media.
Washington. 2008. Programming Gravenstein Highway North, Sebastopol. 2008. MacDonald, Matthew. Beginning ASP.NET 3.5 in C# 2008: From Novice to Professional. United States of America. 2007. MacDonald, Matthew Szpuszta, Mario. Pro ASP.NET 3.5 in C# 2008. Apress. United States of America. 2007. Mayo, Joe. C# 3.0 Unleashed With the .NET Framework 3.5. Pearson Education. United States of America. 2008. Solis, Daniel. Illustrated C# 2008. Apress. United States of America. 2008.