clase iii

50
Clase III Clase III [nombre instructor] [nombre instructor] [fecha] [fecha]

Upload: roberto-moreno-donoro

Post on 11-Jul-2015

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Clase iii

Clase IIIClase III•[nombre instructor][nombre instructor]

•[fecha][fecha]

Page 2: Clase iii

AgendaAgenda .NET Framework.NET Framework

AssembliesAssemblies App DomainApp Domain MSIL, JIT y Modelo de ejecuciónMSIL, JIT y Modelo de ejecución BCLBCL

Build de solucionesBuild de soluciones Errores en tiempo de compilaciónErrores en tiempo de compilación Errores en tiempo de ejecuciónErrores en tiempo de ejecución DebuggingDebugging Edit & ContinueEdit & Continue

Programación Orientada a ObjetosProgramación Orientada a Objetos Clases AbstractasClases Abstractas Métodos VirtualesMétodos Virtuales

ExcepcionesExcepciones Accesibilidad de MiembrosAccesibilidad de Miembros

Page 3: Clase iii

AgendaAgenda ..NET FrameworkNET Framework

AssembliesAssemblies App DomainApp Domain MSIL, JIT y Modelo de ejecuciónMSIL, JIT y Modelo de ejecución BCLBCL

Build de solucionesBuild de soluciones Errores en tiempo de compilaciónErrores en tiempo de compilación Errores en tiempo de ejecuciónErrores en tiempo de ejecución DebuggingDebugging Edit & ContinueEdit & Continue

Programación Orientada a ObjetosProgramación Orientada a Objetos Clases AbstractasClases Abstractas Métodos VirtualesMétodos Virtuales

ExcepcionesExcepciones Accesibilidad de MiembrosAccesibilidad de Miembros

Page 4: Clase iii

Que es un ensamblado “Assembly”?Que es un ensamblado “Assembly”? Un assemby es la unidad mas pequeña de Un assemby es la unidad mas pequeña de

distribución de código, instalación y distribución de código, instalación y versionadoversionado

Assemby sencilloAssemby sencillo

ResourcesResources

MSILMSIL

MetaDataMetaData

ManifestManifest

ThisAssembly.dllThisAssembly.dll

ResourcesResources

MSILMSIL

MetaDataMetaData

ManifestManifest

ThisAssembly.dllThisAssembly.dll

MSILMSIL

MetadataMetadata

A.netmoduleA.netmodule

B.netmoduleB.netmodule

ManifestManifest(No Assembly Metadata)(No Assembly Metadata)

MSILMSIL

MetadataMetadata

ManifestManifest(No Assembly Metadata)(No Assembly Metadata)

Assembly complejoAssembly complejo

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 5: Clase iii

CaracterísticasCaracterísticas de un Assembly de un Assembly Unidad de distribuciónUnidad de distribución

Uno o mas archivos independientemente del Uno o mas archivos independientemente del empaquetado ( packaging)empaquetado ( packaging)

Auto descriptivo usando el metadataAuto descriptivo usando el metadata ReflectionReflection

VersionadoVersionado Capturada por el CompiladorCapturada por el Compilador

Frontera de SeguridadFrontera de Seguridad Contienen permisos de ejecuciónContienen permisos de ejecución

Seguridad basada en evidenciasSeguridad basada en evidencias Los métodos pueden demandar pruebas de Los métodos pueden demandar pruebas de

permisos concedido para todo el proceso de permisos concedido para todo el proceso de ejecución.ejecución.

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 6: Clase iii

Que es el Metadata?Que es el Metadata? Describe a un assemblyDescribe a un assembly

Identifica: Nombre, versión, Cultura, Llaves Identifica: Nombre, versión, Cultura, Llaves publicaspublicas

Que tipos son exportadosQue tipos son exportados A que otros assemblys hace referenciaA que otros assemblys hace referencia Permisos que se necesitan para la ejecuciónPermisos que se necesitan para la ejecución

Descripción de tiposDescripción de tipos Nombre, visibilidad, clases base, interfaces que Nombre, visibilidad, clases base, interfaces que

implementaimplementa Miembros ( métodos, campos, propiedades, Miembros ( métodos, campos, propiedades,

eventos, tipos anidados)eventos, tipos anidados) Sentencias declarativasSentencias declarativas

Atributos definido por el usuarioAtributos definido por el usuario Atributos definidos por el compiladorAtributos definidos por el compilador Atributos definidos por el frameworkAtributos definidos por el framework

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 7: Clase iii

ManifiestManifiest.N

ET

Fra

me

wor

k.N

ET

Fra

me

wor

k

Page 8: Clase iii

Dll HellDll Hell Problema de incompatibilidad entre versiones de Problema de incompatibilidad entre versiones de

librerías que están relacionadas entre si. librerías que están relacionadas entre si. Puede causar que todas las aplicaciones dejen de Puede causar que todas las aplicaciones dejen de

funcionar. funcionar. Puede ser causada por problemas en los Puede ser causada por problemas en los

instaladores, que no verifican correctamente el instaladores, que no verifican correctamente el versionado de las librerías.versionado de las librerías.

.NET Framework, con los assemblies, resuelve el .NET Framework, con los assemblies, resuelve el problema.problema. Cada assembly contiene el manifest con Cada assembly contiene el manifest con

información de versionado y compatibilidad con información de versionado y compatibilidad con otros assembliesotros assemblies

No se requiere mas el uso de instaladores para No se requiere mas el uso de instaladores para distribuir aplicaciones.distribuir aplicaciones.

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 9: Clase iii

Global Assembly CacheGlobal Assembly Cache Cache a nivel máquinaCache a nivel máquina Almacena assemblies que deben ser Almacena assemblies que deben ser

compartidos por diferentes aplicacionescompartidos por diferentes aplicaciones Instalar en GAC solo los assemblies que Instalar en GAC solo los assemblies que

deben ser compartidos y mantener privados deben ser compartidos y mantener privados a los que noa los que no

Para instalar en GAC un assemblyPara instalar en GAC un assembly Utilizar un instaladorUtilizar un instalador Utilizar la herramienta gacutil.exeUtilizar la herramienta gacutil.exe Utilizar el Windows Explorer para Utilizar el Windows Explorer para

arrastrar los assemblies al cachearrastrar los assemblies al cache

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 10: Clase iii

Que son los AppDomains?Que son los AppDomains? Procesos lógicos dentro del CLRProcesos lógicos dentro del CLR

Corren dentro de un proceso del Sistema Corren dentro de un proceso del Sistema OperativoOperativo

Un proceso del sistema operativo puede Un proceso del sistema operativo puede contener varios AppDomainscontener varios AppDomains

Es mucho mas barato que múltiple procesos del Es mucho mas barato que múltiple procesos del sistema operativosistema operativo Mucho menos costoso el intercambio de Mucho menos costoso el intercambio de

ejecuciónejecución Un assembly y sus tipos son siempre cargados Un assembly y sus tipos son siempre cargados

dentro de un AppDomaindentro de un AppDomain Provee una frontera paraProvee una frontera para

FallosFallos TiposTipos SeguridadSeguridad

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 11: Clase iii

CLR, AppDomains y AssembliesCLR, AppDomains y Assemblies.N

ET

Fra

me

wor

k.N

ET

Fra

me

wor

k

Page 12: Clase iii

MSIL (Intermediate Language) + MSIL (Intermediate Language) + MetadataMetadata MSIL: lenguaje similar a las instrucciones nativas MSIL: lenguaje similar a las instrucciones nativas

de un procesadorde un procesador Metadata: es información acerca de los tipos Metadata: es información acerca de los tipos

(clases, interfaces, etc) y es almacenada junto al (clases, interfaces, etc) y es almacenada junto al MSILMSIL

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 13: Clase iii

Compilando Managed Code (MSIL + Compilando Managed Code (MSIL + Metadata)Metadata) Cuando el código administrado (C#, VB.NET, etc) es Cuando el código administrado (C#, VB.NET, etc) es

compilado, se genera un archivo (Assembly) .DLL o compilado, se genera un archivo (Assembly) .DLL o .EXE conteniendo:.EXE conteniendo: Código MSILCódigo MSIL MetadataMetadata

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 14: Clase iii

Compilación JITCompilación JIT Compilación JIT: El CLR compila cada método la Compilación JIT: El CLR compila cada método la

primera vez que el mismo es invocado. primera vez que el mismo es invocado. El MSIL es compilado a código nativo por el JIT El MSIL es compilado a código nativo por el JIT

antes de que sea ejecutado. antes de que sea ejecutado. Ejemplo: Tres Ejemplo: Tres

clases X, Y, Z. clases X, Y, Z. El met. 1 de Y El met. 1 de Y ha sido ha sido compilado y compilado y este llama al este llama al met. 1 de Z que met. 1 de Z que esta en MSIL.esta en MSIL.

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 15: Clase iii

Compilación JIT (Cont.)Compilación JIT (Cont.) El met. 1 de Y llama al met. 4 dentro de Y. Como el El met. 1 de Y llama al met. 4 dentro de Y. Como el

met. 4 esta en MSIL, el CLR invoca al JIT para met. 4 esta en MSIL, el CLR invoca al JIT para compilarlo a código nativo. compilarlo a código nativo.

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 16: Clase iii

Compilación JIT (Cont.)Compilación JIT (Cont.) Ahora met. 1 de Y llama NUEVAMENTE al met. 1 de Ahora met. 1 de Y llama NUEVAMENTE al met. 1 de

Z. Como el met. 1 de Z ya ha sido compilado a Z. Como el met. 1 de Z ya ha sido compilado a código nativo, el JIT NO interviene.código nativo, el JIT NO interviene.

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 17: Clase iii

Modelo de EjecuciónModelo de Ejecución

VBVB VC#VC# VC++VC++ ……

ILILNativeNativeCodeCode

JITJITCompilerCompiler

NativeNativeCodeCode

Install timeInstall timeCode GenCode Gen

Common Language RuntimeCommon Language Runtime

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 18: Clase iii

Soporte para múltiples lenguajesSoporte para múltiples lenguajes El .NET Framework soporta múltiples lenguajes de El .NET Framework soporta múltiples lenguajes de

desarrollo. desarrollo. Microsoft provee compiladores de C#, VB.NET, J#, Microsoft provee compiladores de C#, VB.NET, J#,

JScript.NET, y C++ con extensiones administradas. JScript.NET, y C++ con extensiones administradas. Otros fabricantes de lenguajes también han Otros fabricantes de lenguajes también han

desarrollado compiladores para .NET, por ej: desarrollado compiladores para .NET, por ej: COBOL.NET, Smalltalk, Perl, Pyton, Delphi, etc.COBOL.NET, Smalltalk, Perl, Pyton, Delphi, etc.

Todos los lenguajes para .NET COMPILAN a MSIL Todos los lenguajes para .NET COMPILAN a MSIL Beneficios del soporte para múltiples lenguajes:Beneficios del soporte para múltiples lenguajes:

Reutilización de códigoReutilización de código La biblioteca de clases es igual para todosLa biblioteca de clases es igual para todos Le permite optar por el lenguaje con el que se siente más Le permite optar por el lenguaje con el que se siente más

cómodocómodo Todos los lenguajes tienen la “misma performance”Todos los lenguajes tienen la “misma performance”

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 19: Clase iii

ILDASMILDASM

Herramienta para Herramienta para navegar por el IL navegar por el IL de un PEde un PE

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 20: Clase iii

Base Class Library (BCL)Base Class Library (BCL)

La BCL es un conjunto de tipos La BCL es un conjunto de tipos (clases, interfaces, etc.) básicos que (clases, interfaces, etc.) básicos que vienen predefinidos en el .NET vienen predefinidos en el .NET FrameworkFramework

Estos tipos están organizados en Estos tipos están organizados en jerarquías lógicas de nombres, jerarquías lógicas de nombres, denominado NAMESPACEdenominado NAMESPACE

Estos tipos también son Estos tipos también son INDEPENDIENTES del lenguaje de INDEPENDIENTES del lenguaje de desarrollodesarrollo

La BCL es extensible y totalmente La BCL es extensible y totalmente orientada a objetosorientada a objetos.N

ET

Fra

me

wor

k.N

ET

Fra

me

wor

k

Page 21: Clase iii

¿¿Qué son los Namespaces?Qué son los Namespaces?

Grupos de clases relacionados entre síGrupos de clases relacionados entre sí Agrupamiento lógico, no físicoAgrupamiento lógico, no físico Los Namespaces son jerárquicosLos Namespaces son jerárquicos Disminuyen los conflictos de nombresDisminuyen los conflictos de nombres

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 22: Clase iii

Convención de nombresConvención de nombres

Sintaxis determinada por un puntoSintaxis determinada por un punto Connota jerarquíasConnota jerarquías Permite buscar y referencias clases de Permite buscar y referencias clases de

manera mas sencillamanera mas sencilla La primera parte del nombre completo es el La primera parte del nombre completo es el

namespace, la ultima el nombre del tiponamespace, la ultima el nombre del tipo En el desarrollo de librerías de clases, En el desarrollo de librerías de clases,

generalmente se utiliza la convención generalmente se utiliza la convención NombreEmpresa.NombreTecnologíaNombreEmpresa.NombreTecnología

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 23: Clase iii

Base Class Library (BCL)Base Class Library (BCL)

System System

System.DataSystem.Data System.XmlSystem.Xml

System.WebSystem.Web

GlobalizationGlobalization

DiagnosticsDiagnostics

ConfigurationConfiguration

CollectionsCollections

ResourcesResources

ReflectionReflection

NetNet

IOIO

ThreadingThreading

TextText

ServiceProcessServiceProcess

SecuritySecurity

CommonCommon

OleDbOleDb

SQLTypesSQLTypes

SqlClientSqlClient

XPathXPath

XSLTXSLT

RuntimeRuntimeInteropServicesInteropServices

RemotingRemoting

SerializationSerialization

SerializationSerialization

ConfigurationConfiguration SessionStateSessionState

CachingCaching SecuritySecurity

ServicesServicesDescriptionDescription

DiscoveryDiscovery

ProtocolsProtocols

UIUIHtmlControlsHtmlControls

WebControlsWebControls

System.DrawingSystem.Drawing

ImagingImaging

Drawing2DDrawing2D

TextText

PrintingPrinting

System.Windows.FormsSystem.Windows.Forms

DesignDesign ComponentModelComponentModel

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 24: Clase iii

Administrando Propiedades de una Administrando Propiedades de una aplicaciónaplicación

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 25: Clase iii

DemoDemo•Assemblies y MSILAssemblies y MSIL

Page 26: Clase iii

ResumenResumen

Assemblies y MetadataAssemblies y Metadata App DomainsApp Domains MSILMSIL JITJIT BCLBCL

.NE

T F

ram

ew

ork

.NE

T F

ram

ew

ork

Page 27: Clase iii

AgendaAgenda .NET Framework.NET Framework

AssembliesAssemblies App DomainApp Domain MSIL, JIT y Modelo de ejecuciónMSIL, JIT y Modelo de ejecución BCLBCL

Build de solucionesBuild de soluciones Errores en tiempo de compilaciónErrores en tiempo de compilación Errores en tiempo de ejecuciónErrores en tiempo de ejecución DebuggingDebugging Edit & ContinueEdit & Continue

Programación Orientada a ObjetosProgramación Orientada a Objetos Clases AbstractasClases Abstractas Métodos VirtualesMétodos Virtuales

ExcepcionesExcepciones Accesibilidad de MiembrosAccesibilidad de Miembros

Page 28: Clase iii

Compilar, Debuggear y TestearCompilar, Debuggear y Testear

Actividades principales en el Actividades principales en el desarrollo de aplicaciones desarrollo de aplicaciones componentes y servicios robustoscomponentes y servicios robustos

Visual Studio 2005 esta diseñado paraVisual Studio 2005 esta diseñado para Controlar configuraciones de compilaciónControlar configuraciones de compilación Identificar errores y resolverlosIdentificar errores y resolverlos Testear las aplicacionesTestear las aplicaciones

Bu

ild d

e S

olu

ción

Bu

ild d

e S

olu

ción

Page 29: Clase iii

Compilando (Construyendo) En Visual Compilando (Construyendo) En Visual Studio 2005Studio 2005 Compilación en modo DebugCompilación en modo Debug

Se compila repetidamente, mientras se Se compila repetidamente, mientras se desarrolladesarrolla

El debugging es un proceso de dos pasosEl debugging es un proceso de dos pasos Errores en tiempo de CompilaciónErrores en tiempo de Compilación

SintaxisSintaxis TipeoTipeo Inconsistencias de tiposInconsistencias de tipos

Errores en tiempo de EjecuciónErrores en tiempo de Ejecución Errores lógicosErrores lógicos Errores semánticosErrores semánticos

Compilación en modo ReleaseCompilación en modo Release Una vez que el desarrollo está completo y fue Una vez que el desarrollo está completo y fue

suficientemente debuggeadosuficientemente debuggeado Versión optimizadaVersión optimizada

Mas rápidaMas rápida Mas chicaMas chica

Desde la barra de accesos rápidos se Desde la barra de accesos rápidos se puede cambiar el modo de compilación y puede cambiar el modo de compilación y

comenzarlacomenzarla

Bu

ild d

e S

olu

ción

Bu

ild d

e S

olu

ción

Page 30: Clase iii

Errores en tiempo de CompilaciónErrores en tiempo de Compilación

Una vez finalizado el Una vez finalizado el desarrollo, se compilará la desarrollo, se compilará la solución para probar su solución para probar su funcionamientofuncionamiento

Muchas veces aparecen Muchas veces aparecen errores en tiempo de errores en tiempo de compilación, que no dejan al compilación, que no dejan al desarrollador ejecutar la desarrollador ejecutar la aplicaciónaplicación

Visual Studio ofrece una lista Visual Studio ofrece una lista de errores que permite de errores que permite acceder rápidamente al lugar acceder rápidamente al lugar de código donde estos están.de código donde estos están.

Los errores en el código Los errores en el código aparecen remarcados para aparecen remarcados para poder identificarlos mas poder identificarlos mas rápidorápido

Bu

ild d

e S

olu

ción

Bu

ild d

e S

olu

ción

Page 31: Clase iii

Errores en tiempo de EjecuciónErrores en tiempo de Ejecución Realizar un seguimiento Realizar un seguimiento

de código es muy útilde código es muy útil BreakpointsBreakpoints

Marcas en código donde Marcas en código donde se interrumpe la ejecuciónse interrumpe la ejecución

Se puede analizar el valor Se puede analizar el valor de variables y editar de variables y editar códigocódigo

SteppingStepping Recorrer el código línea Recorrer el código línea

por líneapor línea Se puede ingresar a los Se puede ingresar a los

métodos que son métodos que son llamados, volver atrás, etc.llamados, volver atrás, etc.

BreakpointBreakpoint

Línea de código ejecutadaLínea de código ejecutada

Menú DebugMenú Debug

Bu

ild d

e S

olu

ción

Bu

ild d

e S

olu

ción

Page 32: Clase iii

Analizando Valores en tiempo de Analizando Valores en tiempo de ejecuciónejecución

VisualizerVisualizer

Bu

ild d

e S

olu

ción

Bu

ild d

e S

olu

ción

Page 33: Clase iii

Edit & ContinueEdit & Continue

Permite realizar cambios en el código Permite realizar cambios en el código fuente mientras el programa esta en fuente mientras el programa esta en break mode.break mode.

Soporta la mayoría de cambios de Soporta la mayoría de cambios de código en tiempo de ejecución.código en tiempo de ejecución.

Bu

ild d

e S

olu

ción

Bu

ild d

e S

olu

ción

Page 34: Clase iii

LaboratorioLaboratorio•DebuggingDebugging

Page 35: Clase iii

ResumenResumen

CompilaciónCompilación Corregir errores en tiempo de Corregir errores en tiempo de

compilacióncompilación Corregir errores en tiempo de Corregir errores en tiempo de

ejecuciónejecución Break PointsBreak Points Edit & ContinueEdit & Continue

Bu

ild d

e S

olu

ción

Bu

ild d

e S

olu

ción

Page 36: Clase iii

AgendaAgenda .NET Framework.NET Framework

AssembliesAssemblies App DomainApp Domain MSIL, JIT y Modelo de ejecuciónMSIL, JIT y Modelo de ejecución BCLBCL

Build de solucionesBuild de soluciones Errores en tiempo de compilaciónErrores en tiempo de compilación Errores en tiempo de ejecuciónErrores en tiempo de ejecución DebuggingDebugging Edit & ContinueEdit & Continue

Programación Orientada a ObjetosProgramación Orientada a Objetos Clases AbstractasClases Abstractas Métodos VirtualesMétodos Virtuales

ExcepcionesExcepciones Accesibilidad de MiembrosAccesibilidad de Miembros

Page 37: Clase iii

InterfasesInterfases

Contienen solo métodos sin implementaciónContienen solo métodos sin implementación Describen un “contrato”Describen un “contrato” No heredan atributosNo heredan atributos No se pueden crear instancias de una No se pueden crear instancias de una

interfaseinterfase Las clases derivadas deben de implementar Las clases derivadas deben de implementar

todas las operaciones heredadastodas las operaciones heredadasITransportable

Acelera

Frena

PO

OP

OO

Page 38: Clase iii

Métodos de la InterfaseMétodos de la Interfase

Una clase puede implementar cero, Una clase puede implementar cero, una o más interfasesuna o más interfases

Deben de implementarse todos los Deben de implementarse todos los métodos heredados por la interfasemétodos heredados por la interfase

Las interfases a su vez pueden Las interfases a su vez pueden heredar de múltiples interfasesheredar de múltiples interfases

PO

OP

OO

Page 39: Clase iii

Métodos VirtualesMétodos Virtuales

Es un método que la clase base permite Es un método que la clase base permite que sea sobrescrito en una clase derivadaque sea sobrescrito en una clase derivada

Un método no-virtual es la UNICA Un método no-virtual es la UNICA implementación posible para este métodoimplementación posible para este método

PO

OP

OO

Page 40: Clase iii

OcultamientoOcultamiento

Esconde un método idénticoEsconde un método idéntico Introduce un nuevo método a la Introduce un nuevo método a la

jerarquía de la clasejerarquía de la clase Oculta los métodos virtuales y no-Oculta los métodos virtuales y no-

virtualvirtual Esconde métodos con firmas Esconde métodos con firmas

idénticasidénticas Esconde campos con el mismo Esconde campos con el mismo

identificadoridentificador

PO

OP

OO

Page 41: Clase iii

Clases AbstractasClases Abstractas

Proveen una implementación parcial Proveen una implementación parcial para que sea heredada por las clases para que sea heredada por las clases derivadasderivadas

No pueden ser instanciadasNo pueden ser instanciadas

Transporte{ abstract }

Taxi<<Concrete>>

Colectivo<<Concrete>>

PO

OP

OO

Page 42: Clase iii

Métodos AbstractosMétodos Abstractos

Solo en clases abstractasSolo en clases abstractas No pueden contener implementaciónNo pueden contener implementación Deben ser implementados por las clases derivadasDeben ser implementados por las clases derivadas Los métodos abstractos son virtualesLos métodos abstractos son virtuales Los métodos abstractos pueden sobrescribir Los métodos abstractos pueden sobrescribir

métodos de la clase base declarados como métodos de la clase base declarados como virtualesvirtuales

Los métodos abstractos pueden sobrescribir Los métodos abstractos pueden sobrescribir métodos de la clase base declarados como métodos de la clase base declarados como “override”“override”

PO

OP

OO

Page 43: Clase iii

AgendaAgenda .NET Framework.NET Framework

AssembliesAssemblies App DomainApp Domain MSIL, JIT y Modelo de ejecuciónMSIL, JIT y Modelo de ejecución BCLBCL

Build de solucionesBuild de soluciones Errores en tiempo de compilaciónErrores en tiempo de compilación Errores en tiempo de ejecuciónErrores en tiempo de ejecución DebuggingDebugging Edit & ContinueEdit & Continue

Programación Orientada a ObjetosProgramación Orientada a Objetos Clases AbstractasClases Abstractas Métodos VirtualesMétodos Virtuales

ExcepcionesExcepciones Accesibilidad de MiembrosAccesibilidad de Miembros

Page 44: Clase iii

ExcepcionesExcepciones

Ejecución de un programa en forma Ejecución de un programa en forma irregularirregular

Código bien escrito debe controlarlasCódigo bien escrito debe controlarlas .NET cuenta con gran soporte para el .NET cuenta con gran soporte para el

manejo de excepcionesmanejo de excepciones

Exc

epci

one

sE

xcep

cio

nes

Page 45: Clase iii

Excepciones en C# y VB.NETExcepciones en C# y VB.NET

C#: C#: usa las palabras usa las palabras trytry//catchcatch//finallyfinally

VB.NETVB.NET usa las palabras usa las palabras TryTry//CatchCatch//FinallyFinally

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:Excepción: objeto que se genera cuando en tiempo de ejecución objeto que se genera cuando en tiempo de ejecución ocurre un error y contiene info sobre el mismoocurre un error y contiene info sobre el mismo

Exc

epci

one

sE

xcep

cio

nes

Page 46: Clase iii

Asistente para el manejo de Asistente para el manejo de ExcepcionesExcepciones Permite Descubrir mas sobre una Permite Descubrir mas sobre una

excepción.excepción. Permite corregir errores en Run-TimePermite corregir errores en Run-Time

Exc

epci

one

sE

xcep

cio

nes

Page 47: Clase iii

AgendaAgenda .NET Framework.NET Framework

AssembliesAssemblies App DomainApp Domain MSIL, JIT y Modelo de ejecuciónMSIL, JIT y Modelo de ejecución BCLBCL

Build de solucionesBuild de soluciones Errores en tiempo de compilaciónErrores en tiempo de compilación Errores en tiempo de ejecuciónErrores en tiempo de ejecución DebuggingDebugging Edit & ContinueEdit & Continue

Programación Orientada a ObjetosProgramación Orientada a Objetos Clases AbstractasClases Abstractas Métodos VirtualesMétodos Virtuales

ExcepcionesExcepciones Accesibilidad de MiembrosAccesibilidad de Miembros

Page 48: Clase iii

Alcance de miembrosAlcance de miembros

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

C#:C#: todo miembro es declarado como todo miembro es declarado como PRIVATEPRIVATE por default por default VB.NET:VB.NET: todo miembro es declarado como todo miembro es declarado como PUBLICPUBLIC por default por default Modificadores de acceso disponibles:Modificadores de acceso disponibles:

C#C# VB.NETVB.NETpublicpublic PublicPublicprivateprivate PrivatePrivateinternalinternal FriendFriendprotectedprotected ProtectedProtectedprotected internalprotected internal Protected FriendProtected Friend

Acc

esib

ilid

ad

Acc

esib

ilid

ad

Page 49: Clase iii

Modificadores de AccesibilidadModificadores de Accesibilidad

Es posible especificar distintos tipos de acceso para gets y sets Gets públicos y sets protegidos

Solo se puede modificar uno de los dos Se puede especificar solo accesibilidad más restrictiva.

C#

VB.NET

Acc

esib

ilid

ad

Acc

esib

ilid

ad

Page 50: Clase iii

ExámenExámen

Para próxima clase tener rendido el Para próxima clase tener rendido el exámen: exámen:

““Net Esencial’s”Net Esencial’s”

www.dce2005.com