c# para programadores vb6

Download C# Para Programadores VB6

Post on 02-Jan-2016

55 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

C# para programadores VB6

C# para programadores VB6

Por Jos Luis Castao Alonso

Este documento est extraido de la primera edicin del libro "Professional C# .NET" editado por Danypress en Castellano.

En este apndice presentaremos una breve introduccin al lenguaje C# dirigida especficamente a aquellos programadores cuya experiencia hasta el presente ha estado centrada en Visual Basic 6.

Tenga en cuenta que a lo largo de este apndice cualquier mencin a VB se refiere realmente a VB6. En las pocas ocasiones en que se mencione VB.NET, lo nombraremos explcitamente.C# y Visual Basic son lenguajes muy diferentes, tanto en su estilo sintctico como en los conceptos fundamentales en los que estn basados. Esto implica que los programadores de Visual Basic se encontrarn una curva de aprendizaje muy empinada hasta alcanzar la familiaridad con C#, incluso a nivel bsico. Este apndice tiene como objetivo hacer esa curva de aprendizaje ms suave, proporcionando una introduccin a C# orientada a aquellos que tienen un conocimiento de VB, y se centra en las diferencias conceptuales principales entre los dos lenguajes. Nuestro enfoque a lo largo de casi todo el apndice se basar en comparar cmo se programara la solucin de un problema en VB y en C#, presentando en paralelo los cdigos correspondientes en ambos lenguajes.

Esto significa que nuestro anlisis del lenguaje C# se limitar a un nivel bsico: no vamos a describir las caractersticas ms avanzadas del lenguaje tendr que leer los primeros captulos de este libro para eso. El nfasis estar en mostrarle las diferentes metodologas relacionadas con la escritura de cdigo en el lenguaje C#.

Diferencias entre C# y VB

Ms all de las diferencias sintcticas obvias entre los lenguajes, hay dos conceptos fundamentales a los que tendr que acostumbrarse para pasar de VB a C#:

El concepto del flujo completo de ejecucin de un programa de principio a fin: Visual Basic oculta al programador este aspecto de los programas, de manera que la nica parte de un programa VB que Ud. escribe cuando desarrolla una aplicacin son los manejadores de eventos, algunos mtodos, etc., en los mdulos de clase. C# pone a nuestra disposicin el programa completo en el cdigo fuente. La razn para esto tiene que ver con el hecho de que C# puede verse, filosficamente, como la siguiente generacin de C++, y las races de C++ se remontan a los aos 60. C++ es anterior a las interfaces de usuario basadas en ventanas y los sistemas operativos sofisticados. C++ evolucion como un lenguaje de bajo nivel, prximo a la mquina y de propsito general. Para crear aplicaciones con interfaz de usuario grfica en C++, era necesario realizar explcitamente las llamadas al sistema necesarias para crear e interactuar con las ventanas. C# se erige sobre esta herencia, simplificando y modernizando C++, con el objetivo de que puedan obtenerse, aproximadamente, los beneficios de rendimiento derivados del bajo nivel de C++, sin que la programacin sea mucho ms compleja de lo que es en VB. VB, por otro lado, es un lenguaje joven, diseado especficamente para el desarrollo rpido de aplicaciones Windows con interfaz de usuario grfica. Por esta razn, en VB todo el cdigo que se encarga de la gestin de ventanas est oculto, y todo lo que el programador de VB implementa son los manejadores de eventos. En C#, todo ese cdigo de manejo de ventanas se expone como parte del cdigo fuente.

Las clases y la herencia en C# son mucho ms orientadas a objetos que en VB, exigiendo que todo el cdigo sea parte de una clase. El lenguaje tambin incluye un amplio soporte para la herencia de implementacin. De hecho, la mayora de los programas C# bien diseados se apoyarn en esta forma de herencia, completamente ausente de VB.

La mayor parte de este apndice estar dedicada a desarrollar dos ejemplos, para los cuales escribiremos versiones en VB y C#. El primer ejemplo consiste de un formulario simple, en el que se solicita un nmero y se visualiza la raz cuadrada y el signo del nmero. Comparando detalladamente las versiones VB y C# del ejemplo, aprenderemos la sintaxis bsica de C# y tambin entenderemos los conceptos que subyacen al flujo de ejecucin de un programa.

A continuacin, presentaremos un mdulo de clase de VB, que almacena informacin sobre empleados, y su equivalente en C#. Con este ejemplo comenzaremos a ver la potencia real de C#, y al aadir caractersticas a los ejemplos descubriremos rpidamente que VB simplemente no soporta los conceptos que necesitamos para desarrollar el mdulo de clase de acuerdo a los requisitos que hemos establecido, y por lo tanto tendremos que proceder exclusivamente en C#.

Terminaremos el apndice con un corto recorrido por algunas de las restantes diferencias entre VB y C# no ilustradas por los ejemplos.

Antes de comenzar, tenemos que clarificar algunos conceptos: las clases, la compilacin y las clases base .NET.

Clases

A lo largo del apndice utilizaremos ampliamente las clases C#. Las clases C# representan objetos definidos con gran precisin, que hemos explicado en detalle en los Captulos 4 y 5. Sin embargo, para nuestros propsitos en este apndice, sera bueno pensar en ellas como los equivalentes C# de los mdulos de clase VB, porque son entidades bastante similares: al igual que un mdulo de clase VB, una clase C# implementa propiedades y mtodos y contiene variables miembros. Al igual que en el caso de los mdulos de clase VB, el programador puede crear objetos de una clase C# dada (instancias de la clase), utilizando al operador new. Sin embargo, detrs de estas similitudes hay muchas diferencias. Por ejemplo, un mdulo de clase VB es realmente una clase COM. Las clases C#, por el contrario, no son usualmente clases COM, sino que siempre se integran en la Plataforma .NET. Las clases C# tambin son ms ligeras que sus colegas de VB/COM, en el sentido de que se han diseado ms pensando en el rendimiento y en afectar ste lo menos posible cuando son instanciadas. Sin embargo, estas diferencias no afectarn nuestra discusin del lenguaje C#.

Compilacin

Ud. ya sabe que un ordenador nunca ejecuta directamente el cdigo escrito en un lenguaje de alto nivel, ya sea VB, C++, C o cualquier otro lenguaje. En vez de eso, todo el cdigo fuente se traduce a cdigo ejecutable nativo, un proceso conocido como compilacin. Durante la puesta a punto, VB ofrece la opcin de ejecutar el cdigo directamente (en cuyo caso cada lnea de cdigo se compilar cuando el ordenador vaya a ejecutar esa lnea en este caso decimos que el cdigo se interpreta), o hacer una compilacin completa (en cuyo caso primero se traducir el programa completo a cdigo ejecutable, y slo despus comenzar la ejecucin). Realizar una compilacin completa permite que cualquier error de sintaxis sea descubierto por el compilador antes de que el programa comience su ejecucin. Tambin permite obtener un mayor rendimiento al ejecutar, y es por lo tanto la nica opcin permitida en C#.

La compilacin en C# se realiza en dos fases; inicialmente el cdigo se traduce al llamado Lenguaje Intermedio (Intermediate Language - IL). Esta es la fase a la que nos referiremos informalmente como compilacin. La segunda fase, la conversin a cdigo ejecutable nativo, puede hacerse en tiempo de ejecucin, pero es una fase mucho ms simple que no conduce a problemas de rendimiento significativos. Este proceso es muy diferente de la mera interpretacin del cdigo. Fragmentos enteros de cdigo se convierten cada vez de IL a cdigo de mquina, y el cdigo ejecutable nativo resultante se almacena, de modo que no necesite ser compilado nuevamente la prxima vez que se ejecute. Microsoft cree que esto, en combinacin con otras optimizaciones, conducir a un cdigo que tendr un rendimiento superior al que produce el sistema tradicional de compilar directamente el cdigo fuente a cdigo ejecutable nativo. Aunque la existencia del IL es algo que Ud. deber tener presente, no afectar para nada nuestra discusin en este apndice, ya que no afecta la sintaxis del lenguaje C#.

Las clases base .NET

VB no slo consiste del lenguaje en s. Tambin incluye un gran nmero de funciones asociadas, como las funciones de conversin CInt, CStr, etc., las funciones del sistema de ficheros, las funciones de fecha y hora, y muchas ms. VB tambin se apoya en la presencia de controles ActiveX para proporcionar los controles estndar que el programador coloca en sus formularios cuadros de listas, botones, cuadros de texto, etc.

C# se apoya tambin en un extenso soporte en estas reas de la programacin pero en el caso de C# el soporte proviene de un conjunto de clases muy grande, conocido como las clases base .NET. Estas clases proporcionan soporte para casi cualquier aspecto del desarrollo para Windows. Hay clases que representan a cada uno de los controles estndar, clases que realizan conversiones, clases que permiten manipular fechas y horas y acceder al sistema de ficheros, clases para acceder a Internet, y muchas ms. Aqu no describiremos en detalle la librera de clases .NET, pero s nos referiremos frecuentemente a ella. De hecho, C# est tan interrelacionado con las clases base .NET que veremos que varias palabras reservadas de C# son meros envoltorios que encapsulan a ciertas clases base especficas. En particular, todos los tipos de datos bsicos de C# que se utilizan para representar enteros, nmeros de punto flotante, cadenas, etc., son realmente clases base.

Una diferencia importante entre VB6 y C# en este sentido, es que las funciones de sistema de VB son especficas de VB, mientras que las clases base .NET pueden ser utilizadas desde cualquier lenguaje de la Plataforma. NET.

Convenios

En este apndice compararemos frecuentemente cdigo en C# y Visual Basic. Para que sea ms fcil de identificar el cdigo en los dos lenguajes, presentaremos el cdigo C# en el mismo formato que se utiliza a lo largo del libro: