PROGRAMACIÓN III Agenda • .NET • C# • Laboratorio #1 .NET • ¿Qué es .NET? – Una arquitectura tecnológica para la creación y distribución de software como servicio. – Servicio en cualquier plataforma, cliente en cualquier dispositivo, programación en cualquier lenguaje, integración basada en estándares. • ¿Qué incluye? – .NET Framework, infraestructura para la creación y ejecución de las aplicaciones. – Visual Studio .NET, entorno de desarrollo integrado (IDE). – Otros servicios. .NET: Características La Plataforma .NET consiste de un Lenguaje Común en Tiempo de Ejecución (CLR) y la Biblioteca de Clases de la Plataforma .NET algunas veces llamada la Biblioteca de Clases Base (CBL). El CLR es como una máquina virtual (el código que corre dentro del CLR en ejecución en un ambiente encapsulado y controlado, separados de otros procesos en la máquina) en la cual funcionan las aplicaciones .NET, todos los lenguajes .NET tienen la biblioteca de clases de la Plataforma .NET a su disposición. La biblioteca de clases de la Plataforma .NET incluyen soporte para cualquiera de los archivos de entrada/salida y base de datos de entrada/salida para XML y SOAP. .NET: Estándares • Basado en estándares – XML (XML Schemas, Xpath, XSLT) – Servicios Web – SOAP (Simple Object Access Protocol) – UDDI (Universal Description, Discovery & Integration) – WSDL (Web Service Description Language) – Lenguaje intermedio común CIL – Lenguaje de programación C# Tipos de aplicaciones Aplicaciones normales: De consola Windows Service (no interactiva) Windows Form (interactiva) Windows Control Library (biblioteca de controles) Aplicaciones para la web: Web Application (aplicación web cliente-servidor) XML Web Service (servicio web) C# • Descendiente directo de C/C++ y Java • Desarrollado por Microsoft por une quipo dirigido por Andres Helsberj y Scott Wiltamuth • Año2000. Microsoft presenta su plataforma .NET junto con un nuevo lenguaje, C# • C# se estandariza en diciembre de 2002. Estándar ECMA-334: Especificación del Lenguaje C#. C# La Plataforma .NET provee un colector de basura que es responsable de administrar la memoria en los programas C#. El manejo de errores está basado en excepciones. Soporta los conceptos como encapsulación, herencia y polimorfismo de la programación orientada a objetos. No existen funciones globales, variables o constantes. Todo deber ser encapsulado dentro de la clase, como un miembro de la instancia o un miembro estático. Soporta los modificadores de acceso private, protected, public y agrega un cuarto modificador internal. No es posible utilizar variables no inicializadas. Permite acceder a diferentes APIs a través de .NET Common Language Specification, el cual define el estádar de interoperabilidad entre lenguajes que se adhieran a este estándar. Por default el código es safe mode, pero es posible declarar clases o sólo métodos unsafe, esta declaración permite utilizar apuntadores, estructuras y almacenamiento de arreglos estáticos. C# depende del runtime que provee la Plataforma .NET, el runtime administra la ejecución de código. C#: Conceptos • Módulo – Es un componente de una aplicación .NET (Clase o conjunto de éstas) • Assembly – Es el resultado de la construcción del sistema (.exe, .dll) • Aplicación – Sistema resultante encapsulado en un assembly C#: Conceptos • Namespace – Los nombres de espacio namespace en el runtime .NET son utilizados para organizar las clases y otros tipos en una estructura jerarquica. El propósito del uso de namespace es hacer las clases fáciles de usar y prevenir colisiones con las clases escritas por otros programadores. – Los namespace en C# se utilizan para organizar programas y la jerarquía natural de la organización facilita presentar los elementos de un programa a otros programas. – Un namespace contiene tipos que pueden ser utilizados en la construcción de programas: clases, estructuras, enumeraciones, delegados e interfaces, por ejemplo para poder escribir a la consola se utiliza el namespace System. – No es obligatorio jerarquizar los namespace pero es una buena práctica organizar los namespace creados de manera jerárquica para dar claridad a la aplicación. C#: Ejemplos • Hola mundo C#: Ejemplos • Hola mundo using System; using System.Collections.Generic; using System.Text; C#: Ejemplos • Hola mundo using System; using System.Collections.Generic; using System.Text; using System;, define el namespace System, el cual contiene entre otras la clase Console la cual es utilizada para comunicarse con la línea de comandos. using permite al usuario omitir el namespace al utilizar el tipo al que es referenciado en este caso System, por lo que en vez de escribir: System.Console.WriteLine(); Solamente se escribe: Console.WriteLine(); using no puede ser utilizado con un nombre de clase por lo que no es permitido escribir using System.Console C#: Ejemplos • Hola mundo using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication2 { } C#: Ejemplos • Hola mundo using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication2 { class holamundo { } } C#: Ejemplos • Hola mundo using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication2 { class holamundo { public static void Main(string[] args) { } } } C#: Ejemplos • Hola mundo using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication2 { class holamundo { public static void Main(string[] args) { string nombre; Console.WriteLine("Introduce tu nombre "); nombre = Console.ReadLine(); Console.WriteLine("¡Hola {0}!", nombre); } } } C#: Ejemplos • Números positivos C#: Ejemplos • Números positivos using System; using System.Collections.Generic; using System.Text; namespace NUMEROS_POSITIVOS { class Program { static void Main(string[] args) { int numero; Console.WriteLine("Introduce un número "); numero = Int32.Parse(Console.ReadLine()); if (numero < 0) Console.WriteLine("El número es negativo."); else Console.WriteLine("El número es positivo."); } } } C#: Ejemplos • Múltiplo de 5 C#: Ejemplos • Múltiplo de 5 using System; using System.Collections.Generic; using System.Text; namespace MULTIPLO_DE_5 { class Program { static void Main(string[] args) { int numero; Console.WriteLine("Introduce un número "); numero = Int32.Parse(Console.ReadLine()); if (multiplo5(numero)) Console.WriteLine("Es múltiplo de 5"); else Console.WriteLine("No es múltiplo de 5"); } public static bool multiplo5(int numero) { if ((numero % 5) != 0) return false; else return true; } } } C#: Ejemplos • Tablas de multiplicar C#: Ejemplos • Tablas de multiplicar using System; using System.Collections.Generic; using System.Text; namespace TABLAS_DE_MULTILPLICAR { class Program { static void Main(string[] args) { for(int i =0; i <= 10; i++) { Console.WriteLine("Tabla del número {0}", i); for(int j =0; j <= 10; j++) { Console.WriteLine("{0} x {1} = {2}", i,j,i*j); } } } } }