Beruflich Dokumente
Kultur Dokumente
Introduccin a .NET
1. INTRODUCCIN ...............................................................................3
2. MICROSOFT .NET FRAMEWORK.........................................................3
2.1. CLR (COMMON LANGUAGE RUNTIME) .......................................3
2.1.1. CLS (Common Language Specification)..........................4
2.1.2. CTS (Common Type System) .........................................4
2.1.3. CIL (Common Intermediate Language) .........................4
2.2. BIBLIOTECA DE CLASES .NET FRAMEWORK ..............................5
3. QU ES MICROSOFT VISUAL STUDIO ................................................7
4. CERTIFICACIONES OFICIALES PARA DESARROLLADORES EN
VISUAL STUDIO ................................................................................8
GLOSARIO ...........................................................................................11
REFERENCIAS WEB ..............................................................................15
formacin digital
BIBLIOGRAFA ....................................................................................17
Introduccin a .NET
1.
INTRODUCCIN
En este tema estudiaremos algunos conceptos bsicos sobre la plataforma .NET, tambin
conocida como .NET Framework. Asimismo, veremos qu es Visual Studio e indicaremos
algunas certificaciones oficiales para desarrolladores.
Esta base terica nos facilitar el entendimiento y contextualizacin de ASP.NET como un
framework de .NET para el desarrollo de aplicaciones web.
2.
Por otra parte, ASP.NET es conjunto de tecnologas de Microsoft .NET Framework para la
creacin de aplicaciones y servicios web.
2.1.
El CLR es la base del sistema Microsoft .NET. Este motor hace que sea posible el desarrollo
basado en mltiples lenguajes y 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.
Introduccin a .NET
2.1.1. CLS (Common Language Specification)
La
Especificacin
Comn
de
Lenguajes
se
conoce
como
CLS
(Common
Language
Introduccin a .NET
La siguiente figura muestra un diagrama con el proceso de generacin de lenguaje
intermedio a partir del cdigo fuente:
Cdigo fuente
(C#, VB, C++,...)
CLS
Compilador
CTS
Cdigo IL
Interprete a
cdigo nativo
Mquina
Realizar E/S.
Introduccin a .NET
La biblioteca de clases es, por tanto, una coleccin orientada a objetos de tipos reutilizables
y empleada para desarrollar aplicaciones nuevas, facilitando as el trabajo, pues reutilizamos
elementos ya creados no teniendo que programarlos desde cero.
Por otra parte, en la biblioteca de clases de .NET Framework encontramos los tipos. Estos
son la base para compilar aplicaciones, componentes y controles de .NET. Dichos tipos
utilizan un esquema sintctico de punto, el cual sirve para representar una jerarqua. Por
ejemplo, en System.IO, donde System es un espacio de nombres superior en la jerarqua e
incluye a IO, mediante este esquema se agrupan los tipos relacionados en los denominados
espacios de nombres o namespaces, que son agrupaciones de elementos relacionados para
evitar ambigedades y hacer ms fcil la bsqueda y referencia a cada uno de ellos.
Los espacios de nombres ms usados son:
ESPACIO DE NOMBRES
System
System.Collections
System.Data
System.IO
System.Net
System.Reflection
System.Runtime.Remoting
System.Security
System.Threading
System.Web.UI.WebControls
System.XML
System.Linq
Introduccin a .NET
3.
Adems de Microsoft Visual Studio, existen otros IDE muy conocidos, como Visual Web
Developer y WebMatrix.
Con Visual Studio el desarrollador puede crear aplicaciones de escritorio, aplicaciones de
negocio, formularios web, aplicaciones para Azure (cloud computing), para Windows Phone
7, etc., lo que permite la comunicacin entre diferentes medios y dispositivos.
Introduccin a .NET
Desde la primera versin de Visual Studio lanzada en 1998 y denominada Visual Studio
6.0, han sido desarrolladas cinco versiones ms: Visual Studio .NET (2002), Visual Studio
.NET (2003), Visual Studio 2005, Visual Studio 2008 y Visual Studio 2010, lanzada
oficialmente el 12 de abril de 2010.
Cada
versin
ha
ido introduciendo
nuevas
utilidades
frameworks
de
desarrollo,
4.
recuerde_
Introduccin a .NET
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-.
glosario_
Introduccin a .NET
A
API
(Application
Programming
Interface
Interfaz
de
programacin
de
de
programas,
bibliotecas
un
lenguaje
interpretado
11
para
la
glosario_
Introduccin a .NET
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 l.
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.
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.
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.
12
glosario_
Introduccin a .NET
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 guion 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.
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.
13
referencias web_
Introduccin a .NET
MSDN library: referencia completa a
http://msdn.microsoft.com/es-
es/library/bb386063.aspx
http://www.microsoft.com/spain/visu
alstudio/products
o comprar.
Ms
informacin
sobre
las
http://www.microsoft.com/learning/e
certificaciones profesionales.
n/us/certification/cert-vstudio.aspx
http://msdn.microsoft.com/es-
es/asp.net
Referencia
completa
de
todas
las
http://msdn.microsoft.com/es-
directivas en ASP.NET.
es/library/xz702w3e.aspx
http://www.asp.net/es/aprender/
Pgina
con
recursos
formativos,
http://www.elguille.info/NET/ASPNET
/Default.aspx
http://www.asp.net/
http://msdn.microsoft.com/es-
es/library/4w3ex9c2.aspx#VisualWe
bDeveloper
http://www.genbetadev.com/herrami
entas/herramientas-imprescindiblespara-un-desarrollador-de-net
15
bibliografa_
Introduccin a .NET
Griffiths, Ian; Adams, Matthew; Liberty, Jesse. Programming C# 4.0. 6th Edition.
OReilly. 2010.
MacDonald, Matthew. Beginning ASP.NET 4 in CSharp 2010. Apress. Washington.
2010.
Mackey, Alex. Introducing .NET 4.0 with Visual Studio 2010. Apress. 2010.
Mueller, John Paul. Start Here! Learn Microsoft Visual C# 2010. OReilly Media,
Inc. 2011.
Northrup, Tony; Snell, Mike. Exam 70-515: Web Applications Development with
Microsoft .NET Framework 4. Microsoft Press. 2010.
Shepherd, George. Microsoft ASP.NET 4 Step by Step. Microsoft Press. 2010.
Stephen, Rob. Start Here! Fundamentals of Microsoft .NET Programming. OReilly
Media, Inc. 2011.
17
ndice_
Introduccin al desarrollo
de aplicaciones web
1. INTRODUCCIN ...............................................................................3
2. ASP.NET ...........................................................................................3
3. JAVA (JSP, SERVLETS) .....................................................................4
4. PHP ..................................................................................................4
5. DHTML .............................................................................................5
GLOSARIO .............................................................................................7
REFERENCIAS WEB ..............................................................................11
formacin digital
BIBLIOGRAFA ....................................................................................13
Introduccin al desarrollo
de aplicaciones web
1. INTRODUCCIN
Al principio, el desarrollo de pginas web se limitaba al uso del lenguaje de marcado HTML
(lenguaje de marcado de hipertexto), un lenguaje sencillo, sin capas ni estilos, con el que se
obtenan pginas estticas cuya labor nicamente era suministrar informacin personal del
autor o de la empresa (de forma textual o a travs de imgenes), sin proporcionar ninguna
interaccin con el usuario.
Internet est basado en una serie de estndares, protocolos y lenguajes que sirven para que
los diferentes servidores y clientes se comuniquen entre s. Los protocolos bsicos de
Internet son principalmente el protocolo TCP/IP y HTTP.
En los prximos apartados, presentaremos una serie de tecnologas de desarrollo web
utilizadas en la actualidad.
2. ASP.NET
ASP.NET sucedi a ASP (Active Server Page), que es la tecnologa que desarroll Microsoft
para la creacin de pginas dinmicas del lado del servidor. Las pginas ASP tienen
insertados lenguajes Scripts, como VBScript o JavaScript, junto al cdigo HTML.
ASP.NET se construy sobre el Common Language Runtime (CLR), esto hace que podamos
escribir cdigo ASP.NET usando cualquier lenguaje admitido por el .NET Framework (C#,
Visual Basic .NET, Delphi, C++, F#, J#, Perl, Python...). Estos lenguajes nos permiten
desarrollar aplicaciones ASP.NET que se benefician de la seguridad de tipos, herencia, etc.
Nosotros emplearemos C# durante este curso.
Con Visual Studio, podemos crear diferentes tipos de proyectos ASP.NET, que incluyen sitios
web, aplicaciones web, servicios web y controles de servidor AJAX.
Hay una diferencia entre los proyectos de sitios web y los proyectos de aplicaciones web, ya
que, algunas caractersticas solo funcionan con proyectos de aplicaciones web, como MVC y
ciertas
herramientas
para
automatizar
la implementacin
web.
No
obstante,
otras
caractersticas, como los datos dinmicos, funcionan tanto con los proyectos de sitios web
como con los proyectos de aplicaciones web.
Introduccin al desarrollo
de aplicaciones web
Por ltimo, ASP.NET solo funciona sobre el servidor de Microsoft IIS. Esto no ocurre con
otros lenguajes del lado de servidor, como PHP, Perl o Python, ejecutables sobre ms de un
servidor como Apache, Hiawatha o Nginx.
adicionales
de
Java
(generacin
de
imgenes,
comunicaciones,
seguridad,
encriptacin, etc.).
4. PHP
PHP corresponde a las iniciales de Hypertext Pre-processor. Este lenguaje de programacin
tiene una sintaxis similar a los lenguajes C y Perl, y se interpreta por un servidor web como,
por ejemplo, Apache.
PHP presenta una tcnica similar a las pginas ASP.NET, es decir, las pginas HTML incluyen
cdigo PHP embebido en ellas y, al ejecutarlas, se genera cdigo HTML dinmicamente.
Introduccin al desarrollo
de aplicaciones web
Aunque PHP no es un lenguaje orientado a objetos, est preparado para aprovechar una
serie de aspectos de las clases que son recomendables en el desarrollo de aplicaciones.
PHP dispone de un gran nmero de libreras de funciones para realizar operaciones
avanzadas como acceso a bases de datos, correo electrnico, transferencia de ficheros,
comunicaciones, etc.
Por ltimo, las pginas PHP tambin se han extendido mucho en los ltimos aos (son las
pginas web que encontramos con extensin .php o .phtml).
5. DHTML
Sus siglas significan Dynamic HTML (HTML dinmico). Se forma a partir de la conjuncin de
HTML, hojas de estilo en cascada (CSS), lenguajes de script como JavaScript o VBScript, y la
jerarqua de objetos DOM (Document Object Model), que es el conjunto de objetos
predefinidos que definen a todos los objetos de una pgina y del navegador con el que se
est accediendo a dicha pgina, de tal forma que se puede acceder a sus propiedades y
funciones.
Los lenguajes de Script se ejecutan en la mquina cliente (en el navegador del usuario que
solicita una pgina). Es por ello por lo que son diferentes a otras tecnologas, en las cuales el
cdigo ha de ejecutarse en el servidor quien construye y enva al cliente la pgina web.
recuerde_
Introduccin al desarrollo
de aplicaciones web
PHP. Presenta una tcnica donde las pginas HTML incluyen cdigo PHP
embebido
en
ellas
y,
al
ejecutarlas,
se
genera
cdigo
HTML
dinmicamente.
Python...)
para
desarrollar
aplicaciones
ASP.NET.
Nosotros
glosario_
Introduccin al desarrollo
de aplicaciones web
A
API
(Application
Programming
Interface
Interfaz
de
programacin
de
de
programas,
bibliotecas
un
lenguaje
interpretado
para
la
glosario_
Introduccin al desarrollo
de aplicaciones web
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 l.
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.
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.
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.
glosario_
Introduccin al desarrollo
de aplicaciones web
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 guion 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.
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_
Introduccin al desarrollo
de aplicaciones web
Detallada referencia a ASP.NET 4 en
http://msdn.microsoft.com/es-
es/library/4w3ex9c2.aspx
http://msdn.microsoft.com/es-
es/asp.net
Referencia
completa
de
todas
las
http://msdn.microsoft.com/es-
directivas en ASP.NET.
es/library/xz702w3e.aspx
http://www.asp.net/es/aprender/
Pgina
con
recursos
formativos,
http://www.elguille.info/NET/ASPNET
/Default.aspx
http://www.asp.net/
http://msdn.microsoft.com/es-
es/library/4w3ex9c2.aspx#VisualWe
bDeveloper
http://www.genbetadev.com/herrami
entas/herramientas-imprescindiblespara-un-desarrollador-de-net
11
bibliografa_
Introduccin al desarrollo
de aplicaciones web
Griffiths, Ian; Adams, Matthew; Liberty, Jesse. Programming C# 4.0. 6th Edition.
OReilly. 2010.
MacDonald, Matthew. Beginning ASP.NET 4 in CSharp 2010. Apress. Washington.
2010.
Mackey, Alex. Introducing .NET 4.0 with Visual Studio 2010. Apress. 2010.
Mueller, John Paul. Start Here! Learn Microsoft Visual C# 2010. OReilly Media,
Inc. 2011.
Northrup, Tony; Snell, Mike. Exam 70-515: Web Applications Development with
Microsoft .NET Framework 4. Microsoft Press. 2010.
Shepherd, George. Microsoft ASP.NET 4 Step by Step. Microsoft Press. 2010.
Stephen, Rob. Start Here! Fundamentals of Microsoft .NET Programming. OReilly
Media, Inc. 2011.
13
ndice_
Conceptos de la programacin
orientada a objetos
formacin digital
BIBLIOGRAFA ....................................................................................19
Conceptos de la programacin
orientada a objetos
1.
2.
OBJETOS Y CLASES
Ejemplo
Podemos tener un objeto bicicleta que represente a una bicicleta dentro de nuestra realidad, o
bien un objeto factura, automvil o persona.
Los objetos son instancias particulares de las entidades abstractas llamadas clases, en
donde se definen las caractersticas comunes a dichos objetos. Se puede decir que una clase
es como una plantilla, molde o prototipo en el que se definen los atributos (variables) y las
acciones (mtodos) comunes para todos los objetos que se crean a partir de ella. Mediante
las clases podremos crear (instanciar) objetos de un mismo tipo, que se diferenciarn unos
de otros mediante su estado, es decir, el valor de sus atributos.
Conceptos de la programacin
orientada a 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.
3.1. ENCAPSULACIN
La encapsulacin es la tcnica de ocultar la implementacin interna de un objeto, es decir,
cmo est construido y de qu se compone. Con la encapsulacin se consigue, por tanto,
que los atributos de un objeto estn ocultos al resto de los objetos, de tal forma que no se
pueda acceder directamente para modificar su estado o consultarlo.
Conceptos de la programacin
orientada a objetos
Para acceder a los atributos de un objeto debemos utilizar los mtodos denominados get y
set.
La tcnica habitual es que un objeto ofrezca una parte pblica utilizada por otros objetos
para interactuar entre s, pero tambin contenga una parte oculta para encapsular los
detalles de implementacin del objeto.
Como los atributos y la implementacin de cada objeto queda oculta a los dems objetos que
interaccionan en el programa, se favorece la proteccin de los datos y la localizacin de
errores en los programas (ya que cada objeto est altamente especializado y solo se encarga
de su tarea). Esto consigue adems una mayor modularidad y facilita el diseo en equipo de
programas y la reutilizacin de clases (componentes), ya que podemos escribir cdigo de
manera independiente de cmo se encuentren construidos los diferentes objetos que vamos
a utilizar. As, ocultando los detalles de implementacin, podremos realizar cambios en el
cdigo interno de los objetos sin que ello afecte a otros objetos que los utilicen o dependan
de ellos.
3.2. ABSTRACCIN
La abstraccin es la capacidad de ignorar los aspectos de implementacin de los objetos en
los pasos iniciales, con lo que solo necesitamos conocer qu es lo que hace un objeto y no
cmo lo hace. Esta propiedad es utilizada para definir un objeto y establecer las relaciones
de este con otros objetos.
De forma grfica, podemos representar un objeto 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.
Mtodos
Atributos y mtodos privados
pblicos
(encapsulados)
Conceptos de la programacin
orientada a objetos
3.3.
HERENCIA
Por otra parte, las subclases tambin pueden sobrescribir los mtodos de la superclase para
proporcionar un comportamiento especial.
Ejemplo
La clase automvil puede contener un mtodo ObtenerNmeroDeMarchas() que siempre devuelva 5,
mientras que la clase frmula 1, que puede tener hasta 7 marchas, sobrescribira este mtodo para
devolver 7 en lugar de 5.
Respecto a la herencia, no hay lmite de nivel, lo cual da lugar a una jerarqua de clases.
Adems, La herencia puede ser simple, si la clase hija hereda de una nica clase padre, o
mltiple, si lo hace de varias clases.
Nota
El lenguaje que usaremos en la programacin de las pginas ASP.NET de este curso es C#, que solo
soporta herencia simple.
Por ltimo, tambin podemos definir clases abstractas, que son clases que definen
comportamientos genricos y en las que algunos o todos sus mtodos no han sido
implementados (mtodos abstractos), tan solo declarados. El comportamiento de estos
mtodos es totalmente libre para las subclases que hereden de esta, las cuales debern
implementarlos para poder ser instanciadas en objetos.
Conceptos de la programacin
orientada a objetos
3.4.
POLIMORFISMO
4.
MENSAJES
Los mensajes son el mecanismo mediante el cual dos objetos pueden interactuar, es decir,
comunicarse entre s. Un objeto tiene sentido si aparece como un componente de un
programa mayor o de una aplicacin que contiene muchos otros objetos, los cuales
interactan entre s y es, a travs de esta interaccin, como se consigue 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, el objeto A enva un mensaje al
objeto B. El mtodo de B que recibe el mensaje de A es denominado mtodo de la
interfaz de B.
En resumen, 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, que
puede ser conocer o, incluso, modificar el estado del objeto destino.
Conceptos de la programacin
orientada a objetos
4.2.
MTODOS
Las acciones de los mensajes a los que un objeto puede responder representan su
comportamiento, es decir, son los mtodos que dicho objeto puede realizar. Por tanto, para
que dos objetos puedan interactuar,, es necesario un mensaje que debe especificar:
Los objetos disponen de dos tipos de mtodos, 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. Por otra parte, los mtodos consultan o modifican el estado de
un objeto. Son funciones dentro de un objeto y, como hemos visto, 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 y/o
nmero de los parmetros que reciben.
Ejemplo
Podemos tener en la clase Matriz dos mtodos:
El primer mtodo implementa la suma matemtica entre un entero y una matriz, y el segundo, la
suma de matrices.
Este ejemplo es una sobrecarga del mtodo sumar, pues aunque tiene igual nmero de parmetros,
difieren en el tipo y, por tanto, su implementacin ser diferente.
Conceptos de la programacin
orientada a objetos
5.
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 para utilizarlos en nuestro programa y deben definirse las relaciones
existentes entre dichos objetos. De esta forma, se disea un modelo para que nuestra
aplicacin funcione adecuadamente, donde debemos aplicar los principios de la POO que
hemos aprendido en los apartados anteriores: abstraccin, encapsulacin, herencia y
polimorfismo.
Cada clase en una 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.
Ejemplo
La clase automvil tiene atributos que pueden ser a la vez clases: puerta, motor, rueda, chasis,
etc.
Una relacin de uso: una clase se relaciona con otra a travs de los mensajes que le
enva, pasndole como parmetro del mtodo invocado por el mensaje, una instancia de
una clase.
Ejemplo
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 e implementan tareas ms concretas.
Conceptos de la programacin
orientada a objetos
Facilita
la
reutilizacin
del
software
travs
de
la
herencia.
Adems,
la
encapsulacin nos facilita el uso de objetos que no hemos implementado todava, pero
de los que conocemos qu hacen, no es necesario saber cmo lo hacen.
Por otra parte, entre las desventajas que encontramos al utilizar POO tenemos que:
10
recuerde_
Conceptos de la programacin
orientada a objetos
Las subclases heredan las funciones miembro y las variables de sus clases
padre, haciendo sencilla la reutilizacin de las funcionalidades de las clases
padre.
11
glosario_
Conceptos de la programacin
orientada a objetos
A
API
(Application
Programming
Interface
Interfaz
de
programacin
de
de
programas,
bibliotecas
un
lenguaje
interpretado
13
para
la
glosario_
Conceptos de la programacin
orientada a objetos
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 l.
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.
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.
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.
14
glosario_
Conceptos de la programacin
orientada a objetos
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 guion 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.
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.
15
referencias web_
Conceptos de la programacin
orientada a objetos
http://msdn.microsoft.com/es-
es/asp.net
Referencia
completa
de
todas
las
http://msdn.microsoft.com/es-
directivas en ASP.NET.
es/library/xz702w3e.aspx
http://www.asp.net/es/aprender/
Pgina
con
recursos
formativos,
http://www.elguille.info/NET/ASPNET
/Default.aspx
http://www.asp.net/
http://msdn.microsoft.com/es-
es/library/4w3ex9c2.aspx#VisualWe
bDeveloper
http://www.genbetadev.com/herrami
entas/herramientas-imprescindiblespara-un-desarrollador-de-net
17
bibliografa_
Conceptos de la programacin
orientada a objetos
Griffiths, Ian; Adams, Matthew; Liberty, Jesse. Programming C# 4.0. 6th Edition.
OReilly. 2010.
MacDonald, Matthew. Beginning ASP.NET 4 in CSharp 2010. Apress. Washington.
2010.
Mackey, Alex. Introducing .NET 4.0 with Visual Studio 2010. Apress. 2010.
Mueller, John Paul. Start Here! Learn Microsoft Visual C# 2010. OReilly Media,
Inc. 2011.
Northrup, Tony; Snell, Mike. Exam 70-515: Web Applications Development with
Microsoft .NET Framework 4. Microsoft Press. 2010.
Shepherd, George. Microsoft ASP.NET 4 Step by Step. Microsoft Press. 2010.
Stephen, Rob. Start Here! Fundamentals of Microsoft .NET Programming. OReilly
Media, Inc. 2011.
19
ndice_
Fundamentos de
programacin en C#
formacin digital
Fundamentos de
programacin en C#
1.
El objetivo de este captulo es aprender los fundamentos del lenguaje que vamos a utilizar
en todo el curso, C#. Utilizaremos dicho lenguaje por ser de ltima generacin, pensado
para los desarrolladores web y que se adapta mejor a los estndares de C++ y Java.
Para aprender a conocer el entorno y la filosofa de trabajo con Visual Studio, vamos a
comenzar realizando una pgina ASP.NET sencilla, cuya funcin ser simplemente mostrar el
mensaje Hola Mundo cuando pulsemos sobre el botn incluido en la pgina. De esta
forma, adems de conocer Visual Studio, nos familiarizaremos con ASP.NET y el lenguaje
C#.
El proceso de creacin de la pgina es el siguiente:
1.
Fundamentos de
programacin en C#
Fundamentos de
programacin en C#
3.
Una vez creado el nuevo proyecto, es el momento de elegir una plantilla y su nombre.
Para
ello,
seleccionamos
primero
el
lenguaje
de
desarrollo
(Visual
C#),
Fundamentos de
programacin en C#
4.
Fundamentos de
programacin en C#
Es interesante que practiquemos con las ventanas de la interfaz, pues son configurables
a nuestro modo de trabajar, pudindolas fijas, ocultar, cambiar de lugar o hacerlas
flotantes.
5.
Seguidamente, vamos a cambiar el nombre de la pgina para que, al ser cargada por el
navegador,
tenga
un
nombre
distintivo.
En
nuestro
caso
la
llamaremos
Fundamentos de
programacin en C#
De esta forma, cambia el nombre tanto del fichero de cdigo como de la interfaz.
Sin embargo, para nuestro ejemplo vamos a eliminar este archivo, puesto que
queremos comenzar con una pgina en blanco. Para ello, seleccionamos el archivo en el
Explorador de soluciones y pulsamos Suprimir.
Una vez realizado esto, tenemos el proyecto vaco y creamos un nuevo archivo, que
llamaremos HolaMundo.aspx y que estar en blanco, eligiendo Agregar nuevo
elemento.
Fundamentos de
programacin en C#
6.
En este paso vamos a incluir una etiqueta Label y un botn Button en la capa de
presentacin HolaMundo.aspx. Los controles mencionados se encuentran en el cuadro
de herramientas y solo tendremos que arrastrarlos a la vista Diseo de nuestra pgina
para insertarlos en ella.
Fundamentos de
programacin en C#
7.
Vamos a aprender a utilizar el cdigo. Para ello, pulsamos la vista Cdigo y observamos
el cdigo C# que utiliza nuestra primera pgina web:
8.
En este punto vamos a modificar el cdigo HTML para obtener el resultado deseado.
Realizaremos pues las modificaciones que sealamos a continuacin en los siguientes
ficheros:
a.
HolaMundo.aspx
<%@ Page Language="C#"
AutoEventWireup="true"
CodeBehind="HolaMundo.aspx.cs"
Inherits="WebHolaMundo.HolaMundo " %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
10
Fundamentos de
programacin en C#
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div style="height: 33px">
<asp:Label ID="lNombre" runat="server" Text="Pulsa el botn"/>
<asp:Button ID="bSaludar" runat="server" Height="31px"
Width="48px" onclick="pulsado" Text="Plsame"/>
</div>
</form>
</body>
</html>
b.
System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Web.UI;
System.Web.UI.WebControls;
11
Fundamentos de
programacin en C#
12
Fundamentos de
programacin en C#
Tambin, 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.
Estos dos controles tienen un atributo id, que es el nombre que lo identifica y 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 el
valor de su propiedad Text, que de forma predeterminada es una cadena vaca.
Adems, el control Button posee la propiedad onclick, en la que podemos indicar el
mtodo responsable de tratar el evento de pulsacin.
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).
Adems,
devuelve void, es decir, ningn valor, y recibe dos parmetros, el primero de tipo
object y el segundo de tipo EventArgs, que ofrecen informacin acerca del evento
que se ha producido, aunque en este ejemplo no usamos dichos parmetros porque
no son necesarios para mostrar nuestro mensaje.
Dentro del mtodo pulsado accedemos al estilo de la etiqueta definida
(lNombre.Style["font-size"]) para darle un tamao determinado y, a continuacin,
establecemos el valor de la propiedad Text de la etiqueta con el mensaje Hola
Mundo!.
13
Fundamentos de
programacin en C#
2.
El lenguaje C# presenta una serie de palabras bsicas reservadas para el propio lenguaje
que incluyen comandos, tipos, etc. 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
void
volatile
while
El objetivo de esta lista no es memorizarlas, tan solo tiene inters como punto de referencia,
las iremos utilizando segn avance el curso.
Es importante indicar que el lenguaje C# es sensible a maysculas y minsculas, en ingls a
esta propiedad se la denomina case sensitive. Debido a ella, hay que prestar atencin y
tener cuidado en su uso, puesto que no solo puede afectar a que durante la compilacin del
cdigo no sean reconocidas palabras reservadas del lenguaje, sino que pueden crear
confusin y graves prdidas de tiempo al cambiarse el nombre de las variables por uso
14
Fundamentos de
programacin en C#
TIPOS PREDEFINIDOS
Tipos
predefinidos
Simple
object
No numricos
bool
char
string
Numrico
Entero
Punto flotante
decimal
8-Bit
sbyte
16-Bit
byte
short
32-Bit
ushort
int
float
double
64-Bit
uint
long
ulong
Ocho tipos enteros con distintas longitudes, con signo y sin signo.
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.
15
Fundamentos de
programacin en C#
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 object, que es el tipo en el cual est basado el resto de los tipos.
En resumen son:
Nombre corto
Tipo
Longitud bits
byte
0 a 255
sbyte
-128 a 127
int
32
-2.147.483.648 a 2.147.483.647
uint
32
0 a 4294967295
short
16
-32.768 a 32.767
ushort
16
0 a 65535
long
64
-922337203685477508
ulong
float
double
Tipo
de
punto
922337203685477507
64
0 a 18446744073709551615
flotante
de
32
-3,402823e38 a 3,402823e38
flotante
de
64
-1,79769313486232e308
precisin simple
Tipo
de
punto
precisin doble
Un carcter Unicode
16
bool
string
Smbolos Unicode
True o false
decimal
1,79769313486232e308
char
object
preciso
fraccionario
integral,
puede
nmeros
decimales
128
representar
con
29
dgitos significativos
16
Fundamentos de
programacin en C#
2.
Le agregamos un nuevo elemento que ser la pgina web aspx que vamos a crear,
eligiendo, por ello, Web Forms.
3.
4.
Ahora hay que escribir el cdigo de nuestro pequeo formulario. Para ello, pulsamos
sobre la vista Cdigo y cambiamos la identificacin de los TextBox para referirlos
correctamente:
17
Fundamentos de
programacin en C#
5.
Seguidamente, abrimos el fichero de cdigo que definir los mtodos. Lo primero ser
definir nuestras variables de tipo entero:
public int vara = 25;
public int varb = 125;
Las definimos como pblicas pues deseamos que el mtodo sumar, que se ejecutar al
pulsar el botn, tenga acceso a ellas. Asimismo, definimos la variable resultado, cuyo
valor ser la suma de vara y varb:
int result = vara + varb;
El evento que se ejecutar al pulsar el botn es sumar. Al ser lanzado, suma los
valores de las dos variables pblicas vara y varb, y los asigna a la variable privada
result, para posteriormente convertirla en cadena y asignarla a la propiedad Text
del control txtVarResultado de nuestra pgina.
18
Fundamentos de
programacin en C#
2.2.
Adems de los 15 tipos primitivos que nos provee C#, tambin podemos crear los nuestros
propios. Estos tipos son estructuras de datos ms complejas, formados habitualmente por
otros tipos de datos. Son los siguientes:
Los tipos primitivos permitidos en la enumeracin son byte, sbyte, short, ushort, int,
uint, long y ulong.
class ClaseTest
{
// Se definen Mtodos, propiedades, campos, eventos, delegados y otras
// clases que se necesiten
}
19
Fundamentos de
programacin en C#
Tipo struct: este tipo de datos se utiliza para encapsular pequeos grupos de variables
en una estructura relacionada.
Tipo delegate: se utiliza para declarar la firma de un mtodo que ser definido en una
clase1.
Tipo interface: las interfaces contienen solo las firmas de mtodos, propiedades,
eventos o indizadores, no su implementacin. Posteriormente se pueden definir clases
que implementarn esa interfaz.
Interface coordenadas
{
int x
{
get;
set;
}
int y
{
get;
set;
}
}
Finalmente, una vez hemos declarado uno de los anteriores tipos, podemos usarlos para
crear objetos, como si fuesen primitivos.
El uso de estos tipos no es objetivo del presente tema. Puede obtenerse ms informacin en:
http://msdn.microsoft.com/es-es/library/900fyy8e(v=vs.100).aspx
20
Fundamentos de
programacin en C#
string cadena;
int num_aleatorio;
public DateTime fechaActual;
2.4. COMENTARIOS
Podemos utilizar comentarios de lnea simple o de un grupo de lneas:
*/
Los comentarios resultan tiles para documentar el cdigo e incluir anotaciones. De esta
forma, se explica el porqu de algunas decisiones o sentencias. Tambin son tiles para
posterior mantenimiento del cdigo e, incluso, si trabajamos en grupo, el cdigo ser ms
accesible y entendible si tiene comentarios aclaratorios.
Por todo ello, la documentacin del cdigo se considera una buena prctica del profesional en
programacin.
3.
21
Fundamentos de
programacin en C#
3.1.
SENTENCIAS CONDICIONALES
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");
}
}
switch (expresin)
{
case expresin_constante1:
//cdigo
break;
case expresin_constante2:
//cdigo
break;
...
default:
//cdigo
break;
}
22
Fundamentos de
programacin en C#
default:
Response.Write ("Debe elegir una de estas respuestas: 1, 2,
3");
break;
}
}
3.2.
BUCLES
Los bucles se utilizan cuando queremos repetir la ejecucin de unas sentencias un nmero
indefinido de veces, siempre que se cumpla una condicin.
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++;
}
}
do{
//cdigo
}while (expresin);
Ejemplo de su uso:
23
Fundamentos de
programacin en C#
Ejemplo de uso:
Bucle foreach in. 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.
Ejemplo de su uso:
24
Fundamentos de
programacin en C#
3.3.
OPERADORES
Operadores aritmticos:
Suma.
Resta.
Multiplicacin.
Divisin.
++
Operador de incremento.
--
Operador de decremento.
Operadores lgicos:
&
&&
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.
||
true
false
25
Fundamentos de
programacin en C#
^=
Operador de potencia.
*=
Operador de multiplicacin.
/=
Operador de divisin.
+=
Operador de suma.
-=
Operador de resta.
&=
%=
Operador de mdulo.
Operadores de comparacin:
==
Igual que.
!=
Distinto que.
>
Mayor que.
<
Menor que.
>=
<=
Operadores de concatenacin. Este operador sirve para unir dos cadenas de texto
(tipo string) en una sola. Es el operador ms (+).
Otros operadores:
[]
?:
Realiza una operacin condicional en una sola lnea. Su formato es: expresin?
Caso-si-verdadero: caso-si-falso
is
sizeof
typeof
26
Fundamentos de
programacin en C#
Ejemplo:
Vamos a desarrollar una calculadora simple que realice sumas, restas, multiplicaciones y
divisiones de enteros (en un principio vamos a definir como tal las variables, sin hacer
comprobacin de tipos). El usuario introducir dos valores y seleccionar el botn de
operacin correspondiente. La calculadora se ejecutar hasta que el usuario pulse el botn
Fin que ser la condicin del bucle. Tambin haremos la comprobacin de no dividir por
cero, dando un mensaje adecuado. Por ltimo, incluiremos la operacin factorial, para el uso
de los bucles.
Pasos que seguiremos se describen a continuacin:
1.
2.
Aadimos
un
Web
Forms
como
nuevo
elemento
lo
denominamos
Seguidamente, vamos a insertar los controles adecuados que necesitamos para nuestra
calculadora:
a.
b.
c.
d.
e.
f.
El nuevo control web denominado ListBox es una lista de valores, de los cuales solo
uno puede ser seleccionado. Vamos a utilizarlo para elegir la operacin a realizar,
incluido el fin. Adems, en la edicin de elementos, insertamos cada uno de los
operadores seleccionables mediante el botn Agregar.
27
Fundamentos de
programacin en C#
En las propiedades Text, se escribe el texto que aparecer y en el valor, el que tomar
el objeto ListBox. As, en uno de los Miembros, por ejemplo el primero de ellos, la
suma, la marcamos como Selected, para que al ejecutarse est seleccionado y
evitamos errores si el usuario pulsa el botn sin escoger ningn operador.
4.
5.
Ahora cambiamos las propiedades ID de cada objeto que empleemos en el cdigo, para
tener una fcil referencia. Sern: txtOperando1, txtOperando2, txtResultado,
lstOperador, btnEjecutar, txtResultado.
28
Fundamentos de
programacin en C#
6.
7.
Comprobamos el resultado:
8.
29
Fundamentos de
programacin en C#
9.
10. Ahora trabajamos en el cdigo de nuestra aplicacin, para lo que abrimos el fichero
WebEjemplo.aspx.cs y en el mtodo operar, escribimos el siguiente cdigo:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
publicpartialclassWebCalculadora:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidoperar(objectsender,EventArgse)
{
//Definirvariablesenterasquetomenlosvaloresinsertadoscomocadenas.
intoperando1=Convert.ToInt32(txtOperando1.Text);
intoperando2=Convert.ToInt32(txtOperando2.Text);
//Variableutilizadaparaelresultado,lainiciamosalvalor0;
longresultado=0;
//Variablestemporales
intcontador;
stringfactores;
//ElTextBoxdelfactorialseocultaencadallamadadeejecucin
txtFactorial.Visible=false;
//Variablequetomaeloperadorseleccionado,setransformaaString
stringoperador=lstOperador.Items[lstOperador.SelectedIndex].ToString();
switch(operador)
{
case"Sumar":
resultado=operando1+operando2;
break;
case"Restar":
resultado=operando1operando2;
break;
case"Multiplicar":
resultado=operando1*operando2;
break;
case"Dividir":
if(operando2==0)
Response.Write("Nosepuededividirporcero");
else
resultado=operando1/operando2;
break;
case"FactorialOperador1":
if(operando1==0)
resultado=1;
else
30
Fundamentos de
programacin en C#
{
//Ponemosenmodovisibleelbloquedetexto
txtFactorial.Visible=true;
//inicializamoslasvariablesavalorneutro.
factores="";
resultado=1;
//Clculodelfactorialmediantebuclefor,puedenusarselosotros.
for(contador=operando1;contador>0;contador)
{
//pararellenarelTextBoxconlaoperacinfactorial:
if(factores=="")
//paranointroducirunsmbolo"x"alprincipio
//setransformadenumricoacadena
factores=contador.ToString();
else
factores=factores+"x"+contador;
//operacinfactorial:
resultado=resultado*contador;
};
//publicamoslaoperacinfactorialensuTextBox:
txtFactorial.Text=factores;
}
break;
}
//publicamoselresultado:
txtResultado.Text=Convert.ToString(resultado);
}
}
31
Fundamentos de
programacin en C#
4.
Ya hemos aprendido a utilizar algunas clases y tenemos nociones sobre ellas. Es el momento
de formalizar cmo se definen y se instancian para crear objetos.
4.1.
using Namespace;
namespace NombreDeEspacio
{
modificadores class NombreDeClase : ClasePadre
{
//implementacin de la clase
}
}
Por ltimo, 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 hereda. Despus, entre
las dos llaves, escribimos la implementacin de la clase, donde definimos sus propiedades y
mtodos.
32
Fundamentos de
programacin en C#
Este operador informa al sistema de que queremos crear un nuevo objeto, al cual debemos
asignar un nombre, nombre_objeto. Cuando se utiliza este operador, el sistema crea un
espacio en el sistema que tendr la estructura de la clase y estar referenciado por el
nombre del objeto. Adicionalmente, llama automticamente al constructor de la clase, el
cual inicializa las propiedades de la actual instancia (objeto) que hemos creado. El
constructor es un mtodo especial de las clases, que tiene el mismo nombre que su clase y
se ejecuta al instanciarse.
Como se ha comentado, al instanciar una clase se ocupa espacio del sistema (memoria), la
cual en grandes aplicaciones puede suponer un consumo importante si no se gestionan
adecuadamente y se eliminan las que no se utilicen. Por ello, 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.
Seguidamente, vamos a ver un ejemplo de clases, donde crearemos un proyecto en Visual
Studio, que se denomine WebVehiculos, y los elementos necesarios. As, en principio
vamos a insertar un Web Form, denominado paginavehiculos, por lo que tendremos dos
ficheros en ASP.NET: paginavehiculos.aspx y paginavehiculos.aspx.cs.
33
Fundamentos de
programacin en C#
Adicionalmente vamos a crear un archivo Vehiculo.cs que contiene una clase denominada
Vehiculo, dentro del espacio de nombres aplicacionvehiculosWeb. Para ello, elegimos
nuevamente el botn Agregar nuevo elemento y seleccionamos:
Una vez hecho esto, se muestra la advertencia adjunta, a la cual vamos a responder S para
tener nuestro proyecto adecuadamente organizado:
34
Fundamentos de
programacin en C#
Vehiculo.cs
using System;
namespace aplicacionvehiculosWeb
{
public class Vehiculo
{
private int n_puertas = 0;
private string marca = ;
public Vehiculo (int num_puertas, string nombre_marca)
{
n_puertas = num_puertas;
marca = nombre_marca;
}
// Definimos los mtodos get
public string getMarca()
{
return marca;
}
public int getNumeroPuertas()
{
return n_puertas;
}
}
}
Los mtodos get y put son unas estandarizaciones por convenio de mtodos utilizados para
obtener y asignar valores a las propiedades de las clases. Son una forma de implementar la
encapsulacin de las clases, permitiendo solamente el acceso a sus propiedades mediante
estos mtodos.
A continuacin, vamos a desarrollar el formulario web de paginavehiculos.aspx insertando un
botn y definiendo su mtodo:
paginavehiculos.aspx
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="paginavehiculos.aspx.cs"
Inherits="paginavehiculos"%>
<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="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>
35
Fundamentos de
programacin en C#
paginavehiculos.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
/*seindicaelusodelespaciodenombrescreadoenelficheroVehiculo.cs,
ellopermiteutilizarlaclaseVehiculo*/
usingaplicacionvehiculosWeb;
publicpartialclasspaginavehiculos:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidmostrar(Objectsender,EventArgse)
{
Vehiculocoche1=newVehiculo(5,"Renault");
Response.Write(coche1.getMarca()+"<br>");
Response.Write("Elnmerodepuertases:"+coche1.getNumeroPuertas()+
"<br>");
}
}
Como hemos visto, cuando aadimos una clase nueva al proyecto, Visual Studio 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
36
Fundamentos de
programacin en C#
Repasemos el funcionamiento de este sencillo ejemplo: hemos insertado un objeto Button cuyo evento
onclick ser el desencadenante de la llamada al mtodo mostrar() del fichero paginavehiculos.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 ya tenemos
creado nuestro objeto, podemos acceder a sus mtodos miembro disponibles (getMarca() y
getNumeroPuertas()).
Por
ltimo,
en
la
cabecera
del
fichero
paginavehiculos.aspx.cs,
importamos
el
namespace
aplicacionvehiculosWeb con using, para poder hacer referencia a la clase Vehiculo que est
contenida en ese espacio de nombres.
5.
MANEJADORES DE EVENTOS
Los argumentos adicionales que necesite el mtodo y que normalmente dependern del
tipo de evento a tratar.
6. 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.
37
Fundamentos de
programacin en C#
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.
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).
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
}
Para
ver
un
ejemplo,
retomamos
nuestra
pequea
calculadora
que
desarrollamos
anteriormente. En esta ocasin, vamos a utilizar las excepciones para tratar adecuadamente
la operacin de divisin si en el operando 2 el usuario introduce un cero.
Una operacin de divisin por cero produce en el entorno de ejecucin una excepcin del tipo
System.DivideByZeroException, que deriva directamente de la clase System.Exception. Esta
excepcin es la que nos encargaremos de capturar de forma adecuada mediante una
sentencia catch y presentaremos al usuario un mensaje de error.
Lanzar la excepcin significa que dicho error puede propagarse y ser tratado en otro punto de la
secuencia de llamadas a mtodos.
38
Fundamentos de
programacin en C#
case "Dividir":
try
{
resultado = operando1 / operando2;
} catch (System.DivideByZeroException error)
{
Response.Write("Error: "+ error.Message + "Introduzca un valor correcto en
Operando 2 <br> <br>");
}
break;
case "Factorial Operador 1":
7.
MODIFICADORES
MODIFICADORES DE ACCESO
39
Fundamentos de
programacin en C#
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 solo son accesibles desde el
paquete actual.
7.2.
OTROS MODIFICADORES
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 solo lectura y su valor no puede modificarse.
readonly. Este modificador marca a una propiedad como de slo lectura o constante,
difiere de const en que adems de inicializarse en su declaracin, puede hacerlo un
constructor de la clase que lo contiene.
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.
40
Fundamentos de
programacin en C#
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.
41
recuerde_
Fundamentos de
programacin en C#
42
glosario_
Fundamentos de
programacin en C#
A
API
(Application
Programming
Interface
Interfaz
de
programacin
de
de
programas,
bibliotecas
un
lenguaje
interpretado
43
para
la
glosario_
Fundamentos de
programacin en C#
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 l.
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.
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.
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.
44
glosario_
Fundamentos de
programacin en C#
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 guion 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.
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.
45
referencias web_
Fundamentos de
programacin en C#
http://msdn.microsoft.com/es-
es/asp.net
Referencia
completa
de
todas
las
http://msdn.microsoft.com/es-
directivas en ASP.NET.
es/library/xz702w3e.aspx
http://www.asp.net/es/aprender/
Pgina
con
recursos
formativos,
http://www.elguille.info/NET/ASPNET
/Default.aspx
http://www.asp.net/
http://msdn.microsoft.com/es-
es/library/4w3ex9c2.aspx#VisualWe
bDeveloper
http://www.genbetadev.com/herrami
entas/herramientas-imprescindiblespara-un-desarrollador-de-net
47
bibliografa_
Fundamentos de
programacin en C#
Griffiths, Ian; Adams, Matthew; Liberty, Jesse. Programming C# 4.0. 6th Edition.
OReilly. 2010.
MacDonald, Matthew. Beginning ASP.NET 4 in CSharp 2010. Apress. Washington.
2010.
Mackey, Alex. Introducing .NET 4.0 with Visual Studio 2010. Apress. 2010.
Mueller, John Paul. Start Here! Learn Microsoft Visual C# 2010. OReilly Media,
Inc. 2011.
Northrup, Tony; Snell, Mike. Exam 70-515: Web Applications Development with
Microsoft .NET Framework 4. Microsoft Press. 2010.
Shepherd, George. Microsoft ASP.NET 4 Step by Step. Microsoft Press. 2010.
Stephen, Rob. Start Here! Fundamentals of Microsoft .NET Programming. OReilly
Media, Inc. 2011.
49
ndice_
Conceptos de
Web Forms
formacin digital
Conceptos de
Web Forms
1.
En este tema veremos una introduccin a los controles web que pueden utilizarse en un Web
Form (formulario ASP.NET). Como estos controles los incluiremos en una pgina ASP.NET,
estudiaremos antes la clase Page, ya que podemos representar a la pgina ASP.NET actual
como un objeto de esta clase.
2.
LA CLASE PAGE
Cada vez que solicitamos una pgina ASP.NET a un servidor web, es decir, cada vez que un
cliente mediante su navegador solicita una URL que hace referencia a un fichero .ASPX en el
servidor, se crea una serie de componentes que construyen 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
un
objeto
de
la
clase
EVENTOS DE LA PGINA
Cuando se solicita una pgina ASP.NET desde un navegador, se desencadena una serie de
eventos de pgina. Estos eventos siempre ocurren en un mismo orden, denominado ciclo de
vida de los eventos de pgina, el cual es:
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 por el mtodo Page_Init.
Conceptos de
Web Forms
Load: se lanza a continuacin del mtodo Init y tiene lugar cuando la pgina se ha
cargado. En este momento, todos los controles de la pgina ya han sido creados. Este
evento se lanzar cada vez que la pgina es ejecutada y lo tratamos en el mtodo
Page_Load.
UnLoad: se lanzar el ltimo, despus de haber tenido lugar todos los anteriores. En
este momento, la pgina ha terminado de procesarse, se ha finalizado su ejecucin y
toda la informacin ha sido enviada al cliente. Este evento lo tratamos en el mtodo
Page_UnLoad.
INIT
UNLOAD
PRERENDER
LOAD
Conceptos de
Web Forms
Veamos un sencillo ejemplo de uso de estos mtodos:
ejemploEventos.aspx
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="ejemploEventos.aspx.cs"
Inherits="ejemploEventos"%>
<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headid="Head1"runat="server">
<title>EjemplodeejecucindeloseventosenunapginaASP.NET</title>
</head>
<body>
<formid="form1"runat="server">
<div>
<asp:LabelID="Label2"runat="server">Eventosdelapgina</asp:Label>
</div>
</form>
</body>
</html>
ejemploEventos.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
publicpartialclassejemploEventos:System.Web.UI.Page
{
protectedvoidPage_Init(Objectsender,EventArgse)
{
Page.Response.Write("EstetextoseescribecuandoselanzaelEventoInit<br>");
}
protectedvoidPage_Load(objectsender,EventArgse)
{
Page.Response.Write("EstetextoseescribecuandoselanzaelEventoLoad<br>");
}
Conceptos de
Web Forms
protectedvoidPage_PreRender(Objectorigen,EventArgsargs)
{
Page.Response.Write("EstetextoseescribecuandoselanzaelEventoPreRender<br>");
}
Al ejecutar este ejemplo veremos una serie de mensajes que ilustran el orden de ejecucin
de los distintos eventos que tratamos:
2.2.
Para acceder a una propiedad de la clase Page podemos indicar la clase Page delante de la
propiedad o utilizar la propiedad directamente. Por ejemplo:
Page.Response.Write("Hola Mundo");
//es equivalente a:
Response.Write("Hola Mundo");
La clase Page dispone de una serie de propiedades interesantes de conocer. Las principales
son:
Application:
esta
propiedad
es
una
referencia
un
objeto
de
la
clase
Conceptos de
Web Forms
EnableViewState:
propiedad
de
tipo
Boolean
que
nos
permite
desactivar
el
mantenimiento del estado entre distintas llamadas de los controles web de la pgina.
Por defecto, su valor es true.
IsPostBack: propiedad de tipo Boolean 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. Cuando lancemos mediante algn control de nuevo la
pgina al servidor (por ejemplo, pulsemos un botn), la pgina ser enviada al servidor
y regenerada, por lo que su valor se torna a True. Este indicador nos servir para
inicializar los controles web y propiedades de la pgina.
Request:
esta
propiedad
es
una
referencia
un
objeto
de
la
clase
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
un
objeto
de
la
clase
User: esta propiedad devuelve informacin sobre el usuario que ha solicitado la pgina
ASP.NET.
Conceptos de
Web Forms
A continuacin, veremos un ejemplo con el que aprenderemos ms sobre las propiedades de
la clase Page.
En ocasiones, es muy til conseguir que se ejecute algo solo cuando se carga la pgina por
primera vez o todo lo contrario, que se ejecute solo a partir de la primera carga. Esto se
consigue con la propiedad Page.IsPostBack.
De esta manera, queremos que aparezca la fecha y hora de la primera vez que se carga la
pgina y que esta se mantenga, aunque la pgina se refresque. Esto se realiza, cuando por
ejemplo, pulsamos un botn.
EjemploPage.aspx
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="ejemploPage.aspx.cs"
Inherits="ejPostBack"%>
<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headid="Head1"runat="server">
<title>EjemplodeejecucindeloseventosenunapginaASP.NET</title>
</head>
<body>
<formid="form1"runat="server"visible="True">
<asp:ButtonID="Button1"runat="server"onclick="Button1_Click"Text="Button1"/>
<asp:ButtonID="Button2"runat="server"onclick="Button2_Click"Text="Button2"/><br/>
<asp:LabelID="Label1"runat="server"></asp:Label>
</form>
</body>
</html>
Conceptos de
Web Forms
EjemploPage.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
publicpartialclassejPostBack:System.Web.UI.Page
{
protectedvoidPage_Load(Objectsender,EventArgse)
{
//Secompruebaqueeslaprimeracarga:NoPostBack
if(!Page.IsPostBack)
{
Label1.Text=DateTime.Now.ToString();
}
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
Page.Response.Write("Haspulsadoelbotn1<br>");
}
protectedvoidButton2_Click(objectsender,EventArgse)
{
Page.Response.Write("Haspulsadoelbotn2<br>");
Page.Response.Write("LadireccinIPdelhostdelclientees:"+
Page.Request.UserHostAddress);
}
Obtenemos en la ejecucin:
Conceptos de
Web Forms
Como podemos observar, cuando se cargue la pgina (Page_Load), si es falso que la
pgina haya sido recargada (es decir, que es la primera vez que se carga), el texto de
Label1 ser la fecha y hora actual. Adems, comprobamos que si presionamos sobre alguno
de los botones, la pgina se refresca (se enva al servidor y se recibe), pero la fecha y la
hora siguen siendo las mismas.
2.3.
En este apartado ofrecemos una descripcin de algunos de los mtodos que nos ofrece la
clase Page:
FindControl: este mtodo realiza una bsqueda en la pgina de un control web, cuyo
nombre se le pasa como argumento y lo devuelve (si lo encuentra). El parmetro que
recibe es un objeto de la clase String que representa el nombre del control buscado y el
objeto devuelto corresponde a la clase Control.
MapPath: devuelve un objeto de la clase String que representa una ruta virtual
construida a partir de la ruta fsica que se le pasa como parmetro, que tambin es un
objeto de la clase String.
ResolveUrl: mtodo que convierte una URL virtual que se le pasa como parmetro en
una URL absoluta.
3. WEB FORMS
Los Web Forms (formularios web) son una caracterstica de ASP.NET que ofrece un 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, entre otras, las siguientes ventajas:
10
Conceptos de
Web Forms
arrastrarlos y soltarlos hasta la vista Diseo). Se ahorra tiempo de desarrollo en crear
la interfaz de usuario y adems podemos reutilizar estos controles que encapsulan su
funcionalidad.
Por otra parte, para crear un formulario web nicamente debemos utilizar una etiqueta
<form>, al estilo de las etiquetas del lenguaje HTML e incluir la propiedad runat con el valor
server. Por ejemplo:
<body>
<formid="form1"runat="server"method="post"visible="True">
</form>
</body>
Adems
de
definir
las
propiedades
mediante
cdigo,
podemos
utilizar
la
ventana
Propiedades, pues en algunos casos es ms sencillo ya que aporta informacin sobre los
posibles valores que puede tomar una determinada propiedad:
11
Conceptos de
Web Forms
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.
Controles HTML: representan controles puramente HTML. Son los que en este lenguaje
se definen para su uso en formularios. Desde el cuadro de herramientas de Visual
Studio podemos acceder a ellos y para insertarlos en nuestro formulario basta con
arrastrarlos y soltarlos. Es importante destacar que estos controles provienen del HTML
por lo que no se ejecutan en el servidor a no ser que incluyamos la propiedad
runat=server, convirtindose as en controles y no en simples etiquetas. Las etiquetas
HTML que proporciona Visual Studio son:
12
Conceptos de
Web Forms
Controles Web: son otros componentes que ASP.NET trae preconfigurados y que,
aunque algunos son parecidos a los controles HTML, implementan caractersticas y
capacidades ms complejas.
Controles de validacin: son controles con los que podremos comprobar que la
informacin introducida por el usuario es vlida.
Cuando utilizamos Visual Studio para disear nuestras pginas web, podemos utilizar dos
formas distintas de definir el posicionamiento de nuestros controles:
13
Conceptos de
Web Forms
Los controles HTML estn disponibles para mantener la compatibilidad con versiones
anteriores de ASP, de manera que, si queremos que una etiqueta HTML pase a ser un control
HTML, simplemente debemos indicar la propiedad runat con el valor server. Normalmente,
son ms utilizados los controles web.
14
Conceptos de
Web Forms
A continuacin, vamos a ver una descripcin de las distintas clases que se corresponden con
los
controles
HTML.
Estas
clases
se
encuentran
dentro
del
espacio
de
nombres
HTMLGenericControl: esta clase se utiliza para representar las etiquetas HTML que no
tienen una correspondencia directa con las clases del paquete .NET Framework (como
las etiquetas <span>, <div> o <body>).
HTMLButton: caracteriza a los botones de pulsacin para formularios HTML del tipo
button, submit y reset (botn normal, de envo y de restauracin del formulario).
15
Conceptos de
Web Forms
HTMLInputText:
describe
los
elementos
<input
type=text>
<input
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>.
16
Conceptos de
Web Forms
5.1.
Ejemplo 1:
ejemplosControles1.aspx
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="ejemplosControles1.aspx.cs"
Inherits="ejemplosControles1"%>
<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headid="Head1"runat="server">
<title>EjemplodeusodecontrolesHTMLenunapginaASP.NET</title>
</head>
<body>
<formid="formulario"runat="server"method="post">
<selectid="lista"runat="server">
<optionselected>Azul</option>
<option>Rojo</option>
<option>Verde</option>
<option>Blanco</option>
</select>
<inputtype="button"id="boton"runat="server"
value="Seleccioneuncolor"onserverclick="cambia">
<divid="etiqueta"runat="server"></div>
</form>
</body>
</html>
ejemplosControles1.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
publicpartialclassejemplosControles1:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
17
Conceptos de
Web Forms
}
protectedvoidcambia(Objectorigen,EventArgsargs)
{
etiqueta.InnerText=lista.Value;
}
}
Este ejemplo muestra una lista desplegable con una serie de nombres de colores y un botn.
Al pulsar el botn, se muestra el elemento seleccionado de la lista en un texto de un
elemento <div>.
Hemos accedido a las propiedades de los controles a travs del nombre con el que los hemos
declarado (el valor del atributo id, que permite tener acceso a las propiedades y mtodos de
cada control del formulario). Asimismo, accedemos a la propiedad innerText de la etiqueta
para asignarle el valor obtenido de la lista desplegable.
Si hacemos distintas llamadas al formulario, podremos observar que se mantiene el estado
del mismo, es decir, en el combo se mantiene el elemento seleccionado sin que tengamos
que escribir ningn cdigo adicional para controlarlo. Esto es posible gracias a que el Web
Form genera un campo oculto (ViewState) que conserva los valores de los campos del
formulario y mantiene el estado de los controles para su restauracin en cada carga de la
pgina.
18
Conceptos de
Web Forms
Ejemplo 2:
ejemploControles2.aspx
<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ejemploControles2.aspx.cs"Inherits="ejemploControles2"%>
<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>EjemplodeusodecontrolesHTMLenunapginaASP.NET</title>
</head>
<bodyid="cuerpo"runat="server">
<formid="formulario"runat="server"method="post">
<selectid="lista"runat="server">
<optionvalue="blue"selected>Azul</option>
<optionvalue="red">Rojo</option>
<optionvalue="green">Verde</option>
<optionvalue="white">Blanco</option>
<optionvalue="yellow">Amarillo</option>
</select>
<inputtype="button"id="boton"runat="server"
value="Seleccioneuncolor"onserverclick="cambia">
</form>
</body>
</html>
ejemploControles2.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
publicpartialclassejemploControles2:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
19
Conceptos de
Web Forms
protectedvoidcambia(Objectorigen,EventArgsargs)
{
cuerpo.Style["backgroundcolor"]=lista.Value;
}
}
Ejemplo 3:
EjemploControles3.aspx
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="ejemploControles3.aspx.cs"
Inherits="ejemploControles3"%>
<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>EjemplodeusodecontrolesHTMLenunapginaASP.NET</title>
</head>
<body>
<formid="form1"runat="server">
20
Conceptos de
Web Forms
<selectid="lista"runat="server">
<option>imagen1</option>
<option>imagen2</option>
</select>
<inputtype="button"id="boton"runat="server"value="Cambia"
onserverclick="cambiaImagen">
<br/>
<imgsrc="imagen1.jpg"runat="server"id="imagen">
</form>
</body>
</html>
EjemploControles3.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
publicpartialclassejemploControles3:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidcambiaImagen(Objectorigen,EventArgsargs)
{
imagen.Src=lista.Value+".jpg";
}
}
21
Conceptos de
Web Forms
Por otra parte, insertar las imgenes de nuestro ejemplo se puede hacer de manera muy
sencilla desde Visual Studio, ya que tan solo hemos de pulsar con el botn derecho en el
proyecto y hacer la siguiente seleccin en el Explorador de soluciones:
22
Conceptos de
Web Forms
6.
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, pues 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:
Cuando el control no tiene cuerpo, tambin podemos usar esta otra forma de sintaxis
equivalente a XHTML:
Adems de la diferencia de sintaxis entre los controles HTML y controles web, existen
otras:
En los controles HTML se debe distinguir entre evento de cliente y de servidor (para
tratar este ltimo en el servidor como hemos visto, o en el cliente mediante lenguajes
de Script, por ejemplo, JavaScript). Sin embargo, desde los controles web solo tenemos
la posibilidad de utilizar eventos de servidor, es decir, eventos que son tratados por
rutinas que se ejecutan en el servidor.
23
Conceptos de
Web Forms
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 describir brevemente los principales controles web que vienen
predefinidos en el sistema ASP.NET1:
Para
utilizar
checkbox
mltiples
podemos
usar
el
control
CheckBoxList.
Image: este control representa una imagen. Generar como resultado de su ejecucin
una etiqueta <img> de HTML. Para indicar la imagen que queremos mostrar,
utilizaremos la propiedad ImageURL.
ImageButton: representa una imagen que acta como botn tipo submit, es decir, al
pulsar sobre la imagen se envan los contenidos del formulario al servidor. Generar
como resultado de su ejecucin una etiqueta <input type=image> de HTML.
Label: se refiere a una etiqueta de texto. Generar como resultado de su ejecucin una
etiqueta <span> de HTML.
Para una referencia completa de todos ellos, debemos consultar la referencia tcnica de Microsoft.
24
Conceptos de
Web Forms
LinkButton: este control representa un botn que presenta un estilo similar a los
enlaces. Su apariencia es similar a un control Hiperlink, pero ofrece la misma
funcionalidad que un control Button, es decir, presenta un texto a modo de enlace que
al pulsarlo enviar el formulario en el que se encuentre al servidor.
Panel: este control se utiliza para agrupar controles (acta como contenedor de otros
controles). Posee una propiedad Controls, que es una coleccin que contiene todos los
controles incluidos dentro del objeto Panel.
El control Table representa una tabla (etiqueta <table> de HTML). Esta clase posee
una coleccin llamada Rows, que contiene objetos de la clase TableRow y que
representan las filas de la tabla.
El objeto TableRow tiene una coleccin llamada Cells, que contiene las columnas
para esa fila de la tabla.
25
Conceptos de
Web Forms
6.1.
Ejemplo 4: muestra un formulario con una lista desplegable con los nombres de distintos
lenguajes de programacin y un botn. Al seleccionar un elemento de la lista y pulsar el
botn, se muestra el elemento elegido de la lista en una etiqueta.
ejemploControles4.aspx
<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ejemploControles4.aspx.cs"Inherits="ejemploControles4"%>
<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>EjemplodeusodecontrolesWebenunapginaASP.NET</title>
</head>
<body>
<formid="formulario"
runat="server"method="post">
<asp:ListBoxid="lista"runat="server">
<asp:ListItemselected>VisualC#</asp:ListItem>
<asp:ListItem>VisualBasic</asp:ListItem>
<asp:ListItem>Java</asp:ListItem>
<asp:ListItem>PHP</asp:ListItem>
</asp:ListBox>
<asp:Buttonid="boton"runat="server"Text="Seleccioneunlenguaje"
OnClick="cambia"/><br>
<asp:Labelid="etiqueta"runat="server"/>
</form>
</body>
</html>
26
Conceptos de
Web Forms
ejemploControles4.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
publicpartialclassejemploControles4:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidcambia(Objectorigen,EventArgsargs)
{
etiqueta.Text="Haseleccionado"+lista.SelectedItem.Text;
}
}
ejemploControles5.aspx
<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ejemploControles5.aspx.cs"Inherits="ejemploControles5"%>
<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
27
Conceptos de
Web Forms
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>EjemplodeusodecontrolesWebenunapginaASP.NET</title>
</head>
<body>
<formid="formulario"
runat="server"method="post">
<asp:Buttonid="boton"runat="server"Text="Obtenerfecha"
OnClick="obtenerFecha"/><br>
<asp:Labelid="etiqueta"runat="server"/>
</form>
</body>
</html>
ejemploControles5.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
publicpartialclassejemploControles5:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidobtenerFecha(Objectorigen,EventArgsargs)
{
DateTimeahora;
ahora=DateTime.Now;
etiqueta.Text="Fecha/Horaactuales:"+ahora.ToString();
}
28
Conceptos de
Web Forms
<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ejemploControles6.aspx.cs"Inherits="ejemploControles6"%>
<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title></title>
</head>
<body>
<formid="formulario"
runat="server"method="post">
<asp:CheckBoxid="casilla"runat="server"
Text="Casilladeverificacin"/><br>
<asp:Buttonid="boton"runat="server"
Text="Comprobar"OnClick="compruebaCasilla"/><br>
<asp:Labelid="etiqueta"runat="server"/>
</form>
</body>
</html>
29
Conceptos de
Web Forms
ejemploControles6.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
publicpartialclassejemploControles6:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidcompruebaCasilla(Objectorigen,EventArgsargs)
{
if(casilla.Checked==true)
{
etiqueta.Text="Lacasilladeverificacinestmarcada";
}
else
{
etiqueta.Text="Lacasilladeverificacinnoestmarcada";
}
}
}
30
Conceptos de
Web Forms
Ejemplo 7: podemos aplicar un estilo a un control web a travs de la propiedad CssClass.
Para ello, a esta propiedad le asignaremos el nombre de la clase que define el estilo que se
desea aplicar al control.
ejemploControles7.aspx
<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ejemploControles7.aspx.cs"Inherits="ejemploControles7"%>
<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>EjemplodeusodecontrolesWebenunapginaASP.NET</title>
<style>.estilo{font:14pxverdana;color:white;background
color:#CCCCCC}</style>
</head>
<body>
<asp:Labelid="etiqueta"runat="server"CssClass="estilo">
EjemplodeaplicacindeestilossobreuncontrolWeb
Label</asp:Label>
</body>
</html>
31
Conceptos de
Web Forms
Ejemplo 8: aqu vamos a aplicar estilos a un control.
ejemploControles8.aspx
<%@PageLanguage="C#"AutoEventWireup="true"
CodeFile="ejemploControles8.aspx.cs"Inherits="ejemploControles8"%>
<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>EjemplodeusodecontrolesWebenunapginaASP.NET</title>
</head>
<body>
<formid="form1"runat="server">
<asp:Labelid="etiqueta"runat="server"CssClass="estilo">
EjemplodeaplicacindeestilossobreuncontrolWeb</asp:Label>
</form>
</body>
</html>
ejemploControles8.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
publicpartialclassejemploControles8:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
Styleestilo=newStyle();
estilo.BorderColor=Color.Green;
estilo.BorderStyle=BorderStyle.Dashed;
estilo.ForeColor=Color.Blue;
estilo.BackColor=Color.Pink;
estilo.Font.Name="Courier";
estilo.Font.Size=16;
estilo.Font.Italic=true;
etiqueta.ApplyStyle(estilo);
32
Conceptos de
Web Forms
La 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) y lo aplica al control: etiqueta.ApplyStyle(estilo);.
En este ejemplo hemos importado el espacio de nombres System.Drawing, para tener acceso
a las clases Color y BorderStyle y no tener que referenciar toda la ruta: estilo.BackColor=
System.Drawing.Color.Pink;
<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>EjemplodeusodecontrolesWebenunapginaASP.NET</title>
</head>
<body>
<formid="formulario"
runat="server"method="post">
<asp:DropDownListAutoPostBack="True"id="lista"
OnSelectedIndexChanged="cambiaImagen"runat="server">
33
Conceptos de
Web Forms
<asp:ListItemvalue="imagen1.jpg">imagen1</asp:ListItem>
<asp:ListItemvalue="imagen2.jpg">imagen2</asp:ListItem>
</asp:DropDownList>
<br/>
<asp:Imageid="imagen"runat="server"ImageUrl=""
AlternateText="Listaimgenes"/>
</form>
</body>
</html>
ejemploControles9.aspx.cs
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Drawing;
publicpartialclassejemploControles9:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidcambiaImagen(Objectorigen,EventArgsargs)
{
imagen.ImageUrl=lista.SelectedItem.Value;
imagen.AlternateText=lista.SelectedItem.Text;
}
}
34
Conceptos de
Web Forms
7.
DIRECTIVAS DE PGINA
Una directiva es un identificador que incluimos en una pgina ASP.NET y que informa al
entorno de ejecucin de ciertas caractersticas clave de dicha pgina, como el lenguaje en el
que est programada o las libreras que se importarn. Es decir, mediante una directiva
podemos declarar una serie de atributos de la pgina ASP.NET actual, que tendr
repercusin a la hora de crearla.
Estas directivas de pgina tienen el siguiente formato:
35
Conceptos de
Web Forms
Por otra parte, podemos situar estas directivas en cualquier lugar de la pgina. No obstante,
por convencin, se suelen situar al principio del cdigo. Cada directiva comienza con el
identificador <%@ y termina con %>.
En los siguientes apartados vamos a estudiar las directivas disponibles en ASP.NET.
7.1.
LA DIRECTIVA @PAGE
Esta directiva es la ms utilizada y la que mayor nmero de atributos tiene. Define los
atributos especficos de pgina, es decir, el archivo .aspx, que utilizan el analizador y el
compilador de pginas de ASP.NET. En cada pgina nicamente puede existir una.
Los valores principales que puede llevar esta directiva son los siguientes:
AutoEventWireup. Indica si los eventos de la pgina (UnLoad, Load, Init, etc.) se van
a lanzar de forma automtica.
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.
36
Conceptos de
Web Forms
El valor ReadOnly indica que la pgina nicamente podr leer variables de sesin, pero
no modificarlas ni crear variables nuevas.
CodeFile: este atributo se utiliza junto con el atributo Inherits para asociar un archivo
de cdigo fuente subyacente a una pgina web. Este atributo solo es vlido para las
pginas compiladas.
Inherits: con esta propiedad informamos al compilador de que la pgina actual hereda
de la clase especificada.
Language: define el lenguaje en que est programada la pgina actual, siendo este al
que se compilar todo el cdigo fuente de la pgina. Se puede utilizar y especificar un
solo lenguaje por pgina.
37
Conceptos de
Web Forms
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).
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 (Init, Load, PreRender y Unload.) 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.
7.2.
LA DIRECTIVA @IMPORT
38
Conceptos de
Web Forms
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, 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
7.3.
LA DIRECTIVA @IMPLEMENTS
Esta directiva indica que el archivo actual implementa una interfaz determinada, es decir, da
contenido a sus mtodos, propiedades y eventos.
Si deseamos implementar varios interfaces en la pgina, debemos utilizar varias directivas
Implements, una por cada interfaz.
Su sintaxis es:
8.
39
Conceptos de
Web Forms
8.1.
EL FICHERO GLOBAL.ASAX
Para agregarlo a nuestro proyecto, pulsamos con el botn derecho del ratn encima del
nombre del proyecto en la ventana del Explorador de Soluciones. Seguidamente, hacemos
clic en Agregar Nuevo Elemento... Por ltimo, en la ventana seleccionamos el elemento
Clase de aplicacin global. Podemos verlo en la siguiente imagen:
40
Conceptos de
Web Forms
Al crear este fichero por defecto ya vienen definidos ciertos eventos comunes con su
correspondiente explicacin:
<%@ApplicationLanguage="C#"%>
<scriptrunat="server">
voidApplication_Start(objectsender,EventArgse)
{
//Cdigoqueseejecutaaliniciarselaaplicacin
voidApplication_End(objectsender,EventArgse)
{
//Cdigoqueseejecutacuandosecierralaaplicacin
voidApplication_Error(objectsender,EventArgse)
{
//Cdigoqueseejecutaalproducirseunerrornocontrolado
voidSession_Start(objectsender,EventArgse)
{
//Cdigoqueseejecutacuandoseiniciaunanuevasesin
voidSession_End(objectsender,EventArgse)
{
//Cdigoqueseejecutacuandofinalizaunasesin.
//Nota:EleventoSession_Endsedesencadenasoloconelmodosessionstate
//seestablececomoInProcenelarchivoWeb.config.Sielmododesesinseestablece
comoStateServer
//oSQLServer,eleventonosegenera.
</script>
41
Conceptos de
Web Forms
8.1.1. Eventos de servidor
Los principales eventos que podemos tratar en el fichero GLOBAL.ASAX son:
Session_Start: este evento se lanza cuando se inicia una nueva sesin de un usuario
dentro de una aplicacin ASP.NET. El inicio de sesin se produce para cada usuario
cuando solicita la primera pgina de la aplicacin.
Puede usarse para inicializar las variables de sesin para el usuario, tales como
identificacin, preferencias, etc. Estos valores permanecern disponibles mientras su
sesin permanezca activa. Para que se produzca este evento, se debe haber lanzado
previamente el evento Application_Start.
mediante
una
llamada
al
mtodo
Abandon()
de
la
clase
42
Conceptos de
Web Forms
Session_Start
Session_End
pgina de la aplicacin.
La sesin caduca.
Application_End
43
Conceptos de
Web Forms
8.2.
EL FICHERO WEB.CONFIG
Bloqueo
de
valores
de
configuracin.
Es
posible
bloquear
los
valores
de
Windows\Microsoft.NET\Framework\[versin]\config
Por ejemplo:
Para sistemas de 32 bits: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config o
sistemas de 64 bits: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
Este fichero representa la configuracin por defecto de todas las aplicaciones ASP.NET
existentes en el servidor.
44
Conceptos de
Web Forms
La configuracin del fichero Web.config sobrescribe los valores especificados en el
fichero Machine.config y, a su vez, cada fichero Web.config sobrescribir los valores de
configuracin utilizados en los ficheros Web.config de directorios superiores (a no ser
que dichos valores se hayan bloqueado para evitar ser sobrescritos). De esta forma, los
valores ms globales son sobrescritos por valores ms especficos de configuracin.
El proceso de preferencias en la jerarqua queda por tanto:
1.
Configuraciones de Machine.config.
2.
Configuraciones
de
Web.config
global,
se
adjuntan
las
del
anterior
4.
8.3.
Los dos ficheros de configuracin para una aplicacin ASP.NET, Machine.config y Web.config,
se diferencian nicamente en el nombre (adems de su localizacin como hemos visto), ya
que internamente presentan el mismo formato XML.
Debemos tener en cuenta que el sistema de configuracin de ASP.NET distingue entre
maysculas y minsculas.
Cada fichero de configuracin contiene una jerarqua anidada de etiquetas y subetiquetas
XML con atributos que especifican los valores de configuracin. Las etiquetas deben
encontrarse bien construidas y siguen el siguiente criterio:
Los nombres de etiquetas y atributos comienzan con letra minscula y la primera letra
de cada una de las siguientes palabras que forman el nombre va en mayscula.
Los valores de los atributos de las etiquetas comienzan siempre por mayscula y la
primera letra de cada una de las siguientes palabras que la formen va tambin en
mayscula. Existe una excepcin, los valores true y false se escriben con todas las letras
en minsculas.
45
Conceptos de
Web Forms
Dentro de los ficheros de configuracin, el elemento raz es siempre la etiqueta
<configuration>. Dentro de este elemento, entre sus etiquetas de comienzo y fin,
aparecern las distintas secciones de configuracin para aplicar a la aplicacin ASP.NET.
<configuration>
<!Configuracin para aplicar a la aplicacin ASP.NET
-->
</configuration>
Un fichero Web.config bsico creado por Visual Studio para la depuracin es:
9.
Los mdulos HTTP son los responsables de filtrar cada solicitud/respuesta en una aplicacin
ASP.NET. Son elementos del servidor web IIS que, al recibir una peticin hacia un recurso de
la aplicacin, por ejemplo, una pgina .aspx, responden a dicha peticin. Por ejemplo, si
como se ha comentado, se solicita una pgina .aspx, el manejador (handler) especial de este
tipo de pginas crea el entorno para su ejecucin, interpreta y devuelve el resultado.
Estos manejadores, por defecto, vienen implementados y no es necesario modificarlos a no
ser que deseemos realizar alguna configuracin especial adaptada a nuestras necesidades.
Un ejemplo de uso podra ser:
Mapear direcciones: queremos cambiar la direccin de peticiones para ocultar la direccin correcta
del archivo, en la url del navegador se escribe http://midominio,com/listadeproductos.lst. Este archivo
como tal no existe y el manejador, al interceptar la peticin, hace una consulta en una base de datos
y responde adecuadamente.
46
Conceptos de
Web Forms
Los manejadores se crean en Visual Studio agregando un nuevo elemento y eligiendo la
plantilla adecuada como se ve en la siguiente imagen:
En esta plantilla ya nos da construida la clase (Handler.ashx) que implementa la lgica del
manejador y la interfaz IHttpHandler. Esta interfaz contiene el mtodo ProcessRequest()
que ser el mtodo responsable de procesar la solicitud que se ha asociado con el
manejador.
47
Conceptos de
Web Forms
Tambin es necesario implementar la propiedad IsReusable, de solo lectura, y que
simplemente devuelve el valor true.
En este ejemplo, el mtodo ProcessRequest() generar cdigo HTML sencillo, que presentar
una cadena de texto con un saludo.
<%@WebHandlerLanguage="C#"Class="miManejador"%>
usingSystem;
usingSystem.Web;
namespaceComponentes.Pruebas
{
publicclassmiManejador:IHttpHandler
{
publicvoidProcessRequest(HttpContextentorno)
{
HttpResponserespuesta=entorno.Response;
respuesta.Write("<html><body><h2>");
respuesta.Write("Saludos");
respuesta.Write("</h2></body></html>");
publicboolIsReusable
{
get
{
returnfalse;
}
}
}
}
48
Conceptos de
Web Forms
Para
indicar
estos
manejadores,
usaremos
la
subetiqueta
<add>
en
la
etiqueta
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
49
Conceptos de
Web Forms
El cdigo que debemos incluir en el fichero Web.config sera:
<?xmlversion="1.0"?>
<?xmlversion="1.0"?>
<!
ParaobtenermsinformacinsobrecmoconfigurarlaaplicacindeASP.NET,visite
http://go.microsoft.com/fwlink/?LinkId=169433
>
<configuration>
<system.web>
<compilationdebug="true"targetFramework="4.0"/>
<httpHandlers>
<addverb="*"path="pruebaManejador.aspx"
type="Componentes.Pruebas.miManejador"/>
</httpHandlers>
<httpModules>
</httpModules>
</system.web>
</configuration>
En este ejemplo, la clase del manejador es Handler (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.
50
recuerde_
Conceptos de
Web Forms
Los Web Forms sustituyen a los formularios HTML dentro del entorno de
programacin de ASP.NET.
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.
51
recuerde_
Conceptos de
Web Forms
subetiquetas
XML
con
atributos
que
especifican
los
valores
de
Los manejadores HTTP son los encargados de servir las peticiones de una
extensin particular dentro de ASP.NET, como puede ser la extensin de las
pginas .aspx. Se encuentran en la seccin <httpHandlers> del fichero de
configuracin XML Web.config.
52
glosario_
Conceptos de
Web Forms
A
API
(Application
Programming
Interface
Interfaz
de
programacin
de
de
programas,
bibliotecas
un
lenguaje
interpretado
53
para
la
glosario_
Conceptos de
Web Forms
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 l.
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.
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.
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.
54
glosario_
Conceptos de
Web Forms
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 guion 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.
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.
55
referencias web_
Conceptos de
Web Forms
Informacin y recursos para crear
http://msdn.microsoft.com/es-
es/asp.net
Referencia
completa
de
todas
las
http://msdn.microsoft.com/es-
directivas en ASP.NET.
es/library/xz702w3e.aspx
http://www.asp.net/es/aprender/
Pgina
con
recursos
formativos,
http://www.elguille.info/NET/ASPNET
/Default.aspx
http://www.asp.net/
http://msdn.microsoft.com/es-
es/library/4w3ex9c2.aspx#VisualWe
bDeveloper
http://www.genbetadev.com/herrami
entas/herramientas-imprescindiblespara-un-desarrollador-de-net
57
bibliografa_
Conceptos de
Web Forms
Griffiths, Ian; Adams, Matthew; Liberty, Jesse. Programming C# 4.0. 6th Edition.
OReilly. 2010.
MacDonald, Matthew. Beginning ASP.NET 4 in CSharp 2010. Apress. Washington.
2010.
Mackey, Alex. Introducing .NET 4.0 with Visual Studio 2010. Apress. 2010.
Mueller, John Paul. Start Here! Learn Microsoft Visual C# 2010. OReilly Media,
Inc. 2011.
Northrup, Tony; Snell, Mike. Exam 70-515: Web Applications Development with
Microsoft .NET Framework 4. Microsoft Press. 2010.
Shepherd, George. Microsoft ASP.NET 4 Step by Step. Microsoft Press. 2010.
Stephen, Rob. Start Here! Fundamentals of Microsoft .NET Programming. OReilly
Media, Inc. 2011.
59