35
La potencia sin control … La potencia sin control … Introducción a C# Introducción a C# José Antonio Jiménez Carmona José Antonio Jiménez Carmona El Señor es mi pastor, nada me fa Juan María Laó Ramos Juan María Laó Ramos

IntroC#2007-2008

Embed Size (px)

DESCRIPTION

Intro C#2007-2008

Citation preview

  • La potencia sin control Introduccin a C#Jos Antonio Jimnez CarmonaEl Seor es mi pastor, nada me faltaJuan Mara La Ramos

  • NDICEQu es .NET?Qu es C#?Caractersticas de C#VariablesClasesOperadoresSentenciasHerencia de clasesHerencia de interfacesDelegados y eventosExcepciones

  • Qu es .NET?Idea

    Crear y ejecutar software en cualquier dispositivo, en cualquier lenguaje.

  • Cdigo fuenteCompilacinAntes de la instalacin o la primera vez que se invoca a cada mtodoCdigo (IL)MetadatosQu es .NET?

  • Caractersticas de C#Lenguaje de alto nivel y sencillo

    Orientado a objetos, componentes, al punto.

    Lenguaje moderno y seguro

    Gestin automtica de la memoria

    Sintaxis casi igual a la de JavaSi sabes Java, sabes C#

  • Estructura de un programa en C#

    using System;using System.Collections.Generic;using System.Text;

    namespace MiPrograma{ public class Program { public static void Main(string[] args) {

    } }}

  • Variables Clasificacin

    Tratadas por valor Tratadas por referencia

  • Tipos predefinidosPredefinidosReferencia object, stringCon signo sbyte, short, int, longSin signo byte, ushort, uint, ulongCaracter charFlotantes float, double, decimalLgico boolSon como un alias a los tipos definidos en system. int == System.Int32

  • VariablesLas variables por valor pueden declararse e iniciarse:bool bln = true;byte byt1 = 22;char ch1=x, ch2=\u0066; // Unicode para adecimal dec1 = 1.23M;double dbl1=1.23, dbl2=1.23D;short sh = 22;int i = 22;long lng1 =22, lng2 =22L; // L longsbyte sb = 22;float f=1.23F;ushort us1=22;uint ui1=22, ui2=22U; // U unsignedulong ul1 =22, ul2=22U, ul3=22L, ul4=2UL;

  • VariablesLos valores por referencia son creados con la palabra clave new:object o = new System.Object();Strings se pueden inicializar directamente:string s = "Hola"; // usan caracteres Unicode de 2 bytesC# soporta secuencias de escape como en C:string s1 = "Hola\n"; // salto de lneastring s2 = "Hola\tque\ttal"; // tabuladorComo las sentencias de escape comienzan con \, para escribir este carcter hay que doblarlo, o usar @:string s3 = "c:\\WINNT"; string s4 = @"C:\WINNT";

  • Variables Tipos enumerados Un enumerado es un tipo de variable cuyos valores posibles que puede tomar son especificados por nosotros

    Definicin del tipo:

    enum { valor1, valor2, , valorN }

    Declaracin de una variable:

    ;

    Asignacin de una variable:

    = .valor;

  • Variables Tipos enumerados Ejemplo:

    enum Color { azul, verde, rojo, amarillo }

    Color c;

    c = Color.rojo;

  • Expresiones y OperadoresLas expresiones en C# son muy similares a las de C y C++Operadores aritmticos:+ , Suma unaria , +a- , Resta unaria, -a++, Incremento, ++a o a++--, Decremento, --a o a--+, Suma, a+b-, Resta, a-b*, Multiplicacin, a*b/, Divisin, a/b%, Resto, a%b

  • Expresiones y OperadoresOperadores relacionales:== , Igualdad , a==b!= , Inigualdad, a!=b=bLos programadores de Visual Basic deben notar que se usa == en vez de = para igualdad, != para desigualdad en vez de e = para asignacin

  • Expresiones y OperadoresOperadores relacionales:! , Negacin , !a& , And binario, a&b|, Or binario, a|b^, Or exclusivo, a^b~, Negacin binaria, ~a&&, And lgico, a&&b||, Or lgico, a||bOperadores de manipulacin de bits:int i1=32;int i2=i13; // i3==4

  • Expresiones y OperadoresOperadores de asignacin (para a==3 y b==7):= , a=b , 7+= , a+=b, 10-=, a-=b, -4*=, a*=b, 21/=, a/=b, 0%=, a%=b, 3|=, a|=b, 7>>=, a>>=b, 0
  • Expresiones y OperadoresOtros operadores:min=a
  • ClasesUna clase es la definicin de las caractersticas concretas de un determinado tipo de objetos

    Un objeto es un conjunto de datos y de mtodos que permiten manipular dichos datos

  • ClasesJuanmaJoseManolo

  • Clases parciales// Demo.Part1.cs

    using System;public partial class Demo{ public Demo(){ Console.Write( "P1" ); }}// Demo.Part2.cspublic partial class Demo{ private int i; }// Demo.Part3.cs // Error!public class Demo{ // Error! private int i;

    // OK private int j;

    public void Test() { // Error! Console.Write( "P3" ); } }

  • Variables - PropiedadesUna propiedad es una mezcla entre el concepto de atributo y el concepto de mtodo.

    Externamente es accedida como si de un atributo normal se tratase, pero internamente es posible asociar cdigo a ejecutar en cada asignacin o lectura de su valor.

  • Variables - EstructurasUna estructura es lo mismo que una clase, pero con tres diferencias principalmente:

    Se trata como variable por valor

    Es ms rpida y ocupa menos memoria

    No tiene herencia

  • Variables InterfacesUna interfaz especifica un contrato que una clase debe cumplir

    Contiene las cabeceras de los mtodos y propiedades que debe tener dicha clase

    Una clase puede implementar 1 ms interfaces

  • SentenciasIF

    WHILE

    DO WHILE

    FOR

    FOREACH

    SWITCH.

  • Sentencias en C#continue, se usa para saltar el resto de la iteracin y comenzar la siguientefor (int i=1; i
  • Sentencias en C#Sirve para seleccionar entre mltiples opciones posiblesuint i=2;switch(i) {case 0:goto case 2; // para permitir varios casos usar gotocase 1:goto case 2; case 2:System.Console.WriteLine("i3");break;}

  • Herencia Permite definir nuevas clases a partir de otras ya definidas

    Si una clase A hereda de otra clase B, el compilador incluye en A el contenido de B

    Una clase no puede heredar de ms de 1 clase

    class : {}

  • HerenciaModificadores

    Controlan la visibilidad de los atributos y mtodos de una clase

    Modificadores ms importantes:

    public:Visible fuera de la claseprivate :Visible slo dentro de la claseprotected:Visible dentro de la clase y de sus clases hijas

  • Herencia de clases (3)Redefinicin de mtodos

    El mtodo a redefinir se precede de virtual

    El nuevo mtodo se precede de override

  • Herencia de interfacesPermite definir nuevas interfaces a partir de otras ya definidas

    Si una interfaz A hereda de otra interfaz B, el compilador incluye en A el contenido de B

    Una interfaz puede heredar de 1 ms interfaces

    interface : {}

  • ExcepcionesUna excepcin es un objeto que representa un error

    Surgen al haber un error, pero podemos provocarlas nosotros mismos

    Podemos crear nuestras propias excepciones

  • DelegadosTipo que representa a una funcin

    Por tanto podemos crear variables de ese tipo.

    Dicha variable es una representacin de esa funcin.

  • Recordando a DevisC++ es (era?) como el Ajedrez Un juego en el que no se gana, sino que pierde quien primero se distrae, por la complejidad de las opciones y la obvia necesidad de concentracin a ultranza que requiere.Java es como las DamasSus movimientos son simples y gana, simplemente, el ms listo C# es como las Damas... con fichas de Ajedrez! Los movimientos son como en el juego aqul, pero las fichas... ay! Las fichas son ms bonitas, ms verstiles, pero... no me ayudan! De hecho, tan slo sirven para confundirme y pensar que tengo ms posibilidades.En definitiva... Me hacen Pensar!

  • Enlaces de intersClub .NET Sevilla:http://sevilla.dotnetclubs.comRecursos del club:http://recursos.dotnetclubs.com/sevillaForos:http://foros.dotnetclubs.comMSDN:http://www.msdn.comDesarrolla con msdnhttp://www.desarrollaconmsdn.com

  • Zenkiu!!(GRACIAS)[email protected]@gmail.com

    En lo referente a la encapsulacin es importante sealar que aparte de los tpicos modificadores public, private y protected, C# aade un cuarto modificador llamado internal, que puede combinarse con protected e indica que al elemento a cuya definicin precede slo puede accederse desde su mismo ensamblado. Respecto a la herencia -a diferencia de C++ y al igual que Java- C# slo admite herencia simple de clases ya que la mltiple provoca ms quebraderos de cabeza que facilidades y en la mayora de los casos su utilidad puede ser simulada con facilidad mediante herencia mltiple de interfaces. De todos modos, esto vuelve a ser ms bien una caracterstica propia del CTS que de C#. Por otro lado y a diferencia de Java, en C# se ha optado por hacer que todos los mtodos sean por defecto sellados y que los redefinibles hayan de marcarse con el modificador virtual (como en C++), lo que permite evitar errores derivados de redefiniciones accidentales. Adems, un efecto secundario de esto es que las llamadas a los mtodos sern ms eficientes por defecto al no tenerse que buscar en la tabla de funciones virtuales la implementacin de los mismos a la que se ha de llamar. Otro efecto secundario es que permite que las llamadas a los mtodos virtuales se puedan hacer ms eficientemente al contribuir a que el tamao de dicha tabla se reduzca

    Gestin automtica de memoria: Como ya se coment, todo lenguaje de .NET tiene a su disposicin el recolector de basura del CLR. Esto tiene el efecto en el lenguaje de que no es necesario incluir instrucciones de destruccin de objetos. Sin embargo, dado que la destruccin de los objetos a travs del recolector de basura es indeterminista y slo se realiza cuando ste se active ya sea por falta de memoria, finalizacin de la aplicacin o solicitud explcita en el fuente-, C# tambin proporciona un mecanismo de liberacin de recursos determinista a travs de la instruccin using. *El tamao de los tipos bsicos es fijo, independiente del compilador, sistema operativo o mquina**