Tecnología Microsoft.NetJosé Antonio Torres Moreno
MSP y DCE
Antes de comenzar
• Presentación.• Coordinador de Curso.• Metodología del curso.• Tiempo de descanso.• Asistencia.
Objetivos del curso
• Tecnología .Net• Net Framework 2.0• Asp.Net.• ADO.Net• Lenguaje C#.
Requisitos
• XHTML.• JavaScript.• CSS.
W W W . D C E 2 0 0 5 . C O M
Tecnología Microsoft .NET
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.
Paradigmas de Programación
19801980 19901990 20002000
Fu
nci
on
alid
ad
Win16 Win32COMCOM
MFCMFCComponentes
ComponentesServiciosServicios
APIsAPIs
Windows3.0
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
¿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
DemoPrimer vistazo a .Net
Desarrollar nuestra aplicación “Hello World”
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
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
.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)
DemoMostrar el uso de distinto lenguajes.
Net Framework
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
.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
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#
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
DemoCrear Aplicación en Windows Forms.
Common Language Runtime
CLR – Common Languaje RuntimeArquitecturas de Ejecución de Aplicaciones
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
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
Código FuenteCódigo Fuente
Cualquier lenguaje .NET
Compilador
Assembly (MSIL)
Assembly (MSIL)
Bibliotecao Ejecutable
CLR – Proceso de Compilación
Microsoft Intermediately Language
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
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
DemoDemostrando MSIL
.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
.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
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
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
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
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
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 …
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
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"
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
Application Domains - CLR Host
Código Manejado
CLR
CLR Host
AppDomain 1
Código Manejado
AppDomain N
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
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
DemoUsando tipos de datos
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
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
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
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
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
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
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
Interoperabilidad
.NET Framework.NET Framework Servicios Web XML
C#C#
C++C++ VBVB
Otros...Otros... .NET.NET
COMCOMCOM INTEROPCOM INTEROP
Demo
Aplicaciones en múltiples lenguajes
Programación Orientada a Objetos
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)
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)
¿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)
¿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
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
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
Un objeto posee Identidad
• Cada objeto tiene una identidad única, incluso si su estado es idéntico al de otro objeto
¿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
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
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
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)
Pilares de la Orientación a Objetos
RelacionesRelaciones
HerenciaHerencia
AbstracciónAbstracción
Encapsulamiento Encapsulamiento
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
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
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
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
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
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
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
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
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í
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
Visual Studio 2005
Novatos
Entusiastas
Estudiantes
Hobbyists
Part-Timers
Profesionales
Consultores
Desarrolladores
Arquitectos
Testers
VB6 Devs
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
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
Visual Studio 2005
• IDE (Entorno de Desarrollo Integrado)
Introducción a Visual Studio .NET
¿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
¿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
Cómo utilizar el Explorador de soluciones
Explorar el entorno de desarrolloMenú principalMenú principal
Nuevo proyectoNuevo proyecto
Cuadro de herramientasCuadro de herramientasDiseñador de Windows FormsDiseñador de Windows Forms
VentanaPropiedadesVentanaPropiedades
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
Cuadro de herramientas
Controles para crear el interfaz
de usuario
Controles para crear el interfaz
de usuario
Ventana Propiedades
Establecer propiedades como
tamaño, título y color
Establecer propiedades como
tamaño, título y color
DemoUso de Visual Studio
Visual C#.NET• Creado especialmente para .NET• Estándar ECMA (2002)• Orientado a Objetos y Componentes• Sintaxis derivada de C, C++, Delphi y Java
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”
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
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!");}
}
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;}}
Case Sensitivity
system.console.writeline(“HOLA”); INCORRECTO
System.Console.WriteLine(“HOLA”); CORRECTO
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
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#
Declaración de Variables
C#: el tipo de dato precede al identificador (nombre)
int x;decimal y;rectangle z;Cliente cli;
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”
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”};
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 <=
Operadores Lógicos
Distinto<>!=Igual ===Negacion logicaNot!Operador logico OOrllOperador logico YAnd&&
OperadorVB.NETC#
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
Sentencia for
C#: la sentencia for consta de tres partes
//Partes: declaración, prueba, acciónfor (int i=1; i < 10; i++){}
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
Sentencia while
C#:
bool condicion = true;while (condicion == true){
//En algún momento poner condicion = false}
Clases
C#: las clases son declaradas mediante class
//Definicion de la clase CuentaBancariaclass CuentaBancaria{
//Definicion de miembros}
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.
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.
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”.
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”
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
Herencia
En C# la herencia se define:
class Cuenta //Clase Base{ }class CtaCte : Cuenta //Clase Derivada{ }
En .NET solose permiteHerenciaSimple
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 }
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();
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
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
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
// 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
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
Modificadores de acceso - Ejemplos
public class Customer{ private string id; public string CustomerId { public get { return id; } private set { id = value; } }}