C# Básico Introducción • C# es un lenguaje para la Programación Orientada a Objetos, diseñado para el Common Language Runtime ( CLR ) de la plataforma .NET de Microsoft. • El CLR es un entorno de ejecución basado en componentes, ofrecidos por el Framework de la tecnología .NET • El Common Language Runtime (CLR) es el núcleo de la plataforma .NET ya que es el encargado de gestionar la ejecución de código compilado para la plataforma .NET. Puede asimilarse a la máquina virtual de Java, JVM, de la plataforma Java. • La plataforma .NET es la propuesta de Microsoft para competir con la plataforma Java. • Mientras que Java se caracteriza por el principio "escribir una vez, ejecutar en cualquier lugar", la plataforma .NET de Microsoft está diseñada para que se puedan desarrollar software utilizando casi cualquier lenguaje de programación. Introducción • Esto es, en vez de estar limitados a un único lenguaje de programación, la plataforma .NET permite cualquier lenguaje de programación, siempre y cuando cumpla con normas establecidas para dicha en su conjunto. • Existen diversos compiladores para la plataforma .NET: Visual Basic .NET, C#, Managed C++, Oberon, Component Pascal, Eiffel, Smalltalk, Cobol, Fortran, Scheme, Mercury, Mondrian/Haskell, Perl, Python, SML.NET... • Microsoft Visual Studio es un entorno de desarrollo integrado (IDE) para sistemas operativos Windows. Soporta multiples lenguajes de programación tales como C++, C#, Visual Basic .NET, F#, Java, Phyton, Ruby, php; entornos de desarrollo web como ASP.NET MVC, Django, ... Introducción • El IDE Visual Studio .NET es un conjunto completo de herramientas de desarrollo para crear aplicaciones ASP Web, servicios Web XML, aplicaciones de escritorio y aplicaciones móviles. • Visual Basic .NET, Visual C + + .NET, Visual C# .NET y Visual J# .NET utilizan el mismo entorno de desarrollo integrado (IDE), que les permite compartir herramientas y facilita la creación de soluciones en varios lenguajes. Estos lenguajes aprovechan la funcionalidad del framework .NET que proporciona acceso a las tecnologías clave para simplificar el desarrollo de aplicaciones . Introducción • Para crear aplicaciones para la plataforma .NET, tanto servicios Web como aplicaciones tradicionales (aplicaciones de consola, aplicaciones de ventanas, servicios de Windows NT, etc.), Microsoft ha publicado el denominado kit de desarrollo de software ( SDK, Software Development Kit ) conocido como Framework .NET. • El SDK .NET Framework Contiene el CLR (Common Languaje Runtime), el .NET Framework Classes y características avanzadas comoADO.NET (para acceso a bases de datos), ASP.NET (para generar páginas activas) y WinForms (para construir aplicaciones Windows). • Además del SDK .NET Framework se puede emplear el IDE Visual Studio.NET que permite hacer todo la anterior desde una interfaz visual basada en ventanas. • Ambas herramientas pueden descargarse de manera gratuita desde: http://www.msdn.microsoft.com/net. Introducción • El SDK para la plataforma .NET Microsoft pone a disposición de todo aquél que esté interesado el kit de desarrollo de software para la plataforma .NET: The Microsoft .NET Framework Software Development Kit (SDK). Este kit incluye la plataforma .NET y todo lo necesario para desarrollar, compilar, probar y distribuir aplicaciones para la plataforma .NET (así como documentación, ejemplos, herramientas en línea de comandos y compiladores). • El Visual Studio .NET ya incluye la plataforma .NET, por lo que, si ya tiene instalado el Visual Studio .NET no tendrá que instalar el SDK por separado. Introducción • C# se compila a un Lenguaje Intermedio llamado MSIL (Microsoft Intermediate Language), que no es binario dependiente de la plataforma, sino que se ejecuta sobre unba máquina virtual que provee el Common Language Runtime (CLR). Esto quiere decir que C# no pueda compilarse a código binario dependiente de la plataforma. • C# se puede utilizar sólo para el API provisto por el Framework .NET. • El CLR contiene un compilador en línea o JIT que tiene como labor convertir el código MSIL a código nativo de la plataforma para la que sea ejecutado. • Para que un lenguaje de programación sea soportado por la plataforma .NET, ha de existir un compilador que traduzca de este lenguaje a MSIL. A la hora de ejecutar el código intermedio, éste es siempre compilado a código nativo. Introducción • La producción y ejecución de una aplicación C# es como sigue, en términos generales: Código Fuente C# (nombre.cs) Compilador ( csc.exe) Código Intermedio, MSIL ( .exe, .dll ) CLR Ejecución Compilador JIT Introducción • El CLR realmente trabaja con assemblies. • Un assembly es un archivo con un formato parecido al formato PE - Portable Executable (PE) format - , utilizado por los archivos .exe y .DLL ) que contiene el código intermedio resultado de compilar el código fuente, los metadatos y otros archivos necesarios para poder ejecutar el assembly. • Un assembly tambien contiene un archivo llamado “Archivo manifiesto o manifest”, el cual indica los assemblies de los que depende, los archivos que contiene, controla los tipos y recursos expuestos por el assembly y establece un mapeo entre esos tipos y recursos y los archivos que contienen esos tipos y recursos. • Existen dos tipos de assemblies: • Aplicaciones: Tienen un punto de entrada principal y unico ( el Main() ) y tienen extensión .exe • Librerias: No tienen un punto de entra principal ( el Main() ) y tienen extension .DLL Introducción • El ejecutable .exe, generado por la compilación del archivo fuente .cs ( tanto utilizando Visual Studio con la línea de comando ), NO ES REALMENTE UN EJECUTABLE, aunque aparezca con la extension .exe; • El archivo .exe tiene un formato muy similar a un ejecutable ( En C#, el formato de un .exe es PE - Portable Executable (PE) format - ) pero contiene código intermedio MSIL (MicroSoft Intermediate Language ), así como metadatos ( nombres de objetos, nombres y tipos de campos, nombres de métodos, nombres y tipos de sus parámetros ) y el archivo de manifiesto. • El archivo .exe puede ser descompilado, esto es, se puede desensamblar a un aplicación .NET utilizando el desensamblador ILDASM mediante la ejecucion del programa ildasm.exe suministrado con Visual Studio. Introducción Espacios de nombres ( namespace ) • Un espacio de nombres o namespace es una agrupación lógica de tipos, un directorio lógico dentro de la biblioteca del Framework .NET compuesto de código relacionado entre sí. • Es el equivalente a los package en Java. • En C# todo está empacado en una clase y las clases se empaqueta en namespaces (al igual que los archivos de una carpeta). • Cada clase se empaqueta en un namespace. Los espacios de nombres son exactamente el mismo concepto que en C++, pero en C# los namespaces son utilizados con más frecuencia que en C++. • Por ejemplo, el namespace System incluye los tipos básicos, Console, Math, entre otros. Introducción Espacios de nombres ( namespace ) • Al escribir el código C# de una aplicación se utilizan clases y otros tipos que están definidos en un namespace. Por eso, se ha de indicar ( en el código ) el namespace al que pertenecen. • Para ello se usará la instrucción: using nombreDelNamespace; Introducción Espacios de nombres ( namespace ) • Para acceder a una clase en un namespace se utiliza el calificador de punto (.): • nombreDelNamespace.nombreDeLaClase.metodoDeLaClase; • Los espacios de nombre se pueden anidar. Introducción Espacios de nombres ( namespace ) • using Esta directiva facilita el uso de un namespace. • Por ejemplo: Supóngase que se desea utilizar el método estático WriteLine() de la clase Console que está incluida en el namespace System. Esto podemos hacerlo de dos maneras: • Llamando la clase directamente: • System.Console.WriteLine(“Estamos en C#, Wao !! “); Introducción Espacios de nombres ( namespace ) • using Esta directiva facilita el uso de un namespace. • Por ejemplo: Supóngase que se desea utilizar el método estático WriteLine() de la clase Console que está incluida en el namespace System. Esto podemos hacerlo de dos maneras: • Usando using : • • • • using System; ... Console.WriteLine(“Estamos en C#, Wao !! “); ... Introducción Espacios de nombres ( namespace ) • Para incluir una clase en un namespace: using algunNamespaceRequerido; ... namespace nombreDelNamespace { class nombreDeLaClase { // cuerpo de la clase } } • Más adelante veremos código de ejemplo de uso de estos conceptos. Introducción Biblioteca de clases .NET Framework • Esta compuesta de un vasto conjunto de espacios de nombre (namespace). • Es la base sobre la que se compilan las aplicaciones de .NET Framework, proporcionando acceso a la funcionalidad del sistema. • En http://msdn.microsoft.com/es-es/library/gg145045(v=vs.100).aspx se puede ver la .NET Framework 4.0 • Seleccionando el namespace System en el link anterior tendremos acceso a todas las clases de System. • En System, por ejemplo, seleccionamos la clase Console, la cual representa los flujos de entrada, salida y error estándar para las aplicaciones de consola. Esta clase no puede heredarse. Introducción Biblioteca de clases .NET Framework • Console Console (Clase) para .NET Framework 4 Representa los flujos de entrada, salida y error estándar para las aplicaciones de consola. Esta clase no puede heredarse. Jerarquía de herencia System.Object System.Console Espacio de nombres: System Otras informaciones encontradas son Sintaxis, Propiedades. Metodos, Comentarios, Ejemplos de uso, Información de versión, Plataformas, Seguridad para subprocesos Introducción • Para trabajar con C# • Visual C# <aaaa> Express Edition, la cual usa C# 4.0 and .NET Framework 4.0 ( <aaaa> es el año. Use la que se acomode a su máquina ) • Descargar el paquete de instalación de: http://www.visualstudio.com/es-es/products/visual-studio-express-vs • Hacer la instalación completa. • Eso debería instalar todo lo que usted necesita: el IDE .NET Framework 4.0, y otras herramientas. • Otras opciones para instalar la tecnología .NET están disponibles en internet. Referencias • C# Concisely; Judith Bishop, Nigel Hospool; Pearson, Addison Wisley 2003. • Head First C#; Andrew Stellman and Jennifer Greene ; Second Edition; O’Reilly Media, 2010. • Desarrollo de aplicaciones .NET con Visual C#; Miguel Rodríguez Gómez-Stern, Marcos Antonio Besteiro Gorostizaga; McGra2-Hill/Interamericana de España, S.A.U., 2002. • Visual C# Recomendable para un principiante iniciar http://msdn.microsoft.com/en-us/library/kx37x362.aspx por aquí. • • Visual C# Language http://msdn.microsoft.com/en-us/library/aa287558(v=vs.71).aspx • ... Agradecimientos • Agradecimientos especiales al Maestrísimo Felix Ferreiras por el aporte de este valioso material para poder impartir este curso. • Gracias maestro!!!