Dra. Ana Lilia Laureano Cruces

Slides:



Advertisements
Presentaciones similares
Tema 4: Programación Orientada a Objetos en C# y VB.NET
Advertisements

2. Manejo de memoria Manejo de memoria estática
Curso de java básico (scjp)
Herencia en C#.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Fundamentos de la programación orientada a objetos
Uso de variables de tipo referencia
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Orientación a Objetos con Java SE
Visual C#.NET Creado especialmente para .NET Estándar ECMA (2002)
Introducción Abdelahad, Corina Natalia Abdelahad, Yanina Zoraida
Desarrollo de Aplicaciones para Internet
Programación Orientada a Objetos
Fundamentos básicos del lenguaje C#
1.2 Sintaxis del lenguaje Java.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Marzo 2007 Lenguajes Visuales Clase III.
Clase II [Delio Alanis Nieto] [].
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Herencia e Interfaces.
Estructuras de Control
Material de apoyo Unidad 2 Estructura de datos
Modificadores.
TALLER DE PROGRAMACIÓN III
POO Java Módulo 3 Elementos de programas Identificadores
Lic. Rosemary Torrico Bascopé
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS

Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
SCJP Sun Certified Programmer for Java 6
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Clase Teórica No. 4 Programación IV
Jerarquía de Clases: Herencia, Composición y Polimorfismo
El lenguaje de programación Java
JAVA J.A.C..
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Sintaxis de C# (Declaraciones y Tipos)
Prof. Mayra M. Méndez Anota.  Herramientas  Características  Convenciones  Estructura de una clase  Sintaxis de: métodos, atributos, constructores.
ESTRUCTURA DE DATOS EN JAVA
Patrones Creacionales
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Curso Programación en Java
Microsoft© Visual Basic . Net.
Computación II Repaso de java Karina Figueroa Mora.
Lenguaje de programación Java UNIVERSIDAD REGIONAL DEL SURESTE.
El Lenguaje C++. Creación de programas simples de C++ Builder como ejercicios en C++. Los elementos de control fundamentales en C++, incluyendo operadores.
Resumen Fundamentos de Programación/ Programación I
Programación en C para electrónicos
Ivette C. Martínez - Héctor Palacios Java – Modulo 1 Introducción y Fundamentos del lenguaje de programación Java.
Programación avanzada en Java Miguel Ángel Corella 16 de Septiembre de 2005.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Clase 2 Curso Microsoft.NETCurso Microsoft.NET I.S.F.T. N° 182I.S.F.T. N° 182.
Fundamentos de Programación
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
Elementos básicos.  Fuertemente tipeado.  Sintaxis similar a C/C++.  Sin punteros: garbage collection.  Portable.  Integra librerías para objetos.
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,
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.
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
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.
Taller de Java Universidad de los Andes
Fundamentos básicos del lenguaje C#. Parte 1 Introducción a C#
Transcripción de la presentación:

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

¿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

¿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)

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

¿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

¿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

¿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

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

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

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

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

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

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) }

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

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

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 *   ->   []   &

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 -32768 a 32767 int System.Int32 4 -2147483648 a 2147483647 long System.Int64 8 -9223372036854775808 a 9223372036854775807 byte System.Byte No 0 a 255 ushort System.Uint16 0 a 65535 uint System.UInt32 0 a 4294967295 ulong System.Uint64 0 a 18446744073709551615 float System.Single Aproximadamente ±1.5 x 10-45 a ±3.4 x 1038 con 7 dígitos significativos double System.Double Aproximadamente ±5.0 x 10-324 a ±1.7 x 10308 con 15 o 16 dígitos significativos decimal System.Decimal 12 Aproximadamente ±1.0 x 10-28 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

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;

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

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}};

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());

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);

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

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

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);

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

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

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

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

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);

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

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

Ejemplo: TDA Cola ////////////////////////////////////////////////////////////////////// // // Extraído de http://www.csharphelp.com/archives/archive14.html //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); }

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;

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;

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