+ All Categories
Home > Documents > Curso de Desarrollo Web Con Visual Studio 2005

Curso de Desarrollo Web Con Visual Studio 2005

Date post: 14-Oct-2015
Category:
Upload: leon-verde
View: 12 times
Download: 1 times
Share this document with a friend
312
Curso de Desarrollo web con Visual Studio 2005 En este curso se tratan todas las cuestiones fundamentales que le permitirán crear aplicaciones web con Visual Studio 2005. Al final del curso sabrá todo lo necesario para crear sus propias aplicaciones Web orientadas a datos y con multitud de características avanzadas. Este curso le enseñara entre otras cosas: · Cómo crear aplicaciones web con Visual Studio 2005 · A utilizar controles web y controles HTML · Los métodos básicos de acceso a base de datos. · Los controles enlazados a datos. · A manejar las sesiones desde ASP.NET. · El modo de crear aplicaciones con un interfaz de usuario consistente y fácil de personalizar. · Control de acceso de usuarios. · Cómo exponer funcionalidad a ot ras aplicaciones mediante servicios Web. Es recomendable que el alumno disponga de nociones de programación Web en otras plataformas web como ASP, si bien no es indispensable. Para facilitar la transición de los programadores de ASP y Visual Basic 6 al nuevo entorno, en el contenido se hace mención a las diferencias con los lenguajes VBScript y VB6. Si no los conoce simplemente haga caso omiso de esos comentarios. Le recomendamos también que vea la aplicación MSDN Video, que desarrollaremos al finalizar el curso y de l a que podrá consultar su código fuente y videos explicativos. ¡Disfrute del curso! Acerca del autor Jose Alarcón Aguín ASP/ASP.NET MVP José Manuel es ingeniero superior industrial y especialista universitario en consultoría de empresa. Es autor de varios libros, habiendo publicado hasta la fecha cerca de 300 artículos sobre informática e ingeniería en publicaciones especializadas. Es colaborador habitual de MSDN y de las más importantes revistas del sector como PC World , dotnetMania o Windows TI Magazine. En la actualidad es socio de Grupo Femxa, "soluciones al servicio del conocimiento", siendo también su responsable técnico. A través de Krasis [www.krasis.com ], la empresa tecnológica del grupo, dirige para sus diferentes clientes proyectos y productos orientados a la comunicación, la mejora de procesos y los sistemas de teleformación. Puede usted visitar su Blog sobre tecnología .NET en www.jasoft.org . www.detodoprogramacion.com
Transcript
  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    1/312

    Curso de Desarrollo web con Visual Studio 2005

    En este curso se tratan todas las cuestiones fundamentales que le permitirn crearaplicaciones web con Visual Studio 2005. Al final del curso sabr todo lo necesariopara crear sus propias aplicaciones Web orientadas a datos y con multitud de

    caractersticas avanzadas.

    Este curso le enseara entre otras cosas:

    Cmo crear aplicaciones web con Visual Studio 2005 A utilizar controles web y controles HTML Los mtodos bsicos de acceso a base de datos. Los controles enlazados a datos. A manejar las sesiones desde ASP.NET. El modo de crear aplicaciones con un interfaz de usuario consistente y fcil de

    personalizar. Control de acceso de usuarios. Cmo exponer funcionalidad a otras aplicaciones mediante servicios Web.

    Es recomendable que el alumno disponga de nociones de programacin Web en otrasplataformas web como ASP, si bien no es indispensable. Para facilitar la transicin delos programadores de ASP y Visual Basic 6 al nuevo entorno, en el contenido se hacemencin a las diferencias con los lenguajes VBScript y VB6. Si no los conocesimplemente haga caso omiso de esos comentarios.

    Le recomendamos tambin que vea la aplicacin MSDN Video, que desarrollaremos alfinalizar el curso y de la que podr consultar su cdigo fuente y videos explicativos.

    Disfrute del curso!

    Acerca del autor

    Jose Alarcn AgunASP/ASP.NET MVP

    Jos Manuel es ingeniero superior industrial y especialistauniversitario en consultora de empresa. Es autor de varios libros,habiendo publicado hasta la fecha cerca de 300 artculos sobreinformtica e ingeniera en publicaciones especializadas. Escolaborador habitual de MSDN y de las ms importantes revistas

    del sector como PC World, dotnetManiao Windows TI Magazine.

    En la actualidad es socio de Grupo Femxa, "soluciones al serviciodel conocimiento", siendo tambin su responsable tcnico. Atravs de Krasis [www.krasis.com], la empresa tecnolgica delgrupo, dirige para sus diferentes clientes proyectos y productosorientados a la comunicacin, la mejora de procesos y lossistemas de teleformacin.

    Puede usted visitar su Blog sobre tecnologa .NET en www.jasoft.org.

    www.detodoprogramacion.com

    http://www.krasis.com/http://www.jasoft.org/http://www.jasoft.org/http://www.krasis.com/
  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    2/312

    Juegos, Revistas, Cursos, Software, Sistemas Operativos, Antivirus y

    ms Gratis para el Conocimiento...!

    www.detodoprogramas.com

    Vistanos y comprubalo

    Material para los amantes de la Programacin Java,

    C/C++/C#,Visual.Net, SQL, Python, Javascript, Oracle, Algoritmos,

    CSS, Desarrollo Web, Joomla, jquery, Ajax y Mucho Mas

    www.detodoprogramacion.com

    Visitanos

    Libros Universitarios, Contabilidad, Matemticas, obras literarias,

    Administracin, ingeniera y mas

    http://www.detodoprogramas.com/http://www.detodoprogramacion.com/http://www.detodolibros.com/http://www.detodoprogramacion.com/http://www.detodoprogramas.com/http://www.detodoprogramacion.com/http://www.detodoprogramas.com/
  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    3/312

    Contenido

    Este mdulo presenta con carcter general la plataforma .NET y cmo sta sediferencia de otros sistemas de desarrollo tradicionales, como ASP.

    Leccin 1: Introduccin a la plataforma .NETo Qu es la plataforma .NET?o El entorno de ejecucin CLR

    Leccin 2: El lenguaje intermedio y el CLSo El lenguaje intermedio

    o La especificacin comn de los lenguajes .NETo El sistema de tipos comunes

    Leccin 3: La biblioteca de clases de .NETo La BCLo Los espacios de nombres

    Leccin 4: Acceso a datos con ADO.NETo ADO.NETo La arquitectura de ADO.NETo Capa conectada de datoso Capa desconectada

    Leccin 5: Aplicaciones Windows Formso Introduccin

    Leccin 6: Aplicaciones Web Formso Introduccin

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    4/312

    Introduccin a la plataforma .NET

    Simplificando mucho las cosas para poder dar una definicin corta y comprensible, sepodra decir que la plataforma .NET es un amplio conjunto de bibliotecas dedesarrollo que pueden ser utilizadas por otras aplicaciones para acelerarenormemente el desarrollo y obtener de manera automtica caractersticas avanzadasde seguridad, rendimiento, etc...

    En realidad .NET es mucho ms que eso ya que ofrece un entorno gestionado de

    ejecucin de aplicaciones, nuevos lenguajes de programacin y compiladores, ypermite el desarrollo de todo tipo de funcionalidades: desde programas de consola oservicios Windows hasta aplicaciones para dispositivos mviles, pasando pordesarrollos de escritorio o para Internet. Son estos ltimos de los que nosocuparemos en este curso. Pero antes conviene conocer los fundamentos en los quese basa cualquier aplicacin creada con .NET, incluyendo las que nos interesan.

    El entorno de ejecucin CLR

    .NET ofrece un entorno de ejecucin para sus aplicaciones conocido como CommonLanguage Runtimeo CLR. La CLR es la implementacin de Microsoft de un estndarllamado Common Language Infrastructureo CLI. ste fue creado y promovido por la

    propia Microsoft pero desde hace aos es un estndar reconocido mundialmente porel ECMA.

    El CLR/CLI esencialmente define un entorno de ejecucin virtual independiente en elque trabajan las aplicaciones escritas con cualquier lenguaje .NET. Este entornovirtual se ocupa de multitud de cosas importantes para una aplicacin: desde lagestin de la memoria y la vida de los objetos hasta la seguridad y la gestin desubprocesos.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    5/312

    Todos estos servicios unidos a su independencia respecto a arquitecturascomputacionales convierten la CLR en una herramienta extraordinariamente tilpuesto que, en teora, cualquier aplicacin escrita para funcionar segn la CLI puedeejecutarse en cualquier tipo de arquitectura de hardware. Por ejemplo Microsoftdispone de implementacin de .NET para Windows de 32 bits, Windows de 64 bits eincluso para Windows Mobile, cuyo hardware no tiene nada que ver con la

    arquitectura de un ordenador comn.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    6/312

    El Lenguaje Intermedio y el CLS

    Al contrario que otros entornos, la plataforma .NET no est atada a un determinadolenguaje de programacin ni favorece a uno determinado frente a otros. En laactualidad existen implementaciones para varias decenas de lenguajes que permitenescribir aplicaciones para la plataforma .NET. Los ms conocidos son Visual Basic.NET, C#o J#, pero existen implementaciones de todo tipo, incluso de COBOL!.

    Lo mejor de todo es que cualquier componente creado con uno de estos lenguajes

    puede ser utilizado de forma transparente desde cualquier otro lenguaje .NET.Adems, como ya se ha comentado, es posible ejecutar el cdigo .NET en diferentesplataformas y sistemas operativos.

    Cmo se consigue esta potente capacidad?

    Dentro de la CLI, existe un lenguaje llamado IL(Intermediate Languageo LenguajeIntermedio) que est pensado de forma independiente al procesador en el que sevaya a ejecutar. Es algo parecido al cdigo ensamblador pero de ms alto nivel ycreado para un hipottico procesador virtual que no est atado a una arquitecturadeterminada.

    Cuando se compila una aplicacin escrita en un lenguaje .NET cualquiera (da igualque sea VB, C# u otro de los soportados), el compilador lo que genera en realidad esun nuevo cdigo escrito en este lenguaje intermedio. As, todos los lenguajes .NET seusan como capa de ms alto nivel para producir cdigo IL.

    Un elemento fundamental de la CLR es el compilador JIT (just-in-time). Su cometidoes el de compilar bajo demanda y de manera transparente el cdigo escrito enlenguaje intermedio a lenguaje nativo del procesador fsico que va a ejecutar elcdigo.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    7/312

    Al final, lo que se ejecuta es cdigo nativo que ofrece un elevado rendimiento. Esto escierto tambin para las aplicaciones Web escritas con ASP.NET y contrasta con lasaplicaciones basadas en ASP clsico que eran interpretadas, no compiladas, y quejams podran llegar al nivel de desempeo que ofrece ASP.NET.

    La siguiente figura muestra el aspecto que tiene el cdigo intermedio de una

    aplicacin sencilla y se puede obtener usando el desemsamblador que viene con laplataforma .NET.

    Figura 1.1. Cdigo en lenguaje intermedio obtenido con ILDASM.exe

    La especificacin comn de los lenguajes y el sistema de tiposcomunes

    Para conseguir la interoperabilidad entre lenguajes no slo llega con el lenguajeintermedio, sino que es necesario disponer de unas "reglas del juego" que definan unconjunto de caractersticas que todos los lenguajes deben incorporar. A este conjuntoregulador se le denomina Common Language Specification (CLS) o, en castellano,especificacin comn de los lenguajes.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    8/312

    Entre las cuestiones que regula la CLS se encuentran la nomenclatura, la forma dedefinir los miembros de los objetos, los metadatos de las aplicaciones, etc... Una delas partes ms importantes de la CLS es la que se refiere a los tipos de datos.

    Si alguna vez ha programado la API de Windows o ha tratado de llamar a una DLLescrita en C++ desde Visual Basic 6 habr comprobado lo diferentes que son los tipos

    de datos de VB6 y de C++. Para evitar este tipo de problemas y poder gestionar deforma eficiente y segura el acceso a la memoria, la CLS define un conjunto de tiposde datos comunes (Common Type System o CTS) que indica qu tipos de datos sepueden manejar, cmo se declaran y se utilizan stos y de qu manera se debengestionar durante la ejecucin.

    Si nuestras bibliotecas de cdigo utilizan en sus interfaces hacia el exterior datosdefinidos dentro de la CTS no existirn problemas a la hora de utilizarlos desdecualquier otro cdigo escrito en la plataforma .NET.

    Cada lenguaje .NET utiliza una sintaxis diferente para cada tipo de datos. As, porejemplo, el tipo comn correspondiente a un nmero entero de 32 bits

    (System.Int32) se denominaInteger en Visual Basic .NET, pero se llama inten C#.En ambos casos representan el mismo tipo de datos que es lo que cuenta.

    Nota:En ASP 3.0 se suele usar VBScript como lenguaje de programacin. Eneste lenguaje interpretado, al igual que en VB6, un Integer representabaun entero de 16 bits. Los enteros de 32 bits eran de tipo Long. Es unfallo muy comn usar desde Visual Basic .NET el tipo Integer pensandoque es de 16 bits cuando en realidad es capaz de albergar nmerosmucho mayores. Tngalo en cuenta cuando empiece a programar.

    Existen tipos por valor (como los enteros que hemos mencionado o las

    enumeraciones) y tipos por referencia (como las clases). En el siguiente mdulo seprofundiza en todas estas cuestiones.

    Ver vdeo 1 de esta leccin(Lenguaje intermedio)

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    9/312

    La biblioteca de clases de .NET

    Todo lo que se ha estado comentando hasta ahora en el curso constituye la base de laplataforma .NET. Si bien es muy interesante y fundamental, por s mismo no nosservira de mucho para crear programas si debisemos crear toda la funcionalidaddesde cero.

    Obviamente esto no es as, y la plataforma .NET nos ofrece infinidad defuncionalidades "de fbrica" que se utilizan como punto de partida para crear las

    aplicaciones. Existen funcionalidades bsicas (por ejemplo todo lo relacionado con laE/S de datos o la seguridad) y funcionalidades avanzadas en las que se fundamentancategoras enteras de aplicaciones (acceso a datos, creacin de aplicaciones Web...).

    Toda esta funcionalidad est implementada en forma de bibliotecas de funciones quefsicamente se encuentran en diversas DLL (bibliotecas de enlazado dinmico). A suconjunto se le denomina Base Classes Library (Biblioteca de clases base o BCL) yforman parte integral de la plataforma .NET, es decir, no se trata de aadidos que sedeban obtener o adquirir aparte.

    La siguiente figura ilustra a vista de pjaro la arquitectura conceptual de la plataforma.NET. En ella se pueden observar los elementos que se han mencionado en apartados

    anteriores (lenguajes, CLR, CLS...) y en qu lugar de se ubican las bibliotecas declases base:

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    10/312

    Figura 1.2. Distintos elementos de la plataforma .NET y cmo se relacionanentre s.

    Resulta muy til para comprender lo explicado hasta ahora. No se preocupe si hayelementos que no conoce, ms adelante los estudiaremos todos.

    Todo lo que se encuentra en la BCL forma parte de la plataforma .NET. De hechoexiste tal cantidad de funcionalidad integrada dentro de estas bibliotecas (hay

    decenas de miles de clases) que el mayor esfuerzo que todo programador que seinicia en .NET debe hacer es el aprendizaje de las ms importantes. De todos modosVisual Studio ofrece mucha ayuda contextual (documentacin, Intellisense...) y unavez que se aprenden los rudimentos resulta fcil ir avanzando en el conocimiento dela BCL a medida que lo vamos necesitando.

    Los espacios de nombres

    Dada la ingente cantidad de clases que existen debe haber algn modo deorganizarlas de un modo coherente. Adems hay que tener en cuenta que podemosadquirir ms funcionalidades (que se traducen en clases) a otros fabricantes, por nomencionar que crearemos continuamente nuevas clases propias.

    Para solucionar este problema existen en todos los lenguajes .NET los espacios denombreso namespaces.

    Un espacio de nombres no es ms que un identificador que permite organizar demodo estanco las clases que estn contenidas en l as como otros espacios denombres.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    11/312

    As, por ejemplo, todo lo que tiene que ver con el manejo de estructuras de datosXML en la plataforma .NET se encuentra bajo el espacio de nombres System.Xml. Lafuncionalidad fundamental para crear aplicaciones Web est en el espacio de nombresSystem.Web. ste a su vez contiene otros espacios de nombres ms especializadoscomo System.Web.Caching para la persistencia temporal de datos,System.Web.UI.WebControls, que contiene toda la funcionalidad de controles Web

    para interfaz de usuario, etc...

    Ver vdeo 1 de esta leccin(Utilizacin de las clases base)

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    12/312

    Acceso a datos con ADO.NET

    El acceso a fuentes de datos es algo indispensable en cualquier lenguaje o plataformade desarrollo. La parte de la BCL que se especializa en el acceso a datos se denominade forma genrica comoADO.NET.

    Si usted ha programado con Visual Basic 6.0 o con ASP, ha empleado en su cdigocon total seguridad la interfaz de acceso a datos conocida como ADO (ActiveX DataObjects), puede que combinado con ODBC (Open Database Connectivity). Si adems

    es usted de los programadores con solera y lleva unos cuantos aos en esto esprobable que haya usado RDO o incluso DAO, todos ellos mtodos mucho msantiguos.

    ADO.NET ofrece una funcionalidad completamente nueva, que tiene poco que ver conlo existente hasta la fecha en el mercado. Sin embargo, con el nimo de retirarbarreras a su aprendizaje, Microsoft denomin a su nuevo modelo de acceso a datoscon un nombre similar y algunas de sus clases recuerdan a objetos de propsitoanlogo en el vetusto ADO.

    ADO.NET es un modelo de acceso mucho ms orientado al trabajo desconectado delas fuentes de datos de lo que nunca fue ADO. Si bien este ltimo ofreca la

    posibilidad de desconectar los Recordsetsy ofreca una forma de serializacin de estosa travs de las diferentes capas de una aplicacin, el mecanismo no es ni de lejos tanpotente como el que nos ofrece ADO.NET.

    El objeto ms importante a la hora de trabajar con el nuevo modelo de acceso a datoses el DataSet. Sin exagerar demasiado podramos calificarlo casi como un motor dedatos relacionales en memoria. Aunque hay quien lo asimila a los clsicos Recordsetssu funcionalidad va mucho ms all como se ver en el correspondiente mdulo.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    13/312

    Arquitectura de ADO.NET

    El concepto ms importante que hay que tener claro sobre ADO.NET es su modo defuncionar, que se revela claramente al analizar su arquitectura:

    Figura 1.3.- Arquitectura de ADO.NET

    Existen dos capas fundamentales dentro de su arquitectura: la capa conectaday ladesconectada.

    Capa conectada

    La primera de ellas contiene objetos especializados en la conexin con los orgenes dedatos. As, la clase genrica Connectionse utiliza para establecer conexiones a losorgenes de datos. La clase Commandse encarga de enviar comandos de toda ndoleal origen de datos. Por fin la clase DataReader est especializada en leer losresultados de los comandos mientras se permanece conectado al origen de datos.

    La clase DataAdapter hace uso de las tres anteriores para actuar de puente entre lacapa conectada y la desconectada.

    Estas clases son abstractas, es decir, no tienen una implementacin real de la que sepueda hacer uso directamente. Es en este punto en donde entran en juego los

    proveedores de datos. Cada origen de datos tiene un modo especial decomunicarse con los programas que los utilizan, adems de otras particularidades quese deben contemplar. Un proveedor de datos de ADO.NET es una implementacin

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    14/312

    concreta de las clases conectadas abstractas que hemos visto, que hereda de stas yque tiene en cuenta ya todas las particularidades del origen de datos en cuestin.

    As, por ejemplo, las clases especficas para acceder a SQL Server se llamanSqlConnection, SqlCommand, SqlDataReader y SqlDataAdapter y seencuentran bajo el espacio de nombres System.Data.SqlClient. Es decir, al

    contrario que en ADO clsico no hay una nica clase Connectiono Commandque seuse en cada caso, si no que existen clases especializadas para conectarse y recuperarinformacin de cada tipo de origen de datos.

    Nota:El hecho de utilizar clases concretas para acceso a las fuentes de datosno significa que no sea posible escribir cdigo independiente del origende datos. Todo lo contrario. La plataforma .NET ofrece grandesfacilidades de escritura de cdigo genrico basadas en el uso de herenciae implementacin de interfaces. De hecho la versin 2.0 de .NET ofrecegrandes novedades especficamente en este mbito.

    Existen proveedores nativos, que son los que se comunican directamente con elorigen de datos (por ejemplo el de SQL Server o el de Oracle), y proveedores"puente", que se utilizan para acceder a travs de ODBC u OLEDB cuando no existeun proveedor nativo para un determinado origen de datos.

    Nota:Estos proveedores nativos, si bien muy tiles en determinadascircunstancias, ofrecen un rendimiento menor debido a la capaintermedia que estn utilizando (ODBC u OLEDB). Un programador novelpuede sentir la tentacin de utilizar siempre el proveedor puente paraOLEDB y as escribir cdigo compatible con diversos gestores de datosde forma muy sencilla. Se trata de un error y siempre que sea posible esmejor utilizar un proveedor nativo.

    Capa desconectada

    Una vez que ya se han recuperado los datos desde cualquier origen de datos querequiera una conexin sta ya no es necesaria. Sin embargo sigue siendo necesariotrabajar con los datos obtenidos de una manera flexible. Es aqu cuando la capa dedatos desconectada entra en juego. Adems, en muchas ocasiones es necesario tratarcon datos que no han sido obtenidos desde un origen de datos relacional con el quese requiera una conexin. A veces nicamente necesitamos un almacn de datostemporal pero que ofrezca caractersticas avanzadas de gestin y acceso a lainformacin.

    Por otra parte las conexiones con las bases de datos son uno de los recursos msescasos con los que contamos al desarrollar. Su mala utilizacin es la causa msfrecuente de cuellos de botella en las aplicaciones y de que stas no escalen como esdebido. Esta afirmacin es especialmente importante en las aplicaciones Web en lasque se pueden recibir muchas solicitudes simultneas de cualquier parte del mundo.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    15/312

    Finalmente otro motivo por el que es importante el uso de los datos desconectado desu origen es la transferencia de informacin entre capas de una aplicacin. staspueden encontrarse distribuidas por diferentes equipos, e incluso en diferenteslugares del mundo gracias a Internet. Por ello es necesario disponer de algn modogenrico y eficiente de poder transportar los datos entre diferentes lugares, utilizarlosen cualquiera de ellos y posteriormente tener la capacidad de conciliar los cambios

    realizados sobre ellos con el origen de datos del que proceden.

    Todo esto y mucho ms es lo que nos otorga el uso de los objetos DataSet. Es obvioque no se trata de tareas triviales, pero los objetos DataSet estn pensados ydiseados con estos objetivos en mente. Como podremos comprobar ms adelante eneste curso es bastante sencillo conseguir estas funcionalidades tan avanzadas yalgunas otras simplemente usando de manera adecuada este tipo de objetos.

    Nota:Otra interesante caracterstica de los DataSetes que permiten gestionarsimultneamente diversas tablas (relaciones) de datos, cada una de unorigen diferente si es necesario, teniendo en cuenta las restricciones y

    las relaciones existentes entre ellas.

    Los DataSet, como cualquier otra clase no sellada de .NET, se pueden extendermediante herencia. Ello facilita una tcnica avanzada que consiste en crear tiposnuevos de DataSet especializados en la gestin de una informacin concreta (porejemplo un conjunto de tablas relacionadas). Estas nuevas tipos clases se denominangenricamente DataSet Tipados, y permiten el acceso mucho ms cmodo a losdatos que representan, verificando reglas de negocio, y validaciones de tipos de datosms estrictas.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    16/312

    Aplicaciones Windows Forms

    Las aplicaciones de escritorio son aquellas basadas en ventanas y controles comunesde Windows que se ejecutan en local. Son el mismo tipo de aplicaciones que antesconstruiramos con Visual Basic 6 u otros entornos similares.

    En la plataforma .NET el espacio de nombres que ofrece las clases necesarias paraconstruir aplicaciones de escritorio bajo Windows se denomina Windows Forms. Estees tambin el nombre genrico que se le otorga ahora a este tipo de programas

    basados en ventanas.

    Windows Forms est constituido por multitud de clases especializadas que ofrecenfuncionalidades para el trabajo con ventanas, botones, rejillas, campos de texto ytodo este tipo de controles habituales en las aplicaciones de escritorio.

    Visual Studio ofrece todo lo necesario para crear visualmente este tipo de programas,de un modo similar aunque ms rico al que ofreca el entorno de desarrollo integradode Visual Basic.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    17/312

    Figura 1.4.- Diseador de interfaces de aplicaciones de escritorio conWindows Forms en Visual Studio 2005.

    Al contrario que en VB6, .NET proporciona control sobre todos los aspectos de lasventanas y controles, no dejando nada fuera del alcance del programador y otorgando

    por lo tanto la mxima flexibilidad. Los formularios (ventanas) son clases que heredande la clase base Form, y cuyos controles son miembros de sta. De hecho se tratanicamente de cdigo y no es necesario (aunque s muy recomendable) emplear eldiseador grfico de Visual Studio para crearlas.

    Este es el aspecto que presenta parte del cdigo que genera la interfaz mostrada enla anterior figura:

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    18/312

    Figura 1.5.- Cdigo autogenerado por Visual Studio para crear la interfaz dela figura anterior.

    Al contrario que en Visual Basic tradicional, en donde siempre existan instancias por

    defecto de los formularios que podamos usar directamente, en .NET es necesariocrear un objeto antes de poder hacer uso de los formularios:

    Dim frm As New MiFormulariofrm.Show()

    Todos los controles heredan de una clase Controlpor lo que conservan una serie defuncionalidades comunes muy interesantes, como la capacidad de gestionarlos en eldiseador (movindolos, alinendolos...), de definir mrgenes entre ellos o hacer quese adapten al tamao de su contenedor.

    Este tipo de aplicaciones se salen del mbito de este curso por lo que no se

    profundizar ms en ellas.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    19/312

    Aplicaciones Web Forms

    Tradicionalmente las aplicaciones Web se han desarrollado siguiendo un modelo mixtoque intercalaba cdigo HTML y JavaScript propio de pginas Web (parte cliente), juntocon cdigo que se ejecutara en el servidor (parte servidora). Este modelo contrastabapor completo con el modelo orientado a eventos seguido por las principalesherramientas de desarrollo de aplicaciones de escritorio.

    En el modelo orientado a eventos se define la interfaz de usuario colocando controles

    en un contenedor y se escribe el cdigo que actuar como respuesta a lasinteracciones de los usuarios sobre estos controles. Si conoce el diseador de VB6 ode Windows Forms mencionado en el apartado anterior sabe exactamente a qu nosreferimos.

    Hacer esto en una aplicacin de escritorio no tiene mayor dificultad ya que todo elcdigo se ejecuta en el mismo lugar. La principal caracterstica de las aplicacionesWeb sin embargo es que se la interfaz de usuario (lo que los usuarios de la aplicacinven) se ejecuta en un lugar diferente al cdigo de la aplicacin que reside en unservidor. Para mayor desgracia estas aplicaciones se basan en el uso del protocoloHTTP que es un protocolo sin estado y que no conserva la conexin entre dosllamadas consecutivas.

    Por ejemplo, el siguiente cdigo ilustra el cdigo que es necesario escribir en ASPpara disponer de una pgina que rellena una lista de seleccin con unos cuantosnombres (podran salir de una base de datos y an sera ms complicado), y quedispone de un botn que escribe un saludo para el nombre que se haya elegido de lalista.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    20/312

    Figura 1.6.- Cdigo ASP sencillo que genera una lista de seleccin y saluda alpresionar un botn.

    Obviamente se podra haber simplificado sin enviar el formulario al servidor usandoJavaScript en el cliente para mostrar el saludo, pero la intencin es ilustrar la mezclade cdigo de cliente y de servidor que existe en este tipo de aplicaciones.

    Las principales desventajas de este tipo de codificacin son las siguientes:

    1. No existe separacin entre el diseo y la lgica de las aplicaciones. Siqueremos cambiar sustancialmente la apariencia de la aplicacin Web lotendremos bastante complicado puesto que el cdigo del servidor estmezclado entre el HTML.

    2. En ASP clsico no existe el concepto de control para la interfaz de usuario.Lo nico que hay es HTML y JavaScript que se deben generar desde el servidor.En el ejemplo de la figura para generar un control de lista con unos elementosno podemos asignar una propiedad de la lista (porque no existe tal lista), sinoque tenemos que crear un bucle que genere los elementos HTML necesariospara generarla. Tampoco disponemos de un diseador visual que nos permitagestionar los controles y elementos HTML existentes, y menos cuando stos seencuentran mezclados con el cdigo del servidor.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    21/312

    3. No disponemos de forma de detectar en el servidor que se ha realizadoalgo en el cliente. El cliente se encuentra desconectado desde el momento enque se termina de devolver la pgina. Slo se recibe informacin en el servidorcuando se solicita una nueva pgina o cuando se enva un formulario tal y comose hace en el ejemplo, debindonos encargar nosotros de averiguar si lapeticin es la primera vez que se hace o no, y de dar la respuesta adecuada. En

    cualquier caso es mucho menos intuitivo que el modelo de respuesta a eventosde una aplicacin de escritorio.4. No existe constancia del estado de los controles de cada pgina entre

    las llamadas. En cada ejecucin de la pgina tendremos que recrearcompletamente la salida. Por ejemplo si presionamos el botn Di Holatenemos que escribir adems de la etiqueta Hola, nombre el resto de lapantalla, incluyendo la lista con todos los nombres dejando seleccionado elmismo que hubiese antes. Si estos nombres viniesen de una base de datos estopuede ser todava ms ineficiente y tendremos que buscar mtodos alternativospara generarlos ya que en ASP tampoco se deben almacenar en los objetos desesin y/o aplicacin Recordsets resultado de consultas.

    5. No existe el concepto de Propiedad de los controles. En una aplicacinWindows asignamos el texto de un campo usando una propiedad (por ejemploText1.Text = "Hola") y sta se asigna y permanece en la interfaz sin quetengamos que hacer nada. En una aplicacin Web clsica tenemos quealmacenarlas en algn sitio (una variable de sesin o un campo oculto) paraconservarlas entre diferentes peticiones de una misma pgina.

    6. Los controles complejos no tienen forma de enviar sus valores alservidor. Si intentamos crear una interfaz avanzada que utilice tablas y otroselementos que no son controles de entrada de datos de formularios de HTMLtendremos que inventarnos mecanismos propios para recoger esos datos yenviarlos al servidor.

    La principal aportacin de ASP.NET al mundo de la programacin es que ha llevado ala Web el paradigma de la programacin orientada a eventos propia de aplicaciones

    de escritorio, ofreciendo:

    Separacin entre diseo y lgica. Componentes de interfaz de usuario, tanto estndar como de terceras empresas

    o propios. Diseadores grficos. Eventos. Estado. Enlazado a datos desde la interfaz.

    Esto como se ver marca un antes y un despus en la programacin para Internet.

    Ver vdeo 1 de esta leccin(Diseador de formularios Web)

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    22/312

    Nota: Para mayor simplicidad los videos de este mdulo estn realizados con aplicaciones deconsola. Si quiere reproducir los ejemplos mostrados en estos videos en una aplicacin webpuede modificar las instrucciones Console.WriteLinepor Response.Write.

    Contenido

    Leccin 1: El sistema de tiposo Tipos primitivos

    o Variables y constanteso Enumeracioneso Arrays (matrices)

    Leccin 2: Clases y estructuraso Claseso Definir una claseo Instanciar una claseo Estructuraso Accesibilidado Propiedadeso Interfaces

    Leccin 3: Manejo de excepcioneso Manejo de excepciones

    Leccin 4: Eventos y delegadoso Eventoso Definir y producir eventos en una claseo Delegados

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    23/312

    o Definir un evento bien informado Leccin 5: Atributos

    o Atributos

    Ver video de introduccin(Crear un proyecto de consola)

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    24/312

    Introduccin

    En esta primera leccin veremos los tipos de datos que .NET Framework pone anuestra disposicin, as mismo veremos las diferencias con respecto a los tipos dedatos de VBScript/VB6 y las equivalencias entre los tipos de ambos entornos, de estaforma nos resultar ms fcil familiarizarnos. Aunque no debemos olvidar que en .NETlos tipos de datos tienen un tratamiento, en algunos casos, especial que puedenllevarnos a confusin, por tanto en los casos que pueda existir esa posibilidad de

    funcionamiento diferente, veremos ejemplos de cmo los manejbamos enVBScript/VB6 y cmo tendremos que usarlos desde Visual Basic .NET.

    A continuacin daremos un repaso a conceptos bsicos o elementales sobre los tiposde datos, que si bien nos sern familiares, es importante que lo veamos para podercomprender mejor cmo estn definidos y organizados los tipos de datos en .NET y depaso veremos las equivalencias con respecto a VBScript/VB6.

    Tipos de datos de .NET

    Visual Basic .NET est totalmente integrado con .NET Framework, por tanto los tiposde datos que podremos usar con este lenguaje sern los definidos en este "marco detrabajo", por este motivo vamos a empezar usando algunas de las definiciones quenos encontraremos al recorrer la documentacin que acompaa a este lenguaje deprogramacin.

    En los siguientes enlaces tenemos los temas a tratar en esta primera leccin delmdulo sobre las caractersticas del lenguaje Visual Basic .NET

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    25/312

    Tipos primitivoso Sufijos o caracteres y smbolos identificadores para los tiposo Tipos por valor y tipos por referencia

    Variables y constanteso Consejo para usar las constanteso Declarar variableso Declarar variables y asignar el valor inicialo El tipo de datos Charo Obligar a declarar las variables con el tipo de datoso Aplicar Option Strict On a un fichero en particularo Aplicar Option Stict On a todo el proyectoo Ms opciones aplicables a los proyectos

    Enumeraciones: Constantes agrupadaso El nombre de los miembros de las enumeracioneso Los valores de una enumeracin no son simples nmeros

    Arrays (matrices)o Declarar e inicializar un arrayo Cambiar el tamao de un arrayo Eliminar el contenido de un arrayo Los arrays son tipos por referencia

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    26/312

    Tipos primitivos

    Veamos en la siguiente tabla los tipos de datos definidos en .NET Framework y losalias utilizados en Visual Basic 2005, as como el equivalente de VBScript/VB6.

    .NET Framework VB.NET VBScript/VB6System.Boolean Boolean Boolean *

    System.Byte Byte ByteSystem.Int16 Short IntegerSystem.Int32 Integer LongSystem.Int64 Long N.A.System.Single Single SingleSystem.Double Double DoubleSystem.Decimal Decimal Currency *System.Char Char N.A. (ChrW)System.String String String *System.Object Object Variant / Object *System.DateTime Date Date *

    System.SByte SByte N.A.System.UInt16 UShort N.A.System.UInt32 UInteger N.A.System.UInt64 ULong N.A.

    Tabla 1.1. Tipos de datos y equivalencia entre lenguajes

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    27/312

    En la columna de equivalencias con VBScript/VB6 tenemos algunos indicados conN.A., estos tipos no tienen equivalencia. Por otro lado, los marcados con un asterisco(*) no tienen equivalencia directa, pero el o los tipos indicados seran los que ms seaproximaran.

    El caso del tipo Stringes un caso especial, realmente un Stringde .NET es casi como

    uno de VBScript/VB6, con la diferencia de que las cadenas en .NET son inmutables.Esto quiere decir que una vez que se han creado no se pueden modificar, y en casode que queramos cambiar el contenido, .NET se encarga de usar la anterior y crearuna nueva cadena. Por tanto si usamos las cadenas para realizar concatenaciones(unin de cadenas para crear una nueva), el rendimiento es inferior incluso al quetenamos en VBScript/VB6. Existe una clase en .NET que es ideal para estos casos ycuyo rendimiento es superior al de VBScript/VB6: la clase StringBuilder que yahemos visto someramente en un vdeo del mdulo anterior.

    Las ltimas filas mostradas en la tabla son tipos especiales que si bien son parte delsistema de tipos comunes (CTS) no forman parte de la Common LanguageSpecification(CLS), es decir la especificacin comn para los lenguajes "compatibles"

    con .NET. Por tanto, si queremos crear aplicaciones que puedan interoperar con todoslos lenguajes de .NET, no debemos usar estos tipos como valores de devolucin defunciones ni como tipo de datos usado en los argumentos de las funciones,propiedades o procedimientos pblicos.

    Los tipos mostrados en la tabla 1 son los tipos primitivos de .NET y por extensin deVisual Basic 2005, es decir son tipos "elementales" para los cuales cada lenguajedefine su propia palabra clave equivalente con el tipo definido en el CTS de .NETFramework. Todos estos tipos primitivos podemos usarlos tanto por medio de lostipos propios de Visual Basic, los tipos definidos en .NET o bien como literales. Porejemplo, podemos definir un nmero entero literal indicndolo con el sufijo I: 12345Io bien asignndolo a un valor de tipo Integero a un tipo Sytem.Int32 de .NET. Lanica excepcin de los tipos mostrados en la tabla 1 es el tipo de datos Object, este

    es un caso especial del que nos ocuparemos en la prxima leccin.

    Sufijos o caracteres y smbolos identificadores para los tipos

    Cuando usamos valores literales numricos en Visual Basic 2005, el tipo de datos quepor defecto le asigna el compilador es el tipo Double. Si nuestra intencin es utilizarsin embargo un tipo de datos diferente, podemos indicarlo aadiendo una letra comosufijo al tipo. Por ejemplo para indicar que queremos considerar un valor enteropodemos usar la letra Io el signo %, de igual forma, un valor de tipo entero largo(Long) lo podemos indicar usando L o &, en la siguiente tabla podemos ver loscaracteres o letra que podemos usar como sufijo en un literal numrico para que elcompilador lo identifique sin ningn lugar a dudas.

    Tipo de datos Smbolo CarcterShort N.A. SInteger % ILong & LSingle ! FDouble # R

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    28/312

    Decimal @ DUShort N.A. USUInteger N.A. UIULong N.A. UL

    Tabla 1.2. Sufijos para identificar los tipos de datos

    El uso de estos caracteres nos puede resultar de utilidad particularmente para lostipos de datos que no se pueden convertir en un valor doble.

    Por ejemplo, si queremos asignar este valor literal a un tipo Decimal:12345678901234567890, tal como vemos en la Figura 2, el IDE de Visual Studio2005 nos indicar que existe un error de desbordamiento (Overflow) ya que esa cifraes muy grande para usarlo como valor Double, pero si le agregamos el sufijo Do @ya no habr dudas de que estamos tratando con un valor Decimal.

    Figura 2.1. Error de desbordamiento al intentar asignar un valor Double auna variable Decimal

    Tipos por valor y tipos por referencia

    Los tipos de datos de .NET los podemos clasificar en dos grupos:

    Tipos por valor Tipos por referencia

    Los tipos por valor son tipos de datos cuyo valor se almacena en la pila o en lamemoria "cercana", como los numricos que hemos visto. Podemos decir que elacceso al valor contenido en uno de estos tipos es directo, es decir se almacenadirectamente en la memoria reservada para ese tipo y cualquier cambio que hagamoslo haremos directamente sobre dicho valor. De igual forma cuando copiamos valoresde un tipo por valor a otro, estaremos haciendo copias independientes.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    29/312

    Por otro lado, los tipos por referencia se almacenan en el "montculo" (heap) omemoria "lejana". A diferencia de los tipos por valor, los tipos por referencia lo nicoque almacenan es una referencia (o puntero) al valor asignado. Si hacemos copias detipos por referencia, realmente lo que copiamos es la referencia propiamente dicha,pero no el contenido.

    Estos dos casos los veremos en breve con ms detalle.

    Ver video 1 de esta leccin (Tipos de datos primitivos)Ver video 2 de esta leccin(Tipos por valor y por referencia)

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    30/312

    Variables y constantes

    Disponer de todos estos tipos de datos no tendra ningn sentido si no los pudiramosusar de alguna otra forma que de forma literal. Y aqu es donde entran en juego lasvariables y constantes.

    Consejo para usar las constantes

    Siempre que tengamos que indicar un valor constante, ya sea para indicar el mximoo mnimo permitido en un rango de valores o para comprobar el trmino de un bucle,deberamos usar una constante en lugar de un valor literal. De esta forma si ese valorlo usamos en varias partes de nuestro cdigo, si en un futuro decidimos que dichovalor debe ser diferente, nos resultar ms fcil realizar un solo cambio que cambiarloen todos los sitios en los que lo hemos usado. Adems de que de esta forma nosaseguramos de que el cambio se realiza adecuadamente y no tendremos quepreocuparnos de las consecuencias derivadas de no haber hecho el cambio en todoslos sitios que deberamos.

    Pero esto no es algo nuevo, las constantes se definen de la misma forma que enVBScript/VB6, salvo que ahora podemos obligarnos a indicar el tipo de datos que esaconstante va a contener. Esto lo veremos en la siguiente seccin.

    Declarar variables

    La declaracin de las variables en Visual Basic 2005 se hace de la misma forma queen VBScript/VB6/VB6, o casi, las excepciones vienen dadas, como hemos comentadoantes, de la posibilidad de obligar a definir el tipo de cada variable y de cmopodemos definir ms de una variable en una misma instruccin Dim.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    31/312

    Para no embrollar mucho la cosa, veamos ejemplos de cmo definir o declararvariables siguiendo las buenas costumbres, es decir, indicando siempre el tipo dedatos de la variable.

    En VB6 era posible definir ms de una variable en una misma instruccin Dim, aunquedependiendo de cmo hiciramos esa declaracin poda ser que, normalmente para

    nuestro pesar, que no todas las variables fuesen del tipo que "supuestamente"habamos querido indicar.Por ejemplo, con esta declaracin:

    Dima, b, c AsInteger

    A primera vista estamos declarando tres variables de tipo Integer, pero realmentesolo declara con el tipo indicado a la ltima variable, las otras dos, se declaran contipo Varianto el tipo de datos predefinido (que es el que tiene por defecto todas lasvariables en VBScript/VB6 para ASP clsico).

    En Visual Basic 2005 al usar esa misma lnea de cdigo estamos declarando tresvariables de tipo Integer, esto es algo que debemos tener en cuenta, sobre todo sinuestra intencin era hacer precisamente lo que VB6, haca, es decir, declarar dosvariables de tipo Varianty una de tipo Integer.

    Declarar variables y asignar el valor inicial

    En Visual Basic 2005 tambin podemos inicializar una variable con un valor distinto alpredeterminado, que en los tipos numricos es un cero, en las fechas es el 1 de enerodel ao 1 a las doce de la madrugada (#01/01/0001 12:00:00AM#) y en lacadenas es un valor nulo (Nothing), para hacerlo, simplemente tenemos que indicarese valor, tal como veremos es muy parecido a como se declaran las constantes. Porejemplo:

    Dima AsInteger= 10

    En esa misma lnea podemos declarar y asignar ms variables, pero todas debenestar indicadas con el tipo de datos:

    Dima AsInteger= 10, b AsInteger= 25

    Por supuesto, el tipo de datos puede ser cualquiera de los tipos primitivos:

    Dima AsInteger= 10, b AsInteger= 25, s AsString= "Hola"

    Aunque para que el cdigo sea ms legible, y fcil de depurar, no deberamos mezclaren una misma instruccin Dimms de un tipo de datos.

    Nota:Es importante saber que en las cadenas de Visual Basic 2005 el valor de

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    32/312

    una variable de tipo Stringno inicializada NO es una cadena vaca comoocurra en VBScript/VB6, sino un valor nulo (Nothing).

    El tipo de datos Char

    En Visual Basic 2005 podemos declarar valores de tipo Char, este tipo de datos es uncarcter Unicode y podemos declararlo y asignarlo a un mismo tiempo. El problemacon el que nos podemos encontrar es a la hora de indicar un carcter literal.Si bien en VBScript/VB6 no existe el tipo de datos Char, si podemos convertir un valornumrico en un carcter (realmente en una cadena) o bien podemos convertir uncarcter en su correspondiente valor numrico.

    Dimc AsString

    c = Chr(65)

    Dimn AsInteger

    n = Asc("A")

    En Visual Basic 2005 tambin podemos usar esas mismas funciones, aunque en elcaso de Chr, el valor que devuelve esta funcin es un valor de tipo Char, no de tipoString como ocurre en VBScript/VB6, pero debido a que un valor de tipo Char sepuede convertir en una cadena, podemos hacer una asignacin como la mostrada enel cdigo anterior sin ningn tipo de problemas.

    Si nuestra intencin es asignar un valor Chara una variable, adems de la funcinChr, podemos hacerlo con un literal, ese valor literal estar encerrado entre comillasdobles, (al igual que una cadena), aunque para que realmente sea un carcterdebemos agregarle una cjusto despus del cierre de las comillas dobles:

    Dimc AsChar= "A"c

    Obligar a declarar las variables con el tipo de datos

    La obligatoriedad, a la que hacamos referencia anteriormente, de declarar lasvariables y constantes con el tipo de datos adecuado, la podemos aplicar a todo elproyecto o a un mdulo en particular. Para ello tenemos que usar la instruccinOption Strict On, una vez indicado, se aplicar a todo el cdigo, no solo a las

    declaraciones de variable, constantes o al tipo de datos devuelto por las funciones ypropiedades, sino tambin a las conversiones y asignaciones entre diferentes tipos dedatos.

    No debemos confundir Option Strict con el clsico Option Explicit de VB. Esteltimo, al igual que en VBScript/VB6, nos obliga a declarar todas las variables,mientras que el primero lo que hace es obligarnos a que esas declaraciones tengan untipo de datos.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    33/312

    Tanto una como la otra tienen dos estados: conectado o desconectado dependiendode que agreguemos Onu Offrespectivamente.

    Como recomendacin para buenas prcticas, debemos "conectar" siempre estas dosopciones, si bien Option Explicit On ya viene como valor por defecto, cosa que noocurre con Option Strict, que por defecto est desconectado.

    Aplicar Option Strict On a un fichero en particular

    Cuando en VBScript/VB6 agregbamos un nuevo formulario, mdulo BAS o mdulo declase, se agregaba automticamente la instruccin Option Explicit, en Visual Basic2005 esta opcin est predefinida y no se agrega a ningn mdulo, pero eso nosignifica que no se aplique, aunque siempre podemos escribir esas instrucciones (conel valor Onal final) en cada uno de los mdulos o ficheros de cdigo que agreguemosa nuestro proyecto. Lo mismo podemos hacer con Option Strict On, en caso de quenos decidamos a hacerlo, esas lneas de cdigo deben aparecer al principio del fichero

    y solamente pueden estar precedidas de comentarios (instrucciones REM o lneasiniciadas con una comilla simple).

    En la Figura 2 mostrada anteriormente tenemos una captura del editor de Visual Basic2005 en la que hemos indicado que queremos tener comprobacin estricta.

    Aplicar Option Strict On a todo el proyecto

    Tambin podemos hacer que Option Strictfuncione igual que Option Explicit, es decir,

    que est activado a todo el proyecto, en este caso no tendramos que indicarlo encada uno de los ficheros de cdigo que formen parte de nuestro proyecto, si biensolamente ser aplicable a los que no tengan esas instrucciones. Aclaremos estoltimo: si Option Strict(u Option Explicit) est definido de forma global al proyecto,podemos desactivarlo en cualquiera de los ficheros, para ello simplemente habra queusar esas declaraciones pero usando Offen lugar de On. De igual forma, si ya estdefinido globalmente y lo indicamos expresamente, no se producir ningn error. Loimportante aqu es saber que siempre se usar el estado indicado en cada fichero,independientemente de cmo lo tengamos definido para el mbito del proyecto.

    Para que siempre se usen estas asignaciones en todo el proyecto, vamos a ver cmoindicarlo en el entorno de Visual Studio 2005.

    Abrimos Visual Studio 2005 y una vez que se haya cargado, (no hace falta crearningn nuevo proyecto, de este detalle nos ocuparemos en breve), seleccionamos laopcin Herramientas>Opciones... se mostrar un cuadro de dilogo y del panelizquierdo seleccionamos la opcin Proyectos y soluciones, la expandimos yseleccionamos Valores predeterminados de VB y veremos ciertas opciones, talcomo podemos comprobar en la Figura 2.2:

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    34/312

    Figura 2.2. Opciones de proyectos (opciones mnimas)

    Nota:La figura mostrada corresponde a la versin Visual Web Developer de

    Visual Studio. El contenido de su pantalla variar dependiendo de laversin de Visual Studio 2005 de la que disponga.

    De la lista despegable Option Strict, seleccionamos On. Por defecto ya estarnseleccionadas las opciones On de Option Explicit y Binary de Option Compare,por tanto no es necesario realizar ningn cambio ms, para aceptar los cambios ycerrar el cuadro de dilogo, presionamos el botn Aceptar.

    Nota:Aunque en esta captura muestre: C:\vbexpB1 en Default projectlocation, salvo que lo cambiemos, aparecer el path por defecto dentrode Mis documentos.

    Como podemos observar, aparecen pocas opciones, si bien podemos hacer que semuestren todas las disponibles, para hacerlo, debemos marcar la casilla que est enla parte inferior izquierda en la que podemos leer: Mostrar todas lasconfiguraciones, al seleccionar esa opcin nos mostrar un nmero mayor deopciones, tal como podemos ver en la Figura 2.3:

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    35/312

    Figura 2.3. Opciones de proyectos (todas las opciones)

    Desde este momento el compilador de VB se volver estricto en todo lo relacionado alas declaraciones de variables y conversiones, tal como vemos en la Figura 2.4 alintentar declarar una variable sin indicar el tipo de datos.

    Figura 2.4. Aviso de Option Strict al declarar una variable sin tipo

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    36/312

    Nota:Una de las ventajas del IDE (Integrated Development Environment,entorno de desarrollo integrado) de Visual Studio 2005 es que nos avisaal momento de cualquier fallo que cometamos al escribir el cdigo, este"pequeo" detalle, aunque alguna veces puede llegar a parecerfastidioso, nos facilita la escritura de cdigo, ya que no tenemos que

    esperar a realizar la compilacin para que tengamos constancia de esosfallos.

    Ms opciones aplicables a los proyectos

    Aunque en estos mdulos no trataremos a fondo el entorno de desarrollo, ya que lafinalidad de este curso es tratar ms en el cdigo propiamente dicho, vamos amostrar otro de los sitios en los que podemos indicar que se haga una comprobacinestricta de tipos y, como veremos, tambin podremos forzar algunas "nuevas

    peculiaridades" de Visual Basic 2005, todas ellas relacionadas con el tema queestamos tratando.

    Cuando tengamos un proyecto cargado en el IDE de Visual Studio, (pronto veremoscmo crear uno), podemos mostrar las propiedades del proyecto, para elloseleccionaremos del men Proyecto la opcin Propiedades dey tendremos un cuadro de dilogo como el mostrado en laFigura 2.5.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    37/312

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    38/312

    Figura 2.5. Ficha Compilar de las opciones del proyecto actual

    Seleccionando la ficha Compilar, adems de las tpicas opciones de Option Strict,Option Explicity Option Compare, (estas asignaciones solo sern efectivas para elproyecto actual), tendremos cmo queremos que reaccione el compilador si se cumple

    algunas de las condiciones indicadas. Entre esas condiciones, tenemos algo quemuchos desarrolladores de Visual Basic siempre hemos querido tener: Que nos avisecuando una variable la hemos declarado pero no la utilizamos (Variable local noutilizada). Al tener marcada esta opcin (normalmente como una Advertencia), sihemos declarado una variable y no la usamos en el cdigo, (siempre que no lehayamos asignado un valor al declararla), nos avisar, tal como podemos ver en laFigura 2.6:

    Figura 2.6. Aviso de variable no usada

    Ver video 1 de esta leccin (Declarar variables)Ver video 2 de esta leccin(Definir constantes)

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    39/312

    Enumeraciones: Constantes agrupadas

    Una enumeracin es un grupo de constantes que estn relacionadas entre s y quequeremos utilizar para restringir el rango de posibles valores para una variable oparmetro.

    En Visual Basic 2005 las enumeraciones pueden ser de cualquier tipo numricoentero, incluso enteros sin signo, aunque el valor predefinido es el tipo Integer.

    Podemos declarar una enumeracin de varias formas:

    1- Simplemente indicando el nombre de la enumeracin y el de sus valores:

    EnumColores

    Rojo

    Verde

    Azul

    EndEnum

    En este primer caso, el tipo de datos de cada miembro de la enumeracin serInteger.

    2- Indicando el tipo de datos que realmente se utilizar:

    EnumColores AsLong

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    40/312

    Rojo

    Verde

    Azul

    EndEnum

    En este segundo caso, el valor mximo que podemos asignar a los miembros de unaenumeracin ser el que pueda contener un tipo de datos Long.

    3- Indicando el atributo FlagsAttibute, (realmente no hace falta indicar el sufijoAttributecuando usamos los atributos) de esta forma podremos indicar unos valoresconcretos para los miembros de la enumeracin. Se usa tambin para indicar valoresque se pueden "sumar" o complementar entre s, pero sin perder el nombre, en breveveremos qu significa esto de "no perder el nombre".

    _

    EnumColores AsByte

    Rojo = 1

    Verde = 2

    Azul = 4

    EndEnum

    Nota:Los atributos los veremos con ms detalle en otra leccin de este mismomdulo.

    El nombre de los miembros de las enumeraciones

    Tanto si indicamos o no el atributo Flagsa una enumeracin, la podemos usar de estaforma:

    Dimc AsColores = Colores.Azul OrColores.Rojo

    Es decir, podemos "sumar" los valores definidos en la enumeracin.

    Como hemos comentado, las enumeraciones son constantes con nombres, pero estadefinicin se queda algo corta. De hecho, podemos saber "el nombre" de un valor deuna enumeracin, para ello tendremos que usar el mtodo ToString, (el cual se usa

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    41/312

    para convertir en una cadena cualquier valor numrico).Por ejemplo, si tenemos la siguiente asignacin:

    Dims AsString= Colores.Azul.ToString

    La variable scontendr la palabra "Azul"no el valor 4.Esto es aplicable a cualquier tipo de enumeracin, se haya o no usado el atributoFlagsAttribute.

    Una vez aclarado este comportamiento de las enumeraciones en Visual Basic 2005,veamos que es lo que ocurre cuando sumamos valores de enumeraciones a las quehemos aplicado el atributo Flagsy a las que no se lo hemos aplicado. Empecemos poreste ltimo caso.

    Si tenemos este cdigo:

    EnumColores AsByte

    Rojo = 1

    Verde = 2

    Azul = 4

    EndEnum

    Dimc AsColores = Colores.Azul OrColores.Rojo

    Dims AsString= c.ToString

    El contenido de la variable sser "5", es decir, la representacin numrica del valorcontenido: 4 + 1, ya que el valor de la constante Azules 4 y el de la constante Rojoes 1.

    Pero si ese mismo cdigo lo usamos de esta forma (aplicando el atributo Flagsa laenumeracin):

    _

    EnumColores AsByte

    Rojo = 1

    Verde = 2

    Azul = 4

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    42/312

    EndEnum

    Dimc AsColores = Colores.Azul OrColores.Rojo

    Dims AsString= c.ToString

    El contenido de la variable sser: "Rojo, Azul", es decir, se asignan los nombres delos miembros de la enumeracin que intervienen en ese valor, no el valor "interno".

    Los valores de una enumeracin no son simples nmeros

    Los miembros de las enumeraciones realmente son valores de un tipo de datos entero(en cualquiera de sus variedades) tal como podemos comprobar en la Figura 2.7:

    Figura 2.7. Los tipos subyacentes posibles de una enumeracin

    Por tanto cabe pensar que podemos usar cualquier valor para asignar a una variabledeclarada como una enumeracin, al menos si ese valor est dentro del rangoadecuado. Es decir, en el ejemplo de la figura usar un 1 en lugar de Colores.Rojo.

    En Visual Basic 2005 esto no es posible, al menos si lo hacemos de forma "directa" ycon Option Strict conectado, ya que recibiremos un error indicndonos que nopodemos convertir, por ejemplo, un valor entero en un valor del tipo de laenumeracin. En la Figura 2.8 podemos ver ese error al intentar asignar el valor 3 a

    una variable del tipo Colores(definida con el tipo predeterminado Integer).

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    43/312

    Figura 2.8. Error al asignar un valor "normal" a una variable del tipo Colores

    El error nos indica que no podemos realizar esa asignacin, pero el entorno integradode Visual Studio 2005 tambin nos ofrece alternativas para que ese error no seproduzca, esa ayuda se obtiene presionando el signo de admiracin que tenemosjusto donde est el cursor del mouse, pero no solo nos dice cmo corregirlo, sino quetambin nos da la posibilidad de que el propio IDE se encargue de hacerlo, tal comopodemos apreciar en la Figura 2.9.

    Figura 2.9. Opciones de correccin de errores

    Lo nico que tendramos que hacer es presionar la sugerencia de correccin, que eneste caso es la nica que hay, pero en otros casos pueden ser varias las opciones ytendramos que elegir la que creamos adecuada.

    El cdigo final (una vez corregido) quedara de la siguiente forma:

    Dimc AsColores = CType(3, Colores)

    CTypees una de las formas que nos ofrece Visual Basic 2005 de hacer conversionesentre diferentes tipos de datos, en este caso convertimos un valor entero en uno deltipo enumerado Colores.

    Si compilamos y ejecutamos la aplicacin, sta funcionar correctamente.

    Es posible que usando CTypeno asignemos un valor dentro del rango permitido. Eneste caso, el valor 3 podramos darlo por bueno, ya que es la suma de 1 y 2 (Rojoy

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    44/312

    Verde), pero qu pasara si el valor asignado es, por ejemplo, 15? En teora nodeberamos permitirlo.

    Estas validaciones podemos hacerlas de dos formas:

    1- Con la clsica solucin de comprobar el valor indicado con todos los valores

    posibles.2- Usando funciones especficas del tipo Enum. Aunque en este ltimo caso, solopodremos comprobar los valores definidos en la enumeracin.

    En el siguiente ejemplo podemos hacer esa comprobacin.

    SubmostrarColor(ByValc AsColores)

    ' comprobar si el valor indicado es correcto

    ' si no est definido, usar el valor Azul

    If[Enum].IsDefined(GetType(Colores), c) = FalseThen

    c = Colores.Azul

    EndIf

    Console.WriteLine("El color es {0}", c)

    EndSub

    Este cdigo lo que hace es comprobar si el tipo de datos Colores tiene definido elvalor contenido en la variable c, en caso de que no sea as, usamos un valorpredeterminado.

    Nota:La funcin IsDefinedslo comprueba los valores que se han definido enla enumeracin, no las posibles combinaciones que podemos conseguirsumando cada uno de sus miembros, incluso aunque hayamos usado elatributo FlagsAttribute.

    Ver video 1 de esta leccin(Enumeraciones 1)Ver video 2 de esta leccin(Enumeraciones 2)Ver video 3 de esta leccin(Enumeraciones 3)Ver video 4 de esta leccin(Enumeraciones 4)

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    45/312

    Arrays (matrices)

    Los arrays (o matrices) tambin es algo que podamos usar en VBScript/VB6, si bienla forma en que se almacena en la memoria y la forma en que podemos usarlas enVisual Basic 2005 ha cambiado.

    En Visual Basic 2005 la declaracin de un array la haremos de la misma forma que enVBScript/VB6, en el siguiente ejemplo declaramos un array de tipo String llamado

    nombres:

    Dimnombres() AsString

    Al igual que en VBScript/VB6, podemos indicar el nmero de elementos quecontendr el array:

    Dimnombres(10) AsString

    Tal como ocurre en VBScript/VB6, al realizar esta declaracin lo que conseguimos esdefinir un array de 11 elementos: desde cero hasta 10. Si bien, en VB6 tenemos la

    posibilidad de indicar cual es el valor del ndice inferior predeterminado de los arrays,podemos elegir entre cero y uno mediante la instruccin Option Base indicando acontinuacin un 0 o un 1. En Visual Basic 2005 no existe esa instruccin. Es ms enVisual Basic 2005 todos los arrays deben tener como ndice inferior el valor cero.

    Otra posibilidad que tenamos en VBScript/VB6 era indicar el rango de ndices quepodamos asignar, esto lo logrbamos usando la clusula Toal definir un array, porejemplo:

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    46/312

    Dimnombres(10 To25) AsString

    Pero esta declaracin es ilegal en Visual Basic 2005, por el hecho de que los arraysde .NET siempre deben tener el valor cero como ndice inferior.

    Lo que si podemos hacer en Visual Basic 2005 es usar Topara indicar el valor mximodel ndice, aunque no tiene la misma "potencia" que en VBScript/VB6, al menos deesta forma el cdigo resultar ms legible:

    Dimnombres(0 To10) AsString

    Declarar e inicializar un array

    Lo que no podemos hacer en VBScript/VB6 era declarar un array y al mismo tiempoasignarle valores.En Visual Basic 2005 esto lo hacemos indicando los valores a asignar justo despus dela declaracin y encerrndolos entre llaves:

    Dimnombres() AsString= {"Pepe", "Juan", "Luisa"}

    Con el cdigo anterior estamos creando un array de tipo Stringcon tres valores cuyosndices van de cero a dos.

    Si el array es bidimensional (o con ms dimensiones), tambin podemos inicializarlosal declararlo, pero en este caso debemos usar doble juego de llaves:

    Dimnombres(,) AsString= {{"Juan", "Pepe"}, {"Ana", "Eva"}}

    En este cdigo tendramos un array bidimensional con los siguientes valores:

    nombres(0,0)= Juannombres(0,1)= Pepenombres(1,0)= Ananombres(1,1)= Eva

    Cambiar el tamao de un array

    Para cambiar el tamao de un array, al igual que en VBScript/VB6, usaremos lainstruccin ReDim, pero a diferencia de VBScript/VB6 no podemos usar ReDimparadefinir un array, en Visual Basic 2005 siempre hay que declarar previamente losarrays antes de cambiarles el tamao.

    Lo que tambin podemos hacer en Visual Basic 2005 es cambiar el tamao de unarray y mantener los valores que tuviera anteriormente, para lograrlo debemos usarReDim Preserve.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    47/312

    Si bien tanto ReDim como ReDim Preserve se pueden usar en arrays de cualquiernmero de dimensiones, en los arrays de ms de una dimensin solamente podemoscambiar el tamao de la ltima dimensin.

    Eliminar el contenido de un array

    Una vez que hemos declarado un array y le hemos asignado valores, es posible quenos interese eliminar esos valores de la memoria, para lograrlo, podemos hacerlo detres formas:

    1. Redimensionando el array indicando que tiene cero elementos, aunque en elmejor de los casos, si no estamos trabajando con arrays de ms de unadimensin, tendramos un array de un elemento, ya que, como hemoscomentado anteriormente, los arrays de .NET el ndice inferior es cero.

    2. Usar la instruccin Erase. Al igual que en VBScript/VB6, Erase eliminatotalmente el array de la memoria.

    3. Asignar un valor Nothingal array. Esto funciona en Visual Basic 2005 pero noen VBScript/VB6, debido a que en Visual Basic 2005 los arrays son tipos por

    referencia

    Los arrays son tipos por referencia

    Como acabamos de ver, en Visual Basic 2005 los arrays son tipos por referencia, y talcomo comentamos anteriormente, los tipos por referencia realmente lo que contienenson una referencia a los datos reales no los datos propiamente dichos.

    Cual es el problema?

    Vemoslo con un ejemplo y as lo tendremos ms claro.

    Dimnombres() AsString= {"Juan", "Pepe", "Ana", "Eva"}

    Dimotros() AsString

    otros = nombres

    nombres(0) = "Antonio"

    En este ejemplo definimos el array nombres y le asignamos cuatro valores. Acontinuacin definimos otro array llamado otros y le asignamos lo que tienenombres. Por ltimo asignamos un nuevo valor al elemento cero del array nombres.Si mostramos el contenido de ambos arrays nos daremos cuenta de que realmentesolo existe una copia de los datos en la memoria, y tanto nombres(0) comootros(0) contienen el nombre "Antonio". En VBScript/VB6 cada array eraindependiente del otro y esa asignacin a nombres(0)no afectaba al valor contenidoen otros(0).

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    48/312

    Qu ha ocurrido?

    Que debido a que los arrays son tipos por referencia, solamente existe una copia delos datos y tanto la variable nombres como la variable otros lo que contienen es unareferencia (o puntero) a los datos.

    Si realmente queremos tener copias independientes, debemos hacer una copia delarray nombres en el array otros, esto es fcil de hacer si usamos el mtodo CopyTo.ste mtodo existe en todos los arrays y nos permite copiar un array en otroempezando por el ndice que indiquemos. El nico requisito es que el array dedestino debe estar inicializado y tener espacio suficiente para contener los elementosque queremos copiar.

    En el siguiente cdigo de ejemplo hacemos una copia del contenido del arraynombresen el array otros, de esta forma, el cambio realizado en el elemento cerode nombresno afecta al del array otros.

    Dimnombres() AsString= {"Juan", "Pepe", "Ana", "Eva"}

    Dimotros() AsString

    ReDimotros(nombres.Length)

    nombres.CopyTo(otros, 0)

    nombres(0) = "Antonio"

    Adems del mtodo CopyTo, los arrays tienen otros miembros que nos pueden ser deutilidad, como por ejemplo la propiedad Length usada en el ejemplo para sabercuantos elementos tiene el array nombres.

    Para averiguar el nmero de elementos de un array, tambin podemos usar la funcinUBound, que es la que nos serva en VBScript/VB6 para saber esa informacin.Sin embargo, el uso de la funcin LBound, (que sirve para averiguar el ndice inferiorde un array), no tiene ningn sentido en Visual Basic 2005, ya que todos los arrayssiempre tienen un valor cero como ndice inferior.

    Para finalizar este tema, solo nos queda por decir, que los arrays de Visual Basic 2005realmente son tipos de datos derivados de la clase Array y por tanto disponen detodos los miembros definidos en esa clase, aunque de esto hablaremos en la prximaleccin, en la que tambin tendremos la oportunidad de profundizar un poco ms enlos tipos por referencia y en como podemos definir nuestros propios tipos de datos,tanto por referencia como por valor.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    49/312

    Ver video 1 de esta leccin(Agregar proyectos a una solucin, Arrays)Ver video 2 de esta leccin (Arrays 2)Ver video 3 de esta leccin(Arrays 3)

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    50/312

    Introduccin

    En la leccin anteriorvimos los tipos de datos predefinidos en .NET Framework, enesta leccin veremos cmo podemos crear nuestros propios tipos de datos, tanto porvalor como por referencia.

    Tambin tendremos ocasin de ver los distintos niveles de accesibilidad que podemosaplicar a los tipos, as como a los distintos miembros de esos tipos de datos. De los

    distintos miembros que podemos definir en nuestros tipos, nos centraremos en laspropiedades para ver en detalle los cambios que han sufrido con respecto a las clasesde VBScript/VB6. Tambin veremos temas relacionados con la programacinorientada a objetos (POO) en general y de forma particular los que ataen a lasinterfaces.

    Clases y estructuras

    Clases: Tipos por referencia definidos por el usuarioo Las clases: El corazn de .NET Framework

    La herencia: Caracterstica principal de la Programacin Orientadaa Objetos

    Encapsulacin y Polimorfismo: Dos viejos conocidos de VB Object: La clase base de todas las clases de .NET

    o Definir una clase Una clase especial: Module Los miembros de una clase Caractersticas de los mtodos y propiedades

    Accesibilidad, mbito y miembros compartidos Parmetros y parmetros opcionales

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    51/312

    Array de parmetros opcionales (ParamArray) Sobrecarga de mtodos y propiedades Parmetros por valor y parmetros por referencia

    o Instanciar: Crear un objeto en la memoria Declarar y asignar en un solo paso

    El constructor: El punto de inicio de una clase Constructores parametrizados Cuando Visual Basic 2005 no crea un constructor

    automticamente El destructor: El punto final de la vida de una clase

    Estructuras: Tipos por valor definidos por el usuarioo Definir una estructurao Constructores de las estructuraso Destructores de las estructuraso Los miembros de una estructurao Cmo usar las estructuras

    Accesibilidad y mbitoo mbito

    mbito de bloque mbito de procedimiento mbito de mdulo mbito de espacio de nombres

    o La palabra clave Globalo Accesibilidad

    Accesibilidad de las variables en los procedimientoso Las accesibilidades predeterminadaso Anidado de tipos

    Los tipos anidables El nombre completo de un tipo Importacin de espacios de nombres Alias de espacios de nombres

    Propiedadeso Definir una propiedado Propiedades de solo lecturao Propiedades de solo escriturao Diferente accesibilidad para los bloques Get y Seto Propiedades predeterminadas

    Sobrecarga de propiedades predeterminadas Interfaces

    o Qu es una interfaz?o Qu contiene una interfaz?o Una interfaz es un contratoo Las interfaces y el polimorfismoo Usar una interfaz en una claseo Acceder a los miembros implementadoso Saber si un objeto implementa una interfazo Implementacin de mltiples interfaceso Mltiple implementacin de un mismo miembro

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    52/312

    o Dnde podemos implementar las interfaces?o Un ejemplo prctico usando una interfaz de .NET

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    53/312

    Clases: Tipos por referencia definidos por el usuario

    Tal como vimos en la leccin anterior, los tipos de datos se dividen en dos grupos:tipos por valor y tipos por referencia. Los tipos por referencia realmente son clases,de la cuales debemos crear una instancia para poder usarlas. Esa instancia o copia, secrea siempre en la memoria lejana (heap) y las variables lo nico que contienen esuna referencia a la direccin de memoria en la que el CLR (Common LanguageRuntime, motor en tiempo de ejecucin de .NET), ha almacenado el objeto recin

    creado.

    Al igual que ocurre en VBScript/VB6, tambin podemos crear nuestras propias clasesen Visual Basic 2005, aunque como veremos tanto la forma de definirlas como deinstanciarlas ha cambiado un poco. Aunque ese cambio es solo, digamos, en la forma,ya que en el fondo es lo mismo, siempre salvando las distancias, ya que comoveremos, las clases de Visual Basic 2005 pueden llegar a ser mucho ms verstiles ypotentes que las de VBScript/VB6.

    Antes de entrar en detalles sintcticos, veamos la importancia que tienen las clasesen .NET Framework y como repercuten en las que podamos definir nosotros usandoVisual Basic 2005.

    Las clases: el corazn de .NET Framework

    Prcticamente todo lo que podemos hacer en .NET Framework lo hacemos medianteclases. La librera de clases de .NET Framework es precisamente el corazn del propio.NET, en esa librera de clases est todo lo que podemos hacer dentro de este marcode programacin; para prcticamente cualquier tarea que queramos realizar existenclases, y si no existen, las podemos definir nosotros mismos, bien ampliando lafuncionalidad de alguna clase existente mediante la herencia, bien implementando

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    54/312

    algn tipo de funcionalidad previamente definida o simplemente crendolas desdecero.

    La herencia: Caracterstica principal de la Programacin Orientada a Objetos

    El concepto de Programacin Orientada a Objetos (POO) es algo intrnsico al propio.NET Framework, por tanto es una caracterstica que todos los lenguajes basados eneste "marco de trabajo" tienen de forma predeterminada, entre ellos el Visual Basic2005. De las caractersticas principales de la POO tenemos que destacar la herencia,que en breve podemos definir como una caracterstica que nos permite ampliar lafuncionalidad de una clase existente sin perder la que ya tuviera previamente. Graciasa la herencia, podemos crear una nueva clase que se derive de otra. Esta nueva clasepuede cambiar el comportamiento de la clase base(de la cual hereda) y/o ampliarlo,de esta forma podemos adaptar la clase original a nuestras necesidades.

    El tipo de herencia que .NET Framework soporta es la herencia simple, es decir, solopodemos usar una clase como base de la nueva, si bien, como veremos ms adelante,podemos agregar mltiples interfaces. La herencia nos permitir aprovechar la

    funcionalidad de muchas de las clases existentes en la plataforma .NET.

    Encapsulacin y Polimorfismo: Dos viejos conocidos de VB

    La encapsulacin y el polimorfismo son otras dos caractersticas de la programacinorientada a objetos. Aunque estas dos no nos resultarn desconocidas, ya que desdela versin 5.0 de Visual Basic y VBScript estaban a nuestra disposicin.

    La encapsulacin nos permite abstraer la forma que tiene de actuar una clase sobrelos datos que contiene o manipula, para poder lograrlo se exponen como parte de laclase los mtodos y propiedades necesarios para que podamos manejar esos datossin tener que preocuparnos cmo se realiza dicha manipulacin.

    El polimorfismo es una caracterstica que nos permite realizar ciertas acciones oacceder a la informacin de los datos contenidos en una clase de forma semi-annima, al menos en el sentido de que no tenemos porqu saber sobre que tipoobjeto realizamos la accin, ya que lo nico que nos debe preocupar es que podemoshacerlo, por la sencilla razn de que estamos usando ciertos mecanismos que siguenunas normas que estn adoptadas por la clase.

    El ejemplo clsico del polimorfismo es que si tengo un objeto que "sabe" cmomorder, da igual que lo aplique a un ratn o a un dinosaurio, siempre y cuando esasdos "clases" expongan un mtodo que pueda realizar esa accin... y como deca ladocumentacin de Visual Basic 5.0, siempre ser preferible que nos muerda un ratn

    antes que un dinosaurio.

    Object: La clase base de todas las clases de .NET

    Todas las clases de .NET se derivan siempre de forma automtica de la clase Object,lo indiquemos o no explcitamente. Cualquier clase que definamos tendr elcomportamiento heredado de esa clase. El uso de la clase Objectcomo base del restode las clases de .NET es la nica excepcin a la herencia simple soportada por .NET.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    55/312

    Esta caracterstica nos asegura que siempre podremos usar un objeto del tipo Objectpara acceder a cualquier clase de .NET, de manera similar a como un variant servaen VBScript/VB6 para tratar cualquier tipo de objeto.

    De los miembros que tiene la clase Objectdebemos resaltar el mtodo ToString, elcual ya lo vimos en la leccin anterior cuando queramos convertir un tipo primitivo en

    una cadena. Este mtodo est pensado para devolver una representacin en formatocadena de un objeto. El valor que obtengamos al usar este mtodo depender decmo est definido en cada clase y por defecto lo que devuelve es el nombrecompleto de la clase. En la mayora de los casos, sin embargo, el valor obtenido alusar este mtodo debera ser ms intuitivo: por ejemplo los tipos de datos primitivostienen definido este mtodo para devuelva el valor que contienen. De igual forma,nuestras clases tambin deberan devolver un valor adecuado al contenidoalmacenado. De cmo hacerlo, nos ocuparemos en breve.

    Nota:Todos los tipos de datos de .NET, ya sean por valor o por referenciasiempre estn derivados de la clase Object, por tanto podremos llamar a

    cualquiera de los mtodos que estn definidos en esa clase.Aunque en el caso de los tipos de datos por valor, cuando queremosacceder a la clase Object que contienen, .NET Framework primero debeconvertirla en un objeto por referencia (operacin denominada boxing) ycuando hemos dejado de usarla y queremos volver a asignar el dato a lavariable por valor, tiene que volver a hacer la conversin inversa(unboxing).

    Ver video de esta leccin(Clases 1)

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    56/312

    Definir una clase

    En Visual Basic 6.0, cada vez que definimos una clase tenemos que agregar alproyecto un fichero con extensin .cls, y a partir de ese momento, todo el cdigoescrito en ese fichero formaba parte de la clase. En VBScript (tanto en ASP como enotros entornos) y en Visual Basic 2005 esto se hace mediante el uso de la palabraclave Class. Aunque lo habitual es que usemos un fichero independiente para cadaclase que escribamos, esto solo es algo opcional, porque en VB2005 solo existe un

    tipo de fichero para escribir el cdigo: un fichero con extensin .vb, en el quepodemos escribir una clase o cualquiera de los tipos que el lenguaje nos permite.

    Nota:En Visual Basic 2005 cualquier cdigo que queramos escribir estardentro de una clase.

    En Visual Basic 2005 las clases se definen usando la palabra clave Classseguida delnombre de la clase, esa definicin acaba indicndolo con End Class, exactamente igualque en VBScript.

    En el siguiente ejemplo definimos una clase llamada Cliente que tiene dos campospblicos.

    ClassCliente

    PublicNombre AsString

    PublicApellidos AsString

    EndClass

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    57/312

    Una vez definida la clase podemos agregar los elementos (o miembros) que creamosconveniente. En el ejemplo, para simplificar, hemos agregado dos campos pblicos,aunque tambin podramos haber definido cualquiera de los miembros permitidos enlas clases.

    Una clase especial: Module

    En Visual Basic 2005 tambin podemos definir una clase especial llamada Module.Este tipo de clase tiene un tratamiento especial y es el equivalente a los mdulos BASde VB6. La definicin se hace usando la instruccin Moduleseguida del nombre a usary acaba con End Module.

    Cualquier miembro definido en un Module siempre estar accesible en todo elproyecto y para usarlos no tendremos que crear ningn objeto en memoria. Lasclases definidas con la palabra clave Modulerealmente equivalen a las clases en lasque todos los miembros estn compartidos y por tanto siempre disponibles a toda laaplicacin.

    De todos estos conceptos nos ocuparemos en las siguientes lecciones, pero esnecesario explicar que existe este tipo de clase ya que ser el tipo de datos que el IDEde Visual Basic 2005 usar al crear aplicaciones del tipo consola, que ser el tipo deproyecto que crearemos para practicar con el cdigo mostrado en este primermdulo.

    Los miembros de una clase

    Una clase puede contener cualquiera de estos elementos (miembros):

    Enumeraciones Campos Mtodos (funciones o procedimientos) Propiedades Eventos

    Las enumeraciones, como vimos en la leccin anterior, podemos usarlas paradefinir valores constantes relacionados, por ejemplo para indicar los valores posiblesde cualquier "caracterstica" de la clase.

    Los camposson variables usadas para mantener los datos que la clase manipular.

    Los mtodos son las acciones que la clase puede realizar, normalmente esasacciones sern sobre los datos que contiene. Dependiendo de que el mtodo devuelvao no un valor, podemos usar mtodos de tipo Functiono de tipo Subrespectivamente.

    Las propiedades son las "caractersticas" de las clases y la forma de acceder"pblicamente" a los datos que contiene. Por ejemplo, podemos considerar que elnombre y los apellidos de un cliente son dos caractersticas del cliente. Normalmenteencapsulan el acceso a miembros privados de la clase.

    Los eventos son mensajes que la clase puede enviar para informar que algo estocurriendo en la clase.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    58/312

    Caractersticas de los mtodos y propiedades

    Accesibilidad, mbito y miembros compartidos

    Aunque estos temas los veremos en breve con ms detalle, para poder comprendermejor las caractersticas de los miembros de una clase o tipo, daremos un pequeoadelanto sobre estas caractersticas que podemos aplicar a los elementos quedefinamos.

    Accesibilidad y mbitoson dos conceptos que estn estrechamente relacionados.Aunque en la prctica tienen el mismo significado, ya que lo que representan es la"cobertura" o alcance que tienen los miembros de las clases e incluso de las mismasclases que definamos.

    Si bien cada uno de ellos tienen su propia "semntica", tal como podemos ver acontinuacin:

    mbitoEs el alcance que la definicin de un miembro o tipo puede tener. Es decir, cmopodemos acceder a ese elemento y desde dnde podemos accederlo.El mbito de un elemento de cdigo est restringido por el "sitio" en el que lo hemosdeclarado. Estos sitiospueden ser:

    mbito de bloque:Disponible nicamente en el bloque de cdigo en el que seha declarado.

    mbito de procedimiento:Disponible nicamente dentro del procedimientoen el que se ha declarado.

    mbito de mdulo: Disponible en todo el cdigo del mdulo, la clase o laestructura donde se ha declarado.

    mbito de espacio de nombres:Disponible en todo el cdigo del espacio denombres.

    Accesibilidad

    A los distintos elementos de nuestro cdigo (ya sean clases o miembros de las clases)podemos darle diferentes tipos de accesibilidad. Estos tipos de "acceso" dependerndel mbito que queramos que tengan, es decir, desde dnde podremos accederlos.Los modificadores de accesibilidad son:

    Public:Acceso no restringido.

    Protected:Acceso limitado a la clase contenedora o a los tipos derivados deesta clase. Friend:Acceso limitado al proyecto actual. Protected Friend:Acceso limitado al proyecto actual o a los tipos derivados de

    la clase contenedora. Private:Acceso limitado al tipo contenedor.

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    59/312

    Por ejemplo, podemos declarar miembros privados a una clase, en ese caso, dichosmiembros solamente los podremos acceder desde la propia clase, pero no desde fuerade ella.

    Nota:Al igual que ocurre en VBScript/VB6, al declarar una variable con Dim,por regla general, el mbito que le estamos aplicando es privado, perocomo veremos, en Visual Basic 2005, dependiendo del tipo en el quedeclaremos esa variable, el mbito puede ser diferente a privado.

    Miembros compartidos

    Por otro lado, los miembros compartidos de una clase o tipo, son elementos que nopertenecen a una instancia o copia en memoria particular, sino que pertenecen alpropio tipo y por tanto siempre estn accesibles o disponibles, dentro del nivel del

    mbito y accesibilidad que les hayamos aplicado, y su tiempo de vidaes el mismo queel de la aplicacin.

    Nota:Lo ms parecido en VB6 a los miembros compartidos de Visual Basic2005 son los mtodos y campos declarados en un mdulo .BAS.

    Del mbito, la accesibilidad y los miembros compartidos nos ocuparemos con msdetalle en una leccin posterior, donde veremos ciertas peculiaridades, como puedeser la limitacin del mbito de un miembro que aparentementetiene una accesibilidadno restringida.

    Parmetros y parmetros opcionales

    En Visual Basic 2005, tanto los miembros de una clase, (funciones y mtodos Sub),como las propiedades pueden recibir parmetros. Esto no es algo nuevo, ya que enVB6 podamos tener parmetros en estos tipos de miembros (o elementos) de unaclase, adems se siguen soportando tanto los parmetros opcionales (Optional) comolos arrays de parmetros (ParamArray). Con los parmetros opcionales lo queconseguimos es permitir que el usuario no tenga que introducir todos los parmetros,sino solo los que realmente necesite, del resto, (los no especificados), se usar elvalor predeterminado que hayamos indicado, ya que una de las "restricciones" de estetipo de parmetros con respecto a VBScript/VB6 es que siempre que indiquemos unparmetro opcional, debemos indicar tambin el valor por defecto que debemos usaren caso de que no se especifique. Esto realmente sigue funcionando igual que en VB6cuando al parmetro opcional le indicamos el tipo de datos. Lo que Visual Basic 2005no permite es definir un parmetro opcional de tipo Variant, entre otras cosas, porqueese tipo de datos no existe en VB2005.

    Veamos unos ejemplo para aclarar nuestras ideas:

    www.detodoprogramacion.com

  • 5/24/2018 Curso de Desarrollo Web Con Visual Studio 2005

    60/312

    FunctionSuma(n1 AsInteger, Optionaln2 AsInteger= 15) AsInteger

    Suma = n1 + n2

    EndFunction

    En este primer ejemplo, el primer parmetro es obligatorio (siempre debemosindicarlo) y el segundo es opcional, si no se indica al llamar a esta funcin, se usar elvalor 15 que es el predeterminado.

    Para llamar a esta funcin, lo podemos hacer de estas tres formas:

    ' 1- indicando los dos parmetros (el resultado ser 4= 1 + 3)

    t = Suma(1, 3)

    ' 2- Indicando solamente el primer parmetro (el resultado ser 16=1 + 15)

    t = Suma(1)

    ' 3- Indicando los dos parmetros, pero en el opcional usamos elnombre

    t = Suma(1, n2:= 9)

    El tercer ejemplo solamente tiene utilidad si hay ms de un parmetro opcional.

    Nota:Los parmetros opcionales deben aparecer en la lista de parmetros delmtodo, despus de los "obligatorios"

    Array de parmetros opcionales (ParamArray)

    En cuanto al uso de ParamArray, este tipo de parmetro opcional nos permite indicarun nmero indeterminado de parmetros, aunque el funcionamiento con respecto aVBScript/VB6 es algo diferente, en Visual Basic 2005 siempredebe ser una array deun tipo especfico e internamente se trata como un array normal y corriente, es decir,dentro del mtodo o propiedad se accede a l como si de un array se tratara... entreotras cosas, porque es un array!

    En VB6 no siempre era as y algunas veces tenamos verdaderos problemas al accedera esos datos, por suerte, en Visual Basic 2005 el uso de los parmetros opcionalescon ParamArrayes ms simple e intuitivo, aunque a algunos puede que le parezcamenos "potente", ya que en VBScript/VB6


Recommended