Framework Class Library (FCL) Dr. Diego Lz. de Ipiña Gz. de Artaza

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 13 Ing. Ronald Criollo.
Advertisements

Curso de java básico (scjp)
Curso de java básico (scjp)
Métodos y parámetros.
Introducción a C#.
Complejidad Computacional
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
Manipulación de archivos de texto
Estructura General de las Instrucciones en Visual Basic
Streams de datos y archivos
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Instrucciones y excepciones
Manejo de errores y excepciones
Uso de variables de tipo referencia
Desarrollo de aplicaciones para Windows con VB.NET 2005
Dr. Diego Lz. de Ipiña Gz. de Artaza
Herramientas de Desarrollo Dr. Diego Lz. De Ipiña Gz. De Artaza
Paricial IV Ing. Esmeralda Elizabeth Rodríguez Rodríguez
Unidad 1. Manejo de ficheros
Programación, Algoritmos y Estructuras de Datos
Archivos Implementar un método que lea una secuencia de números enteros de un archivo y compute la cantidad de elementos leídos.
Curso de Java Estructura del Lenguaje
Introducción a Remoting
Tema 1. Introducción a la programación (Lenguaje java).
1.2 Sintaxis del lenguaje Java.
UNIVERSIDAD LATINA (UNILA)
Clase VI Delio Alanis. Agenda Base Class Library Base Class Library  Introducción  Aplicaciones tipo Consola  Manejo de Strings  XML  Entrada y Salida.
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Manejo de excepciones en Java
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Material de apoyo Unidad 2 Estructura de datos
TALLER DE PROGRAMACIÓN III
POO Java Módulo 3 Elementos de programas Identificadores
Tema 6: Clases Antonio J. Sierra.
Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
Colecciones.
Igor Santos Grueiro. Ahora tenemos datos y datos …
1 Streams en Java Agustín J. González ELO Generalidades Un Stream es simplemente una fuente o destino de bytes. Los streams más comunes son los.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter N - 1 Capitulo 12 Archivos de Ingreso y Salida.
Archivos y Búsqueda Secuencial
Archivos Programación.
USA agenda e itemAgenda
El lenguaje de programación Java
Archivos.
Tema 14: java.lang Antonio J. Sierra. Índice 1. Introducción. 2. Gestión de cadenas. –String –StringBuffer 3. Clases para los tipos simples. –Number –Envolventes.
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Sintaxis de C# (Declaraciones y Tipos)
Tema 11: Excepciones Antonio J. Sierra.
Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre.
Programación Orientada a Objetos
Entrada / Salida. Java adopta de Unix el concepto de stream Un stream es un flujo de datos (secuencia de bytes) que va de una fuente a un destino. Desde.
Streams. / En casi todo programa se necesita traer o enviar información a una fuente externa. / Dicha información puede estar en un archivo en el disco.
El lenguaje de programación Java
Using System; using System.IO; // Para StreamWriter public class Creacionachivo { public static void Main() { StreamWriter archivo; archivo = File.CreateText("prueba.txt");
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Programación Orientada a Objetos Unidad 4 Excepciones Universidad de Chile Departamento de Ciencias de la Computación.
Unidad 2 REUTILIZACIÓN DE CLASES Programación Orientada a Objetos M.S.C. Ivette Hernández Dávila.
Un arreglo es un grupo de variables, llamadas elementos, que contienen valores del mismo tipo. Una representación lógica de un arreglo se muestra de la.
Manejo de Ficheros en JAVA
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Sesión 17: Archivos. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de.
Ficheros: Ruby Estructura de Datos II.
LICETH CAJAS 3RO ASI 26/10/2010. Es un lenguaje de programación diseñado para crear una amplia gama de aplicaciones que se ejecutan en.NET Framework,
Archivos de Propiedades
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Framework Class Library (FCL) Dr. Diego Lz. de Ipiña Gz. de Artaza

FCL (Framework Class Library) Provee la API que las aplicaciones gestionadas en.NET invocan. Incluye más de 7000 tipos y está particionada en más de 100 espacios de nombres : Desde Int32 y String a tipos como Regex o Form System es la raíz de la mayoría Define tipos básicos como Int32 y Byte y clases de utilidad como Math y TimeSpan o Collections

FCL (Framework Class Library) En este apartado veremos algunas de los espacios de nombres más importantes de la FCL: System.IO System.Collections System.XML System.Reflection System.GC System.NET y System.Web

System.IO Este espacio de nombres lo comprenden las clases que facilitan el acceso a ficheros. La construcción principal que usan es el stream Clases de tipo Stream, como FileStream, son básicas.NET también provee construcciones más sofisticadas en forma de Readers y Writers Permite acceder tanto a ficheros de texto (a través de TextWriter y TextReader ) como a binarios ( BinaryWriter y BinaryReader ).

System.IO El procedimiento para leer o escribir un fichero es: 1.Abrir el fichero usando el objeto FileStream 2.Para lecturas o escrituras binarias, crear un BinaryReader y BinaryWriter alrededor de FileStream, y llamar a métodos Read y Write 3.Para lecturas o escrituras de texto, crear un StreamReader y StreamWriter alrededor de FileStream, y llamar a métodos ReadLine y WriteLine 4.Cerrar el FileStream System.IO contiene también clases para manipular ficheros y directorios: File y FileInfo, abre, crea, copia, mueve y borra ficheros Directory y DirectoryInfo hacen lo mismo para directorios

Ejemplo de I/O para texto: List.cs // compilar: csc List.cs // ejecutar: List // descripción: emulado comando TYPE de DOS using System; using System.IO; class List { static void Main (string[] args){ // Verificar que se ha recibido nombre fichero if (args.Length == 0) { Console.WriteLine ("Error: Fichero no encontrado"); return; } // Abre el fichero y visualiza contenido StreamReader reader = null;

Ejemplo de I/O para texto: List.cs try { reader = new StreamReader (args[0]); for (string line = reader.ReadLine (); line != null; line = reader.ReadLine ()) Console.WriteLine (line); } catch (IOException e) { Console.WriteLine (e.Message); } finally { if (reader != null) reader.Close (); }

// compilar: csc Scramble.cs // ejecutar: Scramble // descripción: encripta un fichero con la clave pasada, // para desencriptar ejecutar el comando de nuevo using System; using System.IO; using System.Text; class Scramble { const int bufsize = 1024; static void Main (string[] args) { // Make sure a file name and encryption key were entered if (args.Length < 2) { Console.WriteLine (“Sintaxis: SCRAMBLE nombre-fichero clave"); return; } Ejemplo de I/O binario: Scramble.cs

string filename = args[0]; string key = args[1]; FileStream stream = null; try { // Abre el fichero para escritura/lectura stream = File.Open (filename, FileMode.Open, FileAccess.ReadWrite); // Crea un FileStream alrededor del reader y writer BinaryReader reader = new BinaryReader (stream); BinaryWriter writer = new BinaryWriter (stream); // Convierte la clave pasada en un array de bytes ASCIIEncoding enc = new ASCIIEncoding (); byte[] keybytes = enc.GetBytes (key);

// Asignar un bufer de entrada y otro para la clave byte[] buffer = new byte[bufsize]; byte[] keybuf = new byte[bufsize + keybytes.Length - 1]; // Hacer que el tamaño de la clave sea el del bufer I/O int count = ( keybytes.Length - 1) / keybytes.Length; for (int i=0; i<count; i++) Array.Copy (keybytes, 0, keybuf, i * keybytes.Length, keybytes.Length); // Leer fichero en bloques de bufsize y aplicar XOR // y escribir el fichero de vuelta long lBytesRemaining = stream.Length; while (lBytesRemaining > 0) { long lPosition = stream.Position; int nBytesRequested = (int) System.Math.Min (bufsize, lBytesRemaining); Ejemplo de I/O binario: Scramble.cs

int nBytesRead = reader.Read (buffer, 0, nBytesRequested); for (int i=0; i<nBytesRead; i++) buffer[i] ^= keybuf[i]; stream.Seek (lPosition, SeekOrigin.Begin); writer.Write (buffer, 0, nBytesRead); lBytesRemaining -= nBytesRead; } } catch (Exception e) { Console.WriteLine (e.Message); } finally { if (stream != null) stream.Close (); } Ejemplo de I/O binario: Scramble.cs

Colecciones La plataforma.NET tiene un espacio de nombres dedicado a estructuras de datos como pilas, arrays dinámicos, colas... System.Collections dispone de una serie de interfaces que implementan todas estas colecciones.

Colecciones Entre otras estructuras podemos encontrar: ArrayList : Array dinámico. HashTable : Tablas de Hashing. Queue : Colas. SortedList : Listas ordenadas. Stack : Pilas. BitArray : array de bits (guardan booleanos) Todas las colecciones menos BitArray guardan objetos de tipo System.Object

// ejecutar: WordCount using System; using System.IO; using System.Collections; class WordCount { static void Main (string[] args){ // Validar si se ha introducido un nombre fichero if (args.Length == 0) { Console.WriteLine ("Error: Missing file name"); return; } StreamReader reader = null; Hashtable table = new Hashtable (); // crear mapa Ejemplo WordCount

try { // Moverse palabra a palabra por el fichero // manteniendo un contador por cada palabra reader = new StreamReader (args[0]); for (string line = reader.ReadLine (); line != null; line = reader.ReadLine ()) { string[] words = GetWords (line); foreach (string word in words) { string iword = word.ToLower (); if (table.ContainsKey (iword)) table[iword] = (int) table[iword] + 1; else table[iword] = 1; // crear entrada } Ejemplo WordCount

// Ordenar entradas tabla con SortedList SortedList list = new SortedList (table); // Visualiza los resultados Console.WriteLine ("{0} palabras únicas en {1}", table.Count, args[0]); foreach (DictionaryEntry entry in list) Console.WriteLine ("{0} ({1})", entry.Key, entry.Value); } catch (Exception e) { Console.WriteLine (e.Message); } finally { if (reader != null) reader.Close (); } Ejemplo WordCount

static string[] GetWords (string line) { // Crear un array para guardar resultados intermedios ArrayList al = new ArrayList (); // Añadir palabras desde line a al int i = 0; string word; char[] characters = line.ToCharArray (); while ((word = GetNextWord (line, characters, ref i)) != null) al.Add (word); // Return a static array that is equivalent to the ArrayList string[] words = new string[al.Count]; al.CopyTo (words); return words; } Ejemplo WordCount

static string GetNextWord (string line, char[] characters, ref int i) { // Encontrar comienzo de palabra while (i < characters.Length && !Char.IsLetterOrDigit (characters[i])) i++; if (i == characters.Length) return null; int start = i; // Find the end of the word while (i < characters.Length && Char.IsLetterOrDigit (characters[i])) i++; // Return the word return line.Substring (start, i - start); } Ejemplo WordCount

System.XML Este espacio de nombres comprende todas las clases necesarias para manejar documentos Xml. Permite leer o parsear un documento, así como escribir un documento Xml. Para ello necesitaremos conocer previamente la estructura de un documento Xml.

System.XML Este espacio de nombres provee soporte para los estándares de procesamiento XML: XML including DTD support. XML Namespaces both stream level and DOM. XSD Schemas - XPath expressions - XSLT transformations - DOM Level 1 Core - DOM Level 2 Core -

Un poco de XML Lenguaje mundial de facto para intercambio de datos XML no tiene tanto éxito porque es un gran lenguaje, sino porque las herramientas disponibles para leer, escribir y manipular XML son muy comunes Casi todos los parseadores de XML implementan una de dos APIs: DOM: lee un documento en memoria y lo carga en un árbol SAX: API basada en eventos

Ejemplo DOM en.NET Gibson SG 1977 Tobacco Sunburst Rosewood Fender Stratocaster 1990 Black Maple

Ejemplo DOM en.NET using System; using System.Xml; class MyApp { static void Main () { XmlDocument doc = new XmlDocument (); doc.Load ("Guitars.xml"); XmlNodeList nodes = doc.GetElementsByTagName ("Guitar"); foreach (XmlNode node in nodes) { Console.WriteLine ("{0} {1}", node["Make"].InnerText, node["Model"].InnerText); }

XmlDocument Interfaz programática para XML documents que conforman con la especificación DOM Método Load(nombre-doc) procesa el documento y construye un árbol del mismo Una llamada exitosa es normalmente seguida de invocación a propiedad DocumentElement Para saber si tiene hijos usar propiedad HasChildNodes Propiedad ChildNodes devuelve los hijos de un nodo Todo hijo es un XMLNode que puede ser del tipo Element, Text, Attribute, etc.

XmlTextReader Frente al estándar SAX,.NET ofrece XmlTextReader Está basado en streams como SAX y es por tanto más eficiente con el uso de memoria que DOM Usa un mecanismo pull para examinar Xml en vez de push como SAX

Ejemplo XmlTextReader I Lee un fichero XML y visualiza todos sus nodos ]> Test with an entity: &number; test with a child element stuff test with a CDATA section ]]> def Test with an char entity: A ABCD

Ejemplo XmlTextReader II public class Sample { private const String filename = "items.xml"; public static void Main() { XmlTextReader reader = null; try { // Cargar reader con fichero XML ignorando espacios. reader = new XmlTextReader(filename); reader.WhitespaceHandling = WhitespaceHandling.None; // Procesar fichero y visualizar cada nodo while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: Console.Write(" ", reader.Name); break; case XmlNodeType.Text: Console.Write(reader.Value); break; case XmlNodeType.CDATA: Console.Write(" ", reader.Value); break;

Ejemplo XmlTextReader III case XmlNodeType.ProcessingInstruction: Console.Write(" ", reader.Name, reader.Value); break; case XmlNodeType.Comment: Console.Write(" ", reader.Value); break; case XmlNodeType.XmlDeclaration: Console.Write(" "); break; case XmlNodeType.Document: break; case XmlNodeType.DocumentType: Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value); break;

Ejemplo XmlTextReader IV case XmlNodeType.EntityReference: Console.Write(reader.Name); break; case XmlNodeType.EndElement: Console.Write(" ", reader.Name); break; } finally { if (reader!=null) reader.Close(); } } // Final clase

Transformaciones XSLT XSLT (Extensible Stylesheet Language Transformations) es un lenguaje para convertir documentos XML de un formato en otro Tiene dos usos principales: Convertir documentos XML en HTML Convertir documentos XML en otros documentos XML Este tipo de conversiones son el núcleo de aplicaciones middleware como Microsoft BizTalk Server.

Ejemplo transformación XSLT using System; using System.Xml; using System.Xml.XPath; using System.Xml.Xsl; class MyApp { static void Main (string[] args) { if (args.Length < 2) { Console.WriteLine ("Syntax: TRANSFORM xmldoc xsldoc"); return; } try { XslTransform xsl = new XslTransform (); xsl.Load (args[1]);

Ejemplo transformación XSLT //Crear un nuevo XPathDocument y cargar el fichero XML a transformar XPathDocument doc = new XPathDocument (args[0]); //Crear un XmlTextWriter que escribe a consola. XmlWriter writer = new XmlTextWriter(Console.Out); xsl.Transform (doc, null, writer, null); } catch (Exception ex) { Console.WriteLine (ex.Message); }

System.Reflection Este espacio de nombres proporciona clases para: Conseguir todos los tipos de datos que hay en un ensamblado ( System.Reflection.Assembly ). Listar los miembros de esos tipos de datos ( System.Reflection.Module y System.Type). Invocar métodos dinámicamente.

Ejemplo System.Reflection // fichero : reflect.cs // compilar : csc reflect.cs using System; using System.Reflection; using System.Text.RegularExpressions; public class Persona { public Persona(string nombre, string apellido1) { Nombre = nombre; Apellido1 = apellido1; }

Ejemplo System.Reflection public void VerNombre() { Console.WriteLine(“Nombre={0}", Nombre); } public void VerApellido1() { Console.WriteLine(“Apellido1={0}", Apellido1); } public void VerTodos() { Console.WriteLine("Persona..."); Console.WriteLine(“Nombre={0}", Nombre); Console.WriteLine(“Apellido1={0}", Apellido1); } public readonly string Nombre; public readonly string Apellido1; }

Ejemplo System.Reflection public class Reflect { public static void Main() { // recuperar tipo Persona... Type typ = Type.GetType(“Persona"); // crear array con args constructor... object[] args = {“Diego", “Ipiña"}; // crear una instancia de Persona... Object obj = Activator.CreateInstance(typ, args); // conseguir lista métodos Persona... MethodInfo[] met = typ.GetMethods();

Ejemplo System.Reflection // encontrar e invocar todos los métodos ver... Regex r = new Regex("^ver", RegexOptions.IgnoreCase); foreach (MethodInfo m in met) if (r.IsMatch(m.Name)) m.Invoke(obj, null); // invocar método ver }

System.GC Esta clase representa al recolector de basura que maneja el CLR de la plataforma. Implementa una serie de métodos que nos permiten: Forzar la recolección de basura. Evitar que se ejecute el destructor de un objeto determinado.

System.Web y System.Net System.Net provee clases para llevar a cabo tareas relacionadas con Internet System.Net.Sockets permite la comunicación a través de Sockets System.Web, System.Web.Mail y System.Web.Services, están construidas encima de System.Net

Listando enlaces de página web using System; using System.IO; using System.Net; using System.Text.RegularExpressions; class ListLink { static void Main (string[] args) { if (args.Length == 0) { Console.WriteLine ("Error: Indica URL para listar enlaces"); return; } StreamReader reader = null; try { WebRequest request = WebRequest.Create (args[0]); WebResponse response = request.GetResponse ();

Listando enlaces de página web reader = new StreamReader (response.GetResponseStream ()); string content = reader.ReadToEnd (); Regex regex = new Regex ("href\\s*=\\s*\"([^\"]*)\"", RegexOptions.IgnoreCase); MatchCollection matches = regex.Matches (content); foreach (Match match in matches) Console.WriteLine (match.Groups[1]); } catch (Exception e) { Console.WriteLine (e.Message); } finally { if (reader != null) reader.Close (); }

Enviando un mail con.NET using System.Web.Mail; … MailMessage message = new MailMessage (); message.From = Sender.Text; message.To = Receiver.Text; message.Subject = Subject.Text; message.Body = Body.Text; SmtpMail.SmtpServer = "localhost"; SmtpMail.Send (message);