Fundamentos básicos del lenguaje C#

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Programación orientada a objetos en Visual Basic .NET
Métodos y parámetros.
Introducción a C#.
Curso de java básico (scjp)
Lenguaje PHP Capítulo 4.
Herencia en C#.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Instrucciones y excepciones
Fundamentos de la programación orientada a objetos
Uso de variables de tipo referencia
Uso de variables de tipo valor
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
Desarrollo de Aplicaciones para Internet
Tema 2: Lenguaje PHP básico
Visual Basic.NET Daniel A. Seara NDSoft Consultoría y Desarrollo
Daniel A. Seara Director Regional MSDN NDSoft
1.2 Sintaxis del lenguaje Java.
UNIVERSIDAD LATINA (UNILA)
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Programación Orientada a Objetos 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.
Modificadores.
TALLER DE PROGRAMACIÓN III
POO Java Módulo 3 Elementos de programas Identificadores
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.
Técnicas avanzadas de programación Interfaces
SCJP Sun Certified Programmer for Java 6
Clase Teórica No. 4 Programación IV
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
El lenguaje de programación Java
Tema 2: Los tipos de datos
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Sintaxis de C# (Declaraciones y Tipos)
ESTRUCTURA DE DATOS EN JAVA
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Microsoft© Visual Basic . Net.
Herramientas de polimorfismo y herencia en C++
Control de errores visual basic
Elementos básicos del lenguaje
Ivette C. Martínez - Héctor Palacios Java – Modulo 1 Introducción y Fundamentos del lenguaje de programación Java.
1 Definición y Conversión de datos Agustín J. González ELO-329.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
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.
C# desde cero.
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
Clase 2 Curso Microsoft.NETCurso Microsoft.NET I.S.F.T. N° 182I.S.F.T. N° 182.
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
CONCEPTOS.
Fundamentos de Programación
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
Programación Orientada a Objetos: CLASES Y OBJETOS
1 Definición y Conversión de datos Agustín J. González ELO-329.
Clases “ Es una Abstracción de un elemento del mundo real ”
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
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,
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
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 I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
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:

Fundamentos básicos del lenguaje C# Daniel A. Seara Director Regional MSDN Buenos Aires - ARGENTINA NDSoft

Parte 1 Introducción a C#

Sistemas Orientados a Componentes Modelo de componentes exitoso Plataforma comercial de componentes viable Permite la integración y el “re uso” de componentes en una organización

Sistemas Orientados a Componentes Sin embargo: COM está mostrando signos de envejecimiento DCOM no funciona como se espera en Internet Mayor uso de componentes = mayor “infierno de DLLs” Aún con herramientas maduras las implementaciones no son fáciles COM no es totalmente “agnóstico” del lenguaje Hace algunas asunciones respecto del formato binario Soporta el menor común denominador

Concepto de Componentes en .NET Se tomo lo mejor de COM+ Interfaces como contratos abstractos Los componentes implementan y exponen interfaces Exploración dinámica de las capacidades de los componentes Comportamiento según atributos (transacciones, “Pooling”, ...) Y le agrega Verdadera orientación a objetos Modelo de eventos nativos Re uso de componentes entre lenguajes Extensible a todo nivel

Porque C# ? Primer lenguaje orientado a componentes Basado en la experiencia de COM+ Soporte nativo para Namespaces Versionamiento Desarrollo basado en atributos El poder de C con la facilidad de VB Curva de aprendizaje mínima Mucho más limpio que C++ Más estructurado que VB

Sección 2: Elementos de C# Forma y estructura Entendiendo los tipos del sistema Entendiendo el lenguaje C#

Forma y Estructura No hay archivos de encabezamiento (.H) No es necesario “declarar” las clases y los tipos La declaración y el código están en un solo lugar Hace que el código sea más consistente y mantenible Facilita la colaboración a nivel equipo de desarrollo Declaraciones accesibles: Metadata Compilación condicional pero sin macros

Tipos definidos por el Sistema Construido sobre el Common Type System Conceptos básicos: Todo es un objeto Todo tiene herencia implícita de System.Object Distinción entre valores y referencias Por valor: tipos simples, enumeradores, estructuras Por referencia: interfaces, clases, vectores

Tipos Simples Enteros IEEE Floating Point Numéricos exactos byte, sbyte (8bit), short, ushort (16bit) int, uint (32bit), long, ulong (64bit) IEEE Floating Point double (precisión de 15-16 dígitos) float (precisión de 7 dígitos) Numéricos exactos Decimal (28 dígitos significativos) Cadenas de caracteres char string (referencia) Boolean bool (no es intercambiable con int)

Enums Colección de elementos nombrados Fuertemente tipeados Mejor usar "color.Azul" que "3" Mas legibilidad del código Tan liviano cómo un int Ejemplo: enum Color { Rojo, Verde, Azul, Amarillo };

Vectores Inician en cero, vinculados por tipo Basadas en la clase System.Array de .NET Declaración con tipo y forma, pero sin límite int[] SingleDim; int[,] TwoDim; int [][] Jagged; Creación utilizando new con límites o inicializadores SingleDim = new int[20]; TwoDim = new int[,]{{1,2,3},{4,5,6}}; Jagged = new int[1][]; Jagged[0] = new int[]{1,2,3}

Interfaces Declaración del contrato semántico entre partes Permite la orientación a componentes Define la estructura y la semántica para propósitos específicos Definición de métodos y propiedades abstractos Soporta herencia (múltiple) Ejemplo: interface IPersonaEdad { int AnioDeNacimiento {get; set;} int Edad(); }

Clases Implementación de código y datos Implementa interfaces public class Persona : IPersonaEdad { private int iAnio; public Persona() { } public int AnioDeNacimiento { get { return iAnio;}; set { iAnio = value;}; } public int Edad() { return Today()- AnioDeNacimiento }; } Implementación de código y datos Implementa interfaces Herencia simple Las clases contienen: Campos: variables miembro Propiedades: valores accedidos a través de get/set Métodos: funcionalidad Especiales: eventos, Indexadores, Delegates

Estructuras Un grupo de código y datos Desarrolladores C++! Similar a las clases pero: No permite herencia Siempre son pasadas por valor Clases vs. Estructuras Estructuras  Contenedor de datos liviano, por valor Clases  objetos, tipo referenciados Desarrolladores C++! struct no es un class donde todo es público Ejemplo: struct Point { double X; double Y; void MoveBy(double dX, double dY) { X+=dX; Y+=dY; } }

Propiedades Mezcla entre campos y métodos Uso de propiedades para: Implementación de miembros sólo lectura (omitiendo set) Validación en asignación Valores calculados o compuestos Exposición de valores en las interfaces Ejemplo: string Name { get { return name; } set { name = value; } }

Indexadores Forma consistente de construir contenedores Basados en las propiedades Permite el acceso indexado a objetos contenidos El índice puede ser de cualquier tipo Ejemplo: object this[string index] { get { return Dict.Item(index); } set { Dict.Add(index,value); } }

Delegates y Eventos Delegate Eventos Similar a los punteros a funciones de C, C++ Fuertemente tipeados delegate void Clicked(Element e, Point p); Eventos Modelo de eventos intrínseco al lenguaje (por fin) Declaración y llamada en la clase fuente del evento Button.OnClick += MyClickHandler; event Click OnClick; ... OnClick(this,PointerLocation);

Atributos Similar a los atributos existentes de IDL Acceso declarativo a funcionalidad Extensible: atributos “Custom” [Transaction(TransactionOption.Required)] class MyBusinessComponent { ... } [PersonFirstName] String Vorname; [PersonFirstName] String PrimarioNome;

Instrucciones Muy “C”: control de flujo No muy “C”: if (<bool expr>) { ... } else { ... }; switch(<var>) { case <const>: ...; }; while (<bool expr>) { ... }; for (<init>;<bool test>;<modify>) { ... }; Do { ... } while (<bool expr>); No muy “C”: lock(<object>){ ... }; Secciones críticas checked {...}; unchecked { ...}; Protección de sobrecarga de enteros

Foreach Iteración de colecciones y vectores Pueden ser utilizados en clases propias Acceso sólo lectura Ejemplo: Point[] Points = GetPoints(); foreach( Point p in Points ) { MyPen.MoveTo(Point.x,Point.y); }

Sobrecarga de Operadores Casi todos los operadores pueden ser sobrecargados No hay sobrecarga para Asignaciones Operadores especiales (sizeof, new, is, typeof) Ejemplo: Total operator +(int Amount, Total t) { t.total += a; }

Acceso a los miembros Adopción del modelo C++ Expande el modelo C++: public  todos pueden acceder protected  sólo miembros de la herencia private  sólo miembros de la clase Expande el modelo C++: sealed  no puede ser utilizado como clase base internal  acceso público solamente en el assembly

Punteros, necesito punteros C# soporta Tipo string intrínseco Modelo rico de colecciones Parámetros por referencia void increment(ref int value, int by) Parámetros de salida bool add(int a, int b, out int c) Eliminación de la mayoría de las causas Pero, aún disponible: unsafe unsafe void crypt(byte[] arr) { byte * b = arr; ... }

Manejo de Excepciones Muy similar a C++, SEH Se debe leer así: try ejecutando este código ... ... Si se genera un error, catch lo que puedo llegar a manejar ... ...finally permítame hacer alguna limpieza manual Ejemplo: try { //... código } catch(SomeException e) { //... Control de error } finally { //...salida “correcta” }

Namespaces Forma de agrupar LÓGICAMENTE clases Un namespace puede contener a clases y a otros namespace Similar al concepto de COMPONENTE COM Pero desacoplado de la definición física Se declaran con namespace Referenciados con using

Comentarios XML Forma consistente de crear documentación en el código ///: Todo lo comentado así va a parar a la metadata Ejemplo: ///<summary> /// Esta función permite calular el monto /// final incluyendo todos los impuestos /// </summary> public decimal GetTotalValue() { }

Sección 3: Las Herramientas Framework SDK – herramientas básicas C# Compiler Visual Debugger NMake VisualStudio.NET agrega Ambiente visual Asistentes y plantillas Ayuda “Inteligente”

Framework SDK Contiene al compilador C# (y VB, C++, JScript) Se ejecuta desde la línea de comando Visual Debugger – GuiDebug Acceso completo al runtime y los metadatos Herramientas NMake, Security, Configuration, IL Disassembler, ... Gratis para todos

Ejemplos “Hola mundo” namespace Consola { using System; public class Class1 public Class1() } public static int Main(string[] args) Console.WriteLine("Hola, mundo"); Console.Read(); return 0; “Hola mundo”

Ejemplos – Comentarios XML using System; /// <summary> /// Muestra en pantalla la frase "hola, mundo" /// </summary>

Parte 2 Desarrollo de Componentes Contenido Introducción a componentes .NET Interoperabilidad con COM+

1. Introducción a Componentes .NET Grupo de clases que están típicamente bajo un Namespace común Las clases que sean públicas se expondrán hacia fuera del componente Todo elemento “público” de cada clase se ve fuera de ella No se registra el componente en ningún lado

Ejemplo de Componente .NET en C#

Ejemplo de Componente .NET en C# namespace Componente1 { using System; /// <summary> /// MiCOmponente. /// </summary> public class MiComp1 public MiComp1() } public System.String MiFunc() /// Devuelve la hora actual. return(System.DateTime.Now.ToString());

Componentes .NET Jerarquía de herencia Definición de Namespaces Implementación física Implementación de interfaces

Jerarquía de Herencia Independiente de los Namespaces Independiente de la implementación física

Definición de NameSpaces Sirve para ordenar las clases (repaso) Es una agrupación lógica

Ejemplo de Definición de Namespaces MSDNLatam MSDNLatam.Nucleo MSDNLatam.Nucleo.Datos MSDNLatam.Nucleo.Datos.SQL MSDNLatam.Nucleo.Datos.ADO MSDNLatam.Aplicacion MSDNLatam.Aplicacion.Interfaz MSDNLatam.Aplicacion.Reglas MSDNLatam.Aplicacion.Datos

Implementación Física DLLs Una DLL puede implementar uno o más Namespaces Varias DLLs pueden implementar un Namespace Nada que ver con COM Las DLLs no se bloquean Puedo tener varias versiones en una máquina

Implementación Física - Assembly Unidad de instalación y versionamiento Colección de archivos físicos Tiene un número de versión con formato XX.YY.Xx.yy XX e YY tienen que ser exactamente los mismos que tenga registrados los clientes

Servicio de Componentes - (Framework .NET) Provee: Transacciones (DTC, TIP, XA, COMTI) Auto Completion Activación “Just in time” Pooling de objetos Colas Eventos Seguridad basada en roles

Servicio de Componentes Basados en COM+ Componentes .NET se “hostean” dentro de aplicaciones COM+ Tienen la capacidad de auto registrarse en COM y dentro de una aplicación

¿Cómo seguimos? Encontrará varios “ejercicios” de código junto a esta presentación Cuando los haya realizado, podrá acceder a la siguiente presentación de C# No olvide, los grupos de noticias están allí... Para que compartamos información

Finalmente... Muchas gracias Daniel A. Seara Director Regional MSDN Buenos Aires - ARGENTINA