Manual Apoyo Visual-NET

download Manual Apoyo Visual-NET

of 101

Transcript of Manual Apoyo Visual-NET

VISUAL BASIC .NETEs un manual bsico sobre la programacin en Visual Basic .NetToda la informacin de este documento est recopilada y organizada en base a otros manuales sacados de www.lawebdelprogramador.com

Pedro Cuello12/05/2011

LECTURA Y ESCRITURA 5 OPERACIONES MATEMTICAS ...................................................................................................... 5 FUNCIONES DE CONVERSIN ........................................................................................................ 7 SMBOLOS DE COMPRARACIN .................................................................................................... 8 OPERADORES ................................................................................................................................ 8 AND............................................................................................................................................ 8 ANDALSO..................................................................................................................................... 8 OR.............................................................................................................................................. 9 XOR ............................................................................................................................................ 9 ORELSE...................................................................................................................................... 10 NOT .......................................................................................................................................... 10 IS.............................................................................................................................................. 10 TO ............................................................................................................................................ 11 FUNCIONES TIPO FECHA ........................................................................................................... 11 Funcin Now()...................................................................................................................... 11 Funcin Date() ..................................................................................................................... 11 Funcin Year(Fecha) ............................................................................................................. 11 Funcin Month(Fecha) ......................................................................................................... 11 Funcin Day(Fecha).............................................................................................................. 11 Funcin WeekDay(Fecha) ..................................................................................................... 11 Funcin DateAdd(TipoIntervalo,ValorIntervalo,Fecha).......................................................... 11 Funcin DateDiff(TipoIntervalo,FechaPrimera,FechaSegunda).............................................. 11 Funcin DatePart(TipoIntervalo,fecha) ................................................................................. 11 INSTRUCCIN CONDICIONAL....................................................................................................... 11 CONDICIONES MULTIPLES ........................................................................................................... 13 PROCESOS REPETITIVOS .............................................................................................................. 14 For / Next............................................................................................................................. 14 For Each ............................................................................................................................... 15 Funcin Reset....................................................................................................................... 15 Funcin Exit ......................................................................................................................... 15 ESTRUCTURAS REPETITIVAS ........................................................................................................ 16 WHILE / END WHILE..................................................................................................................... 16 DO / LOOP ................................................................................................................................. 16 ARRAYS ....................................................................................................................................... 17 ARRAY UNIDIMENSIONAL............................................................................................................... 17 ARRAY MULTIDIMENSIONAL ........................................................................................................... 18 2

PROCEDIMIENTOS ....................................................................................................................... 19 PARMETROS O ARGUMENTOS DE LOS PROCEDIMIENTOS ...................................................................... 20 ENUMERACIONES ....................................................................................................................... 22 PARADIGMAS.............................................................................................................................. 24 PARADIGMAS POR PROCEDIMIENTO ................................................................................................. 24 PARADIGMAS DECLARATIVOS.......................................................................................................... 24 PARADIGMA FUNCIONAL ............................................................................................................... 24 PARADIGMA ORIENTADO A OBJETOS ................................................................................................ 24 PROGRAMACIN ........................................................................................................................ 24 PROGRAMACIN CLSICA .............................................................................................................. 24 PROGRAMACIN MODULAR ........................................................................................................... 24 PROGRAMACIN ORIENTADA A OBJETOS .................................................................................. 28 INTRODUCCIN............................................................................................................................ 28 QU ES LA PROGRAMACIN ORIENTADA A OBJETOS? .............................................................. 28 LOS TRES PILARES DE LA PROGRAMACIN ORIENTADA A OBJETOS ........................................................... 28 Herencia .............................................................................................................................. 28 Encapsulacin ...................................................................................................................... 29 Polimorfismo........................................................................................................................ 29 LAS CLASES .................................................................................................................................. 29 LOS OBJETOS ............................................................................................................................... 29 Los miembros de una clase................................................................................................... 30 Crear o definir una clase....................................................................................................... 30 Definir los miembros de una clase ........................................................................................ 30 Acceder a los miembros de una clase ................................................................................... 31 LAS ESTRUCTURAS ...................................................................................................................... 35 LOS NOMBRE DE ESPACIOS ......................................................................................................... 35 QU ES UN NAMESPACE? ............................................................................................................. 35 Qu finalidad tiene el uso de los Namespace? .................................................................... 36 Anidar espacios de nombres: ................................................................................................ 36 Cmo acceder a los tipos declarados dentro de un Namespace? ......................................... 37 Ejemplos de cmo usar los Namespace ................................................................................ 37 APLICACN DE VENTANAS ......................................................................................................... 41 CREAR NUEVO PROYECTO ............................................................................................................. 41 EL IDE DE WINDOWSAPPLICATION ................................................................................................ 42 3

VENTANA DE CDIGO ................................................................................................................... 43 CAJA DE HERRAMIENTAS .............................................................................................................. 43 EXPLORADOR DE SOLUCIONES ........................................................................................................ 44 EXPLORADOR DE BASE DE DATOS ................................................................................................... 46 VENTANA DE PROPIEDADES ........................................................................................................... 47 VENTANA DE ERRORES ................................................................................................................. 47 BARRA DE HERRAMIENTAS .............................................................................................................. 1 FORMULARIOS (FORMS) ............................................................................................................... 2 INTRODUCCIN.............................................................................................................................. 2 TIPOS .......................................................................................................................................... 2 PROPIEDADES................................................................................................................................ 4 MTODOS.................................................................................................................................... 6 EVENTOS ..................................................................................................................................... 7 CONTROLES ................................................................................................................................ 10 COMMON CONTROLS.................................................................................................................... 10 COMPONENTS ............................................................................................................................ 12 CONTAINERS .............................................................................................................................. 13 DATA ........................................................................................................................................ 13 DIALOG ..................................................................................................................................... 10 MENUS & TOOLBARS .................................................................................................................. 10 PROPIEDADES: ............................................................................................................................ 11 Mtodos .............................................................................................................................. 11 EVENTOS ................................................................................................................................... 11 MSGBOX .................................................................................................................................... 1 FUNCIONES TIPO CADENA ............................................................................................................ 3 INPUTBOX ............................................................................................................................... 11 FORMAT .................................................................................................................................. 15 SELECT - CASE .......................................................................................................................... 19 UTILIZANDO FUNCIONES DE FECHA Y PUBLICAS Y TAMBIEN MODULOS, CLASES Y NAMESPACE .................................................................................................................................................... 28 FUNCIONES PBLICAS EN UN MDULO ............................................................................................ 28 CLASES Y NAMESPACE EN UN MDULO ........................................................................................... 30 FUNCION SHELL........................................................................................................................... 35

4

Una vez que tengas instalado el Visual Studio 2005, abrimos un proyecto nuevo de consola. S, como has ledo, empezaremos con aplicaciones desde consola. Ya pasaremos ha ventanas y dems. EMPEZAMOS!

LECTURA Y ESCRITURALa siguiente imagen muestra una lectura y escritura. La funcin Readline es para leer lo que el usuario ha escrito por pantalla y la funcin writeline es para imprimir mensajes por pantalla. Podemos declarar variables dim, static, public, private tal y como sucedia en VB6.

OPERACIONES MATEMTICASExiste una clase que permite realizar operaciones matemticas como races, potencias, etc. Es la clase Math.

Sintaxis del Sqrt: Math.Sqrt(NumeroASacarRaiz) 5

Sintaxis del Pow: Math.Pow(NumeroBase,NumeroDeExponente)

Las operaciones permitidas por esta clase Math son: E PI Representa la base logartmica natural, especificada por la constante e. Representa la relacin entre la longitud de la circunferencia de un circulo. Sobrecargado. Devuelve el valor absoluto de un nmero. Devuelve el ngulo cuyo coseno es el nmero especificado. Devuelve el ngulo cuyo seno es el nmero especificado. Devuelve el ngulo cuya tangente corresponde al nmero especificados. Devuelve el ngulo cuya tangente es el cociente de dos nmero especificados Calcula el producto completo de dos nmeros de 32 bits. Devuelve el nmero entero ms pequeo mayor o igual que el nmero especificado. Devuelve el coseno del ngulo especificado. Devuelve el coseno hiperblico del ngulo especificado. Sobrecargado. Devuelve el cociente de dos nmeros y pasa tambin como parmetro de salida el resto de la divisin. Devuelve e elevado a la potencia especificada. Devuelve el nmero entero ms grande menor o igual que el nmero especificado. Devuelve el resto de la divisin de dos nmeros especificados. Sobrecargado, devuelve el logaritmo de un nmero especificado. Devuelve el logaritmo en base 10 de un nmero especificado. Sobrecargado. Devuelve el mayor de dos nmeros. Sobrecargado. Devuelve el menor de dos nmeros. Devuelve un nmero especificado elevado a la potencia especificada. Sobrecargado. Devuelve el nmero ms prximo al valor especificado. Sobrecargado. Devuelve un valor que indica el signo de un nmero. Devuelve el seno del ngulo especificado. Devuelve el seno hiperblico del ngulo especificado. Devuelve la raz cuadrada de un nmero especificado. Devuelve la tangente del ngulo especificado. Devuelve la tangente hiperblica del ngulo especificado.

Abs Acos Asin Atan Atan2 BigMul Ceiling Cos Cosh DivRem Exp Floor IEEERemainder Log Log10 Max Min Pow Round Sign Sin Sinh Sqrt Tan Tanh

6

FUNCIONES DE CONVERSINComo se habrn dado cuenta que al activar la opcin de Option Strict, este nos obliga que tenemos que utilizar funciones de conversin para cada tipo de dato, con lo que no hacamos, si no lo estaba activado, como lo fue en los 8 primeros ejercicios, las funciones ms utilizadas estarn de color verde, las funciones de conversin son las siguientes: Nombre de la funcin Tipo de datos que devuelve Valores del argumento "expresin" CBool(expresin) Boolean Cualquier valor de cadena o expresin numrica. CByte(expresion) Byte De 0 a 255; las fracciones se redondean. CChar(expresion) Char Cualquier expresin de cadena; los valores deben ser de 0 a 65535. CDate(expresion) Date Cualquier representacin vlida de una fecha o una hora. CDbl(expresion) Double Cualquier valor Double, ver la tabla anterior para los valores posibles. CDec(expresion) Decimal Cualquier valor Decimal, ver la tabla anterior para los valores posibles. CInt(expresion) Integer Cualquier valor Integer, ver la tabla anterior para los valores posibles, las fracciones se redondean. CLng(expresion) Long Cualquier valor Long, ver la tabla anterior para los valores posibles, las fracciones se redondean. CObj(expresion) Object Cualquier expresin vlida. CShort(expresion) Short Cualquier valor Short, ver la tabla anterior para los valores posibles, las fracciones se redondean. CSng(expresion) Single Cualquier valor Single, ver la tabla anterior para los valores posibles. CStr(expresion) String Depende del tipo de datos de la expresin.

7

CType(expresion,Tipo) Val(expresion) Fix(expresion) Int(expresion)

Nota: Todos los objetos de vb.NET tienen unos mtodos para realizar conversiones a otros tipos, al menos de nmero a cadena, ya que tienen la propiedad. ToString que devuelve una representacin en formato cadena del nmero en cuestin (igual que CStr). El indicado en el segundo Cualquier tipo de datos parmetro Double Una cadena de caracteres. Depende del tipo de datos de Cualquier tipo de datos la expresin Depende del tipo de datos de Cualquier tipo de datos la expresin

Una de las funciones ms utilizadas, para hallar restos es la funcin Mod, ya sea para diversas soluciones ya sean Matemticas, fsicas y entre otras.Mod: Devuelve el resto de una divisin, la sintaxis es la siguiente: Dividendo Mod Divisor

SMBOLOS DE COMPRARACIN= igual < Menor que > Mayor que = mayor o igual Distinto

OPERADORESAndEl operador And solo utilizamos cuando queremos que se cumpla una serie de expresiones, por ejemplo:If a > b And a > c Then Console.WriteLine("a es mayor que b y c") End If

Como vemos en este ejemplo, hacemos dos comparaciones, el primero si a es mayor que b, y la segunda si a es mayor que c, si estas dos expresiones (comparaciones) resultan verdaderas, nos mostrar un mensaje dicindoos que es mayor que b y c.

AndAlsoEl operador AndAlso comprueba tambin una seria de expresiones, pero a comparacin del And, este comprueba siempre y cuando la expresin anterior resulta ser verdadera por ejemplo:If a > b AndAlso a > c Then

8

End If

Console.WriteLine("a es mayor que b y c")

Como vemos en este ejemplo, hacemos dos comparaciones, el primero si a es mayor que b, y la segunda si a es mayor que c, si la primera expresin (a > b) resulta ser verdadera har la comparacin de la segunda expresin (a > c), pero si no lo es, ya no se evaluara la expresin siguiente. Pero si las dos resultan verdaderas, nos mostrar un mensaje dicindoos que a es mayor que b y c.

OrEl operador Or solo utilizamos cuando queremos que se cumpla una expresin de toda una serie de expresiones, por ejemplo:If Promedio < 0 Or Promedio > 20 Then Console.WriteLine("Ingrese la Nota Correcta (1 . 20)") End If

En este ejemplo, si promedio es menor a cero o promedio es mayor a 20 nos mostrar un mensaje indicndonos que la nota que se ingreso es incorrecta, solo basta que una de las dos expresiones evaluadas sea verdadera.

XorEl operador Xor lo utilizaremos para casos especiales ya que realiza una operacin de exclusin lgica entre dos expresiones de tipo Boolean o bien una exclusin bit a bit entre dos expresiones numricas, por ejemplo:Resultado = expresin1 Xor expresin2

Resultado: Requerido. Cualquier variable numrica o de tipo Boolean. En una comparacin de tipo Boolean, el resultado ser la exclusin lgica de dos expresiones. En operaciones bit a bit, el resultado ser un valor numrico resultante de la disyuncin bit a bit de dos expresiones numricas. Expresin1: Requerido. Cualquier expresin numrica o de tipo Boolean. Expresin2: Requerido. Cualquier expresin numrica o de tipo Boolean del mismo tipo que expression1

Si son de Tipo Bolean Si Expresin1es... True True False False Y Expresin2 es... True False True False Resultado ser. False True True False

Si son de Tipo Bit (Numricos) Si el bit en Expresin1 es. Y el bit en Expresin2 es. 0 0 0 1 1 0

Resultado ser. 0 1 1

9

1

1

0

Ejemplo: Dim A As Integer = 10 Dim B As Integer = 8 Dim C As Integer = 6 Dim Resultado As Boolean Resultado = A > B Xor B > C Returns False. Resultado = B > A Xor B > C Returns True. Resultado = B > A Xor C > B Returns False.

En este ejemplo se usa el operador Xor para realizar una exclusin lgica entre cada uno de los bits de dos expresiones numricas. El bit en el modelo resultante se establecer si antes se han establecido solamente uno de los bits correspondientes a los operndoos.Dim A As Integer = 10 Dim B As Integer = 8 Dim C As Integer = 6 Dim Resultado As Integer Resultado = (A Xor B) Returns 2. Resultado = (A Xor C) Returns 12. Resultado = (B Xor C) Returns 14.

Esto de Xor, he tomado referencia del MSDN de Visual Basic 2005, ya que aqu se encuentra unos ejemplos ms claros, mientras tanto sigamos haciendo los dems operadores.

OrElseEl operador OrElse comprueba tambin una seria de expresiones, solo que bastara que una expresin sea verdadera para que no realice las dems evaluaciones. Por ejemplo:If Promedio < 0 OrElse Promedio > 20 Then Console.WriteLine("Ingrese la Nota Correcta (1 . 20)") End If

En este ejemplo si la primera expresin resulta verdadera, ya no realizara la siguiente expresin, en cambio si resultara falsa, realizara la siguiente expresin.

NotEste operador se utiliza para hacer negaciones, ms en los casos de tipo Bolean por ejemplo:Dim Variable As Boolean = True Dim Resultado As Boolean Resultado = Not Variable Retorna False.

Primero declaramos una variable de tipo Boolean y le asignamos un valor de True, pero despus en la instruccin negamos el valor almacenado y lo cambiamos por False (Not Variable), as que la variable resultado tendr el valor de False, sencillo no?.

IsEste operador nos permite hacer comparaciones ya sea Booleanas o de String, este nos devolver un valor Boolean de la expresin dada, por ejemplo:Dim Variable As String = .Joel. Dim Resultado As Boolean

10

Resultado = IsNumeric(Variable) Retorna False.

Este ejemplo es parecido al anterior solo que le preguntamos si la Variable es de valor Numrico (IsNumeric(Variable)), pero como es de tipo de cadena (String) nos devolver un valor de False,

ToEste operador lo usaremos mas en las Procesos Repetitivos o de Condiciones Mltiples, sirve para determinar un rango de nmeros, por ejemplo:For K = 1 To 10 A=A+1 Next

Este bucle correr o mejor dicho, realizara 10 veces la instruccin de A=A+1 Ya que le indicamos que la variable K va a valer del 1 al 10.

FUNCIONES TIPO FECHAFuncin Now() Esta funcin nos devuelve la fecha y hora actual del sistema, en un formato largo. Funcin Date() Esta funcin nos devuelve la fecha actual del sistema.

Funcin Year(Fecha) Esta funcin nos devuelve el ao de una fecha especificada. Funcin Month(Fecha) Obtiene el Nmero de mes de una fecha especificada. Funcin Day(Fecha) Obtiene el nmero de da de una fecha enviada o especificada. Funcin WeekDay(Fecha) Obtiene el nmero del da de la semana, tomando el domingo como valor nmero 1. Funcin DateAdd(TipoIntervalo,ValorIntervalo,Fecha) Suma o resta a una fecha, un intervalo determinado, para determinar si se realiza una suma o resta, el TipoIntervalo puede ser das, semanas, horas, meses, aos, etc. Valor Intervalo deber de ser positivo o negativo respectivamente. Funcin DateDiff(TipoIntervalo,FechaPrimera,FechaSegunda) Calcula la diferencia existente entre dos fechas. Funcin DatePart(TipoIntervalo,fecha) Extrae la parte de una fecha indicada.

INSTRUCCIN CONDICIONAL11

Como vimos en la primera entrega, estas instrucciones nos permiten tomar decisiones, dndonos un resultado de Verdadero o Falso, a menudo esta instruccin es la ms utilizada por todos los programadores, as que tendrs que aprendrtela de memoria, y no te preocupes que es muy fcil de usar.Sintaxis: Primera Forma: If Then Ejemplo: If a = b Then MessageBox(.Son Nmeros Iguales.) Si la expresin a evaluar de a = b devuelve o mejor dicho es verdadera, este nos mostrar un mensaje, con el texto de .Son Nmeros Iguales.. Segunda Forma: If Then End If Ejemplo: If b 0 Then Res = a / b Console.WriteLine("El Resultado de La Divisin es: {0}", Res) End If

Esta segunda forma, lo utilizamos cuando tengamos que hacer mas de una instruccin si la expresin a evaluar resulta verdadera, en este caso si a es mayor que b, si es verdadero este har la siguiente instruccin de a dividir entre b y el resultado guardarlo en una variable llamada Res, que despus la mostraremos en pantalla.Tercera Forma: If Then < Instruccin (si la expresin evaluada devuelve Verdadero)> Else < Instruccin (si la expresin evaluada devuelve Falso)> End If Ejemplo: If b 0 Then Res = a / b Console.WriteLine("El Resultado de La Divisin es: {0}", Res) Else Console.WriteLine("Error: Divisin Entre Cero") End If

Esta forma nos permite utilizar los dos tipos de resultados de la expresin evaluada, por ejemplo, si b es diferente a cero este dividir a, pero si es falso, nos mostrara un mensaje de Error.Cuarta Forma:

12

If Then Else (todo en una misma lnea) Ejemplo: If a = b Then MessageBox(.Son Nmeros Iguales.) Else MessageBox(.No son Nmeros Iguales.) (Todo en una misma lnea)

Esta forma no tan muy usada, solo en los casos cuando hay que hacer una sola instruccin en cada tipo de respuesta de la expresin evaluada, por ejemplo, si a es igual b nos mostrar un mensaje de Nmeros Iguales, pero si es falso nos mostrara otro mensaje dicindonos que No son Nmeros iguales, y recuerden que es en una sola lnea.Quinta Forma: If Then < Instruccin (si la expresin evaluada devuelve Verdadero)> ElseIf Then < Instruccin (si la expresin evaluada devuelve Verdadero)> Else < Instruccin (si la expresin evaluada devuelve Falso)> End If Ejemplo: If b = 0 Then Console.WriteLine("Error: Divisin Entre Cero") ElseIf a b Then Res = a / b Console.WriteLine("El Resultado de La Divisin es: {0}", Res) Else Console.WriteLine("El Resultado de La Divisin es: 1") End If

Bueno a mi parecer y si es que no me equivoco, esta es una de las formas ms usadas, ya que son if anidados, como lo haba en los pseudocdigos, el else es opcional, como lo ven en este ejemplo, si b es igual a cero, nos mostrara un mensaje de Error de Divisin, pero si es falso, har la siguiente evaluacin que ser si a es diferente de b har la divisin y nos mostrar el resultado de la divisin. Pero si es falso nos mostrar un mensaje, dicindonos que el resultado de la divisin es 1, sin ser necesario dividir.Nota: Recuerda que para cada IF hay un THEN y un END IF, as como en el pseudocdigo. Bueno, despus de tanta teora, empezaremos a resolver los ejercicios de la primera entrega, si, los mismo que hicimos en Pseudocdigo,

CONDICIONES MULTIPLES13

Este tipo de condiciones lo usamos para tener varios tipos de comparaciones (expresiones a evaluar).Sintaxis: Select Case Case Instrucciones Case Instrucciones Case Else si no se cumple ninguna de las listas de expresiones End Select Ejemplo: Select Case i Case 3 : Instruccin Case 6 To 11 Instruccin Case 14, 17 Instruccin Case Is > 25 Instruccin Case Else Instruccin End Select

a realizar a realizar a realizar a realizar a realizar

En el ejemplo, hacemos varias comprobaciones, si i vale 3 haremos la instruccin que sigue despus de los dos puntos (podemos ejecutar solo una instruccin despus de los dos puntos, si en caso hubiera ms instrucciones a ejecutar, estas instrucciones las pondramos en la parte inferior del Case), en cambio si tiene un valor de 6 a 11 ejecutara la instruccin que se encuentra en su inferior, o si tiene el valor de 14 17, ejecutara la instruccin que se encuentra en su inferior, o si i es mayor que 25, realizara la instruccin que se encuentra en su inferior, y por ultimo si no cumple ninguna comparacin, existe el Case Else, que ejecutara su instruccin, siempre y cuando no se cumpla ninguna expresin en los dems Case

PROCESOS REPETITIVOSLos procesos repetitivos o llamados bucles, se utilizan para repetir el o los cdigos, un nmero determinado de veces, para esto usaremos el For, que nos permitir repetir un nmero determinado de veces el cdigo. For / Next Con este tipo de bucle podemos repetir un cdigo un nmero determinado de veces.Sintaxis: For = To [Step ] contenido del bucle, lo que se va a repetir

14

Next

Primera Forma: Una de las formas ms utilizadas.For i = 1 To 10 contar de 1 hasta 10 la variable i tomar los valores 1, 2, 3, etc. Next

Segunda Forma: Esta forma se utiliza para decirle como va a incrementar, ya sea como el ejemplo de 2 en 2.For i = 1 To 100 Step 2 contar desde 1 hasta 100 (realmente 99) de 2 en 2 la variable i tomar los valores 1, 3, 5, etc. Next

Tercera Forma: Cuando queremos que un bucle sea en decreciente solo bastar darle un valor negativo, al nmero, como en el ejemplo, queremos que en vez que avance del 1 al 10 queremos que este vaya del 10 al 1.For i = 10 To 1 Step -1 contar desde 10 hasta 1 la variable i tomar los valores 10, 9, 8, etc. Next

For Each Este bucle repetir o iterar por cada uno de los elementos contenidos en una coleccin.Sintaxis: For Each In Lo que se har mientras se repita el bucle Next Ejemplo: Dim s As String For Each s In "Hola Mundo" Console.WriteLine(s) Next Console.ReadLine()

Este bucle recorre cada uno de los caracteres de una cadena, en este caso recorrer cada carcter de la cadena s (Hola Mundo)., comenzando por la H y de ah la o y as hasta la ltima o de la palabra Mundo. Funcin Reset Esta funcin nos permite reiniciar un ciclo de proceso, o ms aun podemos volver a un formato original de un control, esto ya lo veremos ms adelante cuando tocaremos las ventanas de aplicacin. Funcin Exit Esta funcin nos permite salir ya sea de un proceso o un bucle, tambin salir de toda una funcin, clase, y funcin principal Main.

15

ESTRUCTURAS REPETITIVASLas estructuras repetitivas o llamados tambin bucles, se utilizan para repetir el o los cdigos, hasta que la expresin evaluada de un valor de Falso.

While / End WhileSe repetir mientras se cumpla la expresin lgica que se indicar despus de WhileSintaxis: While Lo que haya que hacer mientras se cumpla la expresin End While Ejemplo: While i < 10 Console.WriteLine(i) i=i+1 End While

Este cdigo escribir el valor de i hasta que el valor de i tome el valor de 10 o ms.

Do / LoopEste tipo de bucle es muy parecido al anterior. Si se utiliza slo con esas dos instrucciones, este tipo de bucle no acabar nunca y repetir todo lo que haya entre Do y Loop. Pero este tipo de bucle se puede usar con dos instrucciones que nos permitirn evaluar expresiones lgicas: While y Until Pero no debemos confundir este While con el While/End While que acabamos de ver anteriormente. La ventaja de usar While o Until con los bucles Do/Loop es que estas dos instrucciones podemos usarlas tanto junto a Do como junto a Loop, la diferencia est en que si los usamos con Do, la evaluacin se har antes de empezar el bucle, mientras que si se usan con Loop, la evaluacin se har despus de que el bucle se repita al menos una vez.Sintaxis:

Primera Forma: Este bucle evala al principio, mejor dicho realizara el cdigo o las instrucciones un numero que digamos que sea n veces.Do While Instruccin Loop

Segunda Forma: Este bucle evala al final, mejor dicho realizara el cdigo o las instrucciones n . 1 veces.

Do Instruccin Loop While

16

Tercera Forma: Este bucle evala al principio, a diferencia que el primero realizara el cdigo siempre y cuando la expresin sea falsa, mejor dicho realizara el cdigo o las instrucciones n veces.Do Until Instruccin Loop

Cuarta Forma: Este bucle evala al final, a diferencia que el segundo realizara el cdigo siempre y cuando la expresin sea falsa, mejor dicho realizara el cdigo o las instrucciones n . 1 vecesDo Instruccin Loop Until

ARRAYSArray UnidimensionalUn Array (arreglo) es un indicador que puede almacenar varios valores simultneamente. Cada uno de estos valores se identifica mediante un nmero al cual se llama ndice. As, para acceder al primer elemento del array habra que usar el ndice cero, para el segundo el ndice uno, para el tercero el ndice dos, y as sucesivamente. Vamos a ver cmo se declara un ArrayDim Variable(NmeroDeElementos) As Tipo de Variable

En efecto, tal como pueden apreciar, el array ser utilizable nicamente a partir de su declaracin. Por ejemplo:Dim Numeros(3) As Integer

En este ejemplo, el nmero 3 que est dentro de los parntesis indica el nmero total de elementos + 1 de que constar el array. Puesto que todos los arrays estn basados en cero, esto es, el primer elemento del array es cero. Por lo tanto, en este caso, el ltimo elemento sera 3, ya que son cuatro y no tres los elementos que lo componen (0, 1, 2 y 3). Veamos un ejemplo algo ms completo y despus lo comentamos:Dim Numeros(3) As Integer Dim K As Integer Numeros(0) = 1 Numeros(1) = 2 Numeros(2) = 3 Numeros(3) = 4 For K = 0 to 3 Console.WriteLine("Indice [{0}{1}{2}", K, "] = ", Numeros(K)) Next

17

Ahora veamos la salida en la consola. Indice [0] = 1 Indice [1] = 2 Indice [2] = 3 Indice [3] = 4

Bueno ahora se ve ms claro lo que hablo, como se habrn dado cuenta al declarar un array e indicar los elementos que va a contener dicho array, siempre debemos de tener en cuenta de esto: Numero de elementos . 1, por ejemplo, si queremos un array de 4 elementos tendramos que indicarle as: Array (3), porque sera el nmero de elementos . 1 en este caso 4 . 1 = 3. Aunque es un poco difcil de acostumbrarse, ya que en las versiones antiguas no eran as, se parecen un poco al C, C++.

Array MultidimensionalLos arrays multidimensionales son aquellos que constan de dos o ms dimensiones, es decir, que cada elemento del array viene definido por dos o ms ndices. Veamos un ejemplo de declaracin de un array multidimensional (en este caso, ser tridimensional, es decir, con tres dimensiones):Dim Variable(x,x,x) As Tipo de Variable

Como vemos, hay tres letras dentro de los parntesis, separadas por comas, lo cual indica que el array es tridimensional, puesto que los tres ndices del mismo se separan uno de otro por comas. Veamos un pequeo ejemplo que lo clarifique un poco ms:Dim Alumnos(1,3) As String

Este array es bidimensional y servira para almacenar una lista de alumnos por Nombres y Apellidos, tenemos un array bidimensional (el primer ndice del array nos almacenar los nombres y el segundo ndice nos almacenar los apellidos). Veamos un poco de cdigo y una tabla para que se hagan una idea de cmo se almacena esto:Alumnos(0,0)="Jos"; Alumnos(0,1)="Lus"; Alumnos(0,2)="Juan"; Alumnos(0,3)="Pedro"; Alumnos(1,0)="Vargas"; Alumnos(1,1)="Moreno"; Alumnos(1,2)="Lpez"; Alumnos(1,3)="Peralta"; Esto sera como almacenar los datos en esta tabla: Alumnos Alumnos Alumnos Alumnos 0 1 2 3 Nombres (0) Jos Lus Juan Pedro Apellidos (1) Vargas Moreno Lpez Peralta

Bueno parece que est un poco claro, lo de arrays, en esta tabla he separado por indicie, mejor dicho lo que declaro en la variable lo he graficado, como?, bueno as: tenemos nuestro array llamado Alumnos(1,3), todos sabemos que va a tener dos columnas y cuatro filas, as que en la

18

columna 0 voy a almacenar los nombres y en la columna 1 sus apellidos, guindome de los ndices de cada nombre que ingrese, en otras palabras en el array Alumnos, en la columna 0 y en la fila 0 voy a almacenar el nombre de Jos, as que en la columna 1 y en la misma fila 0 voy a almacenar su apellido Varga y as sucesivamente hasta que se llene el array.Ahora veamos unos ejercicios para que lo entiendan mejor.

PROCEDIMIENTOSLos procedimientos son las sentencias de cdigo ejecutable de un programa. Las instrucciones de un procedimiento estn delimitadas por una instruccin de declaracin y una instruccin End. Existen tres tipos de procedimientos en Microsoft Visual Basic .NET: procedimientos Sub, procedimientos Function y procedimientos Property. Los procedimientos Sub realizan acciones pero no devuelven un valor al procedimiento que origina la llamada. Los controladores de eventos son procedimientos Sub que se ejecutan en respuesta a un evento. Los procedimientos Function pueden devolver un valor al procedimiento que origina la llamada. La instruccin MessageBox.Show es un ejemplo de funcin. Los procedimientos Property devuelven y asignan valores de propiedades de clases, estructuras o mdulos. Un procedimiento puede ser invocado, o llamado, desde otro procedimiento. Cuando un procedimiento llama a otro procedimiento, se transfiere el control al segundo procedimiento. Cuando finaliza la ejecucin del cdigo del segundo procedimiento, ste devuelve el control al procedimiento que lo invoc. Debido a esta funcionalidad, los procedimientos resultan tiles para realizar tareas repetidas o compartidas. En lugar de escribir el mismo cdigo ms de una vez, podemos escribir un procedimiento e invocarlo desde varios puntos de nuestra aplicacin o desde otras aplicaciones. Utilizamos un modificador de acceso para definir la accesibilidad de los procedimientos que escribimos (es decir, el permiso para que otro cdigo invoque al procedimiento). Si no especificamos un modificador de acceso, los procedimientos son declarados public de forma predeterminada. Las opciones de accesibilidad para declarar un procedimiento dentro de un mdulo:Public: Ninguna restriccin de acceso Friend: Accesible desde el programa que contiene la declaracin y desde cualquier otro lugar del mismo ensamblado Private: Accesible nicamente en el mdulo que contiene la declaracin Sintaxis:

19

[accesibilidad] Function NombreFuncion[(ListaDeArgumentos)] As TipoDato Instrucciones Retorna el Valor de Una Funcin End Function

Parmetros o argumentos de los procedimientosCuando queramos que un procedimiento realice una tarea, es posible que necesitemos indicarle alguna informacin adicional. Esa informacin se suele indicar mediante parmetros o argumentos. Los argumentos pasados a los procedimientos pueden ser pasados por valor o por referencia. Por Valor: Cuando un argumento es pasado por valor, este valor no se podr alterar, por ejemplo:Module Ejemplo Sub Main() MostrarNumero(1) Console.ReadLine() End Sub Sub MostrarNumero(ByVal Valor As Integer) Valor = Valor + 1 Console.WriteLine("El Valor del Parametro es: {0}", Valor) End Sub End Module

Expliquemos, nosotros llamamos al procedimiento MostrarNumero, y le mandamos el parmetro de 1, este numero 1 entra al procedimiento mediante la variable Valor, que despus lo alteramos sumndole ms uno, entonces el valor de la variable Valor seria 2, supuestamente, pero a la hora de mostrarlo en la consola, nos mostrar el valor de 1, se preguntarn Por qu?, esto solo tiene un respuesta, como es pasado por Valor, este Valor no puede ser alterado, por ms que le sumemos, dividamos, restamos, etc. El valor que va a contener la variable Valor siempre va a ser 1.Por Referencia: Cuando un argumento es pasado por referencia, este valor se podr alterar, por ejemplo: Module Ejemplo Sub Main() MostrarNumero(1) Console.ReadLine() End Sub Sub MostrarNumero(ByRef Valor As Integer) Valor = Valor + 1 Console.WriteLine("El Valor del Parametro es: {0}", Valor) End Sub End Module

Expliquemos, nosotros llamamos al procedimiento MostrarNumero, y le mandamos el parmetro de 1, este numero 1 entra al procedimiento mediante la variable Valor, que despus lo alteramos sumndole ms uno, entonces el valor de la variable Valor seria

20

2, a la hora de mostrarlo en la consola, nos mostrar el valor de 2, se preguntarn Por qu?, esto solo tiene un respuesta, como es pasado por Referencia, este Valor puede ser alterado.

21

ENUMERACIONESUna enumeracin es un tipo especial de variable numrica en la que los valores que dicha variable puede tomar, son constantes simblicas, es decir que en lugar de usar un nmero, se usa una palabra (constante) que hace referencia a un nmero, esta constante comenzara desde al valor de 0, por ejemplo veamos un ejemplo ms antiguo que es de los colores.

Estas enumeraciones se declaran desde afuera del Main, expliquemos, tenemos una enumeracin llamada colores, que contendr las siguientes constantes: Azul, Rojo, Verde, que por default el azul contendr el valor de 0, el rojo ser 1 y el verde ser 2, si se preguntan, Podemos cambiar esos valores? La respuesta es s, por ejemplo, ponemos lo siguiente:Enum Colores Azul = 255 Rojo Verde End Enum

En este caso le asignamos a Azul el valor de 255, entonces el Rojo valdr 256 y el Verde ser 257. La enumeracin Colores ya viene a ser un tipo de dato, as que cuando declaramos una variable, podemos asignarles de tipo Colores.

22

Las enumeraciones pueden ser de varios tipos de datos, como integer, Byte, Long, etc. Cuando declaramos una variable de tipo enumeracin, que hayamos creado, solo podremos asignarles la constante que contenga esta enumeracin, para que me entiendan vean este grfico.

Ahora veamos algunos ejercicios de enumeracin para que les quede un poco ms claro. 50. Esta aplicacin nos muestra que valor contiene cada constante de la enumeracin Colores.Module Ejercicio50 Enum Colores Azul Rojo Verde End Enum Sub Main() Dim Color As Colores Color = Colores.Azul Console.WriteLine("El Nmero 0 Vale: {0}", Color) Color = Colores.Rojo Console.WriteLine("El Nmero 1 Vale: {0}", Color) Color = Colores.Verde

Console.WriteLine("El Nmero 2 Vale: {0}", Color)End Sub End Module

23

PARADIGMASParadigmas por ProcedimientoSon aquellas llamadas tambin paradigmas interactivos, representan al enfoque tradicional de la programacin en donde los programas se conciben como mdulos que realizan una determinada tarea o accin, para posteriormente obtener una salida o resultado.

Paradigmas DeclarativosEste paradigma hace hincapi a la pregunta Cul es el problema?, sin interesarle al programador, que procedimiento necesita para resolver el problema, pues as tenemos el GPS, sistemas simulados de propsitos generales, que permite modelar el problema, por ejemplo los problemas particulares como el problema de las colas de un banco, simular el programa de mantenimiento de una fbrica, el problema de producir N piezas en un determinado proceso productivo.

Paradigma FuncionalPlantea el proceso de creacin de software, como un sistema de cajas negras, cada uno de las cuales acepta una entrada por arriba y produce salidas por abajo, desde el punto de vista matemtico, dichas cajas son funciones por lo que ha de ser un paradigma funcional.

Paradigma Orientado a ObjetosEs un paradigma que ha adquirido popularidad en los ltimos aos que es el resultado de la evolucin de la programacin estructurada, en la cual se subdivide en mdulos y que cada uno de ellos realiza una determinada tarea, ese mismo concepto se aplica a los objetos para que cumplan una determinada accin o tarea, pues as tenemos los lenguajes de programacin C, C++, Java. Conduce a paradigma orientado a objetos, donde sin duda es una evolucin de la programacin estructurada y adems los conceptos fundamentales son: clase, herencia, polimorfismo, reutilizacin. Los lenguajes de programacin orientada a objetos son SmallTalk, Simula, C++ y Java.

PROGRAMACINProgramacin ClsicaSurge por los aos 50 y 60, es de tipo monoltica donde si el programa era grande, era difcil de corregir, y su mantenimiento era muy costoso.

Programacin ModularSurge a principios de los 70, es uno de los mtodos de diseo ms flexible y potentes para mejorar la productividad de un programa. Todo programa contiene un mdulo denominado programa principal, que controla todo lo que sucede, es decir transfiere el control a su mdulo, de modo que ellos pueden ejecutar funciones, las tareas de los mdulos se sigue dividiendo hasta que cada uno tenga exclusivamente una funcin especfica, a este tipo de programacin se le conoce como el mtodo .Divide y Vencers. (Top Down).

24

Ahora veamos un ejercicio utilizando una programacin modular. ESTE ES UN EJEMPLO DE PROGRAMACIN MODULAR EN CDIGOEsta aplicacin utiliza varios procedimientos para realizar una cierta tarea, utilizando la programacin modular. Module Ejercicio53 Programa que muestra un men de opciones Sub Main() Dim opc, Numero As Integer Call Menu() Console.WriteLine() Console.Write("Elija Su Opcin ==> ") opc = CInt(Console.ReadLine) Console.WriteLine() While opc 4 Select Case opc Case 1 Console.Write("Ingrese un Nmero Entero: ") Numero = CInt(Console.ReadLine) Call Pares(Numero) Case 2 Console.Write("Ingrese un Nmero Entero: ") Numero = CInt(Console.ReadLine) Call EsPrimo(Numero) Case 3 Console.Write("Ingrese un Nmero Entero: ") Numero = CInt(Console.ReadLine) Call Factorial(Numero) Case Else Console.WriteLine("Opcin No Vlida") Console.Clear() Call Menu() End Select Console.WriteLine()

25

Console.Write("Elija Su Opcin ==> ") opc = CInt(Console.ReadLine) Console.WriteLine() End While Console.WriteLine("Fin del Programa") Console.ReadLine() End Sub Sub Menu() Console.WriteLine() Console.WriteLine("{0}{1}", Space(30), "MEN DE OPCIONES") Console.WriteLine() Console.WriteLine("[1] Pares") Console.WriteLine("[2] Es Primo") Console.WriteLine("[3] Factorial") Console.WriteLine("[4] Salir") Console.WriteLine() End Sub Sub Pares(ByVal Numero As Integer) Dim i As Integer = 1 Console.WriteLine() Console.WriteLine("Los Pares Menores que {0} Son: ", Numero) Console.WriteLine() While i < Numero If i Mod 2 = 0 Then Console.WriteLine("{0}", i) End If i=i+1 End While End Sub Sub EsPrimo(ByVal Numero As Integer) Dim Primo As Boolean If Numero < 6 And Numero 4 Then Primo = True ElseIf Numero Mod 2 = 0 Or Numero Mod 3 = 0 Or Numero Mod 5 = 0 Then Primo = False Else Primo = True End If Console.WriteLine() If Primo = True Then Console.WriteLine("El Nmero es Primo") Else Console.WriteLine("El Nmero No Es Primo") End If End Sub Sub Factorial(ByVal Numero As Integer) Dim k As Integer Dim r As Long = 1 For k = 1 To Numero r=r*k Next Console.WriteLine()

26

Console.WriteLine("El Factorial del Nmero es : {0}", r) End Sub End Module

27

PROGRAMACIN ORIENTADA A OBJETOSIntroduccinLa programacin orientada a objetos es un importante conjunto de tcnicas que pueden utilizarse para hacer el desarrollo de programas eficientes en la programacin orientada a objetos, los objetos son los elementos principales de construccin sin embargo el uso de objetos en un programa no significa que estn programando en un modo orientado a objetos, lo que cuenta es el sistema, en el cual los objetos se interconectan y se comunican entre s. La programacin orientada a objetos es una tcnica estructurada siendo los objetos los principales elementos de construccin. La programacin orientada a objetos es el producto de la evolucin de paradigma estructurada a fin de conseguir que el software sea un producto industrial, la programacin orientada a objetos es una programacin que enva mensajes a los objetos segn Grade Booch, autor del mtodo orientado a objetos, define a esta programacin como: .Un mtodo de implementacin en el que los programas se organizan como colecciones cooperativas de objetos., cada uno de las cuales representa una instancia de alguna clase y cuyas clases son todos los miembros de una jerarqua de clases unidos mediante relacin de herencia. Sea de tipo de dato abstracto (IDA). Todo .NET Framework est basado en clases (u objetos). A diferencia de las versiones anteriores de Visual Basic, la versin .NET de este lenguaje basa su funcionamiento casi exclusivamente en las clases contenidas en .NET Framework,adems casi sin ningn tipo de limitaciones.

Qu es la Programacin Orientada a Objetos?Los tres pilares de la Programacin Orientada a ObjetosSegn se dice por ah, cualquier lenguaje basado en objetos debe cumplir estos tres requisitos: Herencia Encapsulacin Polimorfismo Herencia La herencia es la capacidad de poder derivar una clase a partir de otra, la clase inicial se usa como clase base y la clase derivada es un nuevo tipo completamente de datos que incorpora todos los datos miembros y funciones miembros de la clase original, con cualquier dato nuevo o funcin miembro nueva y unidos en clase derivada. La clase base se conoce como clase padre o superclase y la clase derivada como clase hija o subclase. Para que lo entiendas mejor, veamos un ejemplo clsico: Supongamos que tenemos una clase Gato que est derivada de la clase Animal. El Gato hereda de Animal todas las caractersticas comunes a los animales, adems de aadirle algunas caractersticas particulares a su condicin felina. Podemos decir que un Gato es un Animal, lo mismo que un Perro es un Animal, ambos estn derivados (han heredado) de la clase Animal, pero cada uno de ellos es diferente, aunque en el fondo los dos son animales. Esto es herencia: usar una clase base (Animal) y poder

28

ampliarla sin perder nada de lo heredado, pudiendo ampliar la clase de la que se ha derivado (o heredado). Encapsulacin La encapsulacin es la capacidad de contener y controlar el acceso a un grupo de elementos asociados. Las clases proporcionan una de las formas ms comunes de encapsular elementos. La encapsulacin es la capacidad de separar la implementacin de la interfaz de una clase del cdigo que hace posible esa implementacin. Esto realmente sera una especie de abstraccin, ya que no nos importa cmo est codificado el funcionamiento de una clase, lo nico que nos debe interesar es cmo funciona... Para que nos vayamos entendiendo, cuando digo: la implementacin de la interfaz de una clase, me refiero a los miembros de esa clase: mtodos, propiedades, eventos, etc. Es decir, lo que la clase es capaz de hacer. Cuando usamos las clases, stas tienen una serie de caractersticas (los datos que manipula) as como una serie de comportamientos (las acciones a realizar con esos datos). Pues la encapsulacin es esa capacidad de la clase de ocultarnos sus interioridades para que slo veamos lo que tenemos que ver, sin tener que preocuparnos de cmo est codificada para que haga lo que hace... simplemente nos debe importar que lo haga.

Polimorfismo El polimorfismo permite que diferentes objetos respondan de modo diferente al mismo mensaje, por lo cual se dice que adquiere su mxima potencia, cuando se utiliza en unin a la herencia, el polimorfismo permite que el mismo nombre de mtodo emboque una operacin a los objetos de una clase padre y una operacin diferente en los objetos de la clase derivada. El Polimorfismo nos permite usar miembros de distintas clases de forma genrica sin tener que preocuparnos si pertenece a una clase o a otra. Siguiendo con el ejemplo de los animales, si el Gato y el Perro pueden morder podramos tener un "animal" que muerda sin importarnos que sea el Gato o el Perro, simplemente podramos usar el mtodo Morder ya que ambos animales tienen esa caracterstica "animal mordedor".

LAS CLASESTodo lo que tiene el .NET Framework, en realidad son clases. Una clase no es ni ms ni menos que cdigo. Aunque dicho de esta forma, cualquier programa sera una clase. Cuando definimos una clase, realmente estamos definiendo dos cosas diferentes: los datos que dicha clase puede manipular o contener y la forma de acceder a esos datos. Por ejemplo, si tenemos una clase de tipo Cliente, por un lado tendremos los datos de dicho cliente y por otro la forma de acceder o modificar esos datos. En el primer caso, los datos del Cliente, como por ejemplo el nombre, domicilio etc., estarn representados por una serie de campos o propiedades, mientras que la forma de modificar o acceder a esa informacin del Cliente se har por medio de mtodos. Esas propiedades o caractersticas y las acciones a realizar son las que definen a una clase.

Los Objetos29

Por un lado tenemos una clase que es la que define un "algo" con lo que podemos trabajar. Pero para que ese "algo" no sea un "nada", tendremos que poder convertirlo en "algo tangible", es decir, tendremos que tener la posibilidad de que exista. Aqu es cuando entran en juego los objetos, ya que un objeto es una clase que tiene informacin real. Digamos que la clase es la "plantilla" a partir de la cual podemos crear un objeto en la memoria. Por ejemplo, podemos tener varios objetos del tipo Cliente, uno por cada cliente que tengamos en nuestra cartera de clientes, pero la clase slo ser una. Dicho de otra forma: podemos tener varias instancias en memoria de una clase. Una instancia es un objeto (los datos) creado a partir de una clase (la plantilla o el cdigo). Para entender mejor todo este galimatas, desglosemos las clases: Los miembros de una clase Las clases contienen datos, esos datos suelen estar contenidos en variables. A esas variables cuando pertenecen a una clase, se les llama: campos o propiedades. Por ejemplo, el nombre de un cliente sera una propiedad de la clase Cliente. Ese nombre lo almacenaremos en una variable de tipo String, de dicha variable podemos decir que es el "campo" de la clase que representa al nombre del cliente. Por otro lado, si queremos mostrar el contenido de los campos que contiene la clase Cliente, usaremos un procedimiento que nos permita mostrarlos, ese procedimiento ser un mtodo de la clase Cliente. Por tanto, los miembros de una clase son las propiedades (los datos) y los mtodos las acciones a realizar con esos datos. Como te he comentado antes, el cdigo que internamente usemos para almacenar esos datos o para, por ejemplo, mostrarlos, es algo que no debe preocuparnos mucho, simplemente sabemos que podemos almacenar esa informacin (en las propiedades de la clase) y que tenemos formas de acceder a ella, (mediante los mtodos de dicha clase), eso es "abstraccin" o encapsulacin. Crear o definir una clase Al igual que existen instrucciones para declarar o definir una variable o cualquier otro elemento de un programa de Visual Basic, existen instrucciones que nos permiten crear o definir una clase. Para crear una clase debemos usar la instruccin Class seguida del nombre que tendr dicha clase, por ejemplo:Class Cliente

A continuacin escribiremos el cdigo que necesitemos para implementar las propiedades y mtodos de esa clase, pero para que Visual Basic sepa que ya hemos terminado de definir la clase, usaremos una instruccin de cierre:End Class

Por tanto, todo lo que est entre Class y End Class ser la definicin de dicha clase. Definir los miembros de una clase Para definir los miembros de una clase, escribiremos dentro del "bloque" de definicin de la clase, las declaraciones y procedimientos que creamos convenientes. Veamos un ejemplo:Class Cliente Public Nombre As String Sub Mostrar()

Console.WriteLine("El nombre del cliente: {0}", Nombre)

30

End Sub End Class

En este caso, la lnea Public Nombre As String, estara definiendo una propiedad o "campo" pblico de la clase Cliente. Por otro lado, el procedimiento Mostrar sera un mtodo de dicha clase, en esta caso, nos permitira mostrar la informacin contenida en la clase Cliente. Esta es la forma ms simple de definir una clase. Y normalmente lo haremos siempre as, por tanto podemos comprobar que es muy fcil definir una clase, as como los miembros de dicha clase. Pero no slo de clases vive el Visual Basic... o lo que es lo mismo, para qu nos sirve una clase si no sabemos crear un objeto basado en esa clase...? As que, sepamos cmo crearlos. Crear un objeto a partir de una clase Como te he comentado antes, las clases definen las caractersticas y la forma de acceder a los datos que contendr, pero slo eso: los define. Para que podamos asignar informacin a una clase y poder usar los mtodos de la misma, tenemos que crear un objeto basado en esa clase, o lo que es lo mismo: tenemos que crear una nueva instancia en la memoria de dicha clase. Para ello, haremos lo siguiente: Definimos una variable capaz de contener un objeto del tipo de la clase, esto lo haremos como con cualquier variable:Dim cli As Cliente

Pero, a diferencia de las variables basadas en los tipos visto hasta ahora, para poder crear un objeto basado en una clase, necesitamos algo ms de cdigo que nos permita "crear" ese objeto en la memoria, ya que con el cdigo usado en la lnea anterior, simplemente estaramos definiendo una variable que es capaz de contener un objeto de ese tipo, pero an no existe ningn objeto en la memoria, para ello tendremos que usar el siguiente cdigo:cli = New Cliente()

Con esto le estamos diciendo al Visual Basic: crea un nuevo objeto en la memoria del tipo Cliente. Estos dos pasos los podemos simplificar de la siguiente forma:Dim cli As New Cliente()

Acceder a los miembros de una clase Para acceder a los miembros de una clase (propiedades o mtodos) usaremos la variable que apunta al objeto creado a partir de esa clase, seguida de un punto y el miembro al que queremos acceder, por ejemplo, para asignar el nombre al objeto cli, usaremos este cdigo: cli.Nombre = "Visual Basic" Es decir, de la misma forma que haramos con cualquier otra variable, pero indicando el objeto al que pertenece dicha variable. Como podrs comprobar, esto ya lo hemos estado usando anteriormente tanto en la clase Console como en las otras clases que hemos usado en entregas anteriores, incluyendo los arrays. Y para acceder al mtodo Mostrar: cli.Mostrar()

31

Ejemplo de cmo usar la herencia Para poder usar la herencia en nuestras clases, debemos indicar al Visual Basic que esa es nuestra intencin, para ello disponemos de la instruccin Inherits, la cual se usa seguida del nombre de la clase de la que queremos heredar. Veamos un ejemplo. Empezaremos definiendo una clase "base" la cual ser la que heredaremos en otra clase. Ya sabemos cmo definir una clase, aunque para este ejemplo, usaremos la clase Cliente que vimos anteriormente, despus crearemos otra, llamada ClienteMoroso la cual heredar todas las caractersticas de la clase Cliente adems de aadirle una propiedad a esa clase derivada de Cliente. Veamos el cdigo de estas dos clases. Para ello crea un nuevo proyecto del tipo consola y escribe estas lneas al principio o al final del fichero que el IDE aade de forma predeterminada.Class Cliente Public Nombre As String Sub Mostrar() Console.WriteLine("El nombre del cliente: {0}", Nombre) End Sub End Class Class ClienteMoroso Inherits Cliente Public Deuda As Decimal End Class

Como puedes comprobar, para que la clase ClienteMoroso herede la clase Cliente, he usado Inherits Cliente, con esta lnea, (la cual debera ser la primera lnea de cdigo despus de la declaracin de la clase), le estamos indicando al VB que nuestra intencin es poder tener todas las caractersticas que la clase Cliente tiene. Haciendo esto, aadiremos a la clase ClienteMoroso la propiedad Nombre y el mtodo Mostrar, aunque tambin tendremos la nueva propiedad que hemos aadido: Deuda. Ahora vamos a ver cmo podemos usar estas clases, para ello vamos a aadir cdigo en el procedimiento Main del mdulo del proyecto:Module Module1 Sub Main() Dim cli As New Cliente() Dim cliM As New ClienteMoroso() cli.Nombre = "Jos" cliM.Nombre = "Luis" cliM.Deuda = 2000 Console.WriteLine("Usando Mostrar de la clase Cliente") cli.Mostrar() Console.WriteLine("Usando Mostrar de la clase ClienteMoroso") cliM.Mostrar() Console.WriteLine("La deuda del moroso es: {0}", cliM.Deuda) Console.ReadLine() End Sub

32

End Module

Lo que hemos hecho es crear un objeto basado en la clase Cliente y otro basado en ClienteMoroso. Le asignamos el nombre a ambos objetos y a la variable cliM (la del ClienteMoroso) le asignamos un valor a la propiedad Deuda. Fjate que en la clase ClienteMoroso no hemos definido ninguna propiedad llamada Nombre, pero esto es lo que nos permite hacer la herencia: heredar las propiedades y mtodos de la clase base. Por tanto podemos usar esa propiedad como si la hubisemos definido en esa clase. Lo mismo ocurre con los mtodos, el mtodo Mostrar no est definido en la clase ClienteMoroso, pero s que lo est en la clase Cliente y como resulta que ClienteMoroso hereda todos los miembros de la clase Cliente, tambin hereda ese mtodo. La salida de este programa sera la siguiente:

Usando Mostrar de la clase Cliente El nombre del cliente: Jos Usando Mostrar de la clase ClienteMoroso El nombre del cliente: Luis La deuda del moroso es: 2000

Ahora veamos cmo podramos hacer uso del polimorfismo o al menos unade las formas que nos permite el .NET Framework. Teniendo ese mismo cdigo que define las dos clases, podramos hacer lo siguiente:Sub Main() Dim cli As Cliente Dim cliM As New ClienteMoroso() cliM.Nombre = "Luis" cliM.Deuda = 2000 cli = cliM Console.WriteLine("Usando Mostrar de la clase Cliente") cli.Mostrar() Console.WriteLine("Usando Mostrar de la clase ClienteMoroso") cliM.Mostrar() Console.WriteLine("La deuda del moroso es: {0}", cliM.Deuda) Console.ReadLine() End Sub

En este caso, la variable cli simplemente se ha declarado como del tipo Cliente, pero no se ha creado un nuevo objeto, simplemente hemos asignado a esa variable el contenido de la variable cliM. Con esto lo que hacemos es asignar a esa variable el contenido de la clase ClienteMoroso, pero como comprenders, la clase Cliente "no entiende" nada de las nuevas propiedades implementadas en la clase derivada, por tanto slo se podr acceder a la parte que es comn a esas dos clases: la parte heredada de la clase Cliente. Realmente las dos variables apuntan a un mismo objeto, por eso al usar el mtodo Mostrar se muestra lo mismo. Adems de que si hacemos cualquier cambio a la propiedad Nombre, al existir slo un objeto en la memoria, ese cambio

33

afectar a ambas variables. Para comprobarlo, aade este cdigo antes de la lnea Console.ReadLine():Console.WriteLine() cli.Nombre = "Juan" Console.WriteLine("Despus de asignar un nuevo nombre a cli.Nombre") cli.Mostrar() cliM.Mostrar()

La salida de este nuevo cdigo, sera la siguiente:Usando Mostrar de la clase Cliente El nombre del cliente: Pepe Usando Mostrar de la clase ClienteMoroso El nombre del cliente: Pepe La deuda del moroso es: 2000 Despus de asignar un nuevo nombre a cli.Nombre El nombre del cliente: Juan El nombre del cliente: Juan

Como puedes comprobar, al cambiar en una de las variables el contenido de la propiedad Nombre, ese cambio afecta a las dos variables, pero eso no es porque haya nada mgico ni ningn fallo, es por lo que te coment antes: slo existe un objeto en la memoria y las dos variables acceden al mismo objeto, por tanto, cualquier cambio efectuado en ellas, se reflejar en ambas variables por la sencilla razn de que slo hay un objeto en memoria. A este tipo de variables se las llama variables por referencia, ya que hacen referencia o apuntan a un objeto que est en la memoria. A las variables que antes hemos estado viendo se las llama variables por valor, ya que cada una de esas variables tiene asociado un valor que es independiente de los dems.Como puedes comprobar, al cambiar en una de las variables el contenido de la propiedad Nombre, ese cambio afecta a las dos variables, pero eso no es porque haya nada mgico ni ningn fallo, es por lo que te coment antes: slo existe un objeto en la memoria y las dos variables acceden al mismo objeto, por tanto, cualquier cambio efectuado en ellas, se reflejar en ambas variables por la sencilla razn de que slo hay un objeto en memoria. A este tipo de variables se las llama variables por referencia, ya que hacen referencia o apuntan a un objeto que est en la memoria. A las variables que antes hemos estado viendo se las llama variables por valor, ya que cada una de esas variables tiene asociado un valor que es independiente de los dems.

34

LAS ESTRUCTURASLas estructuras o tipos definidos por el usuario, son un tipo especial de datos que veremos en otra ocasin con ms detalle, pero que se comportan casi como las clases, permitiendo tener mtodos, propiedades, etc., la diferencia principal entre las clases y las estructuras es que stas ltimas son tipos por valor, mientras que las clases son tipos por referencia. Las estructuras, al igual que las clases, las podemos declarar a nivel de espacios de nombres y tambin dentro de otras estructuras e incluso dentro de clases y mdulos.

LOS NOMBRE DE ESPACIOSQu es un Namespace?Un Namespace es una forma de agrupar clases (tipos) que estn relacionadas de alguna forma. El uso de los espacios de nombres nos permitir tener nuestros ensamblados agrupados segn la tarea para la que los hemos programado. De esta forma, si escribimos ensamblados que accedern al disco, los podemos agrupar para tenerlos en sitio diferente a los que, por ejemplo, accedan a una base de datos. Eso mismo es lo que se hace en las clases base de .NET Framework y por esa razn existen los espacios de nombres System.IO y System.Data, por poner slo dos. Cada vez que creamos un proyecto con Visual Studio .NET de forma automtica se crea un espacio de nombres para nuestra aplicacin. Por tanto todos los tipos (clases, estructuras, enumeraciones, etc.) que definamos en dicho proyecto estarn incluidos dentro de ese espacio de nombres. Aunque el editor de Visual Studio no nos muestra que todo esto es as, ya que para crear o definir un espacio de nombres debemos usar la instruccin Namespace y marcar el final de dicha definicin usando End Namespace, por tanto es como si el IDE aadiera esas instrucciones por nosotros. Por tanto es importante saber que, aunque no lo veamos, todos nuestros proyectos estarn dentro de un espacio de nombres. Dicho Namespace se llamar de la misma forma que nuestro proyecto, salvo si tiene espacios, en ese caso se cambiarn los espacios (o caracteres no vlidos en un nombre de .NET) por un guin bajo. El Visual Studio define el espacio de nombres "predeterminado" de nuestro proyecto en las propiedades del proyecto. As que si quieres cambiar el Namespace predeterminado del proyecto, puedes hacerlo modificando dicho valor. Para poder hacer esto, muestra las propiedades del proyecto: Selecciona el proyecto en el explorador de soluciones (Solution Explorer) En el men Proyecto (Project), selecciona Propiedades (Properties) En la ficha General (que ser la que se muestre por defecto), el espacio de nombres estar en: Espacio de nombres de la raz (Root namespace) tal como podemos ver en la figura 1.

35

Figura 1: El espacio de nombres predeterminado de un proyecto de VB .NET

Qu finalidad tiene el uso de los Namespace? El escribir nuestro cdigo dentro de un bloque Namespace tiene por finalidad, el poder mantener una especie de jerarqua. Para que nos entendamos mejor, podramos comparar los espacios de nombres con los directorios de un disco. En cada directorio tendremos ficheros que de alguna forma estn relacionados, de esta forma no mezclaremos los ficheros de msica con los de imgenes ni con los proyectos de Visual Basic, por poner algunos ejemplos. Pues lo mismo ocurre con las jerarquas creadas con los Namespace, de forma que podamos tener de alguna forma separados unos tipos de datos (clases, etc.) de otros. Anidar espacios de nombres: Espacios de nombres dentro de otros espacios de nombres Siguiendo con el ejemplo de los directorios, es habitual que dentro de un directorio podamos tener otros directorios, de forma que tengamos ficheros que estando relacionados con el directorio principal no queremos que se mezclen con el resto de ficheros. Pues con los Namespace ocurre lo mismo, podemos declarar bloques Namespace dentro de otro bloque existente. Esto se consigue definiendo un bloque dentro de otro bloque. Por ejemplo:Namespace Visual Basic Namespace Entrega5 Module Module1 Sub Main() End Sub

36

End Module End Namespace End Namespace

En este cdigo, tenemos dos espacios de nombres anidados, el espacio de nombres Entrega5 est dentro del espacio de nombres Visual Basic. Cmo acceder a los tipos declarados dentro de un Namespace? De igual forma que para acceder a los ficheros de un directorio debemos indicar el "path" en el que se encuentran, con los espacios de nombres ocurre lo mismo, existen formas abreviadas de realizar ese acceso. Por ejemplo, si queremos usar la clase StringBuilder que se encuentra declarada en el espacio de nombres System.Text, tendremos que indicar el espacio de nombres en el que se encuentra:Dim sb As New System.Text.StringBuilder()

Es decir, debemos indicar el "path" completo de la clase, para poder acceder a ella. En teora si declaramos un mtodo dentro del mdulo Module1, (mostrado en el cdigo anterior), deberamos llamar a dicho mtodo usando el espacio de nombres completo, pero cuando estamos dentro de un espacio de nombres, no hace falta indicar el nombre completo, ocurre lo mismo que cuando estamos dentro de en un directorio, no tenemos que indicar el path completo para acceder a un fichero de ese mismo directorio, pero si queremos tambin podemos hacerlo, tal como se muestra en el siguiente cdigo:Namespace Visual Basic Namespace Entrega5 Module Module1 Sub Main() VisualBasic.Entrega5.Module1.Ejemplo() End Sub Public Sub Ejemplo() Console.WriteLine("Saludos desde el Sub Ejemplo") End Sub End Module End Namespace End Namespace

Por tanto, para acceder a los miembros declarados dentro de un espacio de nombres, debemos usar la sintaxis: Espacio_de_nombres Punto Nombre_de_la_clase Punto Nombre_Del_Mtodo Si dicha clase est dentro de un espacio de nombres anidado, tambin debemos indicar dicho espacio de nombres. Ya que incluso para acceder a las propias clases de .NET usamos esta forma sintaxis, tal como se mostr antes para declarar la variable del tipo StringBuilder. En dicha declaracin vimos que haba dos espacios de nombres: System y dentro de ste est el espacio de nombres Text, el cual contiene la definicin de la clase StringBuilder. Es decir, siempre debemos indicar los espacios de nombres en los que se encuentran las clases, salvo que la clase (o tipo) est definido en el mismo espacio de nombres desde el que se va a usar. Aunque existen ciertas formas de hacer que esto no siempre tenga que ser as, ya que el cdigo se puede convertir en algo ms engorroso de leer si siempre tenemos que indicar los espacios de nombres que contienen las clases. Ejemplos de cmo usar los Namespace

37

En el ejemplo que vamos a usar, es de la pagina web de www.elguille.info, ya que lo ms interesante y mas entendible para ustedes, vamos a definir dos espacios de nombres y en cada uno de ellos declararemos algunas una clase, con idea de que veamos cmo usarlos desde cada uno de esos espacios de nombres. El cdigo sera el siguiente: Namespace Entrega16 Module Module1 Sub Main() declarar una clase del espacio de nombres ClaseUno Dim c1 As New ClasesUno.PruebaA("Pepe", "Ruiz") declarar una clase del espacio de nombres ClaseDos Dim c2 As New ClasesDos.PruebaB("Maria", "Snchez") Console.WriteLine("c1 = {0}", c1) Console.WriteLine("c2 = {0}", c2) Console.ReadLine() End Sub End Module End Namespace Namespace ClasesUno Public Class PruebaA Private _nombre As String Private _apellidos As String Public Sub New() End Sub Public Sub New(ByVal nombre As String, ByVal apellidos As String) Me.Nombre = nombre Me.Apellidos = apellidos End Sub Public Property Nombre() As String Get Return _nombre End Get Set(ByVal value As String) _nombre = value End Set End Property Public Property Apellidos() As String Get Return _apellidos End Get Set(ByVal value As String) _apellidos = value End Set End Property Public Overrides Function ToString() As String Return Apellidos & ", " & Nombre End Function End Class End Namespace

38

Namespace ClasesDos Public Class PruebaB Inherits ClasesUno.PruebaA Public Sub New() End Sub Public Sub New(ByVal nombre As String, ByVal apellidos As String) Me.Nombre = nombre Me.Apellidos = apellidos End Sub End Class End Namespace

Es este cdigo tenemos tres espacios de nombres: Entrega16 que es donde est declarado el mdulo que se usar para iniciar la aplicacin.

ClasesUno en el que se define la clase PruebaA ClasesDos en el que se define la clase PruebaB, la cual simplemente hereda (o se basa en) la clase definida en ClasesUno.

Para poder acceder a las clases desde Main, tenemos que indicar en qu espacio de nombres est cada una de las clases, esto es as porque el mdulo que contiene el mtodo Main est declarado dentro de un espacio de nombres diferente. Lo mismo ocurre con la instruccin Inherits ClasesUno.PruebaA de la clase PruebaB, ya que cada una de las clases est dentro de un espacio de nombres distinto y si no indicamos expresamente ese espacio de nombres, el compilador no sabr donde localizar la clase PruebaA. Por supuesto, si hacemos una importacin del espacio de nombres ClasesUno, podramos acceder a la clase ClaseA sin necesidad de indicar el espacio de nombres que la contiene.Algunas cosas que debes saber sobre los Namespace "automticos" y los definidos por ti

Para ir finalizando esta entrega quiero decirte que si quitas el espacio de nombres predeterminado que utiliza el Visual Studio y aades al cdigo tus propios espacios de nombres, debo decirte que hay dos cosas que debes tener en cuenta: La primera es que seguramente al ejecutar la aplicacin, el VS no encuentre la clase que usar como punto de inicio, debido a que ahora est en otro espacio de nombres distinto, por tanto tendrs que mostrar las propiedades del proyecto (ver figura 1) e indicar en Objeto inicial el mdulo o clase que se usar o bien, en el caso de las aplicaciones de consola, indicar Sub Main. La segunda, y ms importante, es que ya no existir un espacio de nombres que "contenga" tus clases (o tipos), por tanto, si en un fichero indicas tu propio espacio de nombres, en el resto de ficheros tambin debes indicar ese mismo espacio de nombres, al menos si tu intencin es que estn todas las declaraciones dentro del mismo "directorio". Todo esto viene al caso porque en un mismo proyecto podemos definir varios espacios de nombres y si no somos precisos con la

39

ubicacin de cada tipo que tenemos en el proyecto, puede que el compilador se queje y nos diga que no encuentra tal o cual clase (o tipo). Tambin debes saber que si nuestro proyecto usa libreras creadas por nosotros, pero que simplemente las tenemos referenciadas, (es decir, podemos usar otras DLLs creadas por nosotros y ya compiladas), esos otros ensamblados (assemblies) pueden tener tambin un espacio de nombres que se llame igual que el que tenemos en nuestro proyecto, en ese caso no ser necesario indicar el espacio de nombres de la otra librera, ya que podemos tener un mismo espacio de nombres "repartido" por varios ensamblados. Esto es muy til si queremos definir una serie de clases, enumeraciones, etc., en un proyecto, crear un ensamblado DLL a partir de ese proyecto y posteriormente usarlo en otro proyecto diferente, pero sin cambiar el espacio de nombres en el que tenemos definidos todos los tipos. Con la ventaja adicional de que esa DLL la podemos usar en proyectos de otros lenguajes de .NET, por tanto podemos crear con VB una librera de clases y usarla desde C#.

40

APLICACN DE VENTANASEl IDE de Visual Basic 2005, ya lo conocen, por lo tanto ya no les voy a ensear, les enseare las nuevas ventanas con que se tienen que familiarizar de hoy en adelante.

Crear Nuevo ProyectoComo ustedes ya saben hay dos formas de crear un nuevo proyecto, lo nico que veremos, lo que tenemos que escoger, al crear un proyecto esta vez seleccionaremos WindowsApplication!, le pondremos un nombre y luego daremos clic en aceptar.

Como recordatorio, tengan en cuenta que nuestro proyecto siempre se llamara el nombre y el nmero de nuestro ejercicio, por ejemplo, si vamos a hacer el ejercicio 61, nuestro proyecto se llamara Ejercicio61.

41

El IDE de WindowsApplicationA comparacin de las consolas de aplicacin tenemos un nuevo IDE, en este IDE cada vez que creamos un nuevo Item, se abrir una nueva ventana, esto ya lo veremos en la aplicacin que realizaremos ms adelante.

Ventana de Diseo

Al crear una nueva solucin de WindowsApplication, siempre nos aparecer la siguiente ventana.

Como se darn cuenta el archivo siempre tendr un nombre de Form1, que es el primer formulario del proyecto. Qu es un Formulario? Es la ventana principal, porque sirve de fondo para los controles que se dibujan en una aplicacin, como cajas de textos, etiquetas, botones, etc. se podra decir que es un contenedor de controles y objetos.

42

Ventana de CdigoEsta ventana contendr todo el cdigo que realizara los diferentes eventos, procedimientos, instrucciones del formulario.

Mayormente para activar esta ventana y aadir cualquier cdigo, siempre se tendr que hacer doble clic en el control deseado.

Caja de HerramientasContiene los controles que se dibujan en el formulario, en tiempo de diseo y no en tiempo de ejecucin.

Estos controles estn divididos por clases, los controles ms usados son los de CommonControls, mas adelante ya veremos con ms detalle cada control.

43

Explorador de SolucionesEn esta ventana se encuentra el formulario, tambin vas a poder encontrar todos los Item que agregas de aqu en adelante, ya sean formularios, mdulos, clases, etc.

Botn

Funcin Este botn nos permitir visualizar las propiedades de la solucin, proyecto, formulario, etc., todos lo Item que se encuentran en esta ventana. Nos permitir actualizar los tems de la solucin Al dar clic en este botn nos mostrara todos los tems de la solucin, ya sean Referencias, XML, formulario, etc. Nos mostrar el cdigo del Item seleccionado, puede ser formulario, mdulo, clase, etc. Este botn nos permitir visualizar la ventana de diseo del formulario o de cualquier Item seleccionado.

44

Para agregar un nuevo Item nos ubicaremos en el nombre de la solucin y luego daremos clic derecho y seleccionaremos Add y despus New Item.

Despus de dar clic en New Item nos aparecer la siguiente ventana en donde seleccionaremos el Item que queramos aadir, como ustedes lo ven en la figura de abajo, una vez seleccionado el Item daremos clic en add (Aadir).

45

Explorador de Base de DatosEn esta ventana veremos todas las bases de datos creadas y cada una con su conexin a ella respectivamente.

Ms adelante ya veremos con detalle esta ventana.

Base de Datos

Desde esta ventana podremos crear una base de datos nueva.

46

Ventana de PropiedadesEsta ventana nos mostrara todas las propiedades del Item seleccionado, puede ser de un formulario, mdulo, control, etc.

Ventana de ErroresEsta ventana nos mostrara todos los errores que ocurran en tiempo de ejecucin del programa.

47

Barra de Herramientas

Esta barra contendr diversos botones que suelen facilitar al programador en el uso del programa, al principio ya vimos que botones usbamos en las consolas de aplicaciones.

Botn

Funcin Este botn ejecutara el proyecto, tambin se puede ejecutar el proyecto presionando la tecla F5 Este botn mostrar la ventana de Lista de Errores Este botn nos mostrara una ventana en donde podremos hallar ya sean los mtodos, eventos de un control seleccionado, tambin podremos ver esa ventana presionando la tecla F2. Este botn realiza una pausa a la ejecucin del proyecto. Al dar clic en este botn, podremos visualizar la ventana de propiedades del tem seleccionado. Cuando queramos convertir varias lneas en comentario, primero seleccionaremos el cdigo y luego daremos clic en este botn. Y cuando queramos ya no tener como comentario un cdigo, solo tendremos que dar clic en este botn. Nos mostrara la ventana de Explorador de Soluciones Detendr la aplicacin Nos mostrara la Caja de Herramientas

1

Formularios (Forms)IntroduccinEs una ventana muy importante porque aqu se dibujan o pegan todos los controles que necesitamos utilizar en nuestro programa o aplicacin. Se pueden utilizar tantos formularios como se necesiten, y dependiendo de la utilidad que se les d, estos sern de diferentes tipos. As, se puede crear un formulario que contenga un grfico, para visualizar informacin o para ingresar datos.

Para dejar un poco ms en claro, un formulario es una ventana tpica de Windows. Estos estn contenidos en forma automtica en el escritorio de Windows o en su defecto dentro de otros formularios a los que llamaremos formularios MDI (Mltiple Document Interface Interfaz de Mltiples Documentos).

Toda ventana es a su vez una interfaz grfica de usuario la que permite interactuar a un usuario no muy experimentado de una manera muy simple con ella. Cada una de estas interfaces puede tener una gran funcionalidad inherente la que se concentra en la misma ventana o en determinados controles que estn inmersos en ella.

Como todo objeto, un formulario posee propiedades y mtodos, as como a su vez soporta eventos que veremos a continuacin.

TiposHay cuatro tipos de formularios, que son los ms usados, como son: El formulario MDI, que es un contenedor de otros formularios, por ejemplo tenemos las ventanas de Word que es un formulario MDI, ya que contiene o puede contener diversas ventanas de documentos abiertos. Los formularios Child, que son aquellos formularios hijos, en otras palabras son todos aquellos formularios que van a ser contenidos en el formulario MDI. El formulario normal, que el que ms vamos a usar, y el ms comn.

2

El formulario Parents, que es aquel formulario que va a contener todos los controles de otro formulario, por ejemplo, si tenemos un formulario llamado frmPadre, que contiene un men y un botn grabar y creamos un nuevo formulario de tipo parents llamado frmHijo y le especificamos en su propiedad de parents el formulario frmPadre, automticamente el formulario frmHijo aparecer con el men y el botn grabar, bueno, eso ya lo veremos ms adelante para que les quede ms claro, as que no se preocupen.

3

PropiedadesPropiedad Descripcin Permite identificar el formulario, su prefijo de cualquier formulario es frm Si est establecido, el botn se activa cuando el usuario presiona la tecla [Enter] ([INTRO]) Descripcin que se proporciona a clientes con accesibilidad. Nombre que se proporciona a los clientes con accesibilidad. Funcin que se proporciona a clientes con accesibilidad. Determina si el control recibe notificaciones de arrastrar y colocar. Determina cuando el formulario o el control, cuando la escala de la resolucin de la pantalla o de la fuente de letra a cambiado. Determina si aparecen automticamente las barras de desplazamiento cuando los controles estn situados fuera del rea de clientes del formulario. Establece el margen alrededor del control durante el AutoScroll. Tamao lgico mnimo para la zona de desplazamiento automtico. Establece si el formulario se adecua al tamao especificado de los controles. Especifica el modo del tamao del formulario Color de fondo a utilizar para mostrar texto o grficos en el control. Imagen de fondo utilizada para el formulario. Especifica cmo se presentara la imagen de fondo del formulario, puede ser en mosaico, estirado, centrada. Si est establecido, el botn se activa cuando el usuario presiona la tecla ESC Indica si este control causa y genera eventos de validacin. Indica el men contextual que se muestra cuando el usuario hace clic derecho. Determina si el formulario tiene un cuadro de men control el que se encuentra en la esquina superior derecha de la ventana. Indica el tipo de cursor que aparece al pasar el Mouse por el control Indica si el control est habilitado Indica la fuente utilizada para mostrar texto en el control. Indica el color de primer plano utilizado para mostrar texto o grficos en el control.

(Name) AccepButton AccesibleDescription AccesibleName AccesibleRole AllowDrop AutoScaleMode

AutoScroll AutoScrollMargin AutoScrollMinSize AutoSize AutoSizeMode BackColor BackGroundImage BackGroundImageLayout CancelButton CausesValidation ContextMenuStrip ControlBox Cursor Enabled Font ForeColor

4

FormBorderStyle HelpButton

Icon

ImeMode IsMDIContainer KeyPreview Language Localizable Location Locked MainMenuStrip MaximizeBox MaximunSize MinimizeBox MinimunSiza Opacity Padding RightToLeft ShowIcon ShowInTaskBar Size SizeGripStyle StarPosition Tag Text

Controla la apariencia del borde del formulario. Esto tambin influye en cmo se muestra la barra de titulo y que botones pueden aparecer en ella. Determina si un formulario tiene botn de ayuda en la barra de titulo. Indica el icono para un formulario. Esto se muestra en el cuadro de men del formulario del sistema y cuando el formulario se minimiza, Width: Ancho, Height: Altura. Determina el estado IME (Editor de Mtodos de Entrada) del objeto cuando se selecciona. Determina si el formulario es un contenedor MDI. Determina si los eventos de teclado para los controles del formulario se registran junto con el formulario. Indica el idioma traducido actualmente. Determina si se va a generar el cdigo localizable para este objeto. Posicin de la esquina superior izquierda del control, respecto al contenedor. Determina si se puede mover o cambiar de tamao el control. Indica el men principal del formulario. Debe establecerse en un componente de tipo MainMenuStrip. formulario contendr el botn de Determina si el maximizar. Indica el tamao mximo de la ventana al maximizar. Determina si el formulario contendr el botn de minimizar. Indica el tamao mnimo de la ventana al minimizar. Determina la opacidad o transparencia del formulario; 0% es transparente, 100% es opaco (visible) Indica el espacio entre los controles que va a contener el formulario. Indica si el control debe dibujarse de derecha a izquierda para idiomas que se escriben en esa direccin. Determina si se muestra el icono del formulario en la barra de titulo. Determina si el formulario aparece en la barra de tareas de Windows. Determina el tamao del formulario o control en pxeles. Determina cuando se muestra SizeGrip en un formulario. Determina la posicin del formulario cuando aparece por primera. Datos definidos por el usuario asociado con el control. Muestra el texto contenido en el formulario en la barra de titulo.

5

TopMost TransparencyKey UseWaitCursor WindowsState

Determina si el formulario esta sobre todos los dems formularios que no son de nivel superior, incluso cuando esta desactivado. Indica el color que parece transparente cuando se aplica al formulario. Indica si se muestra un cursor de espera. Determina el estado visual inicial del formulario, puede ser minimizado, maximizado o normal.

MtodosVamos a tocar los mtodos mas utilizados, ya que existen un sin fin de mtodos.

Mtodo Activate Close CreateControl CreateGraphics Dispose FindForm Finalize Focus GetType Hide Invalidate LayoutMdi Refresh RemoveOwnedForm ResetText Select Show ShowDialog Update Validate

Descripcin Activa el formulario y le otorga el foco Cierra el formulario Obliga a que se cree el control, incluidos el identificador y los controles secundarios. Crea el objeto Graphics para el control Sobrecargado. Libera los recursos utilizados por componentes. Recupera el formulario en el que se encuentra el control. Libera todos los recursos del formulario y del sistema. Establece el foco de entrada al control. Obtiene el objeto Type de la instancia actual. Oculta el formulario o control al usuario. Sobrecargado, Invalida una regin especfica del control y hace que se envi un mensaje de dibujo al control. Organiza los formularios MDI secundarios del formulario MDI principal. Obliga al control invalidar su rea cliente y acto seguido obliga a que vuelva a dibujarse el control y sus controles secundarios. Quita un formulario con propietario de este formulario. Restablece el valor predeterminado de la propiedad Text. Sobrecargado, activa un control. Muestra el control o formulario al usuario. Sobrecargado. Muestra el formulario como un cuadro de dialogo modal. Hace que el control vuelva a dibujar las regiones no validas en su rea de cliente. Valida el ltimo control no validado y sus predecesores, pero sin incluir el control actual.

6

EventosVamos a tocar los eventos ms utilizados, ya que existen una cierta cantidad considerables de eventos.

Evento

Descripcin Se produce cuando el formular