Tipos de datos: Modos en los que se puede almacenar y operar con información. .NET FrameWork contiene los tipos de datos básicos, por lo que independientemente del lenguaje de programación y la plataforma de destino siempre están los mismos. Por compatibilidad con versiones anteriores podemos utilizar tipos de datos que no aparecen por defecto en el entorno de Visual Studio (por ejemplo DateTime no es un tipo que te muestre el diseñador ya que nos muestra date, pero en cambio si lo escribimos no da error y nos deja operar con el) Los tipos de datos numéricos los utilizamos para trabajar con números. Se diferencian los números enteros (no tienen decimales), de los decimales. De los tipos enteros destacar que el tipo de datos Integer ha pasado de utilizar 16 bits para almacenar la información a 32, por lo que admite desde 0 – 4.294.967.296 en vez del rango 0-65.536 de versiones anteriores Programación ASP .NET Ver 4.0 Sep 09
Los tipos de datos decimales tienen una mayor precisión que los enteros al poder almacenar valores decimales. El rango de datos que soporta Double es –1,79769313486231570E+308 a –4,94065645841246544E-324 El rango más grande lo almacena el tipo Decimal, +/-7.9228162514264337593543950335E+28 y el valor más pequeño distinto de cero es +/-0.0000000000000000000000000001 (+/-1E-28). El tipo boolean se utiliza para almacenar verdadero/falso, se utiliza principalmente para guardar información de control y realizar acciones en el programa según el estado de ese valor Programación ASP .NET Ver 4.0 Sep 09
A la hora de almacenar fechas y horas podemos almacenarlos tanto en tipos de datos para caracteres, como los específicos de fecha y hora. La diferencia principal viene a la hora de operar con ellos, ya que los tipos de datos para caracteres los tenemos que convertir a fecha para poder comparar fechas, añadir o restar días, meses o años a las fechas La principal diferencia entre el tipo Char y Srtring es el tamaño de la información que contienen, ya que el primero solo sirve para almacenar una letra mientras que el segundo permite guardar cadenas de texto Programación ASP .NET Ver 4.0 Sep 09
Desaparece el tipo de datos String de longitud fija (siempre ocupa lo mismo independientemente que tenga valor en toda su longitud). Podemos simularlo creando una variable que sea de tipo de datos string e iniciándola (rellenando inicialmente) del número de espacios en blanco que queramos Una ampliación del tipo de datos String es la clase StringBuilder (constructor de cadenas de texto), dispone de una serie de métodos para construir, concatenar y modificar textos. En el ejemplo se crea una variable de nombre S, a la que se le va añadiendo texto utilizando el método append. El resultado final se escribe en una ventana de mensaje y sería “Esto es una prueba” Programación ASP .NET Ver 4.0 Sep 09
Esta tabla representa la variación de los tipos de datos entre las versiones anteriores a .NET y .NET En algunos casos cambio el tamaño de almacenamiento, con la consiguiente ampliación de datos que pueden contener, en otros se crean nuevos tipos o se descartan algunos como el string de longitud fija que ahora no existe Programación ASP .NET Ver 4.0 Sep 09
En muchas ocasiones es necesario convertir variables definidas de un tipo de datos a otro para poder operar con ellas de forma correcta. .NET contiene una herramienta para convertir una expresión ( una variable, un objeto, un valor) en un tipo distinto. Heredado de las versiones anteriores podemos utilizar funciones especificas para convertir una variable en un tipo en concreto. En el ejemplo la variable X se define del tipo string, se le asigna el valor “34” (al ir entre comillas dobles se considera un texto) y posteriormente se convierte al tipo de datos numérico Integer, almacenando el resultado en la variable Y. Existe la conversión implícita entre tipos de datos, de tal manera que podemos convertir una variable de un tipo a otro sin necesidad de utilizar ninguna función de conversión. Programación ASP .NET Ver 4.0 Sep 09
Al definir una variable estamos creando un espacio donde albergar información. Según el tipo de datos que hayamos utilizado a la hora de crear esa variable, esa zona de memoria podrá contener una información u otra. Por defecto, Visual Studio está configurado para que tengamos que definir todas las variables antes de poder usarlas Podemos hacer en un solo paso, definir la variable y asignarle un valor inicial. Si no le asignamos ningún valor manualmente, la variable contiene el valor por defecto del tipo de datos con el que lo hayamos definido A la hora de definir variables del mismo tipo, no es necesario utilizar una línea para cada una, podemos agruparlas detrás del mismo DIM. Todas las variables se definen a la vez. Este sistema no permite inicializarlas a la vez que las definimos Programación ASP .NET Ver 4.0 Sep 09
Asignar valores a una variable consiste en rellenarlas con algún dato Esta asignación se puede hacer en el momento de la definición o posteriormente en el programa A una variable le podemos asignar directamente un valor, otra variable o el resultado de una función Cuando le asignamos un valor, si es tipo texto tiene que ir entre comillas “” y cuando es una fecha entre almohadillas # Cuando le asignamos otra variable, toma el valor de la nueva variable, teniendo ahora dos variables con el mismo valor Cuando le asignamos el resultado de una función tenemos que asegurarnos que el tipo de datos devuelto por la función y el de la variables son iguales o que .NET intentará hacer una conversión. Ejemplo: Dim d as string= today().date. La función Today() devuelve la fecha actual y al almacenar esa fecha en una variable tipo string .NET transforma la fecha en texto Programación ASP .NET Ver 4.0 Sep 09
Un vector es una lista de variables del mismo tipo, donde cada una tiene un índice que la distingue del resto. A la hora de definir un vector podemos indicarle el tamaño y el tipo de las variables que contiene o indicarse solo el tipo e inicializarlo con un conjunto de valores. NO podemos indicarle un tamaño e inicializarlo a la vez, son formas excluyentes de crear un vector, o indicas el tamaño o lo inicializas con valores El método Sort de un vector permite ordenar de forma automática los valores. Podemos escribirlo de dos maneras, con el nombre de la variable o con el tipo genérico ARRAY Al ser variables más complejas tenemos métodos definidos para realizar tareas como copiar el contenido de uno a otro o calcular la longitud Si tenemos que cambiar la longitud del vector (el número de valores que puede contener) tenemos la función REDIM ( redimensionar), pero es importante entender que se perderá toda la información, ya que lo vuelve a crear, salvo que utilicemos REDIM PRESERVE (redimensionar conservando los datos) Programación ASP .NET Ver 4.0 Sep 09
Los vectores multimensionales son una ampliación de los vectores normales y se utilizan normalmente para crear tablas en memoria Además de indicar el tipo, tenemos que indicar la longitud de cada uno de sus “lados”. Podemos hacer igual que en los anteriores indicar la longitud inicializándolo con una lista de valores En cuanto a operar con vectores multidimensionales es muy similar a los unidimensionales, aunque por la complejidad algunas funcionalidades como la ordenación con el método Sort no se pueden utilizar Programación ASP .NET Ver 4.0 Sep 09
El concepto de ámbito, es la zona del programa donde podemos utilizar esa variable. Normalmente el ámbito está reducido al procedimiento o la función y dentro de esa estructura a bucles o sentencias de control En el ejemplo del Bucle, la variable imax está definida dentro del bucle For...Next, por lo que solo estará disponible ahí dentro. Fuera de ese punto no podemos utilizarla Programación ASP .NET Ver 4.0 Sep 09
Podemos configurar Visual Studio para que tenga un comportamiento determinado a la hora de definir, inicializar y comparar las variables Explicit, si está activo tenemos que declarar todas las variables antes de asignarles cualquier valor. Es muy recomendable para evitar errores de sintaxis, aunque hay que añadir más código con la definición. El valor por defecto de esta opción es Activo Strict, si está activo no permite conversiones implícitas entre variables de distintos tipos. Tendremos que utilizar funciones de conversión para poder asignar valores de tipos distintos. El valor por defecto de esta opción es Desactivado Compare, podemos definir si queremos que distinga entre mayúsculas y minúsculas. El valor por defecto de esta opción es Text Programación ASP .NET Ver 4.0 Sep 09
Por sentencias de control, se entiende al código necesario para que el programa tenga un comportamiento distinto según unos parámetros (valores de controles, valor de variables,…) Tenemos dos familias de sentencias de control Selectivas. Dependiendo de la evaluación de una condición ejecuta una acción u otra. Dentro de esta categoría tenemos la estructura IF y la estructura SELECT Bucles. Repiten una acción un número determinado de veces o hasta que se cumpla una condición o mientras que se cumpla esa condición. Programación ASP .NET Ver 4.0 Sep 09
IF evalúa una condición y permite bifurcar el código en dos direcciones, por un lado en el caso de que la condición sea cierta o que la condición sea falsa La condición puede ser simple o compleja. En el caso de que sea simple, evalúa un solo elemento y el complejo podemos añadir varias condiciones unidas por los operadores lógicos AND y OR. Un caso especial de operador lógicos son ANDAlso y ORelse. Con estos operadores, solo evalúa la segunda condición si la primera es cierta o falsa respectivamente. Select Case es una ampliación del caso anterior. Podemos querer que el programa se comporte de varias formas en función del valor de una expresión. Si podemos tener más de dos opciones podemos solucionarlo fácilmente con Select Case. El funcionamiento cambia un poco respecto a IF. En este caso tenemos una expresión (variable, función…) que va a poder tomar varios valores. Podemos especificar qué hacer para cada uno de esos valores (en cada case) y un último caso (Else) que determina el comportamiento para todos los casos no especificados anteriormente Programación ASP .NET Ver 4.0 Sep 09
For … Next. Las instrucciones de código que están entre estas dos etiquetas se van a repetir un número fijo de veces o iteraciones. Este número viene determinado por un valor inicial hasta un valor final. Si no se especifica nada, el contador va aumentando de uno en uno, aunque se puede modificar utilizando el modificador STEP. Este modificador permite determinar en qué número que tiene que incrementarse o decrementarse el contador. For Each … Next . Se utiliza para recorrer listas. No se basa en un contador, sino que ejecuta las instrucciones entre las etiquetas, tantas veces como elementos haya en la lista. While expresión… end while . Se ejecutan las instrucciones entre estas etiquetas mientras que la expresión sea cierta. No tiene que ver con un número fijo de veces ni con una lista, sino solo con una condión. Esta condición sule basarse en el valor de una variable que se actualiza dentro del bucle. Podemos hacer que tenga el mismo comportamiento que un bucle for utilizando una variable contador Do ….while expresión/do until expresión, Loop ….while expresión. Son similares que el caso anterior. En el primer caso se entra dentro del bucle si la expresión se cumple y en el segundo si no se cumple Para todos estas estructuras podemos utilizar el generador automático de código que viene con el visual studio. Facilita la codificación ya que genera automáticamente el código para la estructura, teniendo nosostros que rellenar las expresiones y el código a ejecutar. Programación ASP .NET Ver 4.0 Sep 09
Las estructuras permiten definir a los usuarios elementos para almacenar información formados por variables de diferentes tipos. No llega a la complejidad de un objeto, ya que no podemos programar el comportamiento, solo permite contener información que nosotros podemos asignar o leer. En el ejemplo se crea una estructura de nombre Cliente que esta formado por tres valores. El primero es un identificador de tipo texto, el segundo el teléfono de tipo texto y el tercero el teléfono de noches también de tipo texto. Una vez definida la estructura podemos empezar a utilizarla creando variables que tengan como tipo la estructura creada. Estas variables pueden ser simples o compuestas como los vectores Tanto para asignar un valor a un elemento o para leer el valor de un elemento de la estructura tenemos que utilizar la sintaxis “nombrevariable” . ”nombreelemento” , no podemos indicar únicamente el nombre de la variable ya que al tener varios campos no sabe a cual queremos asignar un valor o leer. Para simplificar el acceso a estos campos internos, utilizamos la sentencia With. Cuando le indicamos al With con qué variable queremos trabajar ya podemos acceder a cada uno de los campos directamente sin necesidad de volver a indicar el nombre de la variable. Este acceso lo podemos hacer así entre las etiquetas With y End With Programación ASP .NET Ver 4.0 Sep 09
Las enumeraciones se utilizan para facilitar la programación asignando valores numéricos a textos, de tal manera que no tenemos que utilizar los códigos sino los nombres. Otra ventaja de las enumeraciones es que evita el cometer errores a la hora de asignar valores, ya que conforme estamos programando nos permite utilizar solo los valores asignados para esa numeración La forma de trabajar con las enumeraciones es similar a las estructuras, primero definimos la enumeración y después podemos utilizarla en variables definidas de ese tipo o de tipo numérico Dispone de una serie de métodos para obtener automáticamente todos los valores o nombres de la enumeración o de uno solo en concreto Programación ASP .NET Ver 4.0 Sep 09
Las funciones y los procedimientos ayudan a estructurar y reutilizar el código, ganando tiempo y evitando errores de programación La base del código estructurado es encapsular funcionalidad dentro de una función o procedimiento de tal manera que lo podamos llamar desde cualquier parte del código sin necesidad de saber cual es su comportamiento interno Programación ASP .NET Ver 4.0 Sep 09
Las funciones y los métodos están siempre dentro de una clase. Podemos utilizarlos tanto en ficheros de código asociados a formularios o páginas web como en librerías de clases La principal diferencia entre las funciones y los procedimientos es que las primeras siempre tienen que devolver un valor del tipo que consta en su definición y los segundos solo pueden devolver datos modificando los variables de entrada o parámetros Para utilizar una función o un parámetro desde el programa, solo es necesario indicar el nombre y especificar los parámetros necesarios, según se hayan definido Programación ASP .NET Ver 4.0 Sep 09
Cuando definimos una función, podemos utilizar valores que vengan desde el exterior, para realizar las operaciones dentro. Estos valores que se pasan desde el exterior se llaman parámetros. En el proceso de definición podemos determinar si queremos que esos valores del exterior puedan modificarse dentro pero que no se modifiquen en el exterior (Byval) o que si se modifican dentro, también cambien en el exterior(Byref) Podemos tener una serie de valores predeterminados para los parámetros de tal manera que si cuando se llama desde el código a la función, no se especifican, se utilicen los valores por defecto previamente definidos. Para que este caso funcionen, se tienen que definir los parámetros como Optional Programación ASP .NET Ver 4.0 Sep 09
Los procedimientos solo pueden devolver valores (sacar fuera del procedimiento un valor) modificando los parámetros que estén definidos como ByRef Las funciones, obligatoriamente tienen que devolver un valor del tipo especificado en la definición (En el ejemplo As string) La forma de devolver un valor de una función es asignándoselo al nombre de la función o utilizando la palabra reservada Return Programación ASP .NET Ver 4.0 Sep 09
La programación orientada a objetos se basa en un análisis del problema que queremos solucionar, enfocándolo a los elementos que participan en cada tarea. Vamos a programar tanto las características que tienen como las funcionalidades en las Clases para crear posteriormente los objetos
Las clases son el elemento donde vamos a definir todas las características y funcionalidades de los objetos. Estas clases las escribimos en los archivos con extensión .vb o .cs según el lenguaje que utilicemos para programar. El fichero que contiene la clase no tiene porqué tener el mismo nombre, aunque es recomendable para facilitarnos el trabajo en proyectos pequeños. Un mismo fichero puede contener varias clases que tienen cada una un nombre distinto. En una clase puede contener cuatro tipos distintos de código Constructores, son funciones donde se define como se van a crear los objetos. Una clase puede tener varios constructores, por ejemplo uno para crear un objeto vacio y otro para crear un objeto con unos valores predeterminados. Destructores, son funciones donde definimos que hacer al eliminar un objeto. Si no tiene que realizar ninguna tarea especial, normalmente no se programa. Propiedades, definimos las características del objeto. Van a contener la información del objeto. Métodos, programamos el comportamiento del objeto, respondemos a la pregunta ¿qué podemos hacer?
Un concepto que utilizamos cuando definimos un método, propiedad o función dentro de una clase es desde donde se puede acceder a ese elemento. Los modificadores de acceso más usuales son Public y Private. Public lo utilizamos cuando queremos que se pueda acceder desde cualquier parte del código, por ejemplo otra clase, otro proyecto que este relacionado Private es lo contrario, solo queremos que se pueda acceder desde dentro de la clase que estamos programando. Esto se utiliza para variables internas o procesos internos que no tienen relevancia para utilizar el objeto desde otras partes del código
Métodos Un método contiene el código necesario para que el objeto realice una función. Por ejemplo si tenemos el objeto carrito de la compra, un método sería añadir nueva compra A la hora de definirlo podemos utilizar tanto funciones como procedimientos, utilizando tantos parámetros como sean necesarios Propiedades Definimos las propiedades para contener valores, siguiendo con el ejemplo de antes, el objeto carrito de la compra una propiedad sería el número de artículos Las propiedades tienen dos apartados distintos, en uno programamos que hacer cuando desde el código se quiere leer la propiedad y en el otro que hacer cuando se quiere escribir un valor en la propiedad. Estos dos pasos se establecen en Get y Set
Podemos indicar cuando definimos las propiedades si son sólo de lectura o sólo de escritura. Si son solo de lectura (ReadOnly), el valor se asigna en el momento de creación del objeto y a partir de ese momento solo se puede leer Si son solo de escritura (WriteOnly), podemos asignar un valor pero no lo podemos leer.
Se utilizan normalmente para poder utilizar el mismo nombre de función pero con parámetros distintos. Facilita el uso de estos objetos, ya que no necesitamos utilizar una función con distinto nombre que haga lo mismo que otra si sólo cambia el tipo o el número de los parámetros En el ejemplo se crean dos funciones que muestran un texto distinto y devuelven un texto o un número en función de que se utilice con números enteros o con letras
Los constructores son un tipo especial de función, que se utiliza para crear los objetos. El nombre NEW es el que se utiliza para los constructores. Cada objeto puede tener varios constructores, pero tal como hemos visto anteriormente, el tipo o el número de parámetros tiene que ser distinto. Por ejemplo, podemos tener un constructor sin parámetros que devuelve un objeto empresa vacio, y otro que se le pasa por parámetro el código de empresa y devuelve un objeto empresa con sus datos cargados
Podemos crear un método Finalice() que se ejecutará cuando el objeto se destruya, bien por que lo hemos hecho manualmente o bien por que ha sido destruido por Garbage colection. La ejecución de este código no suele ser inmediata a la destrucción del objeto en este último caso, ya que el servidor lo ejecuta cuando le llega el turno de ejecución en la pila de procesos
Una vez definido el objeto en la clase con sus propiedades, métodos, constructores y destructores es cuando lo podemos utilizar en el resto del código. El proceso de definir un objeto es similar al de la variables. Utilizamos la palabra clave DIM, el nombre del objeto y el tipo de objeto que vamos a utilizar Una vez definido tenemos que crearlo o instanciarlo utilizando el constructor New Podemos realizar el proceso de definición e instanciación en la misma sentencia, reduciendo el código de la aplicación
La verdadera potencia de los objetos es la herencia. Entendemos como herencia la creación de clases que basándose en una ya existente, amplia su funcionalidad. En una clase derivada podemos utilizar las prop