FundamentosNETC#

69
Microsoft .NET {Arquitectura y Fundamentos} Sergio Andrés Vargas A. MCTS–MCS- MCT-MCP– OCP - OCA Twitter serandvaraco Facebook http://www.facebook.com/ unespacioparanet Blog http:// unespacioparanet.appfuture.net

Transcript of FundamentosNETC#

Page 1: FundamentosNETC#

Microsoft .NET{Arquitectura y Fundamentos}

Sergio Andrés Vargas A.MCTS–MCS- MCT-MCP– OCP - OCA

Twitter serandvaracoFacebook http://www.facebook.com/

unespacioparanetBlog http://unespacioparanet.appfuture.netIM [email protected]

Page 2: FundamentosNETC#

@serandvaraco

Page 3: FundamentosNETC#

Introducción a Microsoft .NET

• ¿Qué no es .NET?• ¿Qué es .NET?• .NET Como evolución de COM

Page 4: FundamentosNETC#

¿Qué NO es .NET?

.NET no es un Sistema Operativo

.NET no es un Lenguaje de Programación

.NET no es un Entorno de Desarrollo

.NET no es un Servidor de Aplicaciones

.NET no es un producto empaquetado que se pueda comprar como tal

Page 5: FundamentosNETC#

¿Qué es .NET?

Plataforma de Desarrollo compuesta de

• Entorno de Ejecución (Runtime)• Bibliotecas de Funcionalidad (Class Library)• Lenguajes de Programación• Compiladores• Herramientas de Desarrollo (IDE & Tools)• Guías de Arquitectura

La evolución de la plataforma COM

Page 6: FundamentosNETC#

Librerías Administrada

s

CLR 1.1

.NET Framework1.1 SP1

Librerías Administradas

CLR 2.0

.NET Framework2.0 SP2

Librerías Administradas

(adición de WPF, WCF, WF)

CLR 2.0

.NET Framework3.0 SP1

Instalado por Windows Vista,

Windows Server 2008

Librerías Administradas

CLR 2.0

.NET Framework3.5 SP1

Instalado por Windows 7

Versión 3.5 SP1 con novedades

Librerías Administradas

CLR 4

.NET Framework 4

Versión 3.5 SP1 con novedades

Versión 4 con novedades

Page 7: FundamentosNETC#

Preview … MetroStyle

Page 8: FundamentosNETC#
Page 9: FundamentosNETC#

Características de .NET (1/2)

• Plataforma de ejecución intermedia• 100% Orientada a Objetos• Multilenguaje• Plataforma Empresarial de Misión

Crítica

Page 10: FundamentosNETC#

Características de .NET (2/2)

• Modelo de Programación único para todo tipo de aplicaciones y dispositivos de hardware

• Se integra fácilmente con aplicaciones existentes desarrolladas en plataformas Microsoft

• Se integra fácilmente con aplicaciones desarrolladas en otras plataformas

Page 11: FundamentosNETC#

Plataforma de Ejecución Intermedia

Entorno de Desarrollo

Mic

rosoft

.N

ET

Librerías de Funcionalidad

Lenguajes de Programación

Entorno de Ejecución

Sistema Operativo (Familia Windows)

Aplicación .NET

Page 12: FundamentosNETC#

¿Qué es el .NET Framework?

• Paquete de software fundamental de la plataforma .NET. Incluye:

• Entorno de Ejecución (Runtime)• Bibliotecas de Funcionalidad (Class Library)

• Se distribuye en forma libre y gratuita

• Existen tres variantes principales:• .NET Framework Redistributable Package

• .NET Framework SDK

• .NET Compact Framework

• Está instalado por defecto en Windows 2003 Server o superior

Page 13: FundamentosNETC#

.NET Compact Framework

ü*ü

ü

ü*ü

AplicaciónMóvil

Aplicación de Consola

Aplicación Web

Aplicación de Escritorio

¿Dónde instalar el .NET Framework?

ServidorCliente

* Sólo si la aplicación es distribuída

Page 14: FundamentosNETC#

Windows COM+ Services

Common Language Runtime

Base Class Library

ADO.NET y XML

ASP.NET Windows Forms

Common Language Specification

VB C++ C# J# …

Arquitectura del .NET Framework.N

ET

Fra

mew

ork

Red

istr

ibut

able

.NE

T F

ram

ewo

rk S

DK .N

ET

Fram

ework

Class Library

Page 15: FundamentosNETC#

CLR - Arquitecturas de Ejecución de Aplicaciones

Page 16: FundamentosNETC#

CLR – Common Language Runtime

El CLR es el motor de ejecución (runtime) de .NETCaracterísticas

• Compilación Just-In-Time (JIT)• Gestión automática de memoria (Garbage Collector)• Gestión de errores consistente (Excepciones)• Ejecución basada en componentes (Assemblies)• Gestión de Seguridad• Multithreading

Page 17: FundamentosNETC#

CLR – Componentes Internos

Class Loader

IL to NativeCompilers

CodeManager

GarbageCollector

Security Engine Debug Engine

Type Checker Exception Manager

Thread Support COM Marshaler

Base Class Library Support

Page 18: FundamentosNETC#

Código Fuente

Cualquier lenguaje .NET

Compilador

Assembly (MSIL)

Bibliotecao Ejecutable

CLR – Proceso de Compilación

Page 20: FundamentosNETC#

¿Qué es un “Assembly”?

Un Assembly es la unidad mínima de ejecución, distribución, instalación y versionado de aplicaciones .NET

Metadata

Código CompiladoMSIL

Recursos

MiBiblioteca.DLL

Descripción de TiposClasesClases BaseInterfaces ImplementadasAtributos de las ClasesMétodos de las Clases

NombreVersiónCultura

Manifiesto del Assembly

Otros AssembliesPermisos de SeguridadTipos Externos

Page 21: FundamentosNETC#

Assemblies - Aplicaciones .NET

Uno o más AssembliesAl ejecutar una aplicación, ¿cómo ubico los assemblies necesarios?

• El Class Loader busca en el directorio local (preferido)• Global Assembly Cache (GAC)

Diferentes aplicaciones pueden usar diferentes versiones• Actualizaciones más simples• Desinstalación más simple

Page 22: FundamentosNETC#

.NET Framework Class Library

Conjunto de Tipos básicos (clases, interfaces, etc.) que vienen incluídos en el .NET Framework Los tipos están organizados en jerarquías lógicas de nombres, denominados NAMESPACESLos tipos son INDEPENDIENTES del lenguaje de desarrolloEs extensible y totalmente orientada a objetos

Page 23: FundamentosNETC#

.NET Framework Class LibraryEl namespace raíz es SYSTEM

System

System.Data System.Xml

System.Web

Globalization

Diagnostics

Configuration

Collections

Resources

Reflection

Net

IO

Threading

Text

ServiceProcess

Security

Common

OleDb

SqlClient

Odbc

XPath

XSLT

Runtime

InteropServices

Remoting

Serialization

Serialization

Configuration SessionState

Caching Security

Services

Description

Discovery

Protocols

UI

HtmlControls

WebControls

System.Drawing

Imaging

Drawing2D

Text

Printing

System.Windows.FormsDesign ComponentModel

Page 24: FundamentosNETC#

Common Language Specification (CLS)

Especificación que estandariza una serie de características soportadas por el CLRContrato entre diseñadores de lenguajes de programación y autores de bibliotecasPermite la interoperabilidad entre lenguajesMicrosoft provee implementaciones de 4 lenguajes, todos compatibles con CLS

• Microsoft Visual Basic .NET• Microsoft Visual C# .NET• Microsoft Visual J#.NET• Microsoft Visual C++.NET

Page 25: FundamentosNETC#

Common Language Specification (CLS)

El resto de la industria y el sector académico han desarrollado más de 20 lenguajes compatibles con la especificación CLS

Cobol

Eiffel

Fortran

Pascal

Perl

C++.NET C#

Haskell

Java JavaScript

Visual Basic.NET

Mercury

ML

PHP

Objective Caml

Oberon Smalltalk Scheme

J#

RPG

Mondrian

APL

Delphi Python

LISP Prolog

Page 26: FundamentosNETC#

CLS - Elección del lenguaje

.NET posee un único runtime (el CLR) y un único conjunto de bibliotecas para todos los lenguajesNo hay diferencias notorias de performance entre los lenguajes provistos por MicrosoftEl lenguaje a utilizar, en gral., dependerá de su experiencia previa con otros lenguajes o de gustos personales

• Si conoce Java, Delphi, C++, etc. C#• Si conoce Visual Basic o VBScript VB.NET

Los tipos de aplicaciones .NET son INDEPENDIENTES del lenguaje que elija

Page 27: FundamentosNETC#

VB.NETCódigoFuente

Compilador VB.NET

C++.NETC#

AssemblyCódigo MSIL

Sistema Operativo (Windows)

Common Language Runtime

Compilador JIT

Código Nativo

Código Manejado

ComponenteNo Manejado

Modelo de Ejecución del CLR

CompiladorC#

CompiladorC++ .NET

AssemblyCódigo MSIL

AssemblyCódigo MSIL

Page 28: FundamentosNETC#

Debug Engine

CompiladorJIT

Assembly en la máquina

destino

Modelo de Ejecución del CLR

Assembly

Desarrollo Instalación

Instalación

Ejecución

AssemblyLoader

SeguridadClass Loader

.exe Nativo+

Tabla GC

Code Manager

Garbage Collector

Manejador Excepciones

Soporte MultiThread

COM Interop

Policy<?xml version="1.0" encoding="utf-8" ?><configuration> <mscorlib> <security> <policy> <PolicyLevel version="1"> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="Nothing" Name="All_Code" Description="Code group grants no permissions and forms the root of the code group tree."> <IMembershipCondition class="AllMembershipCondition" version="1"/> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust"

Page 29: FundamentosNETC#

PythonBinder

RubyBinder

COMBinder

JScriptBinder

ObjectBinder

.NET Dynamic Programming

Dynamic Language Runtime

Expression Trees Dynamic Dispatch Call Site Caching

IronPython IronRuby C# VB.NET Others…

Page 30: FundamentosNETC#

CTS (Common Type System)Define un conjunto común de “tipos” de datos orientados a objetos

Todo lenguaje de programación .NET debe implementar los tipos definidos por el CTS

Todo tipo hereda directa o indirectamente del tipo System.Object

Define Tipos de VALOR y de REFERENCIA

Todo tipo hereda directa o indirectamente del tipo System.Object

Define Tipos de VALOR y de REFERENCIA

Page 31: FundamentosNETC#

La Memoria y los Tipos de DatosEl CLR administra dos segmentos de memoria: Stack (Pila) y Heap (Montón)

El Stack es liberado automáticamente y el Heap es administrado por el GC (Garbage Collector)

Los tipos VALOR se almacenan en el Stack

Los tipos REFERENCIA se almacenan en el Heap

Los tipos VALOR se almacenan en el Stack

Los tipos REFERENCIA se almacenan en el Heap

Page 32: FundamentosNETC#

Microsoft .NET{Conociendo el Lenguaje C Sharp}

Sergio Andrés Vargas A.MCTS–MCS- MCT-MCP– OCP - OCA

Twitter serandvaracoFacebook http://www.facebook.com/

unespacioparanetBlog http://unespacioparanet.appfuture.netIM [email protected]

Page 33: FundamentosNETC#

VB.NET y C# - Terminación de línea

C#: la línea finaliza con un “ ; ”

VB.NET: la línea finaliza con un salto de línea

//Una linea con mas de un renglonstring nombre = primerNombre + apellido; //El punto y coma indica FINAL de linea

'Una linea con mas de un renglonDim nombre As String = primerNombre & _ apellido

Page 34: FundamentosNETC#

VB.NET y C# - Declaración de Bloques

En C# los bloques se declaran entre llaves

En VB.NET cada bloque tiene su sentencia de apertura y su sentencia de cierre, que normalmente empieza con la palabra “End”

class MainClass{public static void Main(string[] args) {

Console.WriteLine("Hello World!");}

}

Class MainPublic Shared Sub Main()

Console.WriteLine("Hello World!")End Sub

End Class

Page 35: FundamentosNETC#

VB.NET y C# - ComentariosC# soporta tres tipos de comentarios

string nombre = “Juan”; // Comentario de una sola línea /* Comentario con mas de una línea*/

/// <summary>/// Documentación XML que puede ser consumida por otras /// herramientas para mostrar ayuda dinámica o generar /// documentación en varios formatos/// </summary>public class Matematica { /// <summary> /// Calcula la suma de dos números enteros /// </summary> /// <param name="x">El primer operando de la suma</param> /// <param name="y">El segundo operando de la suma</param> /// <returns> La suma entera de ambos operandos</returns> public int Sumar (int x, int y) {return x + y;}}

Page 36: FundamentosNETC#

VB.NET y C# - Case Sensitivity

C# distingue entre mayúsuclas y minúsculas

VB.NET no distingue entre mayúsuclas y minúsculas

system.console.writeline(“HOLA”); INCORRECTO

System.Console.WriteLine(“HOLA”); CORRECTO

system.console.writeline(“HOLA”) CORRECTO

System.Console.WriteLine(“HOLA”) CORRECTO

Page 37: FundamentosNETC#

Tipos de Datos

Categoría Clase Descripción C# AliasVB.NET

Alias

Enteros Byte Un entero sin signo (8-bit) byte Byte

    SByte Un entero con signo (8-bit) sbyte Sbyte

    Int16 Un entero con signo (16-bit) short Short

    Int32 Un entero con signo (32-bit) int Integer

    Int64 Un entero con signo (64-bit) long Long

Punto Flotante Single Un número de punto flotante de simple precisión (32-bit) float Single

    Double Un número de punto flotante de doble precisión (64-bit) double Double

    Decimal Un número decimal de 96-bit decimal Decimal

Lógicos Boolean Un valor booleano (true o false) bool Boolean

Otros Char Un caracter Unicode (16-bit) char Char

  Object La raíz de la jerarquía de objetos object Object

    String Una cadena de caracteres unicode inmutable y de tamaño fijo string String

Page 38: FundamentosNETC#

VB.NET y C# - Alcance de miembros

Miembro: se refiere a los campos, propiedades, métodos, eventos, clases anidadas, etc.

C#: todo miembro es declarado como PRIVATE por default

VB.NET: todo miembro es declarado como PUBLIC por default

Modificadores de acceso disponibles:

Protected Friendprotected internalProtectedprotectedFriendinternalPrivateprivatePublicpublic

VB.NETC#

Page 39: FundamentosNETC#

VB.NET y C# - Declaración de Variables

C#: el tipo de dato precede al identificador (nombre)

VB.NET: comienza con “Dim” o algún modificador de acceso (Public, Private, etc.) + identificador de la variable + “As” Tipo de Dato

int x;decimal y;rectangle z;Cliente cli;

Dim x As Integer ‘Dim es = a Private por defectoDim y As DecimalDim z As RectangleDim cli As Cliente

Page 40: FundamentosNETC#

VB.NET y C# - Inicialización de Variables

C#: toda variable debe ser inicializada EXPLICITAMENTE antes de ser usada

VB.NET: inicializa automáticamente las variables en CERO o en Nothing

int tempBalance; //variable local//ERROR: tempBalance NO ha sido inicializadaSystem.Console.WriteLine(tempBalance);

Dim tempBalance As Integer'SIN ERROR: tempBalance vale CEROSystem.Console.WriteLine(tempBalance)

Page 41: FundamentosNETC#

VB.NET y C# - Conversiones de Tipos

C# no permite conversiones implícitas de tipos

Si falla el cast se devuelve null o InvalidCastException

VB.NET usa las directivas del compilador Option Strict

Si falla el cast siempre se genera una InvalidCastException

Cuenta cta = new CtaCte();CtaCte cc = cta; //Error: puede que cta no sea una CtaCteCtaCte cc = (CtaCte)cta; //Conversion explicita “CASTING”CtaCte cc = cta as CtaCte; //Usando el operador “as”

if (cta is CtaCte) ... //Comp. con el operador “is”

Dim cta As Cuenta = New CtaCte()

Dim cc As CtaCte = cta ‘OK Option Strict OffDim cc As CtaCte = CType(cta, CtaCte) ‘Option Strict On

If TypeOf cta Is CtaCte Then ‘Comp. con TypeOf Is

Page 42: FundamentosNETC#

VB.NET y C# - ArreglosC# utiliza corchetes [ ] para definición de arrays

VB.NET permite definir arrays de varias formas con ()

string[] telefonos; //Definicion de un Arreglo de stringstelefonos = new string[3]; //De 3 elementostelefonos[0] = “1245”; //Seteo del 1er elemento del arreglo

//Definicion y asignacion de una veztelefonos = new string[] {“1”,“2”,“3”};

Dim telefonos As String() ó Dim telefonos() As StringDim telefonos(3) As String ‘Crea un array de 4 elementos telefonos(0) = “1245” ‘Seteo del 1er elemento del arreglo

‘Definicion y asignacion de una vezDim telefonos() As String = {“1”,“2”,“3”}

Page 43: FundamentosNETC#

C# - Matrices

string[,] Nombres; //Definicion de un Matriz de stringsNombres = new string[2,2]; //De 2X2 elementosNombres[0,0] = “Sergio”; //Seteo del 1er elemento de la primera columnaNombres[0,1] = “Vargas”; //Seteo del 1er elemento de la segunda columna

C# utiliza corchetes [,] para definición de matrices

Page 44: FundamentosNETC#

VB.NET y C# - Operadores

Descripción C# VB.NET

Asignación = =

Adición + +

Sustracción - -

Multiplicación * *

División / /

Negación ! not

Módulo (Parte entera de la división) % mod

Mayor > >

Menor < <

Mayor o Igual >= >=

Menor o Igual <= <=

Page 45: FundamentosNETC#

VB.NET y C# - Operadores Lógicos

Distinto<>!=Igual  ===Negacion logicaNot!Operador logico OOrllOperador logico YAnd&&

OperadorVB.NETC#

En C# todas las evaluaciones se hacen por “cortocircuito”

//Si Hacer1() es True, entonces //Si Hacer1() es False, entonces//NO se evalua Hacer2() //NO se evalua Hacer2()if (Hacer1() || Hacer2()) if (Hacer1() && Hacer2()){ {} }

En VB.NET se debe utilizar los operadores AndAlso y OrElse

‘Si Hacer1() es True, entonces ‘Si Hacer1() es False, entonces‘NO se evalua Hacer2() ‘NO se evalua Hacer2()If Hacer1() OrElse Hacer2() Then If Hacer1() AndAlso Hacer2() Then ... ...End If End If

Page 46: FundamentosNETC#

if (x > 10) if (x < 10) if (x < 10) if (x < 10) HacerAlgo(); { { { Hacer1(); Hacer1(); Hacer1(); Hacer2(); } } } else else if (x > 20) { { Hacer2(); Hacer2(); } } else { Hacer3(); }

VB.NET y C# - Sentencias condicionalesC#: sentencia if con varios formatos

VB.NET: la sentencia If requiere de la palabra ThenIf x > 10 Then Hacer() If x < 10 Then If x < 10 Then If x < 10 Then Hacer1() Hacer1() Hacer1() Hacer2() Else ElseIf x > 20 Then End If Hacer2() Hacer2() End If Else Hacer3() End If

Page 47: FundamentosNETC#

int a = 0;switch(a) {

case 1:{//CODIGO 1 break;}case 2: {//CODIGO 2 break;}default:{//CODIGO DEFAULT break;}

}

VB.NET y C# - Sentencias condicionalesC#: sentencia case

VB.NET: sentencia caseDim a As Integer = 0Select a

Case 1 'Código 1Case 2 'Código 2Case Else 'Código Default

End Select

Page 48: FundamentosNETC#

VB.NET y C# - Sentencia forC#: la sentencia for consta de tres partes

VB.NET usa las palabras claves For, To, Next y Step

//Partes: declaración, prueba, acciónfor (int i=1; i < 10; i++){}

Dim i As Integer For i = 1 To 100 For i = 1 To 100 Step 2 ‘i se incrementa en 1 ‘i se incrementa en 2Next Next

Page 49: FundamentosNETC#

VB.NET y C# - Sentencia for/each

C#: usa la palabra foreach

VB.NET usa las palabra For Each

string[] nombres = new string[5];foreach(string auxNombre in nombres){ //auxNombre es de SOLO LECTURA}

Dim nombres(5) As StringDim auxNombre As StringFor Each auxNombre In nombres ‘auxNombre NO es de SOLO LECTURA Next

For/Each permite recorrer arreglos y colecciones

Page 50: FundamentosNETC#

VB.NET y C# - Sentencia whileC#:

VB.NET:

bool condicion = true;while (condicion == true){

//En algún momento poner condicion = false}

Dim condicion As Boolean = True While condicion = True 'Poner condicion=false en algún momento End While

Page 51: FundamentosNETC#

Microsoft .NET{POO}

Sergio Andrés Vargas A.MCTS–MCS- MCT-MCP– OCP - OCA

Twitter serandvaracoFacebook http://www.facebook.com/

unespacioparanetBlog http://unespacioparanet.appfuture.netIM [email protected]

Page 52: FundamentosNETC#

VB.NET y C# - Clases

C#: las clases son declaradas mediante class

VB.NET usa las palabras Class / End Class

//Definicion de la clase CuentaBancariaclass CuentaBancaria{

//Definicion de miembros}

‘Definicion de la clase CuentaBancariaClass CuentaBancaria

‘Definicion de miembrosEnd Class

Page 53: FundamentosNETC#

Sintaxis – Entry Point

C#:public class HolaMundo {

public static void Main(string[] args){//Punto de entrada de la aplicación

}}

VB.NETPublic Class HolaMundo Public Shared Sub Main(ByVal args() As String)

‘Punto de entrada de la aplicación End SubEnd Class

Page 54: FundamentosNETC#

VB.NET y C# - Métodos

En C# todo método es una función

VB.NET usa procedimientos Sub y funciones Function

public void HacerDeposito(int importe) //No devuelve valor{}

public int ObtenerInventario(int codArticulo) //Devuelve un entero{}

Public Sub HacerDeposito(ByVal importe As Integer)‘No devuelve valorEnd Sub

Public Function Inventario(ByVal codArt As Integer) As Integer‘Devuelve un enteroEnd Function

Métodos: acciones que un objeto puede llevar a cabo.

Page 55: FundamentosNETC#

VB.NET y C# - Constructores

En C# tienen el mismo nombre de la clase

VB.NET usa un procedimiento Sub New

class CtaCte{ public CtaCte(){...} //Const. por default public CtaCte(int i){...} //Const. con un parametro}

Class CtaCte Sub New() End Sub Sub New(ByVal i As Integer) End Sub End Class

Constructor: métodos dentro de la clase que son llamados automáticamente cuando se crea una instancia de dicha clase.

Page 56: FundamentosNETC#

VB.NET y C# - Sobrecarga de Métodos

C#

VB.NET

public void HacerDeposito(int importe) {}

public void HacerDeposito(int importe, bool acreditar){}

Public Sub HacerDeposito(ByVal imp As Integer)End Sub

Public Sub HacerDeposito(ByVal imp As Integer, ByVal acreditar As Boolean)End Sub

Sobrecarga: varios métodos con el mismo nombre pero diferente “firma”.

Page 57: FundamentosNETC#

VB.NET y C# - Métodos estáticos

C#

VB.NET

public static void HacerDeposito(int importe) {

}

Public Shared Sub HacerDeposito(ByVal imp As Integer)

End Sub

Miembros que no requieren de una instancia para ser invocados. Se los llama métodos “de clase”

Page 58: FundamentosNETC#

VB.NET y C# - PropiedadesPropiedad: característica o atributo de un objeto

C# VB.NET

class CtaCte{ int balance; public int Balance { get { return balance; } set { balance = value; } }}

CtaCte cc = new CtaCte();cc.Balance = 100; //AsignaciónMostrar(cc.Balance); //Obtención

Class CtaCte Dim _balance As Integer Property Balance() As Integer Get Return _balance End Get Set (ByVal value As Integer) _balance = value End Set End PropertyEnd Class

Dim cc As New CtaCte()cc.Balance = 100 ‘AsignaciónMostrar(cc.Balance) ‘Obtención

Page 59: FundamentosNETC#

VB.NET y C# - Herencia

En C# la herencia se define:

VB.NET usa la palabra clave Inherits

class Cuenta //Clase Base{ }class CtaCte : Cuenta //Clase Derivada{ }

Class Cuenta ‘Clase BaseEnd Class

Class CtaCte ‘Clase Derivada Inherits CuentaEnd Class

En .NET solose permiteHerenciaSimple

Page 60: FundamentosNETC#

VB.NET y C# - Herencia (Cont.)

En C#

VB.NET

public sealed class Cuenta{//No se puede heredar de esta clase “sellada” }public abstract class Cuenta{//No se pueden crear instancias de esta clase, sólo//de sus derivadas }

Public NotInheritable Class Cuenta‘No se puede heredar de esta claseEnd Class

Public MustInherit Class Cuenta‘No se pueden crear instancias de esta clase, sólo de sus ‘derivadasEnd Class

Page 61: FundamentosNETC#

VB.NET y C# - NamespacesC# VB.NET

namespace BancoARG{ namespace Gestion { public class CtaCte { } public class CajaAhorro { } }}

//Referencia “full”BancoARG.Gestion.CtaCte;BancoARG.Gestion.CajaAhorro;

//Referencia “corta”using BancoARG.Gestion;CtaCte cc = new CtaCte();CajaAhorro ca = new CajaAhorro();

Namespace BancoARG Namespace Gestion Public Class CtaCte End Class Public Class CajaAhorro End Class End NamespaceEnd Namespace

‘Referencia “full”BancoARG.Gestion.CtaCteBancoARG.Gestion.CajaAhorro

‘Referencia a un namespaceImports BancoARG.GestionDim cc As New CtaCte()Dim ca As New CajaAhorro()

Page 62: FundamentosNETC#

VB.NET y C# - Admin. De Excepciones

C#: usa las palabras try/catch/finally

VB.NET usa las palabras Try/Catch/Finally

try{ int resultado = x/y;}catch(DivideByZeroException e){ //Error division por cero}catch{ //Otro error}finally{ //Siempre pasa por aca}

Try Dim resultado As Integer resultado = x/yCatch e As DivideByZeroException ‘Error division por ceroCatch ‘Otro errorFinally ‘Siempre pasa por acaEnd Try

Excepción: condición anómala de funcionamiento de una aplicación

Page 63: FundamentosNETC#

Microsoft .NET{Generics}

Sergio Andrés Vargas A.MCTS–MCS- MCT-MCP– OCP - OCA

Twitter serandvaracoFacebook http://www.facebook.com/

unespacioparanetBlog http://unespacioparanet.appfuture.netIM [email protected]

Page 64: FundamentosNETC#

permiten definir estructuras de datos de seguridad de tipos, sin comprometerse a tipos de datos reales.

Page 65: FundamentosNETC#

Colecciones Genéricas

List<t>Dictionary<a,b>Seek<t>Queek<t>

Page 66: FundamentosNETC#

ArreglosListas

Page 67: FundamentosNETC#

68

© 2008 Microsoft Corporation. Todos los derechos reservados. Microsoft, Windows, Windows Vista y otros nombres de producto son y pueden ser marcas registradas y registros en Estados Unidos y en otros países.La información contenida en el presente es sólo para fines informativos y representa la visión actual de Microsoft Corporation a la fecha de esta presentación. Debido a que Microsoft debe responder a las cambiantes condiciones del mercado, no se debe interpretar como un compromiso por parte de

Microsoft, y Microsoft no puede garantizar la precisión de ninguna información provista después de la fecha de esta presentación. MICROSOFT NO OFRECE GARANTÍA ALGUNA, EXPRESA, IMPLÍCITA O DE LEY, RESPECTO A LA INFORMACIÓN EN ESTA PRESENTACIÓN.

Page 68: FundamentosNETC#

http://microsoft.com/spanish/msdn/latam/mediacenter/

Microsoft MSDN Latinoamérica te ofrece los últimos recursos multimedia en español para desarrolladores: presentaciones y demostraciones en directo o diferido, vía Internet, brindadas por expertos de Microsoft, las cuales te ayudarán a mantenerte al día con información sobre los productos y tecnologías que utilizas a diario en el desarrollo de tus aplicaciones.

Recursos para los desarrolladores

Page 69: FundamentosNETC#

Preguntas