tecnologia microsoft .net - [asp .net - parte 1]

122
Tecnología Microsoft.Net José Antonio Torres Moreno MSP y DCE

Upload: antonio-torres

Post on 22-May-2015

6.444 views

Category:

Technology


3 download

DESCRIPTION

Curso sobre la Tecnología Microsoft .Net

TRANSCRIPT

Page 1: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Tecnología Microsoft.NetJosé Antonio Torres Moreno

MSP y DCE

Page 2: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]
Page 3: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Antes de comenzar

• Presentación.• Coordinador de Curso.• Metodología del curso.• Tiempo de descanso.• Asistencia.

Page 4: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Objetivos del curso

• Tecnología .Net• Net Framework 2.0• Asp.Net.• ADO.Net• Lenguaje C#.

Page 5: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Requisitos

• XHTML.• JavaScript.• CSS.

Page 6: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

W W W . D C E 2 0 0 5 . C O M

Page 7: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Tecnología Microsoft .NET

Page 8: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Objetivo

• Presentar una introducción a la plataforma de desarrollo Microsoft .NET, describiendo sus principios básicos de funcionamiento, su arquitectura de componentes y sus principales bibliotecas reutilizables, mostrando además las novedades introducidas en la última versión de la misma.

Page 9: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Paradigmas de Programación

19801980 19901990 20002000

Fu

nci

on

alid

ad

Win16 Win32COMCOM

MFCMFCComponentes

ComponentesServiciosServicios

APIsAPIs

Windows3.0

Page 10: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Tecnología .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 11: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

¿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)

• Visual Studio 2005.– Guías de Arquitectura

• La evolución de la plataforma COM

Page 12: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

DemoPrimer vistazo a .Net

Desarrollar nuestra aplicación “Hello World”

Page 13: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Características de .NET• Plataforma de ejecución intermedia• 100% Orientada a Objetos• Multilenguaje• Plataforma Empresarial de Misión Crítica• 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 14: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Arquitectura .Net

Entorno de

Desarrollo

Mic

roso

ft .

NET

Librerías de Funcionalidad

Lenguajes de Programación

Entorno de Ejecución

Sistema Operativo (Familia Windows)

Aplicación .NET

Page 15: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

.NET como evolución de COM• Entorno de Ejecución (Runtime)

– COM: Windows– .NET: Common Language Runtime

• Librerías de Funcionalidad– COM: Algunas (ADO, FSO, etc.)– .NET: Muy extensa (.NET Framework Class Library)

• Lenguajes de Programación– COM: VB, C++, VFP, ASP, J++– .NET: Common Language Specification

• Entorno de Desarrollo (IDE)– COM: Uno para cada lenguaje– .NET: Uno independiente del lenguaje (VS.NET)

Page 16: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

DemoMostrar el uso de distinto lenguajes.

Page 17: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Net Framework

Page 18: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

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 19: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

.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 distribuida

Page 20: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Línea del tiempo de .NETVisual Studio 6.0Visual BasicVBAVisual FoxProVBScriptC++J++JScriptASP

Visual Studio 6.0Visual BasicVBAVisual FoxProVBScriptC++J++JScriptASP

Visual Studio .NET 2003.NET Framework 1.1.NET Compact FrameworkJ#

Visual Studio .NET 2003.NET Framework 1.1.NET Compact FrameworkJ#

Visual Studio “Orcas”.NET Framework “Orcas”.NET Compact Framework “Orcas”

Visual Studio “Orcas”.NET Framework “Orcas”.NET Compact Framework “Orcas”

2000 2001 2002 2003 2004 2005 2006 y más

Visual Studio 2005 (“Whidbey”).NET Framework 2.0 (“Whidbey”).NET Compact Framework 2.0 (“Whidbey”)

Visual Studio 2005 (“Whidbey”).NET Framework 2.0 (“Whidbey”).NET Compact Framework 2.0 (“Whidbey”)

Visual Studio .NET 2002.NET Framework 1.0Visual Basic .NETC#

Visual Studio .NET 2002.NET Framework 1.0Visual Basic .NETC#

Page 21: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

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

.NE

T F

ramew

ork

Class Library

Page 22: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

DemoCrear Aplicación en Windows Forms.

Page 23: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Common Language Runtime

Page 24: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

CLR – Common Languaje RuntimeArquitecturas de Ejecución de Aplicaciones

Page 25: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

CLR – Common Language Runtime• El CLR es el motor de ejecución (runtime) de .NET• Caracterí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 26: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

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 27: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Código FuenteCódigo Fuente

Cualquier lenguaje .NET

Compilador

Assembly (MSIL)

Assembly (MSIL)

Bibliotecao Ejecutable

CLR – Proceso de Compilación

Page 28: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Microsoft Intermediately Language

Page 29: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Assembly

MetadataMetadata

Código CompiladoCódigo CompiladoMSILMSIL

RecursosRecursos

MiBiblioteca.DLLMiBiblioteca.DLL

Descripción de TiposDescripción de Tipos

ClasesClasesClases BaseClases BaseInterfaces ImplementadasInterfaces ImplementadasAtributos de las ClasesAtributos de las ClasesMétodos de las ClasesMétodos de las Clases

NombreNombreVersiónVersiónCulturaCultura

Manifiesto del AssemblyManifiesto del Assembly

Otros AssembliesOtros AssembliesPermisos de SeguridadPermisos de SeguridadTipos ExternosTipos Externos

Page 30: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Assemblies - Aplicaciones .NET• Uno o más Assemblies• Al 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 31: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

DemoDemostrando MSIL

Page 32: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

.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 NAMESPACES

• Los tipos son INDEPENDIENTES del lenguaje de desarrollo

• Es extensible y totalmente orientada a objetos

Page 33: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

.NET Framework Class Library

System System

System.DataSystem.Data System.XmlSystem.Xml

System.WebSystem.Web

GlobalizationGlobalizationGlobalizationGlobalization

DiagnosticsDiagnosticsDiagnosticsDiagnostics

ConfigurationConfigurationConfigurationConfiguration

CollectionsCollectionsCollectionsCollections

ResourcesResourcesResourcesResources

ReflectionReflectionReflectionReflection

NetNetNetNet

IOIOIOIO

ThreadingThreadingThreadingThreading

TextTextTextText

ServiceProcessServiceProcessServiceProcessServiceProcess

SecuritySecuritySecuritySecurity

CommonCommonCommonCommon

OleDbOleDbOleDbOleDb

SqlClientSqlClientSqlClientSqlClient

OdbcOdbcOdbcOdbc

XPathXPathXPathXPath

XSLTXSLTXSLTXSLT

RuntimeRuntimeRuntimeRuntime

InteropServicesInteropServicesInteropServicesInteropServices

RemotingRemotingRemotingRemoting

SerializationSerializationSerializationSerialization

SerializationSerializationSerializationSerialization

ConfigurationConfigurationConfigurationConfiguration SessionStateSessionStateSessionStateSessionState

CachingCachingCachingCaching SecuritySecuritySecuritySecurity

ServicesServicesServicesServices

DescriptionDescriptionDescriptionDescription

DiscoveryDiscoveryDiscoveryDiscovery

ProtocolsProtocolsProtocolsProtocols

UIUIUIUI

HtmlControlsHtmlControlsHtmlControlsHtmlControls

WebControlsWebControlsWebControlsWebControls

System.DrawingSystem.Drawing

ImagingImagingImagingImaging

Drawing2DDrawing2DDrawing2DDrawing2D

TextTextTextText

PrintingPrintingPrintingPrinting

System.Windows.FormsSystem.Windows.FormsDesignDesignDesignDesign ComponentModelComponentModelComponentModelComponentModel

Page 34: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Common Language Specification (CLS)• Especificación que estandariza una serie de

características soportadas por el CLR• Contrato entre diseñadores de lenguajes de

programación y autores de bibliotecas• Permite la interoperabilidad entre lenguajes• Microsoft 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 35: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

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

CobolCobol

EiffelEiffel

FortranFortran

PascalPascal

PerlPerl

C++.NETC++.NET C#C#

HaskellHaskell

JavaJava JavaScriptJavaScript

Visual Basic.NETVisual Basic.NET

MercuryMercury

MLML

PHPPHP

Objective CamlObjective Caml

OberonOberon SmalltalkSmalltalk SchemeScheme

J#J#

RPGRPG

MondrianMondrian

APLAPL

DelphiDelphi PythonPython

LISPLISP PrologProlog

Page 36: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

CLS - Elección del lenguaje• .NET posee un único runtime (el CLR) y un único

conjunto de bibliotecas para todos los lenguajes• No hay diferencias notorias de performance entre los

lenguajes provistos por Microsoft• El 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 37: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Infraestructura de Lenguaje Común (CLI)

• Especificación patrocinada por Microsoft, Intel, HP y estandarizada por ECMA (2001) e ISO (2003) que describe: – Entorno de Ejecución de Aplicaciones– Conjunto de Librerías Básicas (BCL)– Tipos de Datos Comunes (CTS)

• El .NET Framework y el .NET Compact Framework son implementaciones de la especificación CLI

Page 38: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Sub-Especificaciones de CLILenguajes de Alto Nivel

BCL (Base Class Library)

CLR (Common Language Runtime)

Sistema Operativo

CLS (Common Language Specification)

CTS (Common Type System)

se ajustan a las reglas de la…

y utilizan las clases de la…

cuyos tipos básicos forman el…

y se ejecutan bajo el control de y usan los servicios del…

que está acoplado al y utiliza los servicios del …

Page 39: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

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 40: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Debug EngineDebug Engine

CompiladorCompiladorJITJIT

Assembly en Assembly en la máquinala máquina

destinodestino

Modelo de Ejecución del CLR

AssemblyAssembly

DesarrolloDesarrollo InstalaciónInstalación

InstalaciónInstalación

EjecuciónEjecución

AssemblyAssemblyLoaderLoaderSeguridadSeguridadClass Class

LoaderLoader

.exe Nativo.exe Nativo++

Tabla GC Tabla GC

Code Code ManagerManager

Garbage CollectorGarbage Collector

Manejador ExcepcionesManejador Excepciones

Soporte MultiThreadSoporte MultiThread

COM InteropCOM 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 41: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Application Domains

• Procesos virtuales dentro del CLR– Se ejecutan dentro de un proceso del Sistema Operativo– Un proceso del sistema operativo puede contener varios

AppDomains– Más eficiente que múltiples procesos del sistema operativo– Más eficiente en el intercambio de contexto de ejecución

• Un Assembly y sus tipos son siempre cargados dentro de un AppDomain

• Provee una frontera para: Fallos, Tipos, Seguridad

Page 42: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Application Domains - CLR Host

Código Manejado

CLR

CLR Host

AppDomain 1

Código Manejado

AppDomain N

Page 43: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

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 44: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

La Memoria y los Tipos de Datos• El 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 45: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

DemoUsando tipos de datos

Page 46: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Ventajas de .NET

• Unifica los modelos de programación• Simplifica aún más el desarrollo• Provee un Entorno de Ejecución robusto y seguro• Es independiente del lenguaje de programación• Interoperabilidad con código existente• Simplifica la instalación y administración de las

aplicaciones• Es Extensible

Page 47: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Unificando los Modelos

Windows API

.NET Framework

API consistente mas allá del lenguaje o del modelo de programación

ASP

Basado en Servidor,

UI Embebido en el código

MFC/ATL (C++)

OOP, Potencia,

Acceso a bajo nivel

Visual Basic

Desarrollo Rapido,

Componentes,Event Driven

Page 48: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Desarrollo Simplificado• Alto nivel de abstracción

– No mas accesos COM a bajo nivel– Orientado a Objetos desde el Núcleo

• Sistema de tipos unificado (CTS)– Todo es un objeto, no mas variants

• Componentes de Software– Propiedades, métodos, eventos, y atributos

incluidos en la construcción de clases• API organizada en forma Jerárquica

Page 49: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Entorno de Ejecución Robusto y Seguro• Gestión automática de la memoria

– Todos los objetos son administrados por el Garbage Collector

• Manejo de Excepciones• Fuertemente tipado

– Solo casteos seguros– Inicialización de variables obligatoria

• Instalación con Cero Impacto– No requiere registración en la Registry

Page 50: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Independencia del lenguaje• Libertad en la elección del lenguaje

– Todas las facilidades de la plataforma .NET están disponibles a todos los lenguajes de programación .NET

– Los componentes de una aplicación .NET pueden ser escritos en distintos lenguajes de alto nivel compatibles con la plataforma

• Herramientas compartidas– Debuggers, profilers, analizadores de código, y

otras trabajan para todos los lenguajes

Page 51: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Instalación y Administración más simples• Unidades de Ensamblado (“Assemblies”)

– Mínima unidad de distribución, versionado y administración de seguridad de aplicaciones .NET

– Auto-descriptas a través de un manifiesto (“manifest”)

• Instalaciones Cero-impacto– Aplicaciones y componentes pueden ser

compartidas o privadas• Versioning

– Múltiples versiones del mismo componente pueden co-existir, aún en el mismo proceso

Page 52: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Extensibilidad• El Framework no es una “caja negra”• Sus clases pueden ser extendidas a través del

mecanismo de herencia– A diferencia de COM, usamos y extendemos las

clases en si mismas, no un “wrapper”• Herencia entre distintos lenguajes

Page 53: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Interoperabilidad

.NET Framework.NET Framework Servicios Web XML

C#C#

C++C++ VBVB

Otros...Otros... .NET.NET

COMCOMCOM INTEROPCOM INTEROP

Page 54: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Demo

Aplicaciones en múltiples lenguajes

Page 55: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Programación Orientada a Objetos

Page 56: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

El mundo color de Objetos• Todo el mundo está compuesto de entidades

que se relacionan e interactúan entre si

• ¿Qué es un Objeto?– Todo es un Objeto ¡¿~?!

• ¿Es lo mismo de siempre con otro nombre?– Pensar en Objetos ….

• No es el último grito de la moda (1980s)

Page 57: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

El mundo color de Objetos• ¿Por qué Orientación a Objetos (OO)?

– Se parece más al mundo real– Permite representar modelos complejos– Muy apropiada para aplicaciones de negocios– Las empresas ahora sí aceptan la OO– Las nuevas plataformas de desarrollo la han

adoptado (Java / .NET)

Page 58: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

¿Qué es un Objeto?• Informalmente, un objeto representa una

entidad del mundo real• Entidades Físicas

• (Ej.: Vehículo, Casa, Producto)

• Entidades Conceptuales – (Ej.: Proceso Químico, Transacción Bancaria)

• Entidades de Software – (Ej.: Lista Enlazada, Interfaz Gráfica)

Page 59: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

¿Qué es un Objeto?• Definición Formal :

– “Un objeto es un concepto, abstracción o cosa con un significado y límites claros en el problema en cuestión”

• Un objeto posee :– Propiedades– Comportamiento– Identidad

Page 60: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Un objeto posee Propiedades• Lo que el objeto sabe• Las propiedades de un objeto es una de las

posibles condiciones en que el objeto puede existir

• Las propiedades normalmente cambia en el transcurso del tiempo

• Las propiedades de un objeto es implementado por un conjunto de atributos, además de las conexiones que puede tener con otros objetos

Page 61: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Un objeto posee Comportamiento

• Lo que el objeto puede hacer• El comportamiento de un objeto determina

cómo éste actúa y reacciona frente a las peticiones de otros objetos

• Es modelado por un conjunto de mensajes a los que el objeto puede responder (operaciones que puede realizar)

• Se implementa mediante métodos

Page 62: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Un objeto posee Identidad

• Cada objeto tiene una identidad única, incluso si su estado es idéntico al de otro objeto

Page 63: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

¿Qué es una Clase?• Una clase es una descripción de un grupo de

objetos con: – Propiedades en común (atributos)– Comportamiento similar (operaciones)– La misma forma de relacionarse con otros objetos

(relaciones)– Una semántica en común (significan lo mismo)

• Una clase es una abstracción que:– Enfatiza las características relevantes– Suprime otras características (simplificación)

• Un objeto es una instancia de una clase

Page 64: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Objetos y Clases• Una clase es una definición abstracta de un objeto

– Define la estructura y el comportamiento compartidos por los objetos– Sirve como modelo para la creación de objetos

• Los objetos pueden ser agrupados en clases

Page 65: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Ejemplo de una Clase• Clase: Curso• Estado (Atributos)

– Nombre– Ubicación– Días Ofrecidos– Horario de Inicio– Horario de Término

• Comportamiento (Métodos)– Agregar un Alumno– Borrar un Alumno– Entregar un Listado del Curso– Determinar si está Completo

Page 66: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Modificadores de Acceso• Permiten definir el nivel de acceso (visibilidad)

de los miembros (atributos o métodos) de una clase– Publico: Cualquier clase puede “ver” los miembros

públicos de otra clase– Privado: Sólo la clase puede ver sus propios

miembros privados• Existen otros dos modificadores para

propósitos específicos (Paquete, Protegido)

Page 67: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Pilares de la Orientación a Objetos

RelacionesRelaciones

HerenciaHerencia

AbstracciónAbstracción

Encapsulamiento Encapsulamiento

Page 68: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Abstracción• Ignorancia Selectiva

– La abstracción nos ayuda a trabajar con cosas complejas

– Se enfoca en lo importante– Ignora lo que no es importante (simplifica)

• Una clase es una abstracción en la que:• Se enfatizan las características relevantes• Se suprimen otras características

• Una clase debe capturar una y solo una abstracción clave

Page 69: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Encapsulamiento• Principio que establece que los atributos propios de

un objeto no deben ser visibles desde otros objetos– Deben ser declarados como privados

• Permite abstraer al resto del mundo de la complejidad de la implementación interna

• Permite exponer el estado del objeto sólo a través del comportamiento que le hayamos definido mediante miembros públicos

• ¿Por qué es útil?– Punto de Control/Validación– Mejor respuesta ante los Cambios

Page 70: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Relaciones

• Todo sistema abarca muchas clases y objetos • Los objetos contribuyen en el

comportamiento de un sistema colaborando entre si – La colaboración se logra a través de las relaciones

• Existen dos tipos principales de relaciones – Asociación– Agregación

Page 71: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Herencia• Es una relación entre clases en la cual una

clase comparte la estructura y comportamiento definido en otra clase (Grady Booch)

• Cada clase que hereda de otra posee:– Los atributos de la clase base además de los

propios– Soporta todos o algunos de los métodos de la

clase base

• Una subclase hereda de una clase base

+Avanzar()+Detenerse()

-pasajeros

Transporte

Automóvil Avión

Clase BaseClase Base

Clases Derivadas oClases Derivadas o

subclasessubclases

Page 72: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Herencia• Herencia “Es-Un”: herencia real, donde la

subclase es un tipo específico de la superclase– Un Cuadrado es un Rectángulo– Un perro es un mamífero– Un automóvil es un vehículo a motor

Page 73: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Interfaces (1/3)

• Recurso de diseño soportado por los lenguajes orientados a objetos que permite definir comportamiento

• Permite que clases que no están estrechamente relacionadas entre sí deban tener el mismo comportamiento

• La implementación de una interfaz es un contrato que obliga a la clase a implementar todos los métodos definidos en la interfaz

Page 74: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Interfaces (2/3)

¿ De que clase heredaría la clase Hidroavión ?¿ De que clase heredaría la clase Hidroavión ?

Vehiculo

Avión Barco

Aereo TerrestreAcuatico

Automóvil

Page 75: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Interfaces (3/3)

Hidroavion

+Navegar()

«interface»Acuatico

+Volar()

«interface»Aereo

• Se crean las interfaces que definen comportamiento• Hidroavión deberá definir los comportamientos de cada una de

las interfaces que implemente

Page 76: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Polimorfismo• Es la propiedad que tienen los objetos de

permitir invocar genéricamente un comportamiento (método) cuya implementación será delegada al objeto correspondiente recién en tiempo de ejecución

• El polimorfismo tiende a existir en las relaciones de herencia, pero no siempre es así

Page 77: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Polimorfismo - Ejemplo• La definición del método reside en la clase base• La implementación del método reside en la clase derivada• La invocación es resuelta al momento de ejecución

Transporte

Avanzar

Frenar

Transporte

Avanzar

Frenar

Transporte

Avanzar

Frenar

Transporte

Avanzar

Frenar

Page 78: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Visual Studio 2005

Novatos

Entusiastas

Estudiantes

Hobbyists

Part-Timers

Profesionales

Consultores

Desarrolladores

Arquitectos

Testers

VB6 Devs

Page 79: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Visual Studio 2005 Express Editions

• Herramientas de desarrollo gratuitas• Muy livianas, fáciles de usar y de aprender• Diseñadas para entusiastas, estudiantes y desarrolladores

principiantes• Hay varias ediciones, según el tipo de aplicación y el lenguaje• Tiene características avanzadas, por ejemplo:

– Refactoring– Code Snippets– Diseñadores WYSIWYG– Depuradores– Intellisense

Page 80: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

SQL Server 2005 Express• La nueva versión de MSDE• Es gratuito• Preparado para trabajar integrado con .NET 2.0• Tamaño máximo de base: 4 Gb• Max. Conexiones Concurrentes: no tiene• Incluye una interfaz de administracion y un

editor de consultas• Mayor integración con Visual Studio 2005

Page 81: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Visual Studio 2005

• IDE (Entorno de Desarrollo Integrado)

Page 82: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Introducción a Visual Studio .NET

Page 83: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

¿Qué es Visual Studio .NET?

Visual Studio .NET

Diseño Desarrollo ImplantaciónDepuración

Herramientas deFormularios WebHerramientas deFormularios Web

Herramientas deFormularios Windows

Herramientas deFormularios Windows

Gestor de erroresGestor de erroresMúltiplesLenguajesMúltiples

Lenguajes

Herramientas deServicios Web XMLHerramientas de

Servicios Web XML Acceso a datosAcceso a datos

Page 84: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

¿Qué es una plantilla de aplicación?

Proporciona archivos de inicio, estructura de proyecto y configuración del entorno

Proporciona archivos de inicio, estructura de proyecto y configuración del entorno

Page 85: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Cómo utilizar el Explorador de soluciones

Page 86: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Explorar el entorno de desarrolloMenú principalMenú principal

Nuevo proyectoNuevo proyecto

Cuadro de herramientasCuadro de herramientasDiseñador de Windows FormsDiseñador de Windows Forms

VentanaPropiedadesVentanaPropiedades

Page 87: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Menús y barras de herramientasMenú principalMenú principal

Barra de herramientas estándarBarra de herramientas estándar

Nuevo proyectoNuevo proyecto Guardar Form1.vbGuardar Form1.vb

DeshacerDeshacer

Page 88: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Cuadro de herramientas

Controles para crear el interfaz

de usuario

Controles para crear el interfaz

de usuario

Page 89: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Ventana Propiedades

Establecer propiedades como

tamaño, título y color

Establecer propiedades como

tamaño, título y color

Page 90: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

DemoUso de Visual Studio

Page 91: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Visual C#.NET• Creado especialmente para .NET• Estándar ECMA (2002)• Orientado a Objetos y Componentes• Sintaxis derivada de C, C++, Delphi y Java

Page 92: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Compiladores (1/2)• Compilador de Línea de Comandos C#

– Cumple con la especificación del CLS– <Win>\Microsoft.NET\Framework\<version>\csc.exe– Csc /out:XX /target:YY “Archivo1.cs” “Archivo2.cs”

• Compilador de Línea de Comandos VB.NET– Cumple con la especificación del CLS– <Win>\Microsoft.NET\Framework\<version>\vbc.exe– vbc /out:XX /target:YY “Archivo1.vb” “Archivo2.vb”

Page 93: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

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

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

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

Page 94: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

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

En C# los bloques se declaran entre llaves

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

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

}

Page 95: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Comentariosstring 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 96: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Case Sensitivity

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

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

Page 97: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Tipos de Datos

Categoría Clase Descripción C# Alias

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

    SByte Un entero con signo (8-bit) sbyte

    Int16 Un entero con signo (16-bit) short

    Int32 Un entero con signo (32-bit) int

    Int64 Un entero con signo (64-bit) long

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

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

    Decimal Un número decimal de 96-bit decimal

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

Otros Char Un caracter Unicode (16-bit) char

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

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

Page 98: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

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

Protected Friend

protected internal

ProtectedprotectedFriendinternalPrivateprivatePublicpublic

VB.NETC#

Page 99: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Declaración de Variables

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

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

Page 100: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Conversiones de Tipos

C# no permite conversiones implícitas de tipos

Si falla el cast se devuelve null o 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”

Page 101: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Arreglos

C# utiliza corchetes [ ] para definición de arrays

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”};

Page 102: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Operadores

Descripción C#

Asignación =

Adición +

Sustracción -

Multiplicación *

División /

Negación !

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

Mayor >

Menor <

Mayor o Igual >=

Menor o Igual <=

Page 103: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Operadores Lógicos

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

OperadorVB.NETC#

Page 104: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

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(); }

Sentencias condicionales

C#: sentencia if con varios formatos

Page 105: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Sentencia for

C#: la sentencia for consta de tres partes

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

Page 106: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Sentencia for/each

C#: usa la palabra foreachstring[] nombres = new string[5];foreach(string auxNombre in nombres){ //auxNombre es de SOLO LECTURA}

For/Each permite recorrer arreglos y coleccionesFor/Each permite recorrer arreglos y colecciones

Page 107: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Sentencia while

C#:

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

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

Page 108: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Clases

C#: las clases son declaradas mediante class

//Definicion de la clase CuentaBancariaclass CuentaBancaria{

//Definicion de miembros}

Page 109: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Métodos

En C# todo método es una funciónpublic void HacerDeposito(int importe) //No devuelve valor{}

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

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

Page 110: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Constructores

En C# tienen el mismo nombre de la clase

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

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

Page 111: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Sobrecarga de Métodos

C#

public void HacerDeposito(int importe) {}

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

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

Page 112: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Métodos estáticos

C#

public static void HacerDeposito(int importe) {

}

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

Page 113: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Propiedades

C#

Propiedad: característica o atributo de un objetoPropiedad: característica o atributo de un objeto

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

Page 114: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Herencia

En C# la herencia se define:

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

En .NET solose permiteHerenciaSimple

Page 115: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Herencia (Cont.)

En C#

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 }

Page 116: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

NamespacesC#

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();

Page 117: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Admin. De Excepciones

C#: 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}

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

Page 118: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Soporte para 64 bits

• El CLR 1.x sólo tiene soporte para aplicaciones de 32 bits– No aprovechan las características de los sistemas

operativos de 64 bits, ya que se ejecutan emuladas

• El CLR 2.0 tiene una versión de 64 bits– Permite compilar aplicaciones para que hagan uso

nativamente de las nuevas características de los sistemas operativos y procesadores de 64 bits

Page 119: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Tipos Parciales• Permiten la declaración de un tipo en varios

archivos físicos– Válido para clases y estructuras – Válido para interfaces sólo en C#– Utilizan la palabra clave “partial” en la declaración

• Su uso puede tener varias ventajas– Dividir implementaciones complejas en partes pequeñas– Separación de código auto-generado– Mútiples desarrolladores pueden trabajar sobre distintas secciones del

mismo tipo simultáneamente– Puede facilitar el mantenimiento y el control de versiones de código

Page 120: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

// Demo.Part1.cs

using System;

public partial class Demo

{

public Demo()

{

Console.Write( "P1" );

}

}

// Demo.Part2.cs

public partial class Demo

{

private int i;

}

// Demo.Part3.cs// Demo.Part3.cs

// Error 1!// Error 1!

public class Demopublic class Demo

{{

// Error 2!// Error 2!

private int i;private int i;

// OK// OK

private int j;private int j;

public void Test()public void Test()

{{

// Error 3!// Error 3!

Console.Write( "P3" );Console.Write( "P3" );

}}

}}

Tipos Parciales - Ejemplo

Page 121: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Modificadores de acceso • El CLR 2.0 permite especificar diferentes modificadores de

acceso para el get y el set de las propiedades e índices• Permite solamente modificar uno de los dos elementos de

acceso, mientras que el otro toma el nivel de acceso de la property

• Puede especificar más restricciones• Mejora el encapsulamiento de atributos

Page 122: Tecnologia Microsoft .Net - [Asp .Net - Parte 1]

Modificadores de acceso - Ejemplos

public class Customer{ private string id; public string CustomerId { public get { return id; } private set { id = value; } }}