Documentos de Académico
Documentos de Profesional
Documentos de Cultura
- 35 -
End Sub
End Module
10 Tablas de Verdad
Module Module1
Dim p As Integer
Dim q As Integer
Sub Main()
Console.WriteLine(" p q
And Or Xor Not p")
For p = 0 To 1
For q = 0 To 1
Console.WriteLine(" {0} {1} {2}
Next
Next
Console.ReadLine()
End Sub
End Module
{3} {4}
Module Module1
Sub Main()
Dim Valor As Integer
Dim Contador As Integer
Console.Write("Introducir un nmero")
Valor = Console.ReadLine()
Console.WriteLine("Mostrar en consola todos los nmeros desde 1 hasta el
introducido ")
While Contador < Valor
Console.Write("-" & Contador)
Contador += 1
End While
Console.ReadLine()
- 36 -
End Sub
End Module
12 Aplicacin de do while
Option Strict On
Module Module1
Sub Main()
Dim i As Integer = 5
Do While i > 0
Console.WriteLine(i)
i -= 1
Loop
Console.Read()
End Sub
End Module
13 For Each...Next
Se trata de una variante de la estructura For...Next, y su misin consiste en ejecutar un
bloque de cdigo por cada uno de los elementos existentes en un array o coleccin.
Module Module1
Sub Main()
' crear un array y rellenarlo con valores
Dim lsColores() As String = {"Azul", "Verde", "Marino", "Violeta"}
Dim lsColor As String
' en cada iteracin se obtiene un elemento
' del array lsColores, y se guarda en la variable lsColor
For Each lsColor In lsColores
Console.WriteLine(lsColor)
Next
Console.ReadLine()
End Sub
End Module
1 - Funciones para el tratamiento de cadenas
A continuacin las mas importantes de ellas.
1.1 - Funcin Lcase y Ucase
La funcin Lcase cambia o convierte una cadena de texto a minscula
La funcin Ucase convierte el contenido de una cadena a maysculas.
Module Module1
- 37 -
Sub Main()
Dim cadena As String
Console.Write("Ingrese una cadena ")
cadena = Console.ReadLine
Console.WriteLine("Cadena en Mayusculas {0} ", UCase(cadena))
Console.WriteLine("Cadena en Minusculas {0} ", LCase(cadena))
Console.ReadLine()
End Sub
End Module
1.2 - Funcin Trim, LTrim y RTrim
Estas tres funciones se utilizan para eliminar los espacios vacos de una cadena.
LTrim elimina los espacios vacos de la parte izquierda de la cadena, RTrim de la parte
derecha y Trim de ambas partes.
1.3 - Funcin Len
La funcin Len nos permite conocer la cantidad de caracteres que tiene una
determinada cadena. O sea que esta funcin nos devuelve un nmero.
Module Module1
Sub Main()
Dim cadena As String
cadena = " HOLA PERU "
Console.WriteLine("Cadena en original {0} len {1}", cadena, Len(cadena))
Console.WriteLine(" LTrim(cadena) {0} len {1} ", LTrim(cadena),
Len(LTrim(cadena)))
Console.WriteLine(" RTrim(cadena) {0} len {1}", RTrim(cadena),
Len(RTrim(cadena)))
Console.WriteLine(" Trim(cadena) {0} len {1}", Trim(cadena), Len(Trim(cadena)))
Console.ReadLine()
End Sub
End Module
1.4 - Funcin Asc y Chr
La funcin Asc nos permite obtener el cdigo ASCII de un de terminado caracter.
La Funcin Chr acta a la inversa de la funcin Asc, esto quiere decir, que a partir de
un determinado nmero nos devolver el caracter ASCII.
Module Module1
Dim letra As Char
Dim num As Integer
Sub Main()
- 38 -
Module Module1
Dim posicion As Integer
Sub Main()
posicion = InStr(3, " El perro salta {0}", "salta")
Console.WriteLine("posicion de la subcadena {0}", posicion)
Console.ReadLine()
End Sub
Funcin Left, Right y Mid
Estas funciones son utilizadas para extraer partes de una cadena.
La funcin Left: tiene 2 parmetros: El primero es la cadena de la cual se extraern
caracteres, y el segundo un nmero desde el cual comenzar a extraer caracteres desde
la parte izquierda.
Funcin Right: Es igual que la funcin Left pero comienza a extraer caracteres desde
el lado derecho de la cadena.
La funcin Mid: Tiene la misma funcin que las anteriores pero posee tres
parmetros.
Su sintaxis es: Mid (cadena, inicio, longitud)
- 39 -
Module Module1
Dim posicion As Integer
Sub Main()
Dim Cadena As String = "INGENIERIA INDUSTRIAL"
Console.WriteLine(" cadena original {0} :", Cadena)
Console.WriteLine(" 5 caracteres a la izqueirda {0} :", Left(Cadena, 5))
Console.WriteLine(" 5 caracteres a la derecha {0} :", Right(Cadena, 5))
Console.WriteLine(" mid( cadena, 5,4 ) {0} :", Mid(Cadena, 5, 4))
Console.ReadLine()
End Sub
End Module
1.6 - Funcin Str y Val
La funcin Val convierte una cadena en un nmero y la funcin Str un nmero en una
cadena.
Module Module1
Dim cadena As String
Dim cadena2 As String
Sub Main()
cadena = "123456"
Cadena = Val(Cadena)
cadena2 = 123456
cadena2 = Str(cadena2)
Console.ReadLine()
End Sub
End Module
Module Module1
Sub Main()
Dim pi As Single = 3.1416
Console.WriteLine("round (3.1416 2 ={0} ", Math.Round(pi, 2))
- 40 -
Funciones matemticas
Las principales funciones matemticas provistas por Visual Basic son:
Abs: Devuelve el valor absoluto de una expresin numrica.
Atn: Devuelve el arco tangente de un nmero.
Cos: Devuelve el coseno de un ngulo.
Exp: Devuelve el nmero "e" elevado a una potencia.
Log: Devuelve el logaritmo natural de un nmero.
Sgn: Devuelve un valor indicando el signo de un nmero.
Sin: Devuelve el seno de un ngulo.
Sqr: Devuelve la raz cuadrada de un nmero.
Tan: Devuelve la tangente de un ngulo.
Ejemplo de funciones matematicas
Calcule la raiz cuadrada cubica de los primeros 10 nmeros
Module Module1
Dim x As Single
Sub Main()
Console.WriteLine(" Nro Raiz cuadrada raiz cubica ")
For x = 1 To 10
REM Console.WriteLine(Format("##.##", x))
Console.WriteLine("
{0}
{1}
{2}", Format(x,
"0#"), Format(Math.Sqrt(x), "#0.00"), Format(x ^ 0.333, "#0.0000"))
Next
Console.ReadLine()
End Sub
End Module
- 41 -
3 - Funciones de formato
Visual Basic posee varias funciones para darle formato a distintos tipos de datos e
informacin. A continuacin se ve algunos ejemplos de las principales funciones:
FormatCurrency: Esta funcin se utiliza para trabajar con nmeros con formato
en dinero. Ejemplo: si tenemos un nmero 3 y utilizamos la funcin nos
devolvera "$3".
FormatPercent: Esta funcin es utilizada para trabajar con porcentajes. Ejemplo
: si tendramos un nmero 321, nos devolvera: "32,1%" .
FormatDateTime: Esta funcin trabaja con fechas y horas.
FormatNumber: Formatea expresiones nmeros
Module Module1
Dim resultado As Object
Sub Main()
resultado = FormatPercent(321) 'devuelve: "32.100,00%"
Console.WriteLine("fomato % {0} ", resultado)
resultado = FormatCurrency(3) 'devuelve: "$3,00"
Console.WriteLine("fomato Currency {0} ", resultado)
resultado = FormatDateTime("6-8-1978") 'La funcin devolvera: "06/08/1978"
Console.WriteLine("fomato fecha {0} ", resultado)
resultado = FormatCurrency(325, 3) 'Devuelve: "$325,000"
Console.WriteLine("fomato currency {0} ", resultado)
Console.ReadLine()
End Sub
End Module
NumDigitsAfterDecimal: Parmetro de tipo opcional. Este indicar cuantos nmeros
decimales devolver la funcin:
Ejemplo de la funcin FormatDateTime
- 42 -
- 43 -
Module Module1
Dim resultado As Object
Sub Main()
Dim cadena As String
cadena = Format("06/08/78", "General Date") ' Devuelve: "06/08/1978"
Console.WriteLine(cadena)
cadena = Format("19/08/79", "Long Date") ' Devuelve : "Jueves 19 de Agosto de 1979".
Console.WriteLine(cadena)
cadena = Format("19/8/79", "Medium Date") ' Devuelve: "19-Ago-1979"
Console.WriteLine(cadena)
cadena = Format("17:08", "Short Time") ' "05:08"
Console.WriteLine(cadena)
cadena = Format("17:08", "Medium Time") ' "05:08 PM"
Console.WriteLine(cadena)
cadena = Format("17:08", "Long Time") ' "05:08:00 PM"
Console.WriteLine(cadena)
Console.ReadLine()
End Sub
End Module
FUNCIONES DE FECHA Y HORA
Now, regresa un valor codificado que representa la hora y fecha actual del
sistema.
- 44 -
Module Module1
Sub Main()
Console.WriteLine(" Timestring {0} ", TimeString)
Console.WriteLine(" DateSring {0} ", DateString)
Console.WriteLine(" DateSring {0} ", DateString)
Console.WriteLine(" Now {0} ", Now)
Console.WriteLine(" Hour(Now) {0} ", Hour(Now))
Console.WriteLine(" Minute(Now) {0} ", Minute(Now))
Console.WriteLine(" Second(Now) {0} ", Second(Now))
Console.WriteLine(" day text {0} ", Microsoft.VisualBasic.DateAndTime.Day(Now))
Console.WriteLine(" Month(Now) {0} ", Month(Now))
Console.WriteLine(" Year(Now) {0} ", Year(Now))
Console.WriteLine(" weekday(Now) {0} ", Weekday(Now))
Console.ReadLine()
End Sub
End Module
ARREGLOS
1-Inicializar un arreglo y luego mostrarlo
Module Module1
Dim n As Integer = 2
Dim i As Integer
Dim nombres() As String = {"Pepe", "Juan", "Luisa"}
Sub Main()
Console.WriteLine(" los nombres son ")
For i = 0 To n
Console.Write(" {0}", nombres(i))
Next
Console.ReadLine()
End Sub
End Module
1. Arreglo de dos dimensiones
Module Module1
Dim nombres(,) As String = {{"Juan", "Pepe", "Carlos"}, {"Ana", "Eva", "Maria"}}
Dim fila As Integer
Dim col As Integer
Sub Main()
- 45 -
- 46 -
b) Con funciones
Module Module1
Sub ingresar(ByRef a() As Single, ByRef n As Integer)
Dim i As Integer
Dim nro As Single
Console.Write(" ingrese cantidad de numeros ")
n = Console.ReadLine()
Console.WriteLine(" ingrese {0} numeros ", n)
For i = 1 To n
nro = Console.ReadLine()
a(i) = nro
Next
End Sub
Sub mostrar(ByVal a() As Single, ByVal n As Integer)
Dim i As Integer
For i = 1 To n
Console.Write(" {0} ", a(i))
Next
End Sub
Sub Main()
Dim Vector(10) As Single
Dim i As Integer
Dim n As Integer = 0
ingresar(Vector, n)
Console.WriteLine(" los numeros ingresados son ")
mostrar(Vector, n)
Console.ReadLine()
End Sub
End Module
3. Modificacin de tamao en arreglos
ReDim no toma el array existente y modifica su nmero de elementos, sino que
internamente crea un nuevo array con el nmero de elementos indicado, por lo que se
pierden los valores del array previo.
Para solucionar este inconveniente, debemos utilizar junto a ReDim, la palabra clave
Preserve.
Module Module1
Dim i As Integer
Sub Main()
' array con 4 elementos: de 0 a 3
Dim Nombres(3) As String
' asignar valores al array
Nombres(0) = "Ana"
- 47 -
Nombres(1) = "Pedro"
Nombres(2) = "Antonio"
Nombres(3) = "Laura"
' ampliamos el array con 6 elementos: de 0 a 5
ReDim Preserve Nombres(5)
For i = 1 To 5
Console.Write(" {0} ", Nombres(i))
Next
Console.ReadLine()
End Sub
End Module
5 Ingrese los vrtices del un tringulo, muestre los puntos ingresados y el centro
Module Module1
Dim x1 As Integer, y1 As Integer
Dim x2 As Integer, y2 As Integer
Dim x3 As Integer, y3 As Integer
Dim xmed As Integer, ymed As Integer
Sub Main()
Console.Write("Ingrese Coordenada x1 y1 ")
x1 = Console.ReadLine()
y1 = Console.ReadLine()
Console.Write("Ingrese Coordenada x2 y2 ")
x2 = Console.ReadLine()
y2 = Console.ReadLine()
Console.Write("Ingrese Coordenada x3 y3 ")
x3 = Console.ReadLine()
y3 = Console.ReadLine()
xmed = (x1 + x2 + x3) / 3
ymed = (y1 + y2 + y3) / 3
Console.BackgroundColor = ConsoleColor.Yellow
Console.ForegroundColor = ConsoleColor.Blue
Console.CursorLeft = x1
Console.CursorTop = y1
Console.Write("*")
Console.CursorLeft = x2
Console.CursorTop = y2
Console.Write("*")
Console.CursorLeft = x3
Console.CursorTop = y3
Console.Write("*")
Console.BackgroundColor = ConsoleColor.Green
Console.ForegroundColor = ConsoleColor.Red
Console.CursorLeft = xmed
Console.CursorTop = ymed
Console.Write("*")
Console.ReadLine()
End Sub
End Module
ARCHIVOS
- 48 -
1. Escritura de un archivo
Imports System.IO
Module Module1
Sub Main()
Dim swEscritor As StreamWriter
' creamos un stream de escritura, y al mismo tiempo un
' nuevo archivo para escribir texto sobre l
swEscritor = New StreamWriter("C:\MISDATOS\NOTAS.txt")
' escribir lneas
swEscritor.WriteLine("esta es la primera lnea")
swEscritor.WriteLine("segunda lnea de texto")
' ahora escribimos texto pero sin provocar un salto de lnea
swEscritor.Write("Juan y Luna ")
swEscritor.Write("van de paseo")
swEscritor.Write(swEscritor.NewLine) ' esto introduce el salto de
lnea
swEscritor.WriteLine("con esta lnea cerramos")
' cerrar el stream y el archivo asociado
swEscritor.Close()
End Sub
End Module
2 Lectura de un Archivo
Imports System.IO
Module Module1
Sub main()
' leer lnea a lnea mediante un bucle
Dim srLector As StreamReader = New
StreamReader("C:\MISDATOS\NOTAS.txt")
Dim Linea As String
Dim ContadorLin As Integer = 1
Console.WriteLine("lectura de archivos")
LInea = srLector.ReadLine()
Do While Not (Linea Is Nothing)
Console.WriteLine("Lnea: {0} - Contenido: {1}", ContadorLin, Linea)
ContadorLin += 1
Linea = srLector.ReadLine()
Loop
Console.ReadLine()
End Sub
End Module
La funcin equal
Option Strict On
Module Module1
Sub Main()
Dim i As Integer = 8
Dim j As Integer = 10
Dim r As Boolean
r = i.Equals(j)
Console.WriteLine(r)
Console.Read()
End Sub
End Module
False
3 Gettype : indica el tipo de objeto
Minvalue : minimo valor
Maxvalue: mximo valor
Module Module1
Sub Main()
Dim i As Integer = 10
Console.WriteLine(" i es de tipo de dato {0}", i.GetType)
Console.WriteLine(" su maximo valor es {0}", i.MaxValue)
Console.WriteLine(" Su minimo valor es {0}", i.MinValue)
Console.WriteLine(" Su valor actual es {0}", i)
Console.Read()
End Sub
End Module
- 49 -
- 50 -
4 FUNCION PARSE
Convierte una cadena que representa un nmero entero a un entero
Module Module1
Sub Main()
Dim i As Integer
Dim valor As String = "31000"
i = Integer.Parse(valor)
Console.WriteLine(" opcion 1 = {0}", i)
i = i.Parse(valor)
Console.WriteLine(" opcion 2 = {0}", i)
Console.Read()
End Sub
End Module
5 ToString Convierte un numero a cadena ( los nmeros tambien pueden ser reales)
Module Module1
Sub Main()
Dim i As Integer = 45
Dim valor As String
valor = i.ToString()
Console.WriteLine(" El valor de cadena es {0}", valor)
Console.Read()
End Sub
End Module
- 51 -
Module Module1
Dim cadena As String
Dim x1 As Single
Dim y1 As Single
Dim pos As Integer
Sub Main()
Console.Write("ingrese x1,y1 ")
cadena = Console.ReadLine
pos = InStr(cadena, ",")
x1 = Mid(cadena, 1, pos - 1)
y1 = Mid(cadena, pos + 1, Len(cadena))
Console.Write(" x= {0} y ={1}", x1, y1)
Console.CursorLeft = x1
Console.CursorTop = y1
Console.Write("*")
Console.ReadLine()
End Sub
End Module
- 52 -
- 53 -
- 54 -
Para reconocer si existe esta relacin entre dos objetos, debemos realizar un anlisis
sintctico sobre la misma usando la partcula tiene un. As, por ejemplo, la frase Un
objeto Factura tiene un objeto LineaFactura devolvera verdadero.
Utilizacin
Hay situaciones en que un objeto utiliza a otro para realizar una determinada tarea, sin
que ello suponga la existencia de una relacin de pertenencia entre dichos objetos.
Reutilizacin
Un objeto bien diseado, puede ser reutilizado en otra aplicacin de modo directo o
creando una clase derivada a partir de l. Este es uno de los objetivos perseguidos por
la OOP, aprovechar en lo posible el cdigo ya escrito, ahorrando un considerable
tiempo en el desarrollo de programas.
Constructores y herencia
Mtodos constructores
El primer mtodo que es ejecutado al instanciar un objeto de la clase se denomina
constructor. Este tipo de mtodo resulta til para tareas de configuracin iniciales sobre
el objeto.
Para escribir nuestros propios constructores de clase, crearemos un mtodo con el
nombre New( ),
Al igual que ocurre en un mtodo normal, New( ) admite parmetros; esto nos sirve
para asignar valores de inicio al objeto en el momento de su instanciacin. La
denominacin para este tipo de mtodos es constructor parametrizado
Reglas de mbito especficas para clases
Las normas de mbito que ya conocemos, establecen que cuando declaramos un
miembro de clase con el modificador de mbito Public, dicho elemento ser accesible
por todo el cdigo de la clase, clases heredadas y cdigo cliente; mientras que si lo
declaramos con Private, ese miembro slo ser accesible a los miembros de la clase
Protected
Un miembro de clase declarado con este modificador, ser accesible desde el cdigo
de su propia clase y desde cualquier clase heredada.
Friend
Un miembro de clase declarado con este modificador, ser accesible por todo el cdigo
de su proyecto o ensamblado.
Protected Friend
Los miembros de clase declarados al mismo tiempo con Protected y Friend, obtendrn
una combinacin de ambos modificadores; por lo tanto, sern accesibles desde el
cdigo de su clase, clases derivadas, y por todo el cdigo que se encuentre dentro de
su ensamblado.
MyBase, acceso a los mtodos de la clase base
- 55 -
Esta palabra clave proporciona acceso a los miembros de una clase base desde su
correspondiente subclase.
Uso de Me y MyClass para llamar a los miembros de la propia clase
Cuando desde el cdigo de una clase queremos hacer referencia a un miembro de la
propia clase: campo, propiedad o mtodo, podemos utilizar las palabras clave Me y
MyClass para manipular dicho elemento
Qu es un Namespace?
Introduccin:
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.
Dnde define el IDE de Visual Studio el espacio de nombres usado en nuestro
proyecto?
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, selecciona Propiedades
- 56 -
-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.
- 57 -
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. ses, 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 CursoGuille
Namespace Entrega16
Module Module1
Sub Main()
End Sub
End Module
End Namespace
End Namespace
En este cdigo, tenemos dos espacios de nombres anidados, el espacio de nombres
Entrega16 est dentro del espacio de nombres CursoGuille.
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, aunque
como veremos (en breve, supongo) 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 CursoGuille
Namespace Entrega16
Module Module1
Sub Main()
CursoGuille.Entrega16.Module1.Prueba16()
End Sub
Public Sub Prueba16()
- 58 -
- 59 -
Un detalle que es interesante, al menos en Visual Basic .NET, es que si hacemos una
importacin de un espacio de nombres, podemos acceder no slo a las clases (tipos)
definidos en ese espacio de nombres, sino tambin a otros espacios de nombres
anidados.
Por ejemplo si queremos acceder a la clase StringBuilder que, como hemos visto, est
definida en System.Text, es decir, en el espacio de nombres Text que a su vez est
definido dentro de System, en Visual Basic podramos hacerlo as:
Dim sb As New Text.StringBuilder()
Al menos si tenemos la importacin del espacio System (que es el espacio de nombres
raz de .NET).
Para terminar con el tema de las importaciones de espacios de nombres, vamos a ver
otra forma de usar la instruccin Imports, de forma que podamos "medio" importar un
espacio de nombres.
Crear "alias" a los espacios de nombres
Un alias es una forma abreviada de usar algo. En el caso de las importaciones de
espacios de nombres, podemos crear un alias para un espacio de nombres, de forma
que en lugar de escribir todo el espacio de nombres (y subespacios) simplemente
usemos ese alias.
Por ejemplo, imagina que quieres acceder a las clases del espacio de nombres
System.IO pero no quieres realizar una importacin completa, con idea de que al
escribir dicho alias te muestre todas las clases y dems tipos relacionadas con ese
espacio de nombres. En ese caso, podramos crear un alias al espacio de nombres
System.IO de esta forma:
Imports fic = System.IO
A partir de ese momento podemos acceder a los tipos definidos en dicho espacio de
nombres usando el alias que hemos creado: fic.
Por ejemplo, si escribimos un punto despus de fic, el IDE de Visual Studio nos
mostrar las clases que podemos usar (las incluidas en ese espacio de nombres), tal
como vemos en la figura
- 60 -
Nota: Los alias tambin se pueden usar en C#, (using fic = System.IO;), en los que
puede ser incluso ms prcticos que en VB, ya que en VB, por ejemplo no
necesitaramos crear un alias a System.IO, ya que podramos usar directamente IO
seguido de un punto para acceder a las clases que contiene.
Ejemplos de cmo usar los Namespace
En el ejemplo que vamos a usar, 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
- 61 -
- 62 -
- 63 -
Circulo
Cilindro
Radio
IngresarRadio
10
Radio
IngresarRadio
10
A
314.16
A
Area
314.16
Area
IngresarAltura
Volumen
1
314.16
HERENCIA :
6: Derive la clase cilindro de la clase crculo y encuentre el rea y el volumen del
cilindro
Pasos
- 64 -
As CIRCULO
As CIRCULO
As CILINDRO
= New Circulo
- 65 -
Nota- se puede agrupar la clase cilindro y la clase circulo en una sola clase
- 66 -
- 67 -
End Set
End Property
Property Nro2()
Get
Return N2
End Get
Set(ByVal value)
N2 = value
End Set
End Property
Public ReadOnly Property Res()
Get
Return R
End Get
End Property
End Class
Cdigo del mdulo
Module Module1
Dim objeto As OPERACION
Sub Main()
objeto = New OPERACION
objeto.Ingresar()
Console.WriteLine(" la suma es {0}", objeto.Sumar())
Console.WriteLine(" la resta es {0}", objeto.Restar())
objeto.Nro1 = 100
objeto.Sumar()
Console.WriteLine(" El resultado es {0}", objeto.Res)
Console.ReadLine()
End Sub
End Module
IMPLEMENTAR EVENTOS
- 68 -
Eventos. Qu es un evento?
Un evento es un suceso o situacin, que acontece en una ubicacin de espacio y tiempo no
predecible.
Programacin basada en eventos
Esquema bsico de un sistema orientado a eventos
Un sistema conducido por eventos basa su funcionamiento en dos pilares fundamentales: un
emisor y un receptor de eventos.
El primero genera y lanza el evento al sistema, mientras que el segundo, si est interesado en
tratar el evento lanzado, lo captura y le da respuesta. Si un objeto receptor no necesita
gestionar eventos, simplemente no lo obtiene. Ver Figura 206.
Lanzar el evento mediante la palabra clave RaiseEvent, seguida del nombre del evento
a disparar. Si hemos declarado el evento con parmetros, deberemos aadir los valores
para cada uno de los parmetros en el mismo orden en el que los hemos declarado.
- 69 -
- 70 -
2. Se ingresa cdigo y nombres de n alumnos usando POO elabore una aplicacin que
permita ingresar, mostrar, datos, buscar, grabar, recuperar datos, etc.
3. Implemente una clase llamada estadstica que deber tener los siguiente miembros
Propiedades
N: Nmero de datos ( propiedad de lectura y escritura
Suma, promedio, mediana, moda , mayor, menor desviacion tipica etc.( propiedades de
solo lectura
Mtodos
Ingresar. permite ingresar n datos a un arreglo
Procesar. Procesa y encuentra los valores de Suma, promedio,mediana, moda, el
mayor , el menor , desviacin tipica, etc
PROGRAMACION ORIENTADA A OBJETOS EN PROGRAMACION VISUAL
1. Ingrese a File New Proyect\Windows aplicacation
2. Aparecera el siguiente cuadro ponga de nombre PROBARCIRCULO
Protected A As Single
Public Event Evento1(ByVal Valor As Single)
Public Event Evento2(ByVal Valor As Single)
Public Sub IngresarRadio()
Console.Write(" Ingrese Radio ")
Radio = Console.ReadLine()
End Sub
Public Function Area() As Single
A = 3.1416 * Radio1 * Radio1
Return A
End Function
Property Radio() As Single
Radio = Radio1
End Get
Set(ByVal value As Single)
If value < 0 Then
' se lanza el evento 1
RaiseEvent Evento1(value)
Else
If value > 100 Then ' se lanza el evento 2
RaiseEvent Evento2(value)
Else
Radio1 = value
End If
End If
End Set
End Property
Public ReadOnly Property VerArea()
Get
Return A
End Get
End Property
End Class
- 71 -
- 72 -
Propiedad
Text
Text
Text
Nombre
Text
Nombre
Text
Namee
Text
Valor
Propiedades metodos y eventos clase circulo.
Radio
Area
TxtRadio
TxtArea
BtnPropiedades
Propiedades
- 73 100 ",
- 74 -
- 75 -
- 76 -
- 77 -
- 78 100 ",
- 79 -
- 80 -
Tareas
Implementar las propeidades metodos y eventos de las clases
1. Operacion
2. Factorial de un numero
3. Clase estadistica
HERENCIA
Heredar la clase cilindro de la clase Circulo
1. File\New Proyect\ Windows Aplication luego grabe el proyecto
2. Adicione la clase circulo con proyect\add clases y escriba el siguiente codigo
Namespace CLASES
Public Class CIRCULO
Protected Radio1 As Single
Protected A As Single
Public Event Evento1(ByVal Valor As Single)
Public Event Evento2(ByVal Valor As Single)
Property Radio() As Single
Get
Radio = Radio1
End Get
Set(ByVal value As Single)
Select Case value
Case Is < 0
RaiseEvent Evento1(value)
Case value > 0 To 100
Radio1 = value
Case Is > 100
RaiseEvent Evento2(value)
End Select
End Set
End Property
Public ReadOnly Property Area()
Get
A = Math.PI * Radio1 ^ 2
Area = A
End Get
End Property
End Class
Public Class cilindro
Inherits CIRCULO
Private Altura1 As Single
Public Property Altura() As Single
Get
Altura = Altura1
End Get
Set(ByVal value As Single)
- 81 -
Altura1 = value
End Set
End Property
ReadOnly Property AreaLateral() As Single
Get
AreaLateral = 2 * 3.1416 * Radio1 * Altura1
End Get
End Property
ReadOnly Property AreaTotal() As Single
Get
AreaTotal = AreaLateral + 2 * Area()
End Get
End Property
ReadOnly Property volumen() As Single
Get
volumen = Area() * Altura1
End Get
End Property
End Class
End Namespace
Para que el dato miembro radio1 de la clase base circulo se puede heredar a la clase
cilindro modifique de tipo privado a privado a protegido
Private Radio1 As Single a
Protected Radio1 As Single
Para probar las clase derivadas
1. En el explorador de soluciones seleccione el formulario del proyecto
pruebacilindro y luego en el men ver diseador y disee el siguiente formulario
En el editor de cdigo adicione el siguiente cdigo
Public Class Form1
Private WithEvents Objeto1 As CLASES.CIRCULO
Private WithEvents Objeto2 As CLASES.cilindro
Private Sub Objeto_Evento1(ByVal Valor As Single) Handles Objeto1.Evento1,
Objeto2.Evento1
MsgBox(" no se permite radios negativos", MsgBoxStyle.MsgBoxHelp, Valor.ToString)
End Sub
Private Sub objeto_Evento2(ByVal Valor As Single) Handles Objeto1.Evento2,
Objeto2.Evento2
MsgBox(" EL RADIO DEBE SER MAYOR O IGUAL QUE 100 ", MsgBoxStyle.Critical,
Valor.ToString)
End Sub
Private Sub BtnPropCirculo_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnPropCirculo.Click
Objeto1 = New CLASES.CIRCULO
ListBox1.Items.Clear()
If IsNumeric(TextBox1.Text) Then
Objeto1.Radio = TextBox1.Text
ListBox1.Items.Add("PROPIEDADES DE LA CLASE CIRCULO")
ListBox1.Items.Add("RADIO = " & Objeto1.Radio)
ListBox1.Items.Add("AREA = " & Objeto1.Area)
Else
MsgBox("INGRESE UN NUMERO EN LA CAJA DE TEXTO")
End If
End Sub
- 82 -
- 83 -
2. Ejecute el programa para ver las propiedades del objeto del tipo circulo y de tipo
cilindro
Nota. El objeto de la clase circulo y cilindro muestra todos estos miembros
- 84 -
- 85 -
End Class
Public Class cilindro
Inherits CIRCULO
Private Altura1 As Single
Sub DibujarCilindro(ByVal control As Control)
Dim i As Integer
Dim Lienzo1 As Graphics = control.CreateGraphics
Dim ColorRelleno As New SolidBrush(Color.FromArgb(0, 255, 0))
Dim x1 As Integer = X - Radio
Dim y1 As Integer = Y - Radio
Dim ancho As Integer = Radio * 2
Dim alto As Integer = Radio * 2
Dim rect As Rectangle
For i = 1 To Altura / 2
rect = New Rectangle(x1 + i, y1 - i, ancho, alto)
Lienzo1.FillEllipse(ColorRelleno, rect)
Next i
End Sub
Public Sub New(Optional ByVal h As Integer = 10)
Altura1 = h
End Sub
Public Property Altura() As Single
Get
Altura = Altura1
End Get
Set(ByVal value As Single)
Altura1 = value
End Set
End Property
ReadOnly Property AreaLateral() As Single
Get
AreaLateral = 2 * 3.1416 * Radio1 * Altura1
End Get
End Property
ReadOnly Property AreaTotal() As Single
Get
AreaTotal = AreaLateral + 2 * Area()
End Get
End Property
ReadOnly Property volumen() As Single
Get
volumen = Area() * Altura1
End Get
End Property
End Class
End Namespace
- 86 -
- 87 -
- 88 -
- 89 -
- 90 -
- 91 -
- 92 -
- 93 -
- 94 -
9 Al escoger el objeto UserControl se puede ver todos los eventos que responde y
tambin el evento1 y evento 2 creado
- 95 -
COLECCIONES
Visual Basic tiene un tipo especial de objeto llamado coleccin que se pueda utilizar
para almacenar y para recuperar grupos de objetos.
Cada articulo en una coleccin tiene un ndice que se puede utilizar para identificar
ese artculo . Adems cada artculo en una coleccin tiene una clave , un valor de la
secuencia que se puede utilizar para identificar el artculo . la ventaja a usar una clave
es que no necesita recordar el ndice de un articulo ; en lugar de ello puedes referirle
que use un nombre significativo
Crear una coleccin
Las colecciones son tiles un programa utiliza instancias mltiples de la misma clase
El primer paso en crear una coleccin es crear una instancia de una coleccin de
objetos, segn lo demostrado en la declaracin siguiente.
Dim Profesionales as New colection
Una vez que se crea crea la coleccin , puedes adicionar o quitar artculos
Profesionales.Add (objetoTrabajador, Nombre de trabajador)
- 96 -
datos de element.
group
Next
- 97 -
Text")
- 98 -
- 99 -
Codigo1 = value
End Set
End Property
Public Property Nombre() As String
Get
Nombre = Nombre1
End Get
Set(ByVal value As String)
Nombre1 = value
End Set
End Property
End Class
Public Class Alumnos
Inherits Personas
Private Nota1 As Single
Public Property Nota() As Single
Get
Nota = Nota1
End Get
Set(ByVal value As Single)
Nota1 = value
End Set
End Property
End Class
Public Class Profesores
Inherits Personas
Private Sueldo1 As Single
Public Property Sueldo() As Single
Get
Sueldo = Sueldo1
End Get
Set(ByVal value As Single)
Sueldo1 = value
End Set
End Property
End Class
End Namespace
CODIGO DEL FORMULARIO
Public Class Form1
Dim Persona1 As New MISCLASES.Personas
Dim Alumno1 As New MISCLASES.Alumnos
Dim profesor1 As New MISCLASES.Profesores
Dim CPersonas As New Collection
Dim CAlumnos As New Collection
Dim CProfesores As New Collection
Private Sub AlumnosListar_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles AlumnosListar.Click
Dim Alu As New MISCLASES.Alumnos
ListBox1.Items.Clear()
For Each Alu In CAlumnos
ListBox1.Items.Add(Alu.Codigo & "
" & Alu.Nombre & "
" &
Alu.Nota)
Next
ListBox1.Items.Add("Cantidad de Elementos" & " " &
CAlumnos.Count)
End Sub
- 100 -
- 102 -
EJECUCION
System.Object, ByVal e As
0)
Object, ByVal e As
255, 0)
End Sub
Private Sub Button1_Leave(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.MouseLeave
sender.BackColor = Color.FromArgb(0, 0, 255)
End Sub
End Class