La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Dra. Ana Lilia Laureano Cruces

Presentaciones similares


Presentación del tema: "Dra. Ana Lilia Laureano Cruces"— Transcripción de la presentación:

1 Dra. Ana Lilia Laureano Cruces
C# y la plataforma .NET Javier Jiménez Juárez Lenguajes de Programación Dra. Ana Lilia Laureano Cruces Instituto de Investigaciones en Matemáticas Aplicadas y Sistemas Universidad Nacional Autónoma de México 21 de octubre de 2004

2 ¿Qué es C#? Lenguaje de programación de Microsoft ¿Evolución? de C++
Totalmente orientado a objetos Seguridad en tipos Polimorfismo Sobrecarga de operadores y métodos Herencia

3 ¿Por qué y para qué? Lenguaje sencillo pero robusto
Sencillez de Visual Basic Poder de C++ Velocidad de desarrollo comparable con IDEs de Borland (Delphi, Builder)

4 ¿Por qué y para qué? Independencia de plataforma .NET
Liberación de la especificación MONO: Emulación en ambientes Linux

5 ¿Por qué y para qué? Bondades Seguridad de tipos OO
Objetos <- Tipos básicos de datos int Counter = 14; Console.WriteLine( Counter.ToString() ); Administración automática de memoria

6 ¿Por qué y para qué? Bondades...
Sintaxis simplificada: operadores de referencia y namespaces: ., ->, :: sustituidos por -> XML: ¿Comentarios? ¡Documentación! COMponentes y componentes .NET Integración con otros lenguajes .NET

7 ¿Por qué y para qué? Bondades...
Apuntadores: ¿Seguridad o no seguridad? ¡Dinero! $$: VB .NET vs C# Conclusión: Sistemas Windows y arquitecturas soportadas bajo .NET

8 Plataforma .NET Visión futura de Microsoft: ‘Cómputo distribuido’
Razones Código reutilizable “Funciona donde sea” Proveedores de servicios

9 Plataforma .NET Componentes Lenguajes Definición de clases
CLR (Common Language Runtime) o máquina virtual de MSIL* Lenguajes Visual Basic .NET C#, puramente .NET C++ administrado o Managed C++ *Microsoft Intermediate Language

10 C# vs. JAVA Compilación a lenguaje intermedio
JAVA bytecode Microsoft Intermediate Language (MSIL) Más tipos primitivos en C# Tipos enumerados: enumeration Estructuras: struct No existe herencia múltiple Herencia a través de interfaces

11 C# vs. JAVA Arreglos n-dimensionales
JAVA: Arreglos que son miembros de otros arreglos C#: Verdaderos arreglos Polimorfismo implementado en manera mas complicada que en JAVA

12 C# vs. C++ Ausencia de encabezados
Administración automática de memoria Apuntadores: unsafe Límites en arreglos int != bool switch

13 El lenguaje Estructura básica de un programa
// A skeleton of a C# program using System; namespace MyNamespace1 { class MyClass1 { … } struct MyStruct interface IMyInterface namespace MyNamespace2 class MyClass2 public static void Main(string[] args) }

14 El lenguaje “Hola Mundo” Servicios .NET // "Hola Mundo!" en C#
using System; class Hola { static void Main() Console.WriteLine("Hola Mundo!"); } Servicios .NET

15 El lenguaje Palabras reservadas abstract class event if new readonly
struct unsafe as const explicit implicit null ref switch ushort base continue extern in object return this using bool decimal false int operator sbyte throw virtual break default finally interface out sealed true volatile byte delegate fixed internal override short try void case do float is params sizeof typeof while catch double for lock private stackalloc uint char else foreach long protected static ulong checked enum goto namespace public string unchecked

16 El lenguaje Operadores Categoría Operadores Aritméticos + - * / %
+   -   *   /   % Lógicos &   |   ^   !   ~   &&   ||   true   false Concatenación + Incremento/Decremento ++   -- Corrimiento <<   >> Relacionales ==   !=   <   >   <=   >= Asignación =   +=   -=   *=   /=   %=   &=   |=   ^=   <<=   >>= Acceso a miembros . Índices [] Cast () Condicional ?: Concatenación y remoción +   - Creación de objetos new Información de tipos is   sizeof   typeof    Desreferencia y dirección *   ->   []   &

17 Tipo en la plataforma .NET
El lenguaje Tipos Tipo de C# Tipo en la plataforma .NET ¿Signo? Bytes empleados Posibles valores sbyte System.Sbyte Si 1 -128 a 127 short System.Int16 2 a 32767 int System.Int32 4 a long System.Int64 8 a byte System.Byte No 0 a 255 ushort System.Uint16 0 a 65535 uint System.UInt32 0 a ulong System.Uint64 0 a float System.Single Aproximadamente ±1.5 x a ±3.4 x 1038 con 7 dígitos significativos double System.Double Aproximadamente ±5.0 x a ±1.7 x con 15 o 16 dígitos significativos decimal System.Decimal 12 Aproximadamente ±1.0 x a ±7.9 x 1028 con 28 o 29 dígitos significativos char System.Char - Cualquier carácter de Unicode (16 bit) bool System.Boolean 1 / 2 true o false

18 El lenguaje Sobrecarga de operadores Referencia y valor operator
public static bool operator == (Value a, Value b) {return a.Int == b.Int} Referencia y valor Copia por referencia object x = new object(); x.myValue = 10; object y = x; y.myValue = 20;

19 El lenguaje Arreglos de una dimensión Arreglos rectangulares
int[] i = new int[100]; // Arreglo de 100 enteros int[] i = new int[2]; //Llenado del arreglo i[0] = 1; i[1] = 2; int[] i = new int[] {1,2}; // Declaración y asignación int[] i = {1,2}; Arreglos rectangulares // Declaración de una matriz de 2x3 int[,] squareArray = new int[2,3]; //Declaración y asignación de una matriz 2x3 int[,] squareArray = {{1, 2, 3}, {4, 5, 6}}; //Algunos métodos inherentes de la clase: System.Array squareArray.GetLowerBound(1); // Nivel inferior squareArray.GetUpperBound(1); // Nivel superior squareArray.GetLength(0); // Tamaño del arreglo

20 El lenguaje Arreglos no rectangulares // Declaración del arreglo
int[][] jag = new int[2][]; jag[0] = new int [4]; //Dimensión de la primer fila jag[1] = new int [6]; //Dimensión de la segunda fila // Una manera de declarar e inicializar int[][] jag = new int[][] {new int[] {1, 2, 3, 4}, new int[] {5, 6, 7, 8, 9, 10}};

21 El lenguaje Tipo enumerado Nombre o valor public enum DAYS {
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } Nombre o valor using System; public class EnumTest public enum DAYS: byte { Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo } public static void Main() Array dayArray = Enum.GetValues(typeof(EnumTest.DAYS)); foreach (DAYS day in dayArray) Console.WriteLine( "El número {0} de EnumTest.DAYS " + " es {1}", day, day.ToString());

22 El lenguaje Control de flujo: ciclos while do-while for for each
Itera sobre cada miembro que derive de la interfaz IEnumerable int[] a = new int[]{1,2,3}; foreach (int b in a) System.Console.WriteLine(b);

23 El lenguaje Control de flujo: salto break continue goto
No recomendado para realizar iteraciones Útil en situaciones de decisión en transiciones (autómatas)

24 El lenguaje Control de flujo: selección if-else switch
Evalúa solo un caso a la vez Diferente en sintaxis respecto de C++ Opciones de fin por cada caso: break goto etiqueta

25 El lenguaje Estructuras Inicialización en la creación
struct Coordinate { public int x; public int y; public Coordinate(int x, int y) this.x = x; this.y = y; } Inicialización en la creación Coordinate c = new Coordinate(10, 2);

26 El lenguaje Espacios de nombres: Namespaces
Colecciones de clases ordenadas jerárquicamente Bien diferenciadas Operador ‘.’ para especificar que clase es la que se usa

27 El lenguaje Clases Declaración formada por 4 partes Atributos
Información extra para el compilador Modificadores Tipo de acceso a los tipos definidos dentro de la clase Clase base Nombre de la clase y herencia Cuerpo de la clase

28 El lenguaje Clases: Modificadores public internal protected
protected internal private new abstract sealed

29 El lenguaje Métodos Operaciones asociadas con la clase Modificadores
static virtual, override extern Parámetros Referencia o valor Ref/out

30 El lenguaje Métodos: sobrecarga Identificador de nula duplicidad
Nombre del método Parámetros (tipo de ellos) public static int myMethod(int a,ref double b); public static void myMethod(int e,ref double f,out bool g,char h);

31 El lenguaje Métodos: Polimorfismo
Sobre escritura o redefinición de un método heredado public virtual double getArea() // En Rectangulo { return length * width; } public override double getArea() // En Cuadrado:Rectangulo return length * length; Square sq = new Square(5); double area = sq.getArea(); Rectangle r = sq; double area = r.getArea(); En ambos casos se usa el método Cuadrado::Rectangulo

32 El lenguaje Métodos: Polimorfismo Ocultamiento
public double getArea() // En Rectangulo { return length * width; } public new double getArea() // En Cuadrado:Rectangulo return length * length; Square sq = new Square(5); double area = sq.getArea(); Rectangle r = sq; double area = r.getArea(); El método no es sobre escrito realmente, sino solo escondido a la clase de donde heredo

33 Ejemplo: TDA Cola ////////////////////////////////////////////////////////////////////// // // Extraído de //Inicio de código namespace Queue { using System; /// /// implementación de una cola FIFO public class Queue { private uint count = 0; private Node front = null; private Node end = null; private Node temp = null; /// Verifica si la cola está vacia public bool empty { get { return(count==0); }

34 Ejemplo: TDA Cola /// Regresa el número de elementos en la cola
public uint Count { get { return count; } /// Agrega un elemento a la cola public void append(object obj) { if(count==0){ front = end = new Node(obj, front); } else { end.Next = new Node(obj, end.Next); end = end.Next; count++; /// Despacha al primer elemento de la cola. Es importante notar que no se libera /// memoria pues esto es dejado a la máquina virtual (recolector de basura) public object serve() { temp = front; if(count == 0) throw new Exception("Cola vacia!"); front = front.Next; count--; return temp.Value;

35 Ejemplo: TDA Cola /// /// Imprime el contenido de la cola
public void printQueue() { temp = front; while(temp != null){ Console.WriteLine("{0}", temp.Value.ToString()); temp = temp.Next; } /// La clase nodo se encarga de apunar al séte elemento y /// guarder al objeto class Node { public Node Next; public object Value; public Node(object value, Node next) Next = next; Value = value;

36 Ejemplo: TDA Cola /// /// Prueba la cola para 3 elementos
class QueueTest { static void Main() { Queue Q = new Queue(); object obj; uint i,j; UInt16[] numbers = new UInt16[]{10,20,30}; for(i = 0;i < numbers.Length;i++) Q.append(numbers[i]); Q.printQueue(); Console.WriteLine("Elementos en la cola = {0}", Q.Count); j = Q.Count; for(i = 0;i < j;i++){ obj = Q.serve(); Console.WriteLine("Despacha cola = {0}", obj.ToString()); } //Fin del código

37


Descargar ppt "Dra. Ana Lilia Laureano Cruces"

Presentaciones similares


Anuncios Google