Aprendiendo .NET Tutorial PARTE 4

Escrito por George POLIOVEI el Viernes 05 de Diciembre de 2008 a las 14:00hs

Sube Tu Queja

Bueno ahora que ya conocemos el funcionamiento de las primeras herramientas es hora de hablar un poquito de C#

NOTA: el presente tema puede llegar a ser incomprensible para aquellos que se estén iniciando en el tema, pero no es motivo de preocupación ya que es simplemente un vistazo a grandes rasgos, pretendemos llamar la atención de aquellos miembros de nuestra comunidad que ya tengan conocimientos de programación, así que aquellos miembros o futuros miembros de nuestra comunidad, a no decepcionarse si no comprenden algo todos estos temas y muchos más que faltan los veremos en detalle más adelante.

FUNDAMENTOS

Creo que ya todos conocen lo que es un lenguaje de programación, así que me gustaría fundamentar un poco la opción que estamos tratando.

Desde hace mucho tiempo la comunidad de programadores prefirió el uso de los lenguajes de programación C y C++, éstos al trabajar a un nivel bajo brindan la posibilidad de tener un muy buen control de hardware a través de punteros. Pero una aplicación compleja demandaba y demanda mucho tiempo de programación, otra de las cosas que presentan este tipo de lenguajes, es que no es muy fácil de aprender para los inexpertos.

Por otro lado está el ya conocido Visual Basic, este es un lenguaje de más alto nivel donde la creación de aplicaciones no demanda el tiempo que demandaría el uso de C y C++, en contrapartida con C y C++, es muy fácil de aprender, pero limita casi por completo el trabajo de control a bajo nivel.

Por este motivo los programadores de C y C++ temían el cambio a Visual Basic, porque eran conscientes que ello implicaba la pérdida del control y la potencia que ofrecía C y C++.

Por suerte Microsoft decidió juntar ambos mundos surgiendo así C#, con este lenguaje los programadores tienen la potencia y control que ofrece C y C++ y el dinamismo de Visual Basic además su diseño prevé perfectamente la integración en el desarrollo de aplicaciones Web ,XML y todas aquellas tecnologías que están surgiendo
Se podría seguir hablando muchísimo más de los fundamentos pero es simplemente un pantallazo.

CARACTERISTICAS

C# es un lenguaje que procede de C++, pero no es una extensión sino que es un lenguaje nuevo creado desde cero y puramente orientado a objetos, hay que destacar también que posee mucha seguridad al tratar con archivos, directorios, Red etc. y es un lenguaje moderno.

TRABAJAREMOS CON CLASES

Como dije antes C# es un lenguaje orientado a objetos, por lo tanto todo nuestro código debe si o si existir dentro de una clase aquí no se permiten variables de tipo global como en C u otros lenguajes estructurados, una clase es como una plantilla de la cual se crearán los objetos por ejemplo si llevamos este concepto a la vida real podríamos definir una clase como un molde, supongamos que una fábrica se dedica a construir vasos, los vasos no se construyen uno por uno sino que salen de un molde en cantidad y cada vaso obedece a lo especificado en su molde como por ejemplo tamaño, volumen etc., por lo tanto el molde sería la clase y los vasos los objetos en C#.

Las clases pueden tener constructores éstos se ejecutan automáticamente cuando un objeto es creado y se utilizan para inicializar los atributos que el objeto pueda tener. A su vez una clase también puede tener destructores que se ejecutan cuando se quiere destruir un objeto específico. Las clases obedecen a una jerarquía de clases siendo la clase Objetc la principal y de la cual derivan todas las demás. A diferencia de otros lenguajes orientado a objetos como por ejemplo Python en C# no se permite la herencia de clases múltiple, solo se permite la herencia simple, mas adelante vamos a ver como simular un caso de herencia múltiple utilizando un par de trucos. Las clases pueden ser agrupadas como forma de ordenamiento en colecciones conocidas como namespaces (espacio de nombres), es similar a los métodos que utilizamos para organizar nuestras carpetas en Windows, por ejemplo dentro de una carpeta llamada música tenemos todos nuestros temas musicales, pues dentro de un namespaces llamado operaciones tendríamos todas nuestras clases que impliquen cálculos matemáticos.

LOS TIPOS DE DATOS

En C# podremos trabajar con dos tipos de datos, aquellos conocidos de valor y de referencia, para que quede claro cuando definimos una variable y le asignamos un valor, su contenido depende del tipo de dato, si es Por Valor entonces la variable mantendrá en si una copia real del valor que se le haya dado, pero si es Por Referencia la variable mantendrá en si una referencia a un valor que se encuentre en alguna parte de la memoria del sistema, lo bueno es que podemos especificar, de qué tipo de dato podrá ser una variable a través de conversiones implícitas y explicitas pero eso se verá más adelante

LAS FUNCIONES O METODOS

Las funciones o métodos son porciones de código que al ejecutarse devuelven o no un valor, supongamos que creamos un método llamado Suma() claramente se puede establecer que dicho método sumara los valores que ingresen en su cuerpo y podrá devolver el resultado o bien, simplemente mostrarlo en pantalla.
Es importante saber que los valores que ingresan al cuerpo del método se los conoce como Parámetros de Métodos
• Parámetros de Entrada
• Parámetros de Salida
• Parámetros de referencia
• Parámetros Params
– en realidad esto no lo vamos a usar muchos pero igual lo veremos más adelante y consta de enviar a un método una lista de parámetros variables, o sea que el método no se limita a un número específico de parámetros de entrada, para que quede más claro, si creamos un método que reciba como parámetros 2 números enteros, entonces cuando invoquemos dicho método si o si deberemos pasarle 2 valores de tipo entero, si le pasamos 1 o 3 o 4 .. entonces se producirá un error de compilación ya que el método recibe solamente 2 valores como parámetros, los parámetros params definidos en un método tienen la capacidad de recibir argumentos variados como valores de entradas

TRABAJAREMOS CON VARIABLES
Una variable es como un recipiente donde podemos guardar valores (números, texto, etc.), como la palabra lo dice no se limita a un valor estático sino que su contenido puede variar, por Ej. si defino una variable de tipo entera y le asigno un valor 5 (int a = 5), no significa que ese valor permanezca en la variable por siempre sino que puedo perfectamente modificar su valor, Ej. (a=8), aquí la variable (a) comenzó almacenando un valor entero de 5 y luego cambio su valor a 8, ahora una variable también se puede comportar como constante si se lo indico, esto permite un mayor grado de entendimiento y simplicidad a la hora de trabajar con datos conocidos, un Ej. del uso de este tipo de constantes se puede aplicar al trabajo con figuras geométricas que necesiten de un valor fijo como puede ser el ya conocido PI, para que no queden dudas supongamos que creamos un programa que calcula el área de una circunferencia lo lógico sería que nuestra aplicación tuviera un método que recibiera como parámetro un valor con el radio y devolviera el área de la figura, por lo tanto nuestra aplicación se codificaría de la siguiente forma
(A = r*r*3.14) , ahora bien supongamos que de repente nos viene una laguna mental y nos olvidamos del valor 3.14 o por decir otra cosa supongamos que nuestra aplicación utiliza dicho valor en muchas ocasiones, aquí cabe la posibilidad de que en una de esas ocasiones escriba mal el 3.14 por una distracción, nuestra aplicación no daría datos verdaderos al final, así que para este tipo de casos el uso de Constantes nos libera de todas esas posibles fallas, en nuestro caso el valor de la constante sería 3.14 y el nombre PI, Ej. (const int PI = 3.14); ahora si con esta constante yo nunca tendría fallas de escritura no importando el número de veces que utilice la constante
(A = r*r*PI), una cosa a tener en cuenta es que el valor de una constante no puede ser modificada.

TRABAJAREMOS CON INTERFACES

Las interfaces son un grupo de propiedades o métodos que proporcionan funcionalidad a nuestro código, en C# las interfaces brindan seguridad a nuestro trabajo usando el concepto de encapsulamiento una interfaz no es una clase pero es muy similar, como dijimos antes una clase solo puede derivar de una clase base este concepto se conoce como herencia, y no es posible que deriven de múltiples clases, pero, una clase puede derivar de muchas interfaces, veamos a las interfaces como contratos que celebran con las clases, si una clase deriva o implementa una interfaz entonces esa clase está obligada a usar todos los métodos y propiedades de la interfaz, como sucede en cualquier contrato, por Ej. si alquilamos una casa entonces estaremos obligados a pagar una mensualidad hasta que dejemos de usarla, lo mismo ocurre con las interfaces

TRABAJAREMOS CON ATRIBUTOS

Aquellos que siguieron nuestra recomendación y leyeron el material de la estrella 0 de Microsoft ya estarán al tanto de que es el CLR (common lenguage runtime), cuando nosotros creamos una clase es una buena práctica publicar o vincular un descripción describiendo que es lo que hace esa clase, antiguamente si se quería lograr esto los programadores usaban y usan vinculaciones entre clases y archivos externos (IDL) , también se los vinculaba con archivos de tipo HTML, en C# esto está previsto y usa los atributos como forma documentativa de nuestras clases, ya no hay necesidad de crear archivos externos para describir la funcionalidad de una clase

HAREMOS COMPILACIONES

Cuando estemos escribiendo código, lo estaremos haciendo en un lenguaje (X), en nuestro caso C#, todos nuestros archivos deberán tener la extensión .CS, estos archivos describen y muestran todo lo que hace nuestra aplicación en un lenguaje entendible para los humanos, cuanto más entendible sea el código más nivel tendrá el lenguaje y cuanto menos entendible menos nivel, de aquí el termino lenguajes de alto y bajo nivel, y el piso es el lenguaje maquina, ahora bien estos archivos que crearemos son el tesoro más preciado de nuestra comunidad, y se lo conoce como código fuente, ahora éste código no es ejecutable ya que la PC no lo entiende por ese motivo hay que traducirlo a un lenguaje que sea entendible por la PC, a este proceso de traducción se lo conoce como compilación, y consta de llevar el código fuente a un bajo nivel, que por lo general tras el proceso de compilación el resultado es un archivo de tipo .EXE,

ARCHIVO FUENTE (.CS)  COMPILACION  (MSIL) ARCHIVO EJECUTABLE (.EXE)

Si quisiéramos ver el contenido de el archivo ejecutable será prácticamente imposible su lectura, como forma de práctica prueben abrir con el Note pad ++ algún archivo (.EXE) y verán a lo que me refiero

Este proceso se puede aplicar a cualquier lenguaje, pero en C# o cualquier otro lenguaje que integra .NET hay un paso previo que es bueno saber

Al compilar el código fuente en realidad se crean conjunto de información. Que son:
• EL CODIGO
• METADATOS

MSIL – MICROSOFT INTERMEDIAL LENGUAGE

El lenguaje intermedio de Microsoft se genera tras compilar nuestro código fuente, este MSIL resultante (.EXE) contiene un conjunto específico de instrucciones determinando como debe ejecutarse el CODIGO, C# es el único lenguaje capaz de producir MSIL – luego de un proceso de compilación

¿Porque nombrar MSIL?, cuando uno diseña una aplicación, dicha aplicación debe ser orientada a un hardware específico como la CPU, ahora bien, como dijimos antes cuando compilamos nuestro código fuente el resultado era un archivo ejecutable en caso de los lenguajes de .NET, un MSIL lo curioso de esto es que MSIL no tiene idea de donde será ejecutado, no tiene ni idea de las prestaciones de la CPU, y la CPU, tampoco sabe de la existencia del MSIL, ¿entonces como puede la CPU ejecutar el MSIL si no lo sabe interpretar?, aquí es donde entra en escena el (JIT) just in time, “justo a tiempo”, éste también es un compilador pero la función es convertir el código MSIL en código entendible por la PC.

ARCHIVO (.CS) -> COMPILADOR C# -> MSIL NO ENTENDIBLE POR CPU -> COMPILADOR (JIT) -> CODIGO ENTENDIBLE POR CPU -> EJECUCION

Bueno la idea es un vistazo a muy grandes rasgos creo que este tema generará muchas preguntas y dudas las cuales evacuaremos por supuesto, sería bueno extenderse mucho más en el tema pero se tornaría muy pesado e incomprensible para aquellos que recién comienzan, creo que cuando estemos más avanzados en los TUTORIALES, como los definió el Sitio de el Gurú, se pueda mantener discusiones mas sostenidas y entendible por todos los que siguen estas notas

Hay muchísimas más cosas que quedan en el tintero pero a no preocuparse que las veremos en detalle a medida que avancemos


comentarios

No hay comentarios.



agregar comentario


Se permiten las etiquetas HTML <b>, <i> y <p>. Si ingresa alguna dirección web o dirección de email serán convertidos en enlaces automáticamente.





publicidad

API DE FACEBOOK
GOOGLE CALENDAR API
GOOGLE MAPS API