Vous êtes sur la page 1sur 32

Capitulo VIII

Capitulo VIII
Capitulo VIII

CAPITULO VIII

INDICE

Paradigmas

01

Paradigmas Por Procedimientos

01

Paradigmas Declarativos

01

Paradigmas Funcional

01

Paradigma Orientado a Objetos

01

ProgramaciÛn

02

ProgramaciÛn Cl·sica

02

ProgramaciÛn Modular

02

Ejercicio 53

03

Ejercicio 54

05

ProgramaciÛn Orientada a Objetos

06

IntroducciÛn

06

øQuÈ es la ProgramaciÛn Orientada a Objetos?

06

Los Tres Pilares de la ProgramaciÛn

07

Herencia

07

EncapsulaciÛn

07

Polimorfismo

08

Las Clases

08

Los Objetos

08

Los Miembros de Una Clase

09

Crear o Definir Una Clase

09

Definir los Miembros de Una Clase

10

Crear un Objeto a Partir de Una Clase

10

Acceder a Los Miembros de Una Clase

11

Ejemplo de Usar la Herencia

11

Las Estructuras

14

El Nombre de Espacios (NameSpace)

14

øQuÈ es un NameSpace?

14

øQuÈ Finalidad Tiene el Uso de los Namespace?

16

Anidar Espacios de Nombres

16

øCÛmo Acceder a los Tipos Declarados Dentro de un Namespace?

16

Ejemplos de CÛmo Usar Los Namespace

17

Ejercicio 55

20

Ejercicio 56

21

Ejercicio 57

22

Ejercicio 58

24

Ejercicio 59

25

Ejercicio 60

27

Despedida

29

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

PARADIGMAS

Paradigmas por Procedimiento

Son aquellas llamadas tambiÈn paradigmas interactivos, representan al enfoque tradicional de la programaciÛn en donde los programas se conciben como mÛdulos que realizan una determinada tarea o acciÛn, para posteriormente obtener una salida o resultado.

acciÛn, para posteriormente obtener una salida o resultado. Paradigmas Declarativos Este paradigma hace hincapiÈ a la

Paradigmas Declarativos

Este paradigma hace hincapiÈ a la pregunta øCu·l es el problema?, sin interesarle al programador, que procedimiento necesita para resolver el problema, pues asÌ tenemos el GPS, sistemas simulados de propÛsitos 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 f·brica, el problema de producir N piezas en un determinado proceso productivo.

Paradigma Funcional

Plantea el proceso de creaciÛn 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 matem·tico, dichas cajas son funciones por lo que ha de ser un paradigma funcional.

Paradigma Orientado a Objetos

Es un paradigma que ha adquirido popularidad en los ˙ltimos aÒos que es el resultado de la evoluciÛn de la programaciÛn estructurada, en la cual se subdivide en mÛdulos y que cada uno de ellos realiza una determinada tarea, ese mismo concepto se aplica a los objetos para que cumplan una determinada acciÛn o tarea, pues asÌ tenemos los lenguajes de programaciÛn C, C++, Java.

Conduce a paradigma orientado a objetos, donde sin duda es una evoluciÛn de la programaciÛn estructurada y adem·s los conceptos fundamentales son: clase, herencia, polimorfismo, reutilizaciÛn. Los lenguajes de programaciÛn orientada a objetos son SmallTalk, Simula, C++ y Java.

Joel Martin Chuco Marrufo

1

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

PROGRAMACI”N

ProgramaciÛn Cl·sica

Surge por los aÒos 50 y 60, es de tipo monolÌtica donde si el programa era grande, era difÌcil de corregir, y su mantenimiento era muy costoso.

ProgramaciÛn Modular

RaÌz MÛdulo 1 MÛdulo 2 MÛdulo 3 MÛdulo 4 MÛdulo 5 MÛdulo 6 MÛdulo 7
RaÌz
MÛdulo 1
MÛdulo 2
MÛdulo 3
MÛdulo 4
MÛdulo 5
MÛdulo 6
MÛdulo 7
MÛdulo 8

Surge a principios de los 70, es uno de los mÈtodos de diseÒo m·s flexible y potentes para mejorar la productividad de un programa. Todo programa contiene un mÛdulo denominado programa principal, que controla todo lo que sucede, es decir transfiere el control a su mÛdulo, de modo que ellos pueden ejecutar funciones, las tareas de los mÛdulos se sigue dividiendo hasta que cada uno tenga exclusivamente una funciÛn especÌfica, a este tipo de programaciÛn se le conoce como el mÈtodo ìDivide y Vencerasî (Top Down).

Ahora veamos un ejercicio utilizando una programaciÛn modular.

Joel Martin Chuco Marrufo

2

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

53.Esta aplicaciÛn utiliza varios procedimientos para realizar una cierta tarea, utilizando la programaciÛn 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 OpciÛn ==> ") opc = CInt(Console.ReadLine) Console.WriteLine() While opc <> 4 Select Case opc Case 1 Console.Write("Ingrese un N˙mero Entero: ") Numero = CInt(Console.ReadLine) Call Pares(Numero) Case 2 Console.Write("Ingrese un N˙mero Entero: ") Numero = CInt(Console.ReadLine) Call EsPrimo(Numero) Case 3 Console.Write("Ingrese un N˙mero Entero: ") Numero = CInt(Console.ReadLine) Call Factorial(Numero) Case Else Console.WriteLine("OpciÛn No V·lida") Console.Clear() Call Menu() End Select Console.WriteLine() Console.Write("Elija Su OpciÛn ==> ") opc = CInt(Console.ReadLine) Console.WriteLine() End While Console.WriteLine("Fin del Programa") Console.ReadLine() End Sub

"Fin del Programa" ) Console.ReadLine() End Sub Sub Menu() Console.WriteLine() Console.WriteLine(

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

Joel Martin Chuco Marrufo

3

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

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 N˙mero es Primo") Else Console.WriteLine("El N˙mero No Es Primo") End If End Sub

"El N˙mero No Es Primo" ) End If End Sub Sub Factorial( ByVal Numero As Integer

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() Console.WriteLine("El Factorial del N˙mero es : {0}", r)

End Sub

End Module

Joel Martin Chuco Marrufo

4

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

54.Esta aplicaciÛn utiliza procedimientos y funciones para realizar una cierta tarea, utilizando la programaciÛn modular.

Module Ejercicio54

Sub Main() Dim opc, Num As Integer Call Menu() Console.Write("Elija su OpciÛn ==> ") opc = CInt(Console.ReadLine) Console.WriteLine() While opc <> 4 Select Case opc Case 1 Console.Write("Ingrese el Radio: ") Num = CInt(Console.ReadLine) Console.WriteLine("El ·rea de la circunferencia es: {0}", Area(Num)) Case 2 Console.Write("Ingrese el Radio: ") Num = CInt(Console.ReadLine) Console.WriteLine("El volumen de la esfera es: {0}", Volumen(Num)) Case 3 Console.Write("Ingrese el Radio: ") Num = CInt(Console.ReadLine) Console.WriteLine("La longitud de la circunferencia es: {0}", Circunferencia(Num)) Case Else Console.WriteLine("OpciÛn No V·lida") End Select Console.ReadLine() Console.Clear() Call Menu() Console.Write("Elija su OpciÛn ==> ") opc = CInt(Console.ReadLine) Console.WriteLine() End While Console.WriteLine("Fin del Programa") Console.ReadLine() End Sub

"Fin del Programa" ) Console.ReadLine() End Sub Sub Menu() Console.WriteLine() Console.WriteLine()

Sub Menu() Console.WriteLine() Console.WriteLine() Console.WriteLine("{0} MEN⁄ DE OPCIONES", Space(25)) Console.WriteLine() Console.WriteLine() Console.WriteLine("{0} [1] El ·rea de una circunferencia", Space(10)) Console.WriteLine("{0} [2] El volumen de una esfera", Space(10)) Console.WriteLine("{0} [3] La longitud de una circunferencia", Space(10)) Console.WriteLine("{0} [4] Salir del Programa", Space(10)) Console.WriteLine() End Sub

Joel Martin Chuco Marrufo

5

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Function Area(ByVal Num As Integer) As Double Area = (3.14159 * (Num * Num)) End Function

Function Volumen(ByVal Num As Integer) As Double Volumen = (4 * (3.14159 * (Math.Pow(Num, 3)))) / 3 End Function

Function Circunferencia(ByVal Num As Integer) As Double Circunferencia = 2 * (3.14159 * Num) End Function

End Module

= 2 * (3.14159 * Num) End Function End Module PROGRAMACI”N ORIENTADA A OBJETOS IntroducciÛn La

PROGRAMACI”N ORIENTADA A OBJETOS

IntroducciÛn

La programaciÛn orientada a objetos es un importante conjunto de tÈcnicas que pueden utilizarse para hacer el desarrollo de programas eficientes en la programaciÛn orientada a objetos, los objetos son los elementos principales de construcciÛn sin embargo el uso de objetos en un programa no significa que estÈn 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Ì.

øQuÈ es la ProgramaciÛn Orientada a Objetos?

La programaciÛn orientada a objetos es una tÈcnica estructurada siendo los objetos los principales elementos de construcciÛn. La programaciÛn orientada a objetos es el producto de la evoluciÛn de paradigma estructurada a fin de conseguir que el software sea un producto industrial, la programaciÛn orientada a objetos es una programaciÛn que envÌa mensajes a los objetos seg˙n Grade Booch, autor del mÈtodo orientado a objetos, define a esta programaciÛn como: ìUn mÈtodo de implementaciÛn 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 jerarquÌa de clases unidos mediante relaciÛn 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 versiÛn .NET de este lenguaje basa su funcionamiento casi exclusivamente en las clases contenidas en .NET Framework, adem·s casi sin ning˙n tipo de limitaciones.

Joel Martin Chuco Marrufo

6

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Los tres pilares de la ProgramaciÛn Orientada a Objetos

Seg˙n se dice por ahÌ, cualquier lenguaje basado en objetos debe cumplir estos tres requisitos:

Herencia

EncapsulaciÛn

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 funciÛn 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.

o superclase y la clase derivada como clase hija o subclase. Para que lo entiendas mejor,

Para que lo entiendas mejor, veamos un ejemplo cl·sico: Supongamos que tenemos una clase Gato que est· derivada de la clase Animal. El Gato hereda de Animal todas las caracterÌsticas comunes a los animales, adem·s de aÒadirle algunas caracterÌsticas particulares a su condiciÛn felina. Podemos decir que un Gato es un Animal, lo mismo que un Perro es un Animal, ambos est·n 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 ampliarla sin perder nada de lo heredado, pudiendo ampliar la clase de la que se ha derivado (o heredado).

EncapsulaciÛn

La encapsulaciÛn es la capacidad de contener y controlar el acceso a un grupo de elementos asociados. Las clases proporcionan una de las formas m·s comunes de encapsular elementos.

La encapsulaciÛn es la capacidad de separar la implementaciÛn de la interfaz de una clase del cÛdigo que hace posible esa implementaciÛn. Esto realmente serÌa una especie de abstracciÛn, ya que no nos importa cÛmo estÈ codificado el funcionamiento de una clase, lo ˙nico que nos debe interesar es cÛmo funciona Para que nos vayamos entendiendo, cuando digo: la implementaciÛn de la interfaz de una clase, me refiero a los miembros de esa clase: mÈtodos, propiedades, eventos, etc. Es decir, lo que la clase es capaz de hacer.

Cuando usamos las clases, Èstas tienen una serie de caracterÌsticas (los datos que manipula) asÌ como una serie de comportamientos (las acciones a realizar con esos datos). Pues la encapsulaciÛn es esa capacidad de la clase de ocultarnos sus interioridades para que sÛlo veamos lo que tenemos que ver, sin tener que preocuparnos de cÛmo est· codificada para que haga lo que hace simplemente nos debe importar que lo haga.

Joel Martin Chuco Marrufo

7

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Polimorfismo

El polimorfismo permite que diferentes objetos respondan de modo diferente al mismo mensaje, por lo cual se dice que adquiere su m·xima potencia, cuando se utiliza en uniÛn a la herencia, el polimorfismo permite que el mismo nombre de mÈtodo emboque una operaciÛn a los objetos de una clase padre y una operaciÛn diferente en los objetos de la clase derivada.

El Polimorfismo nos permite usar miembros de distintas clases de forma genÈrica 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 podrÌamos tener un "animal" que muerda sin importarnos que sea el Gato o el Perro, simplemente podrÌamos usar el mÈtodo Morder ya que ambos animales tienen esa caracterÌstica "animal mordedor".

LAS CLASES
LAS CLASES

Todo lo que tiene el .NET Framework, en realidad son clases. Una clase no es ni m·s ni menos que cÛdigo. Aunque dicho de esta forma, cualquier programa serÌa 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., estar·n representados por una serie de campos o propiedades, mientras que la forma de modificar o acceder a esa informaciÛn del Cliente se har· por medio de mÈtodos.

Esas propiedades o caracterÌsticas y las acciones a realizar son las que definen a una clase.

Los Objetos

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 informaciÛn 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 sÛlo 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 cÛdigo).

Joel Martin Chuco Marrufo

8

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Para entender mejor todo este galimatÌas, 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 serÌa 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 mÈtodo de la clase Cliente.

Por tanto, los miembros de una clase son las propiedades (los datos) y los mÈtodos las acciones a realizar con esos datos. Como te he comentado antes, el cÛdigo 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 informaciÛn (en las propiedades de la clase) y que tenemos formas de acceder a ella, (mediante los mÈtodos de dicha clase), eso es "abstracciÛn" o encapsulaciÛn.

clase), eso es "abstracciÛn" o encapsulaciÛn. Crear o definir una clase Al igual que existen instrucciones

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 instrucciÛn Class seguida del nombre que tendr· dicha clase, por ejemplo:

Class Cliente

A continuaciÛn escribiremos el cÛdigo que necesitemos para implementar las propiedades y mÈtodos de esa clase, pero para que Visual Basic sepa que ya hemos terminado de definir la clase, usaremos una instrucciÛn de cierre:

End Class

Por tanto, todo lo que estÈ entre Class <nombre> y End definiciÛn de dicha clase.

Class ser· la

Joel Martin Chuco Marrufo

9

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Definir los miembros de una clase

Para definir los miembros de una clase, escribiremos dentro del "bloque" de definiciÛn 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) End Sub

End Class

En este caso, la lÌnea Public Nombre As String, estarÌa definiendo una propiedad o "campo" p˙blico de la clase Cliente.

propiedad o "campo" p˙blico de la clase Cliente. Por otro lado, el procedimiento Mostrar serÌa un

Por otro lado, el procedimiento Mostrar serÌa un mÈtodo de dicha clase, en esta caso, nos permitirÌa mostrar la informaciÛn contenida en la clase Cliente.

Esta es la forma m·s simple de definir una clase. Y normalmente lo haremos siempre asÌ, por tanto podemos comprobar que es muy f·cil definir una clase, asÌ como los miembros de dicha clase.

Pero no sÛlo de clases vive el Visual Basic

o lo que es lo mismo, øpara que

? AsÌ que,

nos sirve una clase si no sabemos crear un objeto basado en esa clase sepamos cÛmo crearlos.

Crear un objeto a partir de una clase

Como te he comentado antes, las clases definen las caracterÌsticas y la forma de acceder a los datos que contendr·, pero sÛlo eso: los define. Para que podamos asignar informaciÛn a una clase y poder usar los mÈtodos 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 m·s de cÛdigo que nos permita "crear" ese objeto en la memoria, ya que con el cÛdigo usado en la lÌnea anterior, simplemente estarÌamos definiendo una variable que es capaz de contener un objeto de ese tipo, pero a˙n no existe ning˙n objeto en la memoria, para ello tendremos que usar el siguiente cÛdigo:

cli = New Cliente()

Joel Martin Chuco Marrufo

10

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

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 mÈtodos) 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 cÛdigo:

cli.Nombre = "Visual Basic"

, usaremos este cÛdigo: cli.Nombre = "Visual Basic" Es decir, de la misma forma que harÌamos

Es decir, de la misma forma que harÌamos con cualquier otra variable, pero indicando el objeto al que pertenece dicha variable. Como podr·s 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 mÈtodo Mostrar:

cli.Mostrar()

Ejemplo de cÛmo usar la herencia

Para poder usar la herencia en nuestras clases, debemos indicar al Visual Basic que esa es nuestra intenciÛn, para ello disponemos de la instrucciÛn 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 cÛmo definir una clase, aunque para este ejemplo, usaremos la clase Cliente que vimos anteriormente, despuÈs crearemos otra, llamada ClienteMoroso la cual heredar· todas las caracterÌsticas de la clase Cliente adem·s de aÒadirle una propiedad a esa clase derivada de Cliente.

Veamos el cÛdigo de estas dos clases. Para ello crea un nuevo proyecto del tipo consola y escribe estas lÌneas al principio o al final del fichero que el IDE aÒade 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

Joel Martin Chuco Marrufo

11

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Public Deuda As Decimal

End Class

Como puedes comprobar, para que la clase ClienteMoroso herede la clase Cliente, he usado Inherits Cliente, con esta lÌnea, (la cual deberÌa ser la primera lÌnea de cÛdigo despuÈs de la declaraciÛn de la clase), le estamos indicando al VB que nuestra intenciÛn es poder tener todas las caracterÌsticas que la clase Cliente tiene. Haciendo esto, aÒadiremos a la clase ClienteMoroso la propiedad Nombre y el mÈtodo Mostrar, aunque tambiÈn tendremos la nueva propiedad que hemos aÒadido: Deuda.

Ahora vamos a ver cÛmo podemos usar estas clases, para ello vamos a aÒadir cÛdigo en el procedimiento Main del mÛdulo del proyecto:

Module Module1

Sub Main() Dim cli As New Cliente() Dim cliM As New ClienteMoroso()

'

As New Cliente() Dim cliM As New ClienteMoroso() ' cli.Nombre = "JosÈ" cliM.Nombre = "Luis"

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

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. FÌjate 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 mÈtodos de la clase base. Por tanto podemos usar esa propiedad como si la hubiÈsemos definido en esa clase. Lo mismo ocurre con los mÈtodos, el mÈtodo Mostrar no est· definido en la clase ClienteMoroso, pero si que lo est· en la clase Cliente y como resulta que ClienteMoroso hereda todos los miembros de la clase Cliente, tambiÈn hereda ese mÈtodo.

La salida de este programa serÌa 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

Joel Martin Chuco Marrufo

12

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Ahora veamos cÛmo podrÌamos hacer uso del polimorfismo o al menos una

de las formas que nos permite el .NET Framework.

Teniendo ese mismo cÛdigo que define las dos clases, podrÌamos 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()

'

Mostrar de la clase ClienteMoroso") cliM.Mostrar() ' Console.WriteLine("La deuda del moroso es: {0}",

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 comprender·s, la clase Cliente "no entiende" nada de las nuevas propiedades implementadas en la clase derivada, por tanto sÛlo se podr· acceder a la parte que es com˙n 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 mÈtodo Mostrar se muestra lo mismo. Adem·s de que si hacemos cualquier cambio

a la propiedad Nombre, al existir sÛlo un objeto en la memoria, ese cambio afectar·

ambas variables. Para comprobarlo, aÒade este cÛdigo antes de la lÌnea Console.ReadLine():

a

Console.WriteLine() cli.Nombre = "Juan" Console.WriteLine("DespuÈs de asignar un nuevo nombre a cli.Nombre") cli.Mostrar() cliM.Mostrar()

La salida de este nuevo cÛdigo, serÌa 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

DespuÈs de asignar un nuevo nombre a cli.Nombre

El nombre del cliente: Juan El nombre del cliente: Juan

Joel Martin Chuco Marrufo

13

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

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 m·gico ni ning˙n fallo, es por lo que te comentÈ antes: sÛlo 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 razÛn de que sÛlo 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 tienen asociado un valor que es independiente de los dem·s.

LAS ESTRUCTURAS

LOS NOMBRE DE ESPACIOS
LOS NOMBRE DE ESPACIOS

Las estructuras o tipos definidos por el usuario, son un tipo especial de datos que veremos en otra ocasiÛn con m·s detalle, pero que se comportan casi como las clases, permitiendo tener mÈtodos, 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 tambiÈn dentro de otras estructuras e incluso dentro de clases y mÛdulos.

øQuÈ es un Namespace?

Un Namespace es una forma de agrupar clases (tipos) que est·n relacionadas de alguna forma. El uso de los espacios de nombres nos permitir· tener nuestros ensamblados agrupados seg˙n la tarea para la que los hemos programado. De esta forma, si escribimos ensamblados que acceder·n 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 razÛn existen los espacios de nombres System.IO y System.Data, por poner sÛlo dos.

Cada vez que creamos un proyecto con Visual Studio .NET de forma autom·tica se crea un espacio de nombres para nuestra aplicaciÛn. Por tanto todos los tipos (clases, estructuras, enumeraciones, etc.) que definamos en dicho proyecto estar·n 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 instrucciÛn Namespace y marcar el final de dicha definiciÛn usando End Namespace, por tanto es como si el IDE aÒadiera esas instrucciones por nosotros. Por tanto es importante saber que, aunque no lo veamos, todos nuestros proyectos estar·n 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 cambiar·n los espacios (o caracteres no v·lidos en un nombre de .NET) por un guiÛn bajo.

Joel Martin Chuco Marrufo

14

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

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 raÌz (Root namespace) tal como podemos ver en la figura 1.

raÌz (Root namespace) tal como podemos ver en la figura 1. Figura 1: El espacio de

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

Joel Martin Chuco Marrufo

15

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

øQuÈ finalidad tiene el uso de los Namespace?

El escribir nuestro cÛdigo dentro de un bloque Namespace tiene por finalidad, el poder mantener una especie de jerarquÌa. Para que nos entendamos mejor, podrÌamos comparar los espacios de nombres con los directorios de un disco. En cada directorio tendremos ficheros que de alguna forma est·n relacionados, de esta forma no mezclaremos los ficheros de m˙sica con los de im·genes ni con los proyectos de Visual Basic, por poner algunos ejemplos. Pues lo mismo ocurre con las jerarquÌas 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

Espacios de nombres dentro de otros espacios de nombres Sub Main() End Sub Siguiendo con el

Sub Main()

End Sub

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 VisualBasic Namespace Entrega5

Module Module1

End Module

End Namespace End Namespace

En este cÛdigo, tenemos dos espacios de nombres anidados, el espacio de nombres Entrega5 est· dentro del espacio de nombres VisualBasic.

øCÛmo 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 teorÌa si declaramos un mÈtodo dentro del mÛdulo Module1, (mostrado en el cÛdigo anterior), deberÌamos llamar a dicho mÈtodo 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

Joel Martin Chuco Marrufo

16

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

fichero de ese mismo directorio, pero si queremos tambiÈn podemos hacerlo, tal como se muestra en el siguiente cÛdigo:

Namespace VisualBasic 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

End Sub End Module End Namespace End Namespace Por tanto, para acceder a los miembros declarados

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_MÈtodo Si dicha clase est· dentro de un espacio de nombres anidado, tambiÈn 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 declaraciÛn vimos que habÌa dos espacios de nombres: System y dentro de Èste est· el espacio de nombres Text, el cual contiene la definiciÛn 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 cÛdigo se puede convertir en algo m·s engorroso de leer si siempre tenemos que indicar los espacios de nombres que contienen las clases.

Ejemplos de cÛmo usar los Namespace

En el ejemplo que vamos a usar, es de la pagina web de www.elguille.info, ya que lo eo mas 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 cÛmo usarlos desde cada uno de esos espacios de nombres.

El cÛdigo serÌa 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", "S·nchez")

'

Joel Martin Chuco Marrufo

17

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

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

End Sub ' Public Property Nombre() As String Get Return _nombre End Get Set ( ByVal

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

'

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

Joel Martin Chuco Marrufo

18

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Es este cÛdigo tenemos tres espacios de nombres:

Entrega16 que es donde est· declarado el mÛdulo que se usar· para iniciar la aplicaciÛn.

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 que espacio de nombres est· cada una de las clases, esto es asÌ porque el mÛdulo que contiene el mÈtodo Main est· declarado dentro de un espacio de nombres diferente. Lo mismo ocurre con la instrucciÛn 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 importaciÛn del espacio de nombres ClasesUno, podrÌamos acceder a la clase ClaseA sin necesidad de indicar el espacio de nombres que la contiene.

necesidad de indicar el espacio de nombres que la contiene. Algunas cosas que debes saber sobre

Algunas cosas que debes saber sobre los Namespace "autom·ticos" y los definidos por tÌ

Para ir finalizando esta entrega quiero decirte que si quitas el espacio de nombres predeterminado que utiliza el Visual Studio y aÒades al cÛdigo tus propios espacios de nombres, debo decirte que hay dos cosas que debes tener en cuenta:

La primera es que seguramente al ejecutar la aplicaciÛn, 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 tendr·s que mostrar las propiedades del proyecto (ver figura 1) e indicar en Objeto inicial el mÛdulo o clase que se usar· o bien, en el caso de las aplicaciones de consola, indicar Sub Main.

La segunda, y m·s 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 tambiÈn debes indicar ese mismo espacio de nombres, al menos si tu intenciÛn es que estÈn 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 ubicaciÛn 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).

TambiÈn debes saber que si nuestro proyecto usa librerÌas 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 tambiÈn 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 librerÌa, 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 librerÌa de clases y usarla desde C#.

Joel Martin Chuco Marrufo

19

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Resumiendo un poco:

En un proyecto (ensamblado) podemos definir varios espacios de nombres. Un espacio de nombres puede estar definido en varios ensamblados y todas las clases (tipos) definidos se podr·n acceder como si estuviesen en el mismo proyecto. Podemos importar espacios de nombres para que el compilador sepa dÛnde buscar las clases.

EJERCICIOS

55.Esta aplicaciÛn utiliza una estructura para realizar una cierta tarea, como la de es halla el ·rea y perÌmetro de un cuadrado.

como la de es halla el ·rea y perÌmetro de un cuadrado. Module Ejercicio55 Structure Cuadrado

Module Ejercicio55

Structure Cuadrado Dim Lado As Double

Sub Inicio(ByVal L As Double) Lado = L End Sub

Function Area() As Double Area = Lado * Lado End Function

Function Perimetro() As Double Perimetro = 4 * Lado End Function

End Structure

Sub Main() Dim X As Cuadrado

X.Inicio(7)

Console.WriteLine("El ·rea del cuadrado es: {0}", X.Area) Console.WriteLine("El perimetro del cuadrado es: {0}", X.Perimetro) Console.ReadLine() End Sub

End Module

Joel Martin Chuco Marrufo

20

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

56.Esta aplicaciÛn utiliza una clase para realizar una cierta tarea, como la de es halla el ·rea y perÌmetro de un cuadrado, tambiÈn este serÌa un claro ejemplo de polimorfismo, ya que es una forma diferente de programar, pero tenga en claro siempre la diferencia entre una clase y estructura, Las clases usan par·metros por referencia, mientras que las estructuras la usan por valor

Module Ejercicio56

Public Class Cuadrado

Dim Lado As Double

Public Sub Inicio(ByVal L As Double) Lado = L End Sub

Public Sub Inicio( ByVal L As Double ) Lado = L End Sub Public Function Area()

Public Function Area() As Double Return Lado * Lado End Function

Public Function Perimetro() As Double Return 4 * Lado End Function

End Class

Sub Main() Dim X As Cuadrado Dim L As Double = 5.0 X = New Cuadrado X.Inicio(L) Console.WriteLine("El ·rea del cuadrado es: {0}", X.Area) Console.WriteLine("El perimetro del cuadrado es: {0}", X.Perimetro) Console.ReadLine() End Sub

End Module

Joel Martin Chuco Marrufo

21

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

57.Esta aplicaciÛn utiliza una estructura, procedimientos (Sub y Function) para realizar una cierta tarea, como la de es hallar el ·rea y perÌmetro de distintos tipos de triangulo.

Module Ejercicio57

Structure Triangulo

Dim a, b, c, p, h As Double

Sub TrianRec(ByVal d As Double, ByVal e As Double)

a = d

b = e

End Sub

d As Double , ByVal e As Double ) a = d b = e End

Sub TrianNor(ByVal d As Double, ByVal e As Double, ByVal f As Double)

a = d

b = e

c = f

End Sub

Function AreaTrianRec() As Double Return (a * b) / 2 End Function

Function AreaTrianNor() As Double

p = (a + b + c) / 2

Return Math.Sqrt(p * (p - a) * (p - b) * (p - c)) End Function

Function PeriTrianRec() As Double

= Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2)) Return h + a + b End Function

h

Function PeriTrianNor() As Double Return a + b + c End Function

End Structure

Sub Main() Dim Rec, Nor As Triangulo Dim n, a, b, c As Double Call Menu() Console.Write("Elija una OpciÛn ==> ") n = CDbl(Console.ReadLine) Console.WriteLine() While n <> 3 Select Case n Case 1 Console.Write("Ingrese la altura: ") a = CDbl(Console.ReadLine)

Joel Martin Chuco Marrufo

22

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Console.Write("Ingrese la base: ")

b = CDbl(Console.ReadLine)

Rec.TrianRec(a, b) Console.WriteLine("El ·rea del triangulo es: {0}", Rec.AreaTrianRec)

Console.WriteLine("El paremitro del triangulo es: {0}", Rec.PeriTrianRec) Case 2 Console.Write("Ingrese el primer lado: ")

a = CDbl(Console.ReadLine)

Console.Write("Ingrese el segundo lado: ")

b = CDbl(Console.ReadLine)

Console.Write("Ingrese el tercer lado: ")

c = CDbl(Console.ReadLine)

Nor.TrianNor(a, b, c) Console.WriteLine("El ·rea del triangulo es: {0}", Rec.AreaTrianNor) Console.WriteLine("El paremitro del triangulo es: {0}", Rec.PeriTrianNor) Case Else

del triangulo es: {0}" , Rec.PeriTrianNor) Case Else Console.WriteLine( "OpciÛn no V·lida" ) End

Console.WriteLine("OpciÛn no V·lida") End Select Console.ReadLine() Console.Clear() Call Menu() Console.Write("Elija una OpciÛn ==> ") n = CDbl(Console.ReadLine) Console.WriteLine() End While Console.WriteLine("Fin del Programa") Console.ReadLine() End Sub

Sub Menu() Console.WriteLine() Console.WriteLine() Console.WriteLine("{0} MEN⁄ DE OPCIONES", Space(25)) Console.WriteLine() Console.WriteLine("{0} [1] Halla el ·rea y el perÌmetro de un triangulo rectangulo", Space(10)) Console.WriteLine("{0} [2] Halla el ·rea y el perÌmetro de un triangulo normal", Space(10)) Console.WriteLine("{0} [3] Salir", Space(10)) Console.WriteLine() End Sub

End Module

Joel Martin Chuco Marrufo

23

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

58.Esta aplicaciÛn utiliza dos espacios de nombre, cada uno con sus clases y procedimientos, para esto primero aÒadiremos una clase llamada ClaseDatos y de ahÌ un mÛdulo llamado Ejercicio58 en donde importaremos los espacios de nombres creados.

Clase Datos

Namespace Esposa

Public Class Datos

Sub Nombre(ByVal nom As String) Console.WriteLine("El Nombre del esposa es: {0}", nom) End Sub

"El Nombre del esposa es: {0}" , nom) End Sub Sub Apellidos( ByVal ape As String

Sub Apellidos(ByVal ape As String) Console.WriteLine("El Apellido del esposa es: {0}", ape) End Sub

Sub Edad(ByVal AÒoNac As Integer) Dim Edad As Integer Edad = Microsoft.VisualBasic.Year(Date.Now) - AÒoNac Console.WriteLine("La edad de la esposa es: {0}", Edad) End Sub

End Class

End Namespace

Namespace Esposo

Public Class Datos

Sub Nombre(ByVal nom As String) Console.WriteLine("El Nombre del esposo es: {0}", nom) End Sub

Sub Apellidos(ByVal ape As String) Console.WriteLine("El Apellido del esposo es: {0}", ape) End Sub

Sub Edad(ByVal AÒoNac As Integer) Dim Edad As Integer Edad = Microsoft.VisualBasic.Year(Date.Now) - AÒoNac Console.WriteLine("La edad de la esposo es: {0}", Edad) End Sub

End Class

End Namespace

Joel Martin Chuco Marrufo

24

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Modulo

Imports Ejercicio58.Esposa Imports Ejercicio58.Esposo

Module Ejercicio58 Sub Main()

Dim Mujer As New Esposa.Datos Dim Marido As New Esposo.Datos Console.WriteLine() Mujer.Nombre("Giselle") Mujer.Apellidos("Valverde")

Mujer.Edad(1985)

Console.WriteLine() Marido.Nombre("Joel") Marido.Apellidos("Chuco")

"Joel" ) Marido.Apellidos( "Chuco" ) Marido.Edad(1984) End Sub End Module 59.Esta aplicaciÛn

Marido.Edad(1984)

End Sub

End Module

59.Esta aplicaciÛn utiliza dos espacios de nombre, cada uno con sus clases y procedimientos, para esto primero aÒadiremos una clase llamada ClaseBanco y de ahÌ un mÛdulo llamado Ejercicio59 en donde importaremos los espacios de nombres creados.

Clase Banco

Namespace Cliente

Public Class Datos

Public Function Cliente(ByVal Nombre As String, ByVal Apellidos As String) As String Return (Apellidos + ", " + Nombre) End Function

Public Function Direccion(ByVal dir As String) As String Return dir End Function

Public Function Telefono(ByVal telf As Integer) As String Return CStr(telf) End Function

Public Function DNI(ByVal LE As Long) As String Return CStr(LE) End Function

End Class

End Namespace

Joel Martin Chuco Marrufo

25

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Namespace Cuenta

Public Class Cuenta

Public Dinero As Double

Sub Saldo(ByVal Money As Double) Dinero = Money End Sub

Public Function TipoCuenta() As String If Dinero < 2500 AndAlso Dinero > 0 Then Return ("Cuenta Ahorros") ElseIf Dinero >= 2500 Then Return ("Cuenta Credito") Else Return ("Error: No Existe Saldo Negativo") End If End Function

No Existe Saldo Negativo" ) End If End Function End Class End Namespace MÛdulo Imports Ejercicio59.Cliente

End Class

End Namespace

MÛdulo

Imports Ejercicio59.Cliente Imports Ejercicio59.Cuenta

Module Ejercicio59

Sub Main()

Dim Datos As Cliente.Datos Dim DatoCuenta As Cuenta.Cuenta Dim Nombre, Apellidos, Direccion As String Dim Telefono, DNI As Integer Dim Monto As Double Datos = New Cliente.Datos DatoCuenta = New Cuenta.Cuenta Console.WriteLine() Console.WriteLine("{0} Nueva Cuenta", Space(25)) Console.WriteLine() Console.Write("Nombres del Cliente: ") Nombre = CStr(Console.ReadLine) Console.Write("Apellidos del Cliente: ") Apellidos = CStr(Console.ReadLine) Console.Write("DirecciÛn del Cliente: ") Direccion = CStr(Console.ReadLine) Console.Write("Numero de DNI: ") DNI = CInt(Console.ReadLine) Console.Write("Numero Telefonico: ") Telefono = CInt(Console.ReadLine)

Joel Martin Chuco Marrufo

26

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Console.Write("Monto de Cuenta: ") Monto = CDbl(Console.ReadLine) Console.WriteLine() Console.WriteLine("Presione ENTER para ver el Detalle de la Cuenta") Console.ReadLine() Console.Clear() Console.WriteLine() Console.WriteLine() Console.WriteLine("{0}*** DETALLE DE CUENTA ***", Space(25)) Console.WriteLine() Console.WriteLine() Console.WriteLine("Cliente: {0}", Datos.Cliente(Nombre, Apellidos)) Console.WriteLine("DirecciÛn: {0}", Datos.Direccion(Direccion)) Console.Write("DNI: {0}", Datos.DNI(DNI)) Console.WriteLine("{0}TelÈfono: {1}", Space(10), Datos.Telefono(Telefono)) DatoCuenta.Saldo(Monto) Console.WriteLine("Tipo de Cuenta: {0}", DatoCuenta.TipoCuenta()) Console.WriteLine("Saldo de Cuenta: {0}", DatoCuenta.Dinero) End Sub

"Saldo de Cuenta: {0}" , DatoCuenta.Dinero) End Sub End Module 60.Esta aplicaciÛn utiliza un modulo, es

End Module

60.Esta aplicaciÛn utiliza un modulo, es algo mas suave, despuÈs de ver espacios de nombres, clases, estructuras, y como despedida de las consolas de aplicaciÛn.

Module Ejercicio60

Sub Main() Dim i, d As Integer Dim salir As Integer Dim s As Char Do

Console.Clear() Console.WriteLine() Console.ForegroundColor = ConsoleColor.Blue Console.WriteLine() Console.WriteLine("{0}INSTITUTO SUPERIOR TECNOL”GICO ARGENTINA",

Space(30))

Console.WriteLine() Console.WriteLine() Console.WriteLine("{0}DEMOSTRATIVO DE UN ARREGLO UNIDIMENSIONAL", Space(29)) Console.WriteLine() Console.WriteLine() Console.WriteLine("{0}ESCRITO POR: Joel Martin Chuco Marrufo",

Space(32))

Console.WriteLine() Console.WriteLine() Console.WriteLine() Console.ForegroundColor = ConsoleColor.DarkGreen Console.Write("Ingrese N˙mero de datos del Arreglo: ") d = CInt(Console.ReadLine)

Joel Martin Chuco Marrufo

27

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Dim A(d - 1) As Integer Console.WriteLine() Console.WriteLine() Console.WriteLine("Elementos Ingresados: ") For i = 0 To d - 1 Console.Write("A [{0}] = ", i) A(i) = CInt(Console.ReadLine)

Next Console.WriteLine("Presione una tecla para ver la lista ingresada") Console.ReadLine() Console.Clear() Console.WriteLine() Console.WriteLine() Console.WriteLine("Lista Ingresada") Console.WriteLine() For i = 0 To d - 1 Console.WriteLine("{0} ", A(i)) Next Console.WriteLine() Console.WriteLine() Console.WriteLine("Presione S para salir, ") Console.WriteLine("Presione C para continuar, ")

")
")

Console.WriteLine("(Continuar / Salir) s = CChar(Console.ReadLine) If s = "s" Or s = "S" Then salir = 1 End If Loop While (salir <> 1) End Sub

End Module

Joel Martin Chuco Marrufo

28

Lenguaje de ProgramaciÛn ñ Capitulo VIII Programando con Visual Basic 2005
Lenguaje de ProgramaciÛn ñ Capitulo VIII
Programando con Visual Basic 2005

Bueno seÒores con esto acaba la Quinta entrega de este manual, con lo que acabamos las aplicaciones en consola, se que ha sido muy poco, pero lo hago para tener separadas las entregas entre consolas de aplicaciÛn y consolas de ventanas, asÌ que la prÛxima entrega ser· de aplicaciones de ventanas aunque va a ser un poco de teorÌa, pero despuÈs de la teorÌa nos dedicaremos de llenos a la programaciÛn, en la prÛxima entrega tocaremos mas o menos lo siguiente:

Controles

Formularios

Algunos Ejercicios

 Controles  Formularios  Algunos Ejercicios Bueno conmigo ser· hasta la prÛxima entrega, ya saben

Bueno conmigo ser· hasta la prÛxima entrega, ya saben aquÌ les dejo mi correo por si tienen alguna duda.

Joel Martin Chuco Marrufo

Donaciones a la cuenta de Ahorros del Banco de Interbank del Per˙

Cuenta en Soles:

067-3008573552

Cuenta en DÛlares:

067-3008573560

Este Manual Solo lo Puedes Descargar por la P·gina Oficial.

Lima, 20 de Febrero de 2006

Joel Martin Chuco Marrufo

29