Академический Документы
Профессиональный Документы
Культура Документы
Parte 1 Introduccin a C#
COM no es totalmente agnstico del lenguaje Hace algunas asunciones respecto del formato binario Soporta el menor comn denominador
Y le agrega
Verdadera orientacin 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+
El poder de C con la facilidad de VB Curva de aprendizaje mnima Mucho ms limpio que C++ Ms estructurado que VB
Seccin 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
Tipos Simples
Enteros
byte, sbyte (8bit), short, ushort (16bit) int, uint (32bit), long, ulong (64bit) double (precisin de 15-16 dgitos) float (precisin de 7 dgitos) Decimal (28 dgitos significativos) char string (referencia)
Enums
Coleccin de elementos nombrados Fuertemente tipeados Mejor usar "color.Azul" que "3"
Mas legibilidad del cdigo Tan liviano cmo un int
Ejemplo:
enum Color { Rojo, Verde, Azul, Amarillo };
Vectores
Inician en cero, vinculados por tipo Basadas en la clase System.Array de .NET Declaracin con tipo y forma, pero sin lmite
int[] SingleDim; int[,] TwoDim; int [][] Jagged;
Interfaces
Declaracin del contrato semntico entre partes
Permite la orientacin a componentes
Define la estructura y la semntica para propsitos especficos Definicin de mtodos y propiedades abstractos Soporta herencia (mltiple) Ejemplo: interface IPersonaEdad
{ int AnioDeNacimiento {get; set;} int Edad(); }
Clases
Implementacin de cdigo y datos Implementa interfaces Herencia simple Las clases contienen:
Campos: variables miembro Propiedades: valores accedidos
public class Persona : IPersonaEdad { private int iAnio; public Persona() { } public int AnioDeNacimiento { get { return iAnio;}; set { iAnio = value;}; } public int Edad() { return Today()AnioDeNacimiento }; }
Estructuras
Un grupo de cdigo y datos
Similar a las clases pero:
No permite herencia Siempre son pasadas por valor
Desarrolladores C++!
struct no es un class donde todo es pblico
Ejemplo:
struct Point { double X; double Y; void MoveBy(double dX, double dY) { X+=dX; Y+=dY; } }
Propiedades
Mezcla entre campos y mtodos Uso de propiedades para:
Implementacin de miembros slo lectura
(omitiendo set) Validacin en asignacin Valores calculados o compuestos Exposicin de valores en las interfaces
Ejemplo:
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]
{ } set { Dict.Add(index,value); } }
Delegates y Eventos
Delegate
Similar a los punteros a funciones de C, C++ Fuertemente tipeados delegate void Clicked(Element e, Point p);
Eventos
Modelo de eventos intrnseco al lenguaje (por fin)
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
if (<bool expr>) { ... } else { ... }; switch(<var>) { case <const>: ...; }; while (<bool expr>) { ... }; for (<init>;<bool test>;<modify>) { ... };
No muy C:
lock(<object>){ ... };
Foreach
Iteracin de colecciones y vectores Pueden ser utilizados en clases propias Acceso slo 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; }
assembly
Parmetros de salida
bool add(int a, int b, out int c)
Manejo de Excepciones
Muy similar a C++, SEH Se debe leer as:
try ejecutando este cdigo ... ... Si se genera un error, catch lo que puedo llegar a
Ejemplo:
try { //... cdigo } catch(SomeException e) { //... Control de error } finally { //...salida correcta }
Namespaces
Forma de agrupar LGICAMENTE clases
Un namespace puede contener a clases y a
otros namespace Similar al concepto de COMPONENTE COM Pero desacoplado de la definicin fsica
Comentarios XML
Forma consistente de crear documentacin en el cdigo ///: Todo lo comentado as va a parar a la metadata Ejemplo:
///<summary> /// Esta funcin permite calular el monto /// final incluyendo todos los impuestos /// </summary> public decimal GetTotalValue() { }
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 lnea de comando
Herramientas
NMake, Security, Configuration, IL Disassembler,
...
Ejemplos
namespace Consola { using System; public class Class1 { public Class1() { }
Hola mundo
/// <summary> /// MiCOmponente. /// </summary> public class MiComp1 { public MiComp1() { } public System.String MiFunc() /// <summary> /// Devuelve la hora actual. /// </summary> { return(System.DateTime.Now.ToString()); } } }
Componentes .NET
Jerarqua de herencia Definicin de Namespaces Implementacin fsica Implementacin de interfaces
Jerarqua de Herencia
Independiente de los Namespaces Independiente de la implementacin fsica
Definicin de NameSpaces
Sirve para ordenar las clases (repaso) Es una agrupacin lgica
Implementacin Fsica
DLLs Una DLL puede implementar uno o ms Namespaces Varias DLLs pueden implementar un
Namespace
Nada que ver con COM Las DLLs no se bloquean Puedo tener varias versiones en una mquina
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 aplicacin
Cmo seguimos?
Encontrar varios ejercicios de cdigo junto a esta presentacin Cuando los haya realizado, podr acceder a la siguiente presentacin de C# No olvide, los grupos de noticias estn all... Para que compartamos informacin
Finalmente...
Muchas gracias