domingo, 3 de enero de 2010

Espacios de Nombres

Espacios de Nombre

Los espacios de nombres son un recurso que utilizan algunos lenguajes para la oraganización de un gran conjunto de tipos de datos. Así como los directorios (o carpetas) permiten organizar archivos de modo que ficheros del mismo nombre convivan en directorios distintos, los espacios de nombres realizan una tarea similar, "pero de manera lógica"(averiguar que es esto!!!), para tipos de datos extendidos como clases y estructuras.
De este modo, dos clases distintas con el mismo nombre podrían ser utilizadas en el mismo proyecto sin que se suscite ningún error.
Los espacios de nombres también pueden ser anidados, por lo que puede haber unos dentro de otros y, de este modo, mejorar la organización de las librerías de un proyecto.
Gracias a esta facilidad, los nombres de los tipos de datos que nosotros crearemos en el futuro podrán ser de lo más sencillos, sin temor a que ya exista alguna clase o estructura de igual nombre que luego podremos querer utilizar.



****aqui va una tabla de espacios de nombres****



Por supuesto que la lista es aún más grande. Un acceso de referncia ideal es la documentación que provee Visual Studio .NET o la provista por MSDN (MSDN Library).




Sentencia using

Un modo de ahorrarnos trabajo, al tener que anteponer nombres de namespaces a cada una de las clases que utilicemos, es colocar en la cabecera de nuestro archivo de código fuente una sentecia using, escribiendo:

using <espacio de nombres>;

Entonces, el compilador buscará cada clase referenciada en el espacio de nombres global y en los espacios de nombres especificados por sentencias using.

Por lo tanto, el código de nuestro primer programa ahora podría ser:

using System;
class Clase1{
static void Main(string[] args){
Console.WriteLine("Nuestro primer programa");
}
}

Console es una clase que no existe en el espacio de nombres global, sino en el espacio de nombres System. Gracias a que le hemos indicado al compilador que estamos utilizando dicho espacio de nombres, System. Gracias a que le hemos indicado al compilador que estamos utilizamos dicho espacio de nombres, él sabrá que las clases que utilicemos también podrían estar allí.
WriteLine es un método de la clase Console. Recordemos que para acceder a información de referencia sobre la BCL podemos utilizar la ayuda que provee Visual Studio, donde veremos todos los métodos y propiedades de la clase Console.



Los Comentarios

En un principio, nuestro programa será pequeño, y analizar qué sucede dentro de él será sencillo, ya que bastará con echar un ojo al código escrito. Sin embargo, a medida que éste crece, se vuelve muy conveniente poder introducir notas aclaratorias sobre qué es lo que pretendemos que el programa haga. Así, si escribimos un algoritmo en particular, podemos agregar un texto que indique qué debe hacer dicho algoritmo en particular, podemos agregar un texto que indique qué debe hacer dicho algoritmo, y de este modo otro programador podrá entenderlo rápidamente, o quizá nosotros mismos, releyendo el código que hayamos escrito tiempo atrás.
Para que el compilador no interprete el texto aclaratorio como intentos fallidos de instrucciones, debemos indicarle que estamos introduciendo un comentario.

C# acepta dos tipos de comentarios. Uno es el comentario de linea, que debe comenzar con caracteres //, como por ejemplo:
//Este es un comentario

El otro es el comentario clásico del lenguaje C, que comienza con los caracteres /* y termina de manera inversa, con los caracteres */
/* Este es un comentario*/

Este tipo de comentario puede ser multilínea; el siguiente es ejemplo de esto:
/* Este
es un
comentario*/

U.1.36

Sintaxis Básica del Lenguaje

En C#, un programa es una colección de clases, aquí no se permitirán funciones ni variables globales como en el caso de C++. C# es un lenguaje orientado a objetos que pretende ser fiel a sus conceptos, y por medio del framework .NET ofrece una librería de clases que nos serán de gran utilidad cuando construyamos aplicaciones.
Esta librería de clases, que menciomos en el capítulo anterior, se llama BCL (Base Class Library), y se podría decir que es el sueño de todo programador, ya que ofrece una gran variedad de funcionalidades.
Por el momento, de esta librería diremos que se encuentra organizada por espacios de nombres (en inglés, namespaces)

Us.1.36

jueves, 17 de diciembre de 2009

abreviaturas libros de referencia

Deitel------>D

Información Adicional

* En Microsoft Windows 95/98/ME, la ventana de consola es el símbolo MS-DOS. En otras versiones de Microsoft Windows, la ventana de consola es denominada como Símbolo del sistema. (D.48)
*

jueves, 8 de octubre de 2009

Términos

CLR o Common Language Runtime, traducido: entorno de lenguaje común. Es el entorno que administra la ejecución de código y proporciona los servicios para desarrollo de las aplicaciones, así como también todos los elementos requeridos por los lenguajes, Visual Basic .NET, C# y otros de .NET.
CTS o Common Type System, traducido: sistema de tipos comunes. Son los tipos de datos son comunes a todos los lenguajes y son provistos por el (CTS o sistema de tipos comunes) del CLR.
FCL o Framework Class Library: biblioteca de clases del .NET Framework, que son los espacios de nombres predefinidos donde se encuentran clases que trae C# ya preelaboradas.(D.49)


Entorno de Ejecución, El CLR y las BCL

El CLR (Common Language Runtime)
El CLR o Common Language Runtime es el entorno que administra la ejecución de código y proporciona los servicios para desarrollo de las aplicaciones, así como también todos los elementos requeridos por los lenguajes, Visual Basic .NET, C# y otros de .NET.
Los tipos de datos son comunes a todos los lenguajes y son provistos por el Common Type System (CTS o sistema de tipos comunes) del CLR. Cada tipo de dato tiene su propia sintaxis en su lenguaje de programación correspondiente, pero, al ser tomados por el CLR, esos tipos son iguales.
Esto se debe a que uno de los principales objetivos de la plataforma .NET fue ser independiente del lenguaje de programación elegido para el desarrollo de aplicaciones. Por eso se creó la Common Language Specification (CLS o especificación de lenguaje común), que define y estandariza un conjunto de las características soportadas por el CLR que son necesarias en la mayoria de las aplicaciones. Todos los componentes desarrollados y compilados de acuerdo con esta especificación pueden interactuar entre sí, independientemente del lenguaje en el que fueron escritos.
Microsoft proporciona, junto con el .NET Framework, las implementaciones de cuatro lenguajes compatibles con CLS, y sus compiladores:
.- Microsoft Visual Basic .NET
.- Microsoft Visual C# .NET
.- Microsoft J# .NET
.- Microsoft C++ .NET

Esto significa que una aplicación escrita en Visual Basic .NET, por ejemplo, puede incorporar sin problemas nuevas partes escritas en C# o C++ .NET.
Dado que la especificación CLS es un estándar público, ha permitido que otros diseñadores de lenguajes y compiladores desarrollen más de 20 lenguajes y compliladores compatibles con ella y, por lo tanto, compatibles entre sí y con los lenguajes desarrollados por MIcrosoft. Todos los componentes y aplicaciones creados bajo estas especificaciones se dice que son código administrado, o Managed Code, debido a que muchas aplicaciones de muy bajo nivel, como drivers de dispositivos, necesitan tener acceso directo a los recursos del sistema operativo para tener un mejor rendiemiento.
Como cada lenguaje proporciona su propia sintaxis en la implementación de las directivas del CLS, es necesario que los compiladores "traduzcan" su código fuente en "algo" que sea entendible por el CLR. Ese "algo" se denomina MSIL o Microsoft Intermediate Language, que es un código intermedio en el cual se compilan todos los lenguajes de .NET. Estos componentes y aplicaciones resulatantes se conocen como assemblies o ensamblados en .NET. Pueden ser archivos ejecutables (.exe) o bibliotecas de clases y componentes (.dll). Los assemblies no son ejecutables directamente, sino que son compilados al código nativo de la CPU en la que se encuentra corriendo por el compilador Just In Time (JIT) del CLR y, luego, se ejecutan en su entorno. Para que el CLR entienda cómo debe ejecutar estas aplicaciones y componentes, los compiladores de los lenguajes .NET incluyen en la compilación la metadata, que es la información que describe los objetos que forman parte de la aplicación o componente generado.
La metadata describe:
.- Los tipos de datos y sus deendencias.
.- Los objetos y sus miembros.
.- La referencia e información (incluyendo versión) de los componentes y recursos externos que son utilizados por la apliación o componente y que son necesarios para su funcionamiento.

Esta metadata de un componente administrado es utilizada por el CLR para proporcionar, entre otras, las siguientes funcionalidades:
.- Administra la memoria.
.- Localizar y crear instancia de clases.
.- Administrar las referencias de los objetos y realizar el garbage collection.
.- Resolver las invocaciones a los métodos.
.- Generar código nativo.
.- Asegurar que la aplicación tiene recursos necesarios para funcionar.
.- Reforzar la seguridad.

//---- El CLR administra la ejecución de código y permite el desarrollo de las aplicaciones ----//

///
Namespaces

El conocimiento de los namespaces de .NET es de fundamental importancia para aprovechar toda la funcionalidad que nos proporciona y, así, no tener que escribir código con el cliente con el que ya contamos.
///

La inclusión de esta metadata en el componente compilado hace que éste se autodescriba. Esto le indica al CLR todo lo necesario para preparar y ejecutar una aplicación .NET correctamente y permitir que pueda interactuar con otros componentes.

.- Compilación Just In Time (o "justo a tiempo"): El CLR se encarga de compilar las aplicaciones .NET a código de máquina nativo para el sistema operativo y la plataforma de hardware en la que se está ejecutando. Esto lo hace cin intervención alguna del desarrollador o el usuario y cuando se necesita.

.- Gestión automática de memoria: El CLR abstrae a los desarrolladores de tener que pedir y liberar memoria explícitamente. Para lograrlo, uno de sus componentes, llamado garbage collector(recolector de basura), se encarga de liberar periódicamente la memoria que ya no está siendo usada por ninguna aplicación. Por otra parte, el CLR también abstrae a los desarrolladores del uso de punteros de acceso y del acceso a memoria de bajo nivel. Si bien estas características pueden ser consideradas poderosas, suelen hacer que el desarrollo y el mantenimiento de aplicaciones resulten más propensos a errores y menos productivos.

.- Gestión de errores consistente: Como las aplicaciones .NET no se ejecutan directamente contra el sistema operativo, cualquier error no manejado que ocurra en tiempo de ejecución será atrapado por el CLR en última instancia, sin afectar a ninguna otra aplicación que se esté ejecutando ni tener efecto alguno sobre su estabilidad.

.- Ejecución basada en componentes: Todas las aplicaciones .NET son empaquetadas en componetes reutilizables denominados, genéricamente, assemblies, que el CLR se ocupa de cargar en memoria y de ejecutar.

.- Gestión de seguridad: El CLR brinda una barrera más de contención a la hora de ejecutar aplicaciones manejadas, ya que permite establecer políticas de seguridad que deberán ser cumplidas por las aplicaciones .NET que se ejecuten en una computadora.

.- Multithreading: El CLR provee un entorno de ejecución multi-hilos por sobre las capacidades del sistema operativo, así como también, mecanismos para asegurar su sincronización y el acceso a recursos compartidos.




Biblioteca de funcionalidad
(Base Class Library)

La funcionalidad principal de la Base Class Library es proporcionar cientos de tipos básicos (clases e interfaces) orientados a objetos, extensibles mediente herencia e independientes del lenguaje de programación que se desee utilizar. Este conjunto de elementos incluye la mayoría de las funcionalidades que los programadores aplican de manera cotidiana.
Dada la cantidad de clases (unos cuantos miles), es necesario organizarlas de algún modo en que sean fáciles de encontrar y que permita diferenciarlas si poseen el mismo nombre. Para lograr esto, .NET proporciona lo que se denomina namespaces o epacios de nombres. Se trata de calificadores de clases, que hacen posible determinar, unívocamente, qué clases utilizar dentro de .NET y, así, evitar ambigüedades. En la Tabla 2 vemos una breve lista de los principales namespaces.