Académique Documents
Professionnel Documents
Culture Documents
Todos los lenguajes basados en objetos, deben cumplir estos tres requisitos:
Nota: Algunos autores aaden un cuarto requisito: la abstraccin, pero este ltimo est estrechamente ligado con la encapsulacin.
Herencia
Esta es la caracterstica ms importante de la POO. Segn la propia documentacin de Visual Studio .NET: "La herencia permite crear nuevas clases a partir de clases existentes. La herencia puede simplificar el diseo de la aplicacin proporcionando una estructura de relaciones entre las distintas clases. Tambin admite la reutilizacin de cdigo porque slo se debe codificar el comportamiento de clases nuevas o distintas.". Una relacin de herencia es una relacin en la que un tipo (el tipo derivado) se deriva de otro (el tipo base), de tal forma que el espacio de declaracin del tipo derivado contiene implcitamente todos los miembros de tipo no constructor del tipo base. "La herencia es la capacidad de una clase de obtener la interfaz y comportamiento de una clase existente." Resumiendo: Gracias a la herencia podemos ampliar cualquier clase existente, adems de aprovecharnos de todo lo que esa clase haga.
Encapsulacin
Segn Visual Studio.NET: "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." 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). 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 hace. Resumiendo: Establece la separacin entre la interfaz del objeto y su implementacin.
Polimorfismo
Segn la documentacin de Visual Studio.NET: "El polimorfismo se refiere a la posibilidad de definir mltiples clases con funcionalidad diferente, pero con mtodos o propiedades denominados de forma idntica, que pueden utilizarse de manera intercambiable mediante cdigo cliente en tiempo de ejecucin."
Dicho de otra manera, puede tener mltiples clases que se pueden utilizar de forma intercambiable, si bien cada clase implementa las mismas propiedades o los mismos mtodos de maneras diferentes. El polimorfismo es importante en la programacin orientada a objetos puesto que permite usar elementos que tienen el mismo nombre, independientemente del tipo de objeto que se est utilizando en ese momento. Resumiendo: Determina que el mismo nombre de mtodo realizar diferentes acciones segn el objeto sobre el que se ha aplicado.
Qu es una clase?
Los programas de Visual Basic se generan con objetos como formularios y controles. Los objetos tambin se pueden utilizar para representar cosas reales como personas, equipos informticos o incluso algo ms abstracto, como una cuenta bancaria. Una clase es simplemente una representacin de un tipo de objeto. Pensad en ella como un plano que describe el objeto. As como un plano puede utilizarse para construir varios edificios, una clase podemos usarla para crear varias copias de un objeto. Aunque puede que no os hayis dado cuenta, ya hemos utilizado las clases en otros tutoriales de VB que hay por Cristalab, como por ejemplo,en el tutorial bsico de Visual Basic .NET o al crear aplicaciones con .NET y las seguiremos viendo en los prximos Tips o Tutoriales que vengan. Por ejemplo, el control TextBox lo define una clase TextBox, que define su aspecto y sus funciones. Cada vez que arrastramos un control TextBox a un formulario, realmente est creando una nueva instancia de la clase TextBox. Cada control TextBox es una copia exacta, aunque distinta, de la clase que lo define, la clase TextBox. Puesto que cada objeto es una "instancia" independiente de una clase, la accin de crear una clase se denomina creacin de instancias. Hasta ahora hemos agregado los controles TextBox a su formulario arrastrndolos desde el Cuadro de herramientas, pero tambin puede crear instancias de un objeto TextBox en su cdigo si utiliza la palabra clave New.
Dim Textbox1 As New TextBox
Algunos miembros de una clase son privados; slo se tiene acceso a ellos mediante cdigo dentro de la clase. Por ejemplo, una clase de cuenta bancaria puede tener un mtodo para calcular un saldo. Lo lgico es permitir que un programa lea ese balance pero no que pueda cambiarlo directamente. Puede ocultar los miembros de una clase si los declara como Private o exponerlos si los declara como Public. Tambin puede permitir el acceso a una propiedad y a la vez impedir que el programa cambie su valor declarndolo como ReadOnly. El cdigo siguiente muestra cmo podra ser una clase BankAccount, por ejemplo:
'Declaramos la clase BlankAccount Class BankAccount 'La hacemos privada Private AccountNumber As String Private AccountBalance As Decimal 'Y la ponemos publica para que calcule el balance Public Sub UpdateBalance() End Sub ReadOnly Property Balance() As Decimal Get Return AccountBalance End Get End Property End Class
Crear clases
Si habis seguido los tutos de Visual Basic de Cristalab, o sabis de ello, sabris que al hacer doble clic en un formulario y abrir el Editor de cdigo se vea algo parecido a lo siguiente:
Public Class Form1 Private Sub Form1_Load... End Sub End Class
Pues mirad, el formulario realmente es una clase, marcada por instrucciones Class y End Class y cualquier cdigo que se haya escrito entre las dos instrucciones es parte de la clase. Aunque de manera predeterminada un mdulo de formulario contiene slo una clase nica, puede crear mdulos adicionales agregando cdigo debajo de la instruccin End Class, tal como se ilustra a continuacin:
Public Class Form1 ' El cdigo de vuestro Form AQUI End Class Public Class MyFirstClass ' El cdigo de vuestra clase AQUI End Class
La desventaja de crear clases de esta manera es que slo estn disponibles dentro del proyecto donde se crearon. Si deseamos compartir una clase con otros proyectos, puede colocarla en un mdulo de clase.
Mdulos de clase
Un mdulo de clase es un archivo de cdigo, separado del resto, que contiene una o ms clases. Como es un archivo independiente, se puede reutilizar en otros proyectos. Los mdulos de clase se pueden crear de dos maneras:
Como un mdulo agregado a un proyecto de aplicacin para Windows. Como un proyecto de bibliotecas de clase independient
Puede agregar un nuevo mdulo de clase a un proyecto existente seleccionando Clase en el cuadro de dilogo Agregar nuevo elemento, disponible en el men Proyecto. Para trabajar en durante el tutorial, crearemos un proyecto de bibliotecas de clases independientes. Vamos a ver cmo crear un proyecto de de biblioteca de clases:
En el men Archivo, seleccionamos Nuevo proyecto. En el panel Plantillas, del cuadro de dilogo Nuevo proyecto, hacemos clic en Biblioteca de clases.
Se abrir un nuevo proyecto de bibliotecas de clase y el Editor de cdigo mostrar el mdulo de clase Class1.vb.
En el Explorador de soluciones, hacemos clic con el botn secundario del ratn en Class1.vb y seleccionamos Cambiar nombre y, a continuacin, cambiamos el nombre a "Persons.vb".
En el men Archivo, elegimos Guardar todo. En el cuadro de dilogo Guardar proyecto, hacemos clic en Guardar.
Nota: En lugar de guardar el proyecto en la ubicacin predeterminada, podramos crear un directorio en el cual podemos almacenar todas las clases para reutilizarlas mas tarde. se puede especificar esa carpeta en el campo Location del cuadro de dilogo Guardar proyecto antes de guardar. De momento, mantendremos el proyecto abierto, porque lo utilizaremos durante todo el tutorial, e iremos ampliando la informacin.
Todos los objetos tienen atributos y las propiedades representan atributos. Antes, hicimos la clase "Persons", que representa a una persona; las personas tienen atributos como el nombre y la edad, por lo que la clase Persons necesita propiedades que representen dichos atributos. Se pueden agregar propiedades a una clase de dos maneras:
Tambin podemos determinar cmo funciona una propiedad utilizando los modificadores Public, ReadOnly o WriteOnly.
La mayora de las propiedades, sin embargo, son ms complejas; en la mayor parte de los casos utilizaremos procedimientos de propiedad para agregar una propiedad a una clase. Los procedimientos de propiedad tienen tres partes:
Una declaracin de una variable privada para almacenar el valor de la propiedad. Un procedimiento Get que expone el valor. Un procedimiento Set que, como indica su nombre, establece el valor.
Por ejemplo, un procedimiento de propiedad para una propiedad Name, de la clase Persons, podra ser como el que sigue:
Private nameValue As String Public Property Name() As String Get Name = nameValue End Get Set(ByVal value As String) nameValue = value End Set End Property
La primera lnea de cdigo declara una variable String privada, nameValue que almacenar el valor de la propiedad. El procedimiento de propiedad en s comienza con Public Property y termina con End Property. El procedimiento Get contiene el cdigo que se ejecutar cuando desee leer su valor; por ejemplo, si lee la propiedad Persons.Name, el cdigo devolver el valor almacenado en la variable nameValue.
El procedimiento Set contiene cdigo que se utiliza para asignar un nuevo valor a la variable nameValue usando un valor pasado como argumento value. Por ejemplo, si escribimos el cdigo Persons.Name = "Wyrm", el valor String Wyrm se pasar como argumento value; el cdigo del procedimiento Set lo asignar a la variable NameValue para su almacenamiento. Por qu complicarnos tanto, en lugar de utilizar un campo que represente la propiedad Name? En el mundo real, hay ciertas reglas para los nombres: por ejemplo, los nombres normalmente no contienen nmeros. Puede agregar cdigo al procedimiento Set para comprobar el argumento value y devolver un error si contiene nmeros. Siguiendo con la Clase Persons, ahora agregaremos un campo y tres propiedades: 1. Abrimos el proyecto Persons que hicimos en la seccin anterior. Si no lo guardaste, primero debers regresar a la seccin anterior, crear la primera clase, y realizar hasta el final los procedimientos de esa seccin. 2. En el Explorador de soluciones, seleccionamos Persons.vb y en el men Ver elegimos Cdigo.
7. Agregamos los siguientes procedimientos de propiedad debajo del cdigo de declaracin anterior.
8. Public Property FirstName() As String 9. Get 10. FirstName = firstNameValue 11. End Get 12. Set(ByVal value As String) 13. firstNameValue = value 14. End Set 15. End Property
16. 17. Public Property MiddleName() As String 18. Get 19. MiddleName = middleNameValue 20. End Get 21. Set(ByVal value As String) 22. middleNameValue = value 23. End Set 24. End Property 25. 26. Public Property LastName() As String 27. Get 28. LastName = lastNameValue 29. End Get 30. Set(ByVal value As String) 31. lastNameValue = value 32. End Set End Property
Quedar as:
De igual forma, la palabra clave WriteOnly permite establecer un valor de propiedad pero no permite que se lea; por ejemplo, no permite que otros programas lean una propiedad de contrasea. Podemos utilizar ese valor para realizar acciones dentro de la clase, pero desear que sigan siendo privadas. Para crear una propiedad de slo escritura, se crear una propiedad con un procedimiento Set pero sin procedimiento Get, como a continuacin:
Private passwordValue As String WriteOnly Property Password() As String Set(ByVal value As String) passwordValue = value End Set End Property
Los procedimientos de propiedad ReadOnly y WriteOnly tambin son tiles cuando deseamos tomar un valor de propiedad y convertirlo en un valor diferente. Por ejemplo, pensemos en la edad de una persona. A diferencia del nombre, la edad cambia con el tiempo, si ha asignado la edad a una clase y la lee de nuevo un ao despus, sera incorrecta. En la clase Persons, podemos evitarlo agregando dos propiedades: una propiedad "WriteOnly BirthYear" que representa el ao de nacimiento, que nunca cambia, y una propiedad "ReadOnly Age" que devuelve un valor calculando la diferencia entre el ao en curso y el ao de nacimiento. Siguiendo con la Clase Persons, ahora agregaremos propiedades ReadOnly y WriteOnly a la clase: 1. Agregamos el siguiente cdigo de declaracin debajo de las otras declaraciones en la parte superior del mdulo de clase.
Private birthYearValue As Integer
Si bien la mayora de los mtodos de clase son pblicos, tambin se pueden agregar mtodos que slo la clase en s puede utilizar. Por ejemplo, la clase Persons puede tener su propia funcin para calcular la edad de una persona. Si declara la funcin como Private, no se puede ver o llamar desde fuera de la clase. El cdigo para una funcin privada puede ser similar a ste otro:
Private Function CalcAge(ByVal year As Integer) As Integer CalcAge = My.Computer.Clock.LocalTime.Year - year End Function
Ms tarde podremos cambiar el cdigo que calcula el valor CalcAge y el mtodo seguir funcionando bien sin cambiar ningn cdigo que utilice el mtodo. Ocultar el cdigo que realiza el mtodo, se conoce como la "encapsulacin", ya explicada al comienzo. Ahora, para agregar un mtodo a la clase Persons, hacemos lo siguiente:
Abrimos el proyecto Persons(si no lo tenemos abierto ya de antes) que hicimos en las secciones anteriores. Si no lo guardaste, o no lo creaste, primero debers volver a las seccines anteriores, agregar propiedades a la clase, y completar los procedimientos. En el Explorador de soluciones, seleccionamos Persons.vb y, en el men Ver, hacemos clic en Cdigo. Agregamos el siguiente cdigo bajo los procedimientos de propiedad.
Public Function FullName() As String If middleNameValue <> "" Then FullName = firstNameValue & " " & middleNameValue & " " _ & lastNameValue Else FullName = firstNameValue & " " & lastNameValue End If End Function
Private Function CalcAge(ByVal year As Integer) As Integer CalcAge = My.Computer.Clock.LocalTime.Year - year End Function
Provocar un evento significa que estamos sealizando la aparicin del evento. Para agregar un evento a una clase, lo declaramos con la instruccin Event. sto indica que el objeto puede provocar el evento que especificamos. Por ejemplo, quizs deseemos agregar un evento AgeCalculated a la clase Persons que hicimos. Podemos provocar a continuacin el evento en el mtodo CalcAge. Despus de hacer esto, cuando se llama al mtodo, podemos ejecutar algn cdigo adicional en cuanto se haya calculado la edad de la persona.
Abrimos el proyecto Persons. En el Explorador de soluciones, seleccione Persons.vb y, en el men Ver, hacemos clic en Cdigo. Agregamos el siguiente cdigo encima de los procedimientos de propiedad.
Public Event AgeCalculated(ByVal Age As Single)
En el mtodo CalcAge, reemplazamos el cdigo existente por el siguiente cdigo para provocar el evento.
Private Function CalcAge(ByVal year As Integer) As Integer Dim Age = My.Computer.Clock.LocalTime.Year - year RaiseEvent AgeCalculated(Age) CalcAge = My.Computer.Clock.LocalTime.Year - year End Function
Para utilizar y probar la clase Persons, debemos crear primero un proyecto de prueba y agregar una referencia al mdulo de clase. Para crear un proyecto de prueba para la clase Persons
Abrimos el proyecto Persons que creamos en las secciones anteriores. En el men Archivo, elegimos Agregar y, a continuacin, hacemos clic en Nuevo proyecto.
En el panel Plantillas, en el cuadro de dilogo Nuevo proyecto, hacemos clic en Aplicacin de Windows Forms. En el cuadro Nombre, escribimos PersonsTest y hacemos clic en Aceptar.
Se agregar un nuevo proyecto de Windows Forms al Explorador de soluciones y aparecer un nuevo formulario.
En el Explorador de soluciones, seleccionamos el proyecto PersonsTest y, en el men Proyecto, hacemos clic en Establecer como proyecto de inicio.
En el Explorador de soluciones, seleccionamos el proyecto PersonsTest y, en el men Proyecto, hacemos clic en Agregar referencia. Aparecer el cuadro de dilogo Agregar referencia.
Hacemos doble clic en el formulario para abrir el editor de cdigo y escribimos la siguiente declaracin justo debajo de la lnea Public Class Form1.
Dim person1 As New Persons.Persons
Esto declara una nueva instancia de la clase Persons. Quizs os preguntis por qu tuvimos que escribir dos veces Persons, pues porque la primera instancia es el mdulo de clase Persons.vb y la segunda instancia es la clase Persons de ese mdulo.
El siguiente paso es agregar una interfaz de usuario y un cdigo que utilice la clase Persons. Agregaremos cuadros de texto donde el usuario especificar los valores para cada una de las propiedades (excepto la propiedad de slo lectura "Age"), una casilla para el campo "Married" y botones para probar cada uno de los mtodos pblicos.
En el Explorador de soluciones, seleccionamos Form1 y, en el men Ver, hacemos clic en Diseador. En el Cuadro de herramientas, arrastramos cuatro controles TextBox, un control CheckBox y dos controles Button al formulario. Seleccionamos el primer control Button y, a continuacin, en la ventana Propiedades establecemos la propiedad Text en Update. Seleccionamos el segundo control Button y en la ventana Propiedades establecemos la propiedad Text en Full Name. Hacemos doble clic en el primer botn (Update) para abrir el Editor de cdigo y en el controlador de eventos Button1_Click, agregamos el siguiente cdigo:
With person1 .FirstName = Textbox1.Text .MiddleName = Textbox2.Text .LastName = Textbox3.Text .BirthYear = Textbox4.Text .Married = CheckBox1.Checked End With
-En el primer cuadro de texto, escribimos nuestro nombre. -En el segundo cuadro de texto, escribimos nuestro segundo nombre. -En el tercer cuadro de texto, escribimos nuestro apellido. -En el cuarto cuadro de texto, escribimos el ao de nuestro nacimiento con cuatro dgitos (por ejemplo, 1983). -Activamos la casilla de si estamos casados/as.
Hacemos clic en el botn "Update" para establecer las propiedades de la clase y clic en el botn "Full Name". Se muestran tres cuadros de mensaje. Estos cuadros de mensaje muestran su nombre completo, edad y estado civil.
Mtodos sobrecargados
Para crear un mtodo sobrecargado, agregamos dos o ms procedimientos Sub o Function a la clase, cada uno con el mismo nombre. En las declaraciones de procedimiento, el conjunto de argumentos para cada procedimiento debe ser distinto o se producir un error. El siguiente ejemplo muestra un mtodo con dos sobrecargas, una que acepta una String y la otra que acepta un Integer como argumentos.
Public Sub TestFunction(ByVal input As String) MsgBox(input) End Sub Public Sub TestFunction(ByVal input As Integer) MsgBox(CStr(input)) End Sub
Si se debe llamar a este mtodo desde el cdigo y pesarle una cadena, se ejecutara la primera sobrecarga y un cuadro de mensaje mostrara la cadena; si se le pas un nmero, se ejecutara la segunda sobrecarga y el nmero se convertira en una cadena y aparecera en el cuadro de mensaje. Podemos crear tantas sobrecargas como sean necesarias y cada una de ellas puede contener un nmero diferente de argumentos. En la clase Persons, agregaremos un mtodo con dos sobrecargas para devolver la inicial del segundo nombre de una persona; una slo con la inicial y la otra con la inicial seguida por un punto.
Abrimos el proyecto Persons que creamos en la secciones anteriores. En el Explorador de soluciones, seleccionamos Persons.vb y, en el men Ver, elegimos Cdigo. Agregamos el siguiente cdigo debajo de los mtodos existentes.
Public Function MiddleInitial() As String MiddleInitial = Left$(middleNameValue, 1) End Function
Public Function MiddleInitial(ByVal period As Boolean) As String MiddleInitial = Left$(middleNameValue, 1) & "." End Function
En el Explorador de soluciones, seleccionamos Form1 y, en el men Ver, hacemos clic en Diseador. En el Cuadro de herramientas, arrastramos dos controles ms de Button al formulario. Seleccionamos el tercer control Button y en la ventana Propiedades establecemos su propiedad Text en With. Seleccionamos el cuarto control Button y en la ventana Propiedades establecemos su propiedad Text en Without. Hacemos doble clic en el primer botn (With) para abrir el Editor de cdigo y escribimos el siguiente cdigo en el controlador de eventos Button3_Click.
MsgBox(person1.FirstName & " " & person1.MiddleInitial(True) & _ " " & person1.LastName)
-En el primer cuadro de texto, escribimos nuestro nombre. -En el segundo cuadro de texto, escribimos nuestro segundo apellido. -En el tercer cuadro de texto, escribimos nuestro tercer apellido. -En el cuarto cuadro de texto, escribimos el ao de nuestro nacimiento con cuatro dgitos (por ejemplo, 1983). -Activamos la casilla si est casado/a.
Hacemos clic en el botn Actualizar para establecer las propiedades de la clase y hacemos clic en el botn With. Se abrir un cuadro de mensaje. Muestra nuestro nombre con un punto tras la inicial del primer apellido.
Hacemos clic en el botn Without. Se abrir un cuadro de mensaje. Muestra nuestro nombre sin el punto tras la inicial del primer apellido.
El objeto person1 se debe crear con la instruccin WithEvents para que se pueda tener acceso al evento AgeCalculated. Al usar la instruccin Add Handler, puede asociar dinmicamente los eventos a controladores en tiempo de ejecucin. Probamos el controlador de eventos en la clase Person
En el Explorador de soluciones, seleccionamos Form1 y, en el men Ver, hacemos clic en Cdigo. Agregamos la instruccin WithEvents antes de la declaracin person1, como se muestra en el cdigo siguiente:
WithEvents person1 As New Persons.Persons
Agregamos el procedimiento siguiente a Form1. Este cdigo comprueba la edad calculada y muestra un mensaje basado en el resultado.
Private Sub person1_AgeCalculated(ByVal Age As Integer) _ Handles person1.AgeCalculated If Age > 18 Then MsgBox("You have been over 18 for " & Age - 18 _ & " years.") Else MsgBox("You will be 18 in " & 18 - Age & " years") End If End Sub
Presionamos F5 para ejecutar el proyecto y mostrar el formulario. -En el primer cuadro de texto, escribimos nuestro nombre. -En el segundo cuadro de texto, escribimos nuestro segundo apellido. -En el tercer cuadro de texto, escribimos nuestro tercer apellido. -En el cuarto cuadro de texto, escribimos el ao de nuestro nacimiento con cuatro dgitos (por ejemplo, 1983). -Activamos la casilla si est casado/a. Hacemos clic en el botn Actualizar para establecer las propiedades de la clase y haga clic en el botn Full Name. Un cuadro de mensaje muestra su nombre completo. Si tiene ms de 18 aos, otro cuadro de mensaje muestra informacin sobre cunto tiempo hace que cumpli los 18 aos. Si tiene menos de 18 aos, aparece un cuadro de mensaje que muestra informacin sobre cunto tiempo queda hasta que cumpla los 18 aos. A continuacin, otro cuadro de mensaje muestra su edad.
Se pueden crear instancias de la nueva clase DerivedClass, se puede tener acceso a sus propiedades y mtodos como BaseClass y se pueden agregar nuevas propiedades y mtodos que son especficos de la nueva clase. Para ver un ejemplo, nos fijaremos en la clase Persons que tenemos creada.
Supongamos que deseamos tener una clase que represente jugadores de bisbol: los jugadores del bisbol tienen todos los atributos definidos en la clase Persons, pero tambin tienen atributos nicos, como su nmero y posicin. En lugar de agregar esas propiedades a la clase Persons, se crear una nueva clase derivada que se hereda de Persons, a la que se agregaran las nuevas propiedades. Para crear una clase derivada de la clase Persons:
Abrimos el proyecto Persons que llevamos todo el tutorial usando. En el Explorador de soluciones, seleccionamos el nodo del proyecto Persons. En el men Proyecto, elegimos Agregar clase.
En el cuadro de dilogo Agregar nuevo elemento, escribimos Players en el cuadro Nombre, a continuacin, hacemos clic en Agregar.
En el Editor de cdigo, agregamos lo siguiente justo debajo de la lnea Public Class Players.
Inherits Persons
Agregamos tambin el siguiente cdigo para definir las dos nuevas propiedades.
Private numberValue As Integer Private positionValue As String Public Property Number() As Integer Get Number = numberValue End Get Set(ByVal value As Integer) numberValue = value End Set End Property Public Property Position() As String Get Position = positionValue End Get Set(ByVal value As String) positionValue = value End Set End Property
2. En el cuadro de dilogo Agregar nuevo proyecto, en el panel Plantillas, seleccionamos una Aplicacin de Windows Forms. 3. En el cuadro Nombre, escribimos PlayerTest y hacemos clic en Aceptar.
4. Se agregar un nuevo proyecto de Windows Forms al Explorador de soluciones y aparecer un nuevo formulario.
5. En el Explorador de soluciones, seleccionamos el proyecto PlayerTest y, en el men Proyecto, hacemos clic en Establecer como proyecto de inicio. 6. En el Explorador de soluciones, seleccionamos el proyecto PlayerTest y, en el men Proyecto, haga clic en Agregar referencia. 7. Se abrir el cuadro de dilogo Agregar referencia. 8. Hacemos clic en la ficha Proyectos, elegimos Persons y hacemos clic en Aceptar.
9. Hacemos doble clic en el formulario para abrir el Editor de cdigo y escribimos la siguiente declaracin justo debajo de la lnea Public Class Form1.
10. Dim player1 As New Persons.Players Dim player2 As New Persons.Players
11. En el men Archivo, hacemos clic en Guardar todo. Para probar la clase derivada: 1. En el Explorador de soluciones, seleccionamos Form1 en el proyecto PlayerTest y, a continuacin, en el men Ver, hacemos clic en Cdigo.
14. En el Explorador de soluciones, seleccionamos Form1 en el proyecto PlayerTest y, a continuacin, en el men Ver, hacemos clic en Diseador.
15. En el Cuadro de herramientas, arrastramos dos controles Button al formulario. 16. Seleccionamos el primer control Button y en la ventana Propiedades establecemos su propiedad Text en At Bat. 17. Seleccionamos el segundo control Button y en la ventana Propiedades establecemos su propiedad Text en On Deck. 18. Hacemos doble clic en el primer botn (At Bat) para abrir el Editor de cdigo y escribimos el siguiente cdigo en el controlador de eventos Button1_Click.
19. MsgBox(player1.Position & " " & player1.FullName & ", #" & _ CStr(player1.Number) & " is now at bat.")
Observamos que estamos utilizando el mtodo FullName que se hered de la clase base Persons.
22. Presionamos F5 para ejecutar el programa. Hacemos clic en cada botn para ver los resultados. Clic al Boton1(At Bat):
23. En el men Archivo, elegimos Guardar todo. Y aqui, finalizando probar una clase derivada, acabamos con el tutorial sobre la POO y sus clases en Visual Basic.NET. Hemos visto, qu son y cmo crear clases, agregarle propiedades, mtodos y eventos, las hemos heredado, etc. Espero que no se os haya hecho demasiado largo, ni muy tostonazo, pero la mejor forma de aprender y de que las cosas se entiendan, es hacindolo uno mismo... Espero que las explicaciones hayan estado claras, y que a quien le haya gustado este tema, no dude en profundizarlo un poco mas, yo solo he levantado la primera capa de todo lo que hay debajo. Suerte!!
PD: El archivo del tutorial contiene todo lo que hemos ido haciendo desde el principio del tutorial, para ver los tres ejemplos, debereis hacer Clic en "Establecer como proyecto de inicio", como ya hicimos durante el tuto.
Al colocar este control vers que tiende a acoplarse a la ventana, as que debemos "desacoplarlo" pulsando en la flecha que tiene arriba a la derecha y que muestra este men:
Le decimos que lo desacople de la ventana y ahora ocupar una zona distinta pudindola cambiar de tamao:
Un cuadro de texto que le llamaremos "txt_direccion". Pondremos este nombre desde la ventana de propiedades y luego en el campo "ID".[/*] Una etiqueta "Label" que ponga la palabra "Direccin".[/*] Un botn de navegar que llamaremos btn_navegar.[/*] Al control de navegacin Web que hemos aadido antes le pondremos el nombre "navegador".
Ahora cambiaremos los anclajes para que nos ajuste el control y la direccin al redimensionar la pantalla con la propiedad anchor. Para el control web quedar:
Para el cuadro de texto le pondremos arriba, izquierda y derecha. Para el botn pondremos arriba y derecha. Si ejecutamos ahora el programa y movemos la ventana los controles se redimensionarn de forma automtica:
Ahora vamos a escribir el cdigo necesario para que nuestro navegador vaya a la pgina que escribamos en el cuadro de texto. El control de navegacin tiene un mtodo que acepta una direccin URL y la muestra en pantalla. La pgina web la escribiremos en el cuadro de texto as que tendremos que leer la propiedad Text de ese cuadro de texto, por tanto el cdigo necesario ser esto: Cdigo :
navegador.navigate (txt_direccion.Text)
Dnde tendremos que poner este cdigo? Pues cuando el usuario haga clic en el botn as que vamos a buscar ese evento del botn. Nos situamos en el editor pulsando el botn del cdigo o pulsando con el botn derecho en el formulario:
Ahora en la parte derecha nos mostrar los eventos a los que puede atender este control, seleccionamos "click":
Nos va a mostrar el cdigo que se ejecutar al hacer clic en el botn. Esto es el controlador para el evento clic del objeto botn:
Y ya tenemos todo listo, ejecutemos ahora el programa, pon una direccin y pulsa el botn de navegador:
Diseo de la interfaz
Para empezar, abrimos un nuevo proyecto Windows Forms, de nombre yo le he puesto VisualizadorRGB, le podis poner cualquiera, o directamente no poner nada y saldr WindowsApplication1.
Ampliamos el formulario para poder introducir correctamente todos los controles, que sern 4 Trackbar(O podis usar el control VScrollBar), 4 labels y un PictureBox. Yo usar los TrackBar.
Realmente podis ponerlos horizontales o verticales, el funcionamiento ser el mismo, no cambiar el resultado. Una vez que los TrackBar estn en su sitio, aadimos nuestro PictureBox, que ser donde se vern los resultados de cambiar el valor de los scroll.
Para darle un toque mas elegante, he aadido un borde al PictureBox. No es necesario, simplemente es eso, un toque elegante...pero por si quereis hacerlo, le poneis la propiedad BorderStyle en Fixed3D:
Aadimos los cuatro labels, uno a cada lado de los TrackBar, que sern para saber que color es cada uno: Rojo, Verde, Azul y el ltimo el Alpha. Y por ahor nos quedar as (an slo estamos con el diseo):
Ahora cambiaremos ciertas propiedades para darles valor a los TrackBar, y para empezar, cambiamos la propiedad Maximum en 255 y Minimum en 0
Cambiamos la propiedad TickFrequency en 20, para que cada salto del TrackBar sea de 20 y lo mismo con la propiedad LargeChange.
Ahora vamos a dar doble click sobre cada uno de los cuatro controles, y en el hueco dejado por VB, pondremos la declaracin siguiente: Cdigo :
cambiar_color()
Nos mostrar que hay errores, porque aun no hemos declarado la funcin "Cambiar_color" .
Declaramos la funcin "cambiar_color" poniendo el siguiente cdigo debajo de las declaraciones anteriores: Cdigo :
ste cdigo lo que hace, es coger el valor(De ahi "tr_color.Value") de cada TrackBar y modificar el color del PictureBox que se encuentra en el formulario actual (De ahi "Me.PictureBox1.BackColor) y lo pasa a color RGB. As acaba ste Visualizador de colores RGB con VisualBasic.NET, ahora probamos la aplicacin y nos mostrar en el PictureBox el valor que pongamos en cada TrackBar de los colores.
Compilando y ejecutando
Recordad que si el valor del trackbar Alpha es 0, no se ver ningn color en el PictureBox...
Luego modificamos cualquier TrackBar de un color solo, y veremos que funciona correctamente: