Aprendiendo .NET Tutorial PARTE 4

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

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 , y

. 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