lunes, 8 de septiembre de 2008

Subrutinas de Codigos en Visual Basic 6.0



Se denomina subrutina a una porción de código que tiene como principal función ejecutar una determinada tarea. Estas tienen un nombre para poder identificarlas y luego poder llamarlas para poder utilizarlas.

Las subrutinas tienen un principio y un fin y estas pueden tener distinto tipo de alcance, o sea pueden ser de tipo privadas o públicas.

En el siguiente ejemplo se muestra una subrutina que crea visual basic automáticamente cuando en un formulario insertamos un botón llamado Command1 y desde la ventana de eventos seleccionamos el evento click del mismo

Private Sub Command1_Click()

End Sub


Ahora, si colocamos por ejemplo un control TextBox llamado TextPedidos y hacemos doble click sobre el mismo, se crea el procedimiento por defecto para los TextBox, que es el evento Change

Private Sub TextPedidos_Change()

End Sub


En estos 2 últimos ejemplos tenemos una subrutina o procedimiento de tipo Privado, esto quiere decir que la podemos utilizar solo en el formulario o módulo donde está declarada o escrita

La palabra sub le sigue el nombre de la rutina que la identifica. En este caso Command1_click() y en el otro ejemplo TxtPedidos_Change().

Si quisiéramos que estos procedimientos se puedan llamar desde otro formulario, lo que tendríamos que hacer es cambiar el alcance del procedimiento, en ves de Private Sub cambiarlo por Public Sub. si hacemos esto, ese procedimiento de código puede ser utilizado desde cualquier parte del proyecto.

Operadores en Visual Basic 6.0



Los operadores nos permiten operar, validar, comparar, asignar, distinguir, etc.., los datos e instrucciones de código de nuestros programas. A continuación los operadores mas importantes.

Operadores aritméticos

Estos operadores nos permiten trabajar con cálculos matemáticos como la suma (+), resta (-), división (/) y multiplicación (*).

Ejemplos:


a = 5
b = 15
c = a + b ' en este caso la variable c contendría el valor 20
ganancia = 500
perdida = 200
total = ganancia - perdida 'la variable total pasaría a valer 300
x = 100
y = 20

z = x / y ' La Variable z vale 5

x = 100
y = 20

z = x * y ' La Variable z vale 2000





Operadores lógicos

Se utilizan en expresiones para devolver resultados del tipo True o False, es decir Verdadero o falso. Los mas comunes son el operador And y el operador Or

Ejemplos:



If (x = 10) And (nombre = "maría") Then

'solo se ejecutará el código dentro de este bloque IF si la variable
'x vale 10 y la variable nombre es igual a maría

End If
If (m = 10) Or (nombre = "pedro") Then

'el código se ejecutará si por lo menos una variable es correcta
'es decir si por lo menos se cumple una condición

End If


Operadores de comparación

Los operadores de comparación se utilizan para comparar expresiones de cualquier tipo. Los mas importantes son: El operador de igualdad (=), menor que (<), mayor que (>), distinto a(<>)

Ejemplos:


If label1.Caption = "06/08/1978" Then

'si el control label1 en su caption contiene esa fecha
'se ejecutará el código que este aquí

End If
if x > 6 then
'si la variable x es mayor que 6 se ejecutará el código que este aquí
end if
If país <> "Estados unidos" Then
'si la variable país es distinta a "Estados unidos" se ejecutará el código
End If
While c <= 87

'mientras la variable c sea menor o igual a 87 se ejecutará
'el bucle While

Wend


Por último quedaría por ver el operador de concatenación (&) que se utiliza para unir cadenas de caracteres.

Por ejemplo:

nombre = "Jose"
apellido = "Peralta"

nombrecompleto = nombre & apellido

'La variable nombrecompleto pasaría a contener la unión de las otras dos variables
'es decir Jose Peralta


NOTA: Al igual que los tipos de datos hay mas operadores en Visual Basic 6.0, pero estos son los mas basico y que se utilizaran constantemente.

Estructuras de control en Visual Basic 6.0



Las estructuras de control se utilizan para controlar el flujo del programa en una rutina o función. Mediante ellas podemos controlar, mediante una condición, que se ejecute una determinada línea o bloque de líneas de código .. o que no se ejecuten.


Estructura If - Then - Else

Esta estructura permite mediante una condición, que se ejecute o no se ejecute determinada tarea o línea de código.

Por ejemplo supongamos que tenemos en un formulario un control Label con la propiedad Caption con el valor 50

If Label1.Caption = "X" Then
msgbox "mi label tiene un valor de X"
else
msgbox "mi label NO tiene un valor de X"
end if


Esto traducido al español significaría lo siguiente:

Si (If) la propiedad caption del label1 que tengo en el formulario es igual (=) a "X" entonces (Then) que muestre un determinado mensaje, si no (Else) que muestre el otro mensaje.

En conclusión lo que hace esta estructura es evaluar una condición, si se cumple, que se ejecute determinada tarea. si no se cumple, se ejecutará las líneas de código que estén bajo la cláusula Else. Luego tenemos que cerrar la estructura con la palabra end if.

Tenemos que aclarar que no es obligatorio usar If y else juntos en la misma cláusula. Por ejemplo podríamos utilizar solo una estructura If sin else. Por ejemplo:

Private Sub Command1_Click()
'Si la propiedad caption del Label1 es "Hola" entonces se termina el programa
If Label1.Caption = "Hola" Then


End

End If

'Si no, se prosigue con esta línea

MsgBox "No se ejecutó el bloque If Anterior porque el Caption del control Label1 no era Hola"

End Sub



Coloca un Label1 y un Command1. En la propiedad caption del Label1 escribe "Hola". Al ejecutar el programa y presionar el Command1, se termina el programa con la sentencia End de Visual Basic (End sirve para finalizar completamente la ejecución de nuestro programa). En cambio si ahora le cambia el caption al Label1 y volvés a ejecutar el proyecto, podés ver que la instrucción End no se ejecuta, si no que la pasa por alto y sigue con las restantes líneas, en este caso ejecuta la función MsgBox con el mensaje.



Estructura While - Wend

Esta estructura de control repetirá sin detenerse un determinado código mientras se cumpla una condición.

Por ejemplo supongamos que tenemos una variable llamada x que tiene un valor de 100.

while x = 100
...se ejecutan todas las líneas de código que estén aquí
wend



Esto traducido al español significaría lo siguiente:

Mientras (While) la variable x sea igual a 100, y no cambie su valor, se formará un bucle interminable, hasta que x cambie a cualquier otro valor disto de 100. Si x cambia el valor, por ejemplo a 234 saldría del bucle While - wend y seguiría ejecutando el resto del código, si es que hay mas código o instrucciones a ejecutar.

Un ejemplo, agrega un Command1 al formulario y un control Text1. Cuando ejecutemos el ejemplo, se deberá escribir un número dentro del control textBox. Entonces se creará un bucle While, que mostrará en el Caption del formulario, es decir en la barra de título, el intervalo desde 0 hasta el número que hayamos ingresado en el Text1. Es decir si ingresamos el número 9000, en el caption del formulario se imprimirán los número desde 0 hasta 9000.

Para hacer esto, dentro del bucle While pondremos una variable llamada Contador, que en cada pasada se incrementará en 1, pero cuando la variable Contador sea igual al número que haya en el Text1, se finalizará el bucle y se mostrará un mensaje que finalizó el mismo

Private Sub Command1_Click()
Dim contador As Integer 'Declaramos la variable

While contador <> Text1

'Mostramos en el formulario el valor de la variable contador
Me.Caption = contador

'Incrementamos la variable en 1
contador = contador + 1

Wend

MsgBox "Terminó el bucle"

End Sub


Estructura For - next

La estructura es utilizada para generar una repetición de instrucciones o bucle, pero no evalúa una condición como en el caso del bucle While, si no que lo hace entre un número inicial y un número final que le debemos indicar al mismo.

Por ejemplo, tenemos un formulario con un Label1 y declaramos una variable de tipo integer llamada "contador" como en el caso anterior

Private Sub Command1_Click()
Dim contador As Integer

For contador = 0 To 100

Label1.Caption = contador

Next contador

End Sub


Esto traducido significaría lo siguiente:

Primero, tenemos una variable llamada "contador". Mediante el bucle For - next podemos controlar la cantidad de veces que queremos repetir un determinado proceso o instrucción. Esta posee un principio y un fin, en este caso el principio sería 0 y el fin 100, de manera que la variable contador se incrementará en 1 hasta que llegue a 100, y repetirá 100 veces todas las instrucciones que estén bajo la cláusula For-next. En este caso nuestro control Label1 mostraría el contenido de la variable contador

Para ver en forma detallada y paso a paso esto, pongamos un ejemplo que lo que hace es repetir 10 veces (desde el 1 hasta el 10 en el intervalo del bucle For) y mostrará un mensaje con el valor de la variable Contador. Una ves que llegue a 10, terminará.

Colocá un Command1. Doble Click en el botón para escribir dentro del procedimiento que se ejecutará cuando lo presionemos. El código:

Dim contador As Integer

For contador = 1 To 10

MsgBox "La variable Contador vale: " & contador

Next contador

MsgBox "Fin del bucle For"



Estructura Select case

La estructura Select Case se suele utilizar para evitar el uso de muchas cláusulas If y de esta manera no tener que anidarlas. La claúsula Select evalúa una condición y las cláusulas case contienen valores, si el valor que contiene la cláusula case es igual a la condición que se evaluó, ejecutará las instrucciones en dicha cláusula.

Dim Nombre As String

Nombre = Text1

Select Case Nombre

Case "Jorge"

MsgBox "Se ejecutó la cláusula case: " & Nombre
Case "Pedro"

MsgBox "Se ejecutó la cláusula case: " & Nombre

Case "Carolina"

MsgBox "Se ejecutó la cláusula case: " & Nombre

End Select


Esta estructura es muy práctica. En el ejemplo anterior, la cláusula Select case contiene como condición el valor de la variable llamada Nombre. Esa Variable toma el valor que tenga un control Text1, entonces buscará en todas las cláusulas case, y si encuentra una igual a la condición, ejecutará solo las instrucciones de la cláusula case que tenga el mismo valor, por ejemplo si ingresara el nombre "Martín" no se ejecutará ninguna cláusula Case. En cambio si ingreso "Jorge" se ejecutará solo las instrucciones que estén en la sección Case "Jorge" y asi...

En el caso anterior solo hemos colocado un valor para cada Case. Si quisieramos colocar mas valores podríamos hacerlo de esta forma:

Private Sub Form_Load()

Dim x As Integer

x = 10 'Le ponemos un valor a x

Select Case x

Case 5, 10
MsgBox "Se ejecutó el case que tiene el 5 y el 10"
'Se ejecuta esta sección

Case 15, 20
'Esto no se ejecuta
Case 25, 30
'Esto tampoco
End Select

End Sub


es decir que podemos listar los valores en los Case separados por comas. En el caso anterior se ejecutará el case 5, 10 ya que la variable x vale 10.

Constantes en Visual Basic 6.0



Las constantes, como las variables, se utilizan para guardar datos y valores para nuestro programa, pero a diferencia de estas últimas, el contenido que almacenen no cambia, siempre es "constante".

A diferencia de las variables que se declaran con la palabra Dim, las Constantes se declaran con la palabra Const.

Ejemplo:

Const NUMERO = 53

En la línea anterior he creado una constante, que se llama NUMERO y va a almacenar un número , y este valor, cuando se ejecute mi programa se mantendrá invariable.

Otro ejemplo, en el cual se muestra claramente el uso de una constante:

Const PI = 3.1416

Tipos de Datos en Visual Basic 6.0



Los tipos de datos, indican el tipo de valor que puede almacenar una variable. Los principales tipos de datos:

Números enteros: dentro de los números enteros tenemos varios tipos de datos dependiendo el rango que queramos utilizar:

Byte: puede almacenar números enteros dentro del rango desde 0 a 255
Integer: puede almacenar números enteros dentro del rango -32.768 a 32.767
Long: puede almacenar números enteros dentro del rango -2.147.483.648 hasta 2.147.483.648 .
Números decimales: para almacenar números decimales contamos con los siguientes tipos de datos:

Single: almacena números decimales en el rango +/- 1e-45 hasta 3e38
Double: desde +/- 5e-324 hasta 1.8e308
Cadenas de caracteres: las cadenas de caracteres se definen con la palabra String y tienen un rango de hasta 2 billones de caracteres.

Tipos de valores lógicos: para almacenar tipos de valores lógicos como verdadero o falso, se utiliza la palabra Boolean y sus 2 posibles valores son True (verdadero) y False (falso).

Fechas y horas: Para almacenar fechas y horas se utiliza la palabra Date

Tipo variant : Las variables de este tipo pueden almacenar cualquier tipo de valor, pero ocupan mas memoria.

Nota: hay mas tipos de datos, incluso el mismo programador puede crear sus propios tipos.

Tipos de Datos en Visual Basic 6.0



Los tipos de datos, indican el tipo de valor que puede almacenar una variable. Los principales tipos de datos:

Números enteros: dentro de los números enteros tenemos varios tipos de datos dependiendo el rango que queramos utilizar:

Byte: puede almacenar números enteros dentro del rango desde 0 a 255
Integer: puede almacenar números enteros dentro del rango -32.768 a 32.767
Long: puede almacenar números enteros dentro del rango -2.147.483.648 hasta 2.147.483.648 .
Números decimales: para almacenar números decimales contamos con los siguientes tipos de datos:

Single: almacena números decimales en el rango +/- 1e-45 hasta 3e38
Double: desde +/- 5e-324 hasta 1.8e308
Cadenas de caracteres: las cadenas de caracteres se definen con la palabra String y tienen un rango de hasta 2 billones de caracteres.

Tipos de valores lógicos: para almacenar tipos de valores lógicos como verdadero o falso, se utiliza la palabra Boolean y sus 2 posibles valores son True (verdadero) y False (falso).

Fechas y horas: Para almacenar fechas y horas se utiliza la palabra Date

Tipo variant : Las variables de este tipo pueden almacenar cualquier tipo de valor, pero ocupan mas memoria.

Nota: hay mas tipos de datos, incluso nosotros mismos podemos crear lo.

Variables en Visual Basic 6.0



Las variables, como su nombre lo indica, se utilizan para almacenar valores que tienen la propiedad de variar el contenido. Cuando hablamos de contenido nos referimos a cualquier tipo de datos, por ejemplo un nombre, una fecha, un color, un número etc.

A las variables se les asigna un nombre para poder utilizarlas. Por ejemplo puedo crear una variable llamada fecha y esta almacenará una fecha. A los nombres de las variables se los denomina identificadores. Cuando creamos variables, tenemos que tratar de asignarles un nombre que se relacione con el tipo de dato que queremos almacenar. Por ejemplo no tendría mucho sentido crear una variable llamada m y allí guardar o almacenar un nombre o un apellido, por que cuando echemos vista al código resultaría mas difícil deducir que tipo de dato estoy guardando. Por ejemplo en este último caso sería mucho mas lógico crear una variable llamada “nombres” y allí guardar "Luis", "Francisco", "Antonio" etc..

En visual basic a las variables conviene declararlas, o sea, avisarle a vb que vamos a utilizar dichas variables. A estas se las declara en el comienzo del código y se les antepone la palabra reservada Dim, luego el nombre que nosotros queramos y seguido el tipo de dato que almacenará, por ejemplo si quiero almacenar en una variable llamada Numero

Dim NUMERO As Integer


La palabra Integer le avisa a visual basic que voy a guardar un número entero. Después de declararla le podemos asignar un valor con el operador "=", ejemplo:

Dim NUMERO As Integer

NUMERO = 1500

Pero hay que tener en cuenta que al declarar una variable, en este caso, de tipo integer, no podríamos almacenar en ella otro tipo diferente al cual esta declarada como por ejemplo una fecha o cualquier otro tipo de datos que no sea un número entero. Si sucedería esto nuestro programa daría un error en tiempo de ejecución, mostrándonos "no coinciden los tipos de datos".

Programación Orientada a Objetos



Actualmente una de las áreas más candentes en la industria y en el ámbito académico es la orientación a objetos. La orientación a objetos promete mejoras de amplio alcance en la forma de diseño, desarrollo y mantenimiento del software ofreciendo una solución a largo plazo a los problemas y preocupaciones que han existido desde el comienzo en el desarrollo de software: la falta de portabilidad del código y reusabilidad, código que es dificil de modificar, ciclos de desarrollo largos y tecnicas de codificacion no intuituvas.

Un lenguaje orientado a objetos ataca estos problemas. Tiene tres características basicas: debe estar basado en objetos, basado en clases y capaz de tener herencia de clases. Muchos lenguajes cumplen uno o dos de estos puntos; muchos menos cumplen los tres. La barrera más difícil de sortear es usualmente la herencia.

El concepto de programación orientada a objetos (OOP) no es nuevo, lenguajes clásicos como SmallTalk se basan en ella. Dado que la OOP. se basa en la idea natural de la existencia de un mundo lleno de objetos y que la resolución del problema se realiza en términos de objetos, un lenguaje se dice que está basado en objetos si soporta objetos como una característica fundamental del mismo.


El elemento fundamental de la OOP es, como su nombre lo indica, el objeto. Podemos definir un objeto como un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización.

Esta definición especifica varias propiedades importantes de los objetos. En primer lugar, un objeto no es un dato simple, sino que contiene en su interior cierto número de componentes bién estructurados. En segundo lugar, cada objeto no es un ente aislado, sino que forma parte de una organización jerárquica o de otro tipo.

ESTRUCTURA DE UN OBJETO

Un objeto puede considerarse como una especie de cápsula dividida en tres partes:



1 - RELACIONES

2 - PROPIEDADES

3 - METODOS

Cada uno de estos componentes desempeña un papel totalmente independiente:

Las relaciones permiten que el objeto se insterte en la organización y están formadas esencialmente por punteros a otros objetos.

Las propiedades distinguen un objeto determinado de los restantes que forman parte de la misma organización y tiene valores que dependen de la propiedad de que se trate. Las propiedades de un objeto pueden ser heredadas a sus descendientes en la organización.

Los métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarán incorporados en forma de programas (código) que el objeto es capaz de ejecutar y que también pone a disposición de sus descendientes a través de la herencia.

Encapsulamiento y ocultación

Como hemos visto, cada objeto es una estructura compleja en cuyo interior hay datos y programas, todos ellos relacionados entre sí, como si estuvieran encerrados conjuntamente en una cápsula. Esta propiedad (encapsulamiento), es una de las características fundamentales en la OOP.

Los objetos son inaccesibles, e impiden que otros objetos, los usuarios, o incluso los programadores conozcan cómo está distribuída la información o qué información hay disponible. Esta propiedad de los objetos se denomina ocultación de la información.

Esto no quiere decir, sin embargo, que sea imposible conocer lo necesario respecto a un objeto y a lo que contiene. Si así fuera no se podría hacer gran cosa con él. Lo que sucede es que las peticiones de información a un objeto. deben realizarse a través de mensajes dirigidos a él, con la orden de realizar la operación pertinente. La respuesta a estas ordenes será la información requerida, siempre que el objeto considere que quien envía el mensaje está autorizado para obtenerla.

El hecho de que cada objeto sea una cápsula facilita enormemente que un objeto determinado pueda ser transportado a otro punto de la organización, o incluso a otra organización totalmente diferente que precise de él. Si el objeto ha sido bien construído, sus métodos seguirán funcionando en el nuevo entorno sin problemas. Esta cualidad hace que la OOP sea muy apta para la reutilización de programas.

Organización de los objetos

En principio, los objetos forman siempre una organización jerárquica, en el sentido de que ciertos objetos son superiores a otros de cierto modo.

Existen varios tipos tipos de jerarquías: serán simples cuando su estructura pueda ser representada por medio de un "arbol". En otros casos puede ser más compleja.

En cualquier caso, sea la estructura simple o compleja, podrán distinguirse en ella tres niveles de objetos.

-La raíz de la jerarquía. Se trata de un objeto único y especial. Este se caracteríza por estar en el nivel más alto de la estructura y suele recibir un nombre muy genérico, que indica su categoría especial, como por ejemplo objeto madre, Raíz o Entidad.

-Los objetos intermedios. Son aquellos que descienden directamente de la raíz y que a su vez tienen descendientes. Representan conjuntos o clases de objetos, que pueden ser muy generales o muy especializados, según la aplicación. Normalmente reciben nombres genéricos que denotan al conjunto de objetos que representan, por ejemplo, VENTANA, CUENTA, FICHERO. En un conjunto reciben el nombre de clases o tipos si descienden de otra clase o subclase.

-Los objetos terminales. Son todos aquellos que descienden de una clase o subclase y no tienen descendientes. Suelen llamarse casos particulares, instancias o ítems porque representan los elementos del conjunto representado por la clase o subclase a la que pertenecen.

Veamos ahora en detalle los tres elementos mencionados en "Estructura de un Objeto".

1. RELACIONES

Las relaciones entre objetos son, precisamente, los enlaces que permiten a un objeto relacionarse con aquellos que forman parte de la misma organización.

Las hay de dos tipos fundamentales:

-Relaciones jerárquicas. Son esenciales para la existencia misma de la aplicación porque la construyen. Son bidireccionales, es decir, un objeto es padre de otro cuando el primer objeto se encuentra situado inmediatamente encima del segundo en la organización en la que ambos forman parte; asimismo, si un objeto es padre de otro, el segundo es hijo del primero (en la fig. 2, B es padre de D,E y F, es decir, D,E y F son hijos de B; en la fig. 3, los objetos B y C son padres de F, que a su vez es hijo de ambos).

Una organización jerárquica simple puede definirse como aquella en la que un objeto puede tener un solo padre, mientras que en una organizacion jerárquica compleja un hijo puede tener varios padres).

-Relaciones semánticas. Se refieren a las relaciones que no tienen nada que ver con la organización de la que forman parte los objetos que las establecen. Sus propiedades y consecuencia solo dependen de los objetos en sí mismos (de su significado) y no de su posición en la organización.

Se puede ver mejor con un ejemplo: supongamos que vamos a construir un diccionario informatizado que permita al usuario obtener la definición de una palabra cualquiera. Supongamos que, en dicho diccionario, las palabras son objetos y que la organización jerárquica es la que proviene de forma natural de la estructura de nuestros conocimientos sobre el mundo.

La raíz del diccionario podría llamarse TEMAS. De éste término genérico descenderán tres grandes ramas de objetos llamadas VIDA, MUNDO y HOMBRE. El primero (vida) comprenderá las ciencias biológicas: Biología y Medicina. El segundo (mundo), las ciencias de la naturaleza inerte: las Matemáticas, la Física, la Química y la Geología. El tercero (hombre) comprenderá las ciencias humanas: la Geografía, la Historia, etc.

Veamos un ejemplo: estableceremos la relación trabajo entre los objetos NEWTON y OPTICA y la interpretaremos diciendo que significa que Newton trabajó en óptica (véase la fig. 4). La relación es, evidentemente, semántica, pués no establece ninguna connotación jerárquica entre NEWTON y OPTICA y su interpretación depende exclusivamente del significado de ambos objetos.

La existencia de esta relación nos permitirá responder a preguntas como:

¿Quién trabajó en óptica?

¿En qué trabajó Newton?

¿Quien trabajó en Física?

Las dos primeras se deducen inmediatamente de la existencia de la relación trabajo. Para la tercera observamos que si Newton trabajó en óptica automáticamente sabemos que trabajó en Física, por ser óptica una rama de la Física (en nuestro diccionario, el objeto OPTICA es hijo del objeto FISICA). Entonces gracias a la OOP podemos responder a la tercera pregunta sin necesidad de establecer una relación entre NEWTON y FISICA, apoyandonos sólo en la relación definida entre NEWTON y OPTICA y en que OPTICA es hijo de FISICA. De este modo se elimina toda redundancia innecesaria y la cantidad de información que tendremos que definir para todo el diccionario será mínima.

2. PROPIEDADES

Todo objeto puede tener cierto número de propiedades, cada una de las cuales tendrá, a su vez, uno o varios valores. En OOP, las propiedades corresponden a las clásicas "variables" de la programación estructurada. Son, por lo tanto, datos encapsulados dentro del objeto, junto con los métodos (programas) y las relaciones (punteros a otros objetos). Las propiedades de un objeto pueden tener un valor único o pueden contener un conjunto de valores mas o menos estructurados (matrices, vectores, listas, etc.). Además, los valores pueden ser de cualquier tipo (numérico, alfabético, etc.) si el sistema de programación lo permite.

Pero existe una diferencia con las "variables", y es que las propiedades se pueden heredar de unos objetos a otros. En consecuencia, un objeto puede tener una propiedad de maneras diferentes:

-Propiedades propias. Están formadas dentro de la cápsula del objeto.

-Propiedades heredadas. Estan definidas en un objeto diferente, antepasado de éste (padre,"abuelo", etc.). A veces estas propiedades se llaman propiedades miembro porque el objeto las posee por el mero hecho de ser miembro de una clase.


3. METODOS

Una operación que realiza acceso a los datos. Podemos definir método como un programa procedimental o procedural escrito en cualquier lenguaje, que está asociado a un objeto determinado y cuya ejecución sólo puede desencadenarse a través de un mensaje recibido por éste o por sus descendientes.

Son sinónimos de 'método' todos aquellos términos que se han aplicado tradicionalmente a los programas, como procedimiento, función, rutina, etc. Sin embargo, es conveniente utilizar el término 'método' para que se distingan claramente las propiedades especiales que adquiere un programa en el entorno OOP, que afectan fundamentalmente a la forma de invocarlo (únicamente a través de un mensaje) y a su campo de acción, limitado a un objeto y a sus descendientes, aunque posiblemente no a todos.

Si los métodos son programas, se deduce que podrían tener argumentos, o parámetros. Puesto que los métodos pueden heredarse de unos objetos a otros, un objeto puede disponer de un método de dos maneras diferentes:

-Métodos propios. Están incluídos dentro de la cápsula del objeto.

-Métodos heredados. Estan definidos en un objeto diferente, antepasado de éste (padre,"abuelo", etc.). A veces estos métodos se llaman métodos miembro porque el objeto los posee por el mero hecho de ser miembro de una clase.

Polimorfísmo

Una de las características fundamentales de la OOP es el polimorfísmo, que no es otra cosa que la posibilidad de construir varios métodos con el mismo nombre, pero con relación a la clase a la que pertenece cada uno, con comportamientos diferentes. Esto conlleva la habilidad de enviar un mismo mensaje a objetos de clases diferentes. Estos objetos recibirían el mismo mensaje global pero responderían a él de formas diferentes; por ejemplo, un mensaje "+" a un objeto ENTERO significaría suma, mientras que para un objeto STRING significaría concatenación ("pegar" strings uno seguido al otro)

Demonios

Es un tipo especial de métodos, relativamente poco frecuente en los sistemas de OOP, que se activa automáticamente cuando sucede algo especial. Es decir, es un programa, como los métodos ordinarios, pero se diferencia de estos porque su ejecución no se activa con un mensaje, sino que se desencadena autmáticamente cuando ocurre un suceso determinado: la asignación de un valor a una propiedad de un objeto, la lectura de un valor determinado, etc.

Los demonios, cuando existen, se diferencian de otros métodos por que no son heredables y porque a veces están ligados a una de las propiedades de un objeto, mas que al objeto entero.

CONSIDERACIONES FINALES

Beneficios que se obtienen del desarrollo con OOP

Día a día los costos del Hardware decrecen. Así surgen nuevas áreas de aplicación cotidianamente: procesamiento de imágenes y sonido, bases de datos multimediales, automatización de oficinas, ambientes de ingeniería de software, etc. Aún en las aplicaciones tradicionales encontramos que definir interfases hombre-máquina "a-la-Windows" suele ser bastante conveniente.

Lamentablemente, los costos de producción de software siguen aumentando; el mantenimiento y la modificación de sistemas complejos suele ser una tarea trabajosa; cada aplicación, (aunque tenga aspectos similares a otra) suele encararse como un proyecto nuevo, etc.

Todos estos problemas aún no han sido solucionados en forma completa. Pero como los objetos son portables (teóricamente) mientras que la herencia permite la reusabilidad del código orientado a objetos, es más sencillo modificar código existente porque los objetos no interaccionan excepto a través de mensajes; en consecuencia un cambio en la codificación de un objeto no afectará la operación con otro objeto siempre que los métodos respectivos permanezcan intactos. La introducción de tecnología de objetos como una herramienta concepual para analizar, diseñar e implementar aplicaciones permite obtener aplicaciones más modificables, fácilmente extendibles y a partir de componentes reusables. Esta reusabilidad del código disminuye el tiempo que se utiliza en el desarrollo y hace que el desarrollo del software sea mas intuitivo porque la gente piensa naturalmente en términos de objetos más que en términos de algoritmos de software.

Problemas derivados de la utilización de OOP en la actualidad

Un sistema orientado a objetos, por lo visto, puede parecer un paraíso virtual. El problema sin embargo surge en la implementación de tal sistema. Muchas compañías oyen acerca de los beneficios de un sistema orientado a objetos e invierten gran cantidad de recursos luego comienzan a darse cuenta que han impuesto una nueva cultura que es ajena a los programadores actuales. Específicamente los siguientes temas suelen aparecer repetidamente:

Curvas de aprendizaje largas. Un sistema orientado a objetos ve al mundo en una forma única. Involucra la conceptualización de todos los elementos de un programa, desde subsistemas a los datos, en la forma de objetos. Toda la comunicación entre los objetos debe realizarse en la forma de mensajes. Esta no es la forma en que están escritos los programas orientados a objetos actualmente; al hacer la transición a un sistema orientado a objetos la mayoría de los programadores deben capacitarse nuevamente antes de poder usarlo.

Dependencia del lenguaje. A pesar de la portabilidad conceptual de los objetos en un sistema orientado a objetos, en la práctica existen muchas dependencias. Muchos lenguajes orientados a objetos están compitiendo actualmente para dominar el mercado. Cambiar el lenguaje de implementación de un sistema orientado a objetos no es una tarea sencilla; por ejemplo C++ soporta el concepto de herencia multiple mientras que SmallTalk no lo soporta; en consecuencia la elección de un lenguaje tiene ramificaciones de diseño muy importamtes.

Determinacion de las clases. Una clase es un molde que se utiliza para crear nuevos objetos. En consecuencia es importante crear el conjunto de clases adecuado para un proyecto. Desafortunadamente la definición de las clases es más un arte que una ciencia. Si bien hay muchas jerarquías de clase predefinidas usualmente se deben crear clases específicas para la aplicación que se este desarrollando. Luego, en 6 meses ó 1 año se da cuenta que las clases que se establecieron no son posibles; en ese caso será necesario reestructurar la jerarquía de clases devastando totalmente la planificación original.

Performance. En un sistema donde todo es un objeto y toda interaccion es a través de mensajes, el tráfico de mensajes afecta la performance. A medida que la tecnología avanza y la velocidad de microprocesamiento, potencia y tamaño de la memoria aumentan, la situacion mejorará; pero en la situación actual, un diseño de una aplicación orientada a objetos que no tiene en cuenta la performance no será viable comercialmente.


Idealmente, habría una forma de atacar estos problemas eficientemente al mismo tiempo que se obtienen los beneficios del desarrollo de una estrategia orientada a objetos. Deberia existir una metodología fácil de aprender e independiente del lenguaje, y facil de reestructurar que no drene la performance del sistema .

miércoles, 3 de septiembre de 2008

Consejos para una buena programacion en Visual Basic 6.0



1. Requerir declaración de variables.

Esto es sumamente importante por que una de las caracteristicas del lenguaje es que se puedes utiliza variables sin ser declaradas, Visual Basic crea automáticamente una variable con ese nombre que se este utilizando, que puede usar como si la hubiera declarado explícitamente. Aunque es cómodo, puede provocar errores sutiles en el código si se equivoca de nombre de variable. un ejemplo en donde se puede obtener problemas:

Function SafeSqr(num)
TempVal = Abs(num)
SafeSqr = Sqr(TemVal)
End Function

A primera vista, parece igual. Pero como se ha escrito erróneamente la variable TempVal en la tercera línea, la función devolverá siempre cero. Cuando Visual Basic encuentra un nombre nuevo, no puede averiguar si realmente desea declarar una variable nueva o simplemente ha escrito de forma errónea una variable existente, por lo que crea una variable nueva con ese nombre.

Para requerir la declaración de variables

Haga click en el menú “Herramientas” > “Opciones” en el cuadro de dialogo que se muestra has click en la casilla de verificación “Requerir declaración de variables” que se encuentra en la pestaña “Editor”

Al hacer esto aparece en el editor de código (En la parte superior) Option Explicit.

Para que VB detecte el error y otros mas, ejecuta el programa presionando Ctrl + F5 que es “Iniciar con compilación completa”

Para que siempre que ejecutes un programa lo haga con compilación completa dale click a la pestaña “General” del cuadro “opciones” (del menú herramientas) y desactiva la casilla “Compilar a petición” con esto VB analizara el código antes de la ejecución y mostrara los errores. Una ves desactivada “Compilar a petición” se puede ejecutar el programa con F5 o haciendo click en “El play”.

2. Escribir la variables y nombre de controles con mayúsculas y minúsculas

si vas ha usar una variable por ejemplo VariableNumero escríbela así con la V mayúscula y la N mayúscula a esto se le conoce como notacion camello, y cuando codifiques si lo hacen en minuscula y escribes el nombre de la variable y al salir de la lines editada automaticamente te lo convertira en el nombre de la variable como la declaraste y de podras dar cuenta si la escribiste bien o no.

ademas de esto al ponerle nombre a los controles que estes utilizando, debes hacer un habito de ponerle un identificador del tipo de control al que pertenece, por ejemplo:

txt = Textbox
btn = Botón de comando
lb = Label
Ptb = PictureBox
Frm = Forms
Opt = Option
Etc...

3. Para largas horas de trabajo configura el editor.

si vas a estar mucho tiempo en el pc, programando claro esta puedes configurar el editor, y ponerle los colores que sean de tu agrado esto con el fin de que no se cansen tu ojos o proboquen algun tipo de malestar visual. para hacer esto lo puedes hacer en:

has click en HERRAMIENTAS > OPCIONES y en el cuadro que se muestra, dale click en la pestaña FORMATO DE EDITOR allí encontraras una lista de las opciones a configurar y abajo los colores. Para cambiar el fondo debes configurarlo como mínimo en 3 opciones 1º en TEXTO NORMAL , 2º TEXTO DE PALABRAS CLAVES y 3º TEXTO IDENTIFICADOR cambia también el color de las letras allí.


4. Definir el tipo y ámbito de una variable

Una variable tiene un tipo ya sea Integer, double etc... y un ámbito public, static, private, dim se recomienda analizar primero para que va ha ser utilizada la variable y donde se va usar. Ejemplo:

esto es para decalarar una variable del tipo en que se balla a utilizar, por ejemplo

Dim Resultado As Double

si lo voy a utlizar en gran parte del sistema, se puede agregar un modulo y ahi declarar la variable, pero de esta forma:

Public Resultado As Double

en caso de que se utilice para un procedimiento local, se puede declarar como:

Dim Resultado As Double

Novedades en el lenguaje Visual Basic 6.0



El núcleo principal del lenguaje Visual Basic a sufrido algunas novedades. Para una mejor lectura y una mejor comprensión vamos a proceder a dividirlos en dos subgrupos: el primero de ellos será el de las novedades del lenguaje en sí mismas y el segundo las novedades en lo referente a funciones de cadena.

Dichas modificaciones o ampliaciones corresponden al núcleo del lenguaje y por consiguiente van a ser aplicables a todas las ediciones de Visual Basic 6.0. Una de las novedades es que ahora las funciones y los diferentes procedimientos de propiedades van a ser capaces de devolver arrays.

En todas las ediciones se ofrecen unos objetos de sistema llamados File System Object.

I Drive: objeto que permite obtener más información sobre las distintas unidades de disco que posee el sistema, información tal como, por ejemplo, su nombre de recurso compartido o el espacio. No es necesario que estén conectadas al sistema las unidades de las cuales vamos a obtener información, es decir, puede, por ejemplo accederse a ellas desde una red de área local. Además las unidades pueden ser también de CD-ROM, disco RAM, etc.

I Fólder: dicho objeto permite crear, borrar y mover carpetas, así como requerir ala sistema información diversa sobre los directorios.

I FileSystemObject: el principal objeto de todo el grupo y es el que nos proporciona acceso al sistema de ficheros del ordenador.

I TextStream: objeto que permitirá leer y escribir fichero de texto.

La función CallByName permitirá acceder a una determinada propiedad o método especificando una cadena que contenga el nombre de la propiedad o el método.

Otra novedad disponible en todas las versiones es que ahora con la función CreateObject, la cual nos permitía crear una referencia a un objeto Actives, podremos especificar entre sus argumentos si lo deseamos, un nombre de máquina para así crear objetos en máquinas remotas.

La función StrConv ha sido convenientemente ampliada y ahora tiene un argumento opcional: StrConv (string, conversión, LCID) Dicho argumento permite especificar un identificador de localización distinto al identificador establecido por defecto que en este caso sería el del sistema.


NUEVAS FUNCIONES DE CADENA:


Han sido añadidas a un total de catorce nuevas funciones, en todas las versiones del lenguaje, para ampliar su funcionalidad, estas de verdad son muy utiles en lo personal las utilizo mucho.

WeekDayName: esta función devolverá una cadena indicando un determinado día de la semana.

Split: retornará un array unidimensional que contendrá un determinado número de subcadenas.

Round: devolverá un número redondeado.

Replace: devuelve una cadena en la que se ha reemplazado una determinada subcadena por otra subcadena un determinado número de veces.

I MonthName: esta función retornará una cadena indicando un mes determinado del año.

FormatPercent: devuelve una expresión convenientemente formateada como un porcentaje, es decir, multiplicada por cien con el carácter de porcentaje (%).

FormatNumber: devuelve una expresión formateada como un número.

FormatDateTime: devolverá una expresión convenientemente formateada como una fecha o bien como una hora.