SlideShare una empresa de Scribd logo
Tecnología Microsoft.Net José 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 1980 1990 2000 Funcionalidad Win16 Win32 COM MFC Componentes Servicios APIs Windows 3.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
Demo Primer 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 Microsoft .NET Entorno de Desarrollo 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)
Demo Mostrar 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
¿Dónde instalar el .NET Framework? .NET Compact Framework  *    *  Aplicación Móvil Aplicación de Consola Aplicación Web Aplicación de  Escritorio Servidor Cliente * Sólo si la aplicación es distribuida
Línea del tiempo de .NET Visual Studio 6.0 Visual Basic VBA Visual FoxPro VBScript C++ J++ JScript ASP Visual Studio .NET 2003 .NET Framework 1.1 .NET Compact Framework J# 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 .NET 2002 .NET Framework 1.0 Visual Basic .NET C#
Arquitectura del .NET Framework Windows COM+ Services Common Language Runtime Base Class Library ADO.NET y XML ASP.NET Windows Forms Common Language Specification VB C++ C# J# … .NET Framework Redistributable .NET Framework SDK .NET Framework  Class Library
Demo Crear Aplicación en Windows Forms.
Common Language Runtime
CLR –  Common Languaje Runtime Arquitecturas 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
CLR – Proceso de Compilación Código  Fuente Cualquier lenguaje .NET Compilador Assembly (MSIL) Biblioteca o Ejecutable
Microsoft Intermediately Language
Assembly Metadata Código Compilado MSIL Recursos MiBiblioteca.DLL Descripción de Tipos Clases Clases Base Interfaces Implementadas Atributos de las Clases Métodos de las Clases Nombre Versión Cultura Manifiesto del Assembly   Otros Assemblies Permisos de Seguridad Tipos 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
Demo Demostrando 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.Data System.Xml System.Web Globalization Diagnostics Configuration Collections Resources Reflection Net IO Threading Text ServiceProcess Security Common OleDb SqlClient Odbc XPath XSLT Runtime InteropServices Remoting Serialization Serialization Configuration SessionState Caching Security Services Description Discovery Protocols UI HtmlControls WebControls System.Drawing Imaging Drawing2D Text Printing System.Windows.Forms Design ComponentModel
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 Cobol Eiffel Fortran Pascal Perl C++.NET C# Haskell Java JavaScript Visual Basic.NET Mercury ML PHP Objective Caml Oberon Smalltalk Scheme J# RPG Mondrian APL Delphi Python LISP Prolog
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 CLI
Modelo de Ejecución del CLR VB.NET Código Fuente Compilador  VB.NET C++.NET C# Assembly Código MSIL Sistema Operativo (Windows) Common Language Runtime Compilador JIT Código Nativo Código  Manejado Componente No Manejado Compilador C# Compilador C++ .NET Assembly Código MSIL Assembly Código MSIL
Modelo de Ejecución del CLR Instalación Ejecución Policy <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?> <configuration> <mscorlib> <security> <policy> <PolicyLevel version=&quot;1&quot;> <CodeGroup class=&quot;UnionCodeGroup&quot; version=&quot;1&quot; PermissionSetName=&quot;Nothing&quot; Name=&quot;All_Code&quot; Description=&quot;Code group  grants no permissio ns and forms the root of the code group tree.&quot;> <IMembershipCondition clas s=&quot;AllMembershipCondition&quot; version=&quot;1&quot;/> <CodeGroup class=&quot;UnionCodeGroup&quot; version=&quot;1&quot; PermissionSetName=&quot;FullTrust&quot; Debug Engine Compilador JIT Assembly en  la máquina destino Assembly Desarrollo Instalación Assembly Loader Seguridad Class  Loader .exe Nativo + Tabla GC  Code  Manager Garbage Collector Manejador Excepciones Soporte MultiThread COM Interop
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
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
Demo Usando 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 C# C++ VB Otros... COM COM INTEROP .NET Framework Servicios Web XML .NET
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 Relaciones Herencia Abstracción 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 Clase Base Clases Derivadas o subclases
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 ?
Interfaces (3/3) 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 Herramientas de Formularios Web Herramientas de Formularios Windows Gestor de errores Múltiples Lenguajes Herramientas de Servicios Web XML Acceso a datos Diseño Desarrollo Implantación Depuración
¿Qué es una plantilla de aplicación? Proporciona archivos de inicio, estructura de proyecto y configuración del entorno
Cómo utilizar el Explorador de soluciones
Explorar el entorno de desarrollo Menú principal Nuevo proyecto Cuadro de herramientas Diseñador de Windows Forms Ventana Propiedades
Menús y barras de herramientas Menú principal Barra de herramientas estándar Nuevo proyecto Guardar  Form1.vb Deshacer
Cuadro de herramientas Controles para  crear el interfaz  de usuario
Ventana Propiedades Establecer   propiedades como   tamaño, título y color
Demo Uso 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 renglon string  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(&quot;Hello World!&quot;); } }
Comentarios string  nombre = “Juan”;   // Comentario de una sola línea /* Comentario con mas  de una línea*/ /// <summary> ///   Documentación XML que puede ser consumida por otras  ///  herramientas para mostrar ayuda dinámica o generar  ///  documentación en varios formatos /// </summary> public class  Matematica { /// <summary> ///   Calcula la suma de dos números enteros ///   </summary> ///   <param name=&quot;x&quot;> El primer operando de la suma </param> ///   <param name=&quot;y&quot;> 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 Protected protected Friend internal Private private Public public VB.NET C#
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 CtaCte CtaCte 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 strings telefonos =  new   string [3];  //De  3 elementos telefonos[0] = “1245”;  //Seteo del 1er elemento del arreglo //Definicion y asignacion de una vez telefonos =  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 logica Not ! Operador logico O Or ll Operador logico Y And && Operador VB.NET C#
Sentencias condicionales C#: sentencia if con varios formatos 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(); }
Sentencia for C#: la sentencia for consta de tres partes //Partes: declaración, prueba, acción for  ( int  i=1; i < 10; i++) { }
Sentencia for/each C#: usa la palabra foreach string [] nombres =  new   string [5]; foreach (string auxNombre  in  nombres) { //auxNombre es de SOLO LECTURA } For/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 CuentaBancaria class  CuentaBancaria { //Definicion de miembros }
Métodos En C# todo método es una función public 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 objeto class  CtaCte { int  balance; public int  Balance { get { return  balance; } set { balance =  value ; } } } CtaCte cc =  new  CtaCte(); cc.Balance = 100;  //Asignación Mostrar(cc.Balance);  //Obtención
Herencia En C# la herencia se define: class  Cuenta  //Clase Base {  } class  CtaCte : Cuenta  //Clase Derivada {   } En .NET solo se permite Herencia Simple
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   }
Namespaces C# 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 una 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
Tipos Parciales - Ejemplo // Demo.Part1.cs using System; public partial class Demo { public Demo() { Console.Write( &quot;P1&quot; ); } } // Demo.Part2.cs public partial class Demo { private int i; } // Demo.Part3.cs // Error 1! public class Demo { // Error 2! private int i; // OK private int j; public void Test() { // Error 3! Console.Write( &quot;P3&quot; ); } }
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; } } }

Más contenido relacionado

PDF
PLC: Introducción a autómatas GRAFCET
PDF
Comunicaciones analogicas
PPTX
Unidad 3-antenas
PPTX
UNIDAD 2 DISEÑO DE LAS BASES DE DATOS DISTRIBUIDAS
PDF
Unidad 3 ensambladores
PPT
Actuadores
PPTX
Modulación digital con portadora análoga
PPTX
7. atenuacion, distorsion y ruido en la transmision
PLC: Introducción a autómatas GRAFCET
Comunicaciones analogicas
Unidad 3-antenas
UNIDAD 2 DISEÑO DE LAS BASES DE DATOS DISTRIBUIDAS
Unidad 3 ensambladores
Actuadores
Modulación digital con portadora análoga
7. atenuacion, distorsion y ruido en la transmision

La actualidad más candente (20)

DOC
Elementos del sistema de comunicaciones satelital
PPTX
Control de-flujo
PDF
Tecnicas de modulacion
PPTX
Instrumentacion expo
PDF
Curso dnp 3 por sel
PDF
Tema 4 Sistemas Basados En Reglas Difusas
PDF
248209003 03-doc-apoyo-norma-din-72552
PPT
Modulacion AM
PPT
Conversion señal Analógica a Digital Y viceversa
PDF
Programación del lado del cliente
PPTX
Llenado de tanque de almacenamiento de agua - diagrama de bloques
PPTX
Modulación en amplitud (am)
PDF
Modulacion en Transmision de Informacion y Ruido - Misha Schwartz
PDF
Ejercicios Redes 1
PDF
3.1 inserción, eliminación y modificación de registros
DOCX
Unidad 2 sistemas programables
PDF
PROTOCOLO RIP V1 Y RIP V2 - REDES DE DATOS
PDF
Control difuso
PDF
Devicenet
PPTX
Método v
Elementos del sistema de comunicaciones satelital
Control de-flujo
Tecnicas de modulacion
Instrumentacion expo
Curso dnp 3 por sel
Tema 4 Sistemas Basados En Reglas Difusas
248209003 03-doc-apoyo-norma-din-72552
Modulacion AM
Conversion señal Analógica a Digital Y viceversa
Programación del lado del cliente
Llenado de tanque de almacenamiento de agua - diagrama de bloques
Modulación en amplitud (am)
Modulacion en Transmision de Informacion y Ruido - Misha Schwartz
Ejercicios Redes 1
3.1 inserción, eliminación y modificación de registros
Unidad 2 sistemas programables
PROTOCOLO RIP V1 Y RIP V2 - REDES DE DATOS
Control difuso
Devicenet
Método v
Publicidad

Destacado (20)

PPT
Net Framework
PDF
Introduccion a la plataforma .NET
PDF
Introduccion a Visual Studio .NET
PDF
Introducción a la Programación en Visual C# (C Sharp)
PPTX
Entorno de desarrollo integrado de Visual Basic .NET
PPT
1 Plataforma .Net
PPTX
Introducción a la Plataforma .NET
PDF
Entendiendo el .NET Framework
PPTX
Framework .NET 3.5 02 Entorno de desarrollo (ide)
PPTX
Asp.net
PPT
Lanzamiento gifv abertis_2011_06_01
PPTX
Impacte de les TIC en els adolescents
PDF
Microsoft manual de introduccion a visual c# 2005 express
PPT
Arquitectura tres capas, NET
 
DOC
Curso de c#
PDF
Sesion 01 - Introduccion a Net Framework
PDF
Continuidad
PPT
PDF
Manual de el lenguaje de programacion c# ( español spanish) x richy
Net Framework
Introduccion a la plataforma .NET
Introduccion a Visual Studio .NET
Introducción a la Programación en Visual C# (C Sharp)
Entorno de desarrollo integrado de Visual Basic .NET
1 Plataforma .Net
Introducción a la Plataforma .NET
Entendiendo el .NET Framework
Framework .NET 3.5 02 Entorno de desarrollo (ide)
Asp.net
Lanzamiento gifv abertis_2011_06_01
Impacte de les TIC en els adolescents
Microsoft manual de introduccion a visual c# 2005 express
Arquitectura tres capas, NET
 
Curso de c#
Sesion 01 - Introduccion a Net Framework
Continuidad
Manual de el lenguaje de programacion c# ( español spanish) x richy
Publicidad

Similar a Tecnologia Microsoft .Net - [Asp .Net - Parte 1] (20)

PPT
Introduccion microsoft.net
PPT
Dce1 introduccion microsoft.net
PPT
Introduccion Microsoft.net
PPT
Dce1 introduccion microsoft.net
PPTX
Tecnologia microsoft .net
PPTX
Tecnologia Microsoft
PPTX
Tecnologia microsoft .net
PPTX
.Net Framework Introduction
PPT
Dce1 introduccion microsoft.net
PPTX
Unidad 1
PPT
0 - LP - Introducción a NET y Csharp.ppt
PPT
Introduccion net
PPT
Introduccion.net
PPTX
Introducción a net
PPTX
PPTX
C_Basico_Parte_I.pptx
DOCX
michael ascanio
PPTX
PDF
Introduccion a visual studio.Net Part 2
PPTX
framework.net -Jennifer Suarez
Introduccion microsoft.net
Dce1 introduccion microsoft.net
Introduccion Microsoft.net
Dce1 introduccion microsoft.net
Tecnologia microsoft .net
Tecnologia Microsoft
Tecnologia microsoft .net
.Net Framework Introduction
Dce1 introduccion microsoft.net
Unidad 1
0 - LP - Introducción a NET y Csharp.ppt
Introduccion net
Introduccion.net
Introducción a net
C_Basico_Parte_I.pptx
michael ascanio
Introduccion a visual studio.Net Part 2
framework.net -Jennifer Suarez

Más de Antonio Torres (8)

PDF
La VIda Digital
PDF
Tendencias Tecnológicas 2015
PDF
Mercadotecnia Digital para Marcas de Moda
PDF
40 Fashion Bloggers más influyentes de México
PDF
Redes Sociales como estrategia para el reclutamiento
PDF
Digital Fashion Strategy
PPT
Microsoft Asp. Net [Asp.Net - Parte 2]
PPT
Pensar como hormiga
La VIda Digital
Tendencias Tecnológicas 2015
Mercadotecnia Digital para Marcas de Moda
40 Fashion Bloggers más influyentes de México
Redes Sociales como estrategia para el reclutamiento
Digital Fashion Strategy
Microsoft Asp. Net [Asp.Net - Parte 2]
Pensar como hormiga

Último (20)

PDF
Maste clas de estructura metálica y arquitectura
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
taller de informática - LEY DE OHM
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PDF
clase auditoria informatica 2025.........
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PPTX
Presentación de Redes de Datos modelo osi
PDF
Diapositiva proyecto de vida, materia catedra
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
Influencia-del-uso-de-redes-sociales.pdf
Maste clas de estructura metálica y arquitectura
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
taller de informática - LEY DE OHM
introduccion a las_web en el 2025_mejoras.ppt
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
CyberOps Associate - Cisco Networking Academy
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
clase auditoria informatica 2025.........
Propuesta BKP servidores con Acronis1.pptx
REDES INFORMATICAS REDES INFORMATICAS.pptx
historia_web de la creacion de un navegador_presentacion.pptx
Power Point Nicolás Carrasco (disertación Roblox).pptx
Presentación de Redes de Datos modelo osi
Diapositiva proyecto de vida, materia catedra
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Plantilla para Diseño de Narrativas Transmedia.pdf
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
SAP Transportation Management para LSP, TM140 Col18
Influencia-del-uso-de-redes-sociales.pdf

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

  • 1. Tecnología Microsoft.Net José Antonio Torres Moreno MSP y DCE
  • 2.  
  • 3. Antes de comenzar Presentación. Coordinador de Curso. Metodología del curso. Tiempo de descanso. Asistencia.
  • 4. Objetivos del curso Tecnología .Net Net Framework 2.0 Asp.Net. ADO.Net Lenguaje C#.
  • 6. W W W . D C E 2 0 0 5 . C O M
  • 8. 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.
  • 9. Paradigmas de Programación 1980 1990 2000 Funcionalidad Win16 Win32 COM MFC Componentes Servicios APIs Windows 3.0
  • 10. 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
  • 11. ¿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
  • 12. Demo Primer vistazo a .Net Desarrollar nuestra aplicación “Hello World”
  • 13. 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
  • 14. Arquitectura .Net Microsoft .NET Entorno de Desarrollo Librerías de Funcionalidad Lenguajes de Programación Entorno de Ejecución Sistema Operativo (Familia Windows) Aplicación .NET
  • 15. .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)
  • 16. Demo Mostrar el uso de distinto lenguajes.
  • 18. 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
  • 19. ¿Dónde instalar el .NET Framework? .NET Compact Framework  *    *  Aplicación Móvil Aplicación de Consola Aplicación Web Aplicación de Escritorio Servidor Cliente * Sólo si la aplicación es distribuida
  • 20. Línea del tiempo de .NET Visual Studio 6.0 Visual Basic VBA Visual FoxPro VBScript C++ J++ JScript ASP Visual Studio .NET 2003 .NET Framework 1.1 .NET Compact Framework J# 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 .NET 2002 .NET Framework 1.0 Visual Basic .NET C#
  • 21. Arquitectura del .NET Framework Windows COM+ Services Common Language Runtime Base Class Library ADO.NET y XML ASP.NET Windows Forms Common Language Specification VB C++ C# J# … .NET Framework Redistributable .NET Framework SDK .NET Framework Class Library
  • 22. Demo Crear Aplicación en Windows Forms.
  • 24. CLR – Common Languaje Runtime Arquitecturas de Ejecución de Aplicaciones
  • 25. 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
  • 27. CLR – Proceso de Compilación Código Fuente Cualquier lenguaje .NET Compilador Assembly (MSIL) Biblioteca o Ejecutable
  • 29. Assembly Metadata Código Compilado MSIL Recursos MiBiblioteca.DLL Descripción de Tipos Clases Clases Base Interfaces Implementadas Atributos de las Clases Métodos de las Clases Nombre Versión Cultura Manifiesto del Assembly Otros Assemblies Permisos de Seguridad Tipos Externos
  • 30. 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
  • 32. .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
  • 33. .NET Framework Class Library System System.Data System.Xml System.Web Globalization Diagnostics Configuration Collections Resources Reflection Net IO Threading Text ServiceProcess Security Common OleDb SqlClient Odbc XPath XSLT Runtime InteropServices Remoting Serialization Serialization Configuration SessionState Caching Security Services Description Discovery Protocols UI HtmlControls WebControls System.Drawing Imaging Drawing2D Text Printing System.Windows.Forms Design ComponentModel
  • 34. 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
  • 35. Common Language Specification (CLS) El resto de la industria y el sector académico han desarrollado más de 20 lenguajes compatibles con la especificación CLS Cobol Eiffel Fortran Pascal Perl C++.NET C# Haskell Java JavaScript Visual Basic.NET Mercury ML PHP Objective Caml Oberon Smalltalk Scheme J# RPG Mondrian APL Delphi Python LISP Prolog
  • 36. 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
  • 37. 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
  • 39. Modelo de Ejecución del CLR VB.NET Código Fuente Compilador VB.NET C++.NET C# Assembly Código MSIL Sistema Operativo (Windows) Common Language Runtime Compilador JIT Código Nativo Código Manejado Componente No Manejado Compilador C# Compilador C++ .NET Assembly Código MSIL Assembly Código MSIL
  • 40. Modelo de Ejecución del CLR Instalación Ejecución Policy <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?> <configuration> <mscorlib> <security> <policy> <PolicyLevel version=&quot;1&quot;> <CodeGroup class=&quot;UnionCodeGroup&quot; version=&quot;1&quot; PermissionSetName=&quot;Nothing&quot; Name=&quot;All_Code&quot; Description=&quot;Code group grants no permissio ns and forms the root of the code group tree.&quot;> <IMembershipCondition clas s=&quot;AllMembershipCondition&quot; version=&quot;1&quot;/> <CodeGroup class=&quot;UnionCodeGroup&quot; version=&quot;1&quot; PermissionSetName=&quot;FullTrust&quot; Debug Engine Compilador JIT Assembly en la máquina destino Assembly Desarrollo Instalación Assembly Loader Seguridad Class Loader .exe Nativo + Tabla GC Code Manager Garbage Collector Manejador Excepciones Soporte MultiThread COM Interop
  • 41. 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
  • 42. Application Domains - CLR Host Código Manejado CLR CLR Host AppDomain 1 Código Manejado AppDomain N
  • 43. 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
  • 44. 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
  • 45. Demo Usando tipos de datos
  • 46. 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
  • 47. 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
  • 48. 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
  • 49. 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
  • 50. 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
  • 51. 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
  • 52. 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
  • 53. Interoperabilidad C# C++ VB Otros... COM COM INTEROP .NET Framework Servicios Web XML .NET
  • 54. Demo Aplicaciones en múltiples lenguajes
  • 56. 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)
  • 57. 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)
  • 58. ¿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 )
  • 59. ¿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
  • 60. 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
  • 61. 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
  • 62. Un objeto posee Identidad Cada objeto tiene una identidad única, incluso si su estado es idéntico al de otro objeto
  • 63. ¿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
  • 64. 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
  • 65. 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
  • 66. 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)
  • 67. Pilares de la Orientación a Objetos Relaciones Herencia Abstracción Encapsulamiento
  • 68. 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
  • 69. 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
  • 70. 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
  • 71. 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 Clase Base Clases Derivadas o subclases
  • 72. 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
  • 73. 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
  • 74. Interfaces (2/3) ¿ De que clase heredaría la clase Hidroavión ?
  • 75. Interfaces (3/3) Se crean las interfaces que definen comportamiento Hidroavión deberá definir los comportamientos de cada una de las interfaces que implemente
  • 76. 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í
  • 77. 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
  • 78. Visual Studio 2005 Novatos Entusiastas Estudiantes Hobbyists Part-Timers Profesionales Consultores Desarrolladores Arquitectos Testers VB6 Devs
  • 79. 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
  • 80. 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
  • 81. Visual Studio 2005 IDE (Entorno de Desarrollo Integrado)
  • 82. Introducción a Visual Studio .NET
  • 83. ¿Qué es Visual Studio .NET? Visual Studio .NET Herramientas de Formularios Web Herramientas de Formularios Windows Gestor de errores Múltiples Lenguajes Herramientas de Servicios Web XML Acceso a datos Diseño Desarrollo Implantación Depuración
  • 84. ¿Qué es una plantilla de aplicación? Proporciona archivos de inicio, estructura de proyecto y configuración del entorno
  • 85. Cómo utilizar el Explorador de soluciones
  • 86. Explorar el entorno de desarrollo Menú principal Nuevo proyecto Cuadro de herramientas Diseñador de Windows Forms Ventana Propiedades
  • 87. Menús y barras de herramientas Menú principal Barra de herramientas estándar Nuevo proyecto Guardar Form1.vb Deshacer
  • 88. Cuadro de herramientas Controles para crear el interfaz de usuario
  • 89. Ventana Propiedades Establecer propiedades como tamaño, título y color
  • 90. Demo Uso de Visual Studio
  • 91. Visual C#.NET Creado especialmente para .NET Estándar ECMA (2002) Orientado a Objetos y Componentes Sintaxis derivada de C, C++, Delphi y Java
  • 92. 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”
  • 93. VB.NET y C# - Terminación de línea C#: la línea finaliza con un “ ; ” //Una linea con mas de un renglon string nombre = primerNombre + apellido; //El punto y coma indica FINAL de linea
  • 94. 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(&quot;Hello World!&quot;); } }
  • 95. Comentarios string nombre = “Juan”; // Comentario de una sola línea /* Comentario con mas de una línea*/ /// <summary> /// Documentación XML que puede ser consumida por otras /// herramientas para mostrar ayuda dinámica o generar /// documentación en varios formatos /// </summary> public class Matematica { /// <summary> /// Calcula la suma de dos números enteros /// </summary> /// <param name=&quot;x&quot;> El primer operando de la suma </param> /// <param name=&quot;y&quot;> 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;} }
  • 96. Case Sensitivity system.console.writeline(“HOLA”); INCORRECTO System.Console.WriteLine(“HOLA”); CORRECTO
  • 97. 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
  • 98. 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 Protected protected Friend internal Private private Public public VB.NET C#
  • 99. Declaración de Variables C#: el tipo de dato precede al identificador (nombre) int x; decimal y; rectangle z; Cliente cli;
  • 100. 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 CtaCte CtaCte cc = (CtaCte)cta; //Conversion explicita “CASTING” CtaCte cc = cta as CtaCte; //Usando el operador “as” if (cta is CtaCte) ... //Comp. con el operador “is”
  • 101. Arreglos C# utiliza corchetes [ ] para definición de arrays string [] telefonos; //Definicion de un Arreglo de strings telefonos = new string [3]; //De 3 elementos telefonos[0] = “1245”; //Seteo del 1er elemento del arreglo //Definicion y asignacion de una vez telefonos = new string [] {“1”,“2”,“3”};
  • 102. 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 <=
  • 103. Operadores Lógicos Distinto <> != Igual   = == Negacion logica Not ! Operador logico O Or ll Operador logico Y And && Operador VB.NET C#
  • 104. Sentencias condicionales C#: sentencia if con varios formatos 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(); }
  • 105. Sentencia for C#: la sentencia for consta de tres partes //Partes: declaración, prueba, acción for ( int i=1; i < 10; i++) { }
  • 106. Sentencia for/each C#: usa la palabra foreach string [] nombres = new string [5]; foreach (string auxNombre in nombres) { //auxNombre es de SOLO LECTURA } For/Each permite recorrer arreglos y colecciones
  • 107. Sentencia while C#: bool condicion = true ; while (condicion == true ){ //En algún momento poner condicion = false }
  • 108. Clases C#: las clases son declaradas mediante class //Definicion de la clase CuentaBancaria class CuentaBancaria { //Definicion de miembros }
  • 109. Métodos En C# todo método es una función public 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.
  • 110. 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.
  • 111. 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”.
  • 112. 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”
  • 113. Propiedades C# Propiedad: 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ón Mostrar(cc.Balance); //Obtención
  • 114. Herencia En C# la herencia se define: class Cuenta //Clase Base { } class CtaCte : Cuenta //Clase Derivada { } En .NET solo se permite Herencia Simple
  • 115. 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 }
  • 116. Namespaces C# 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();
  • 117. 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 una aplicación
  • 118. 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
  • 119. 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
  • 120. Tipos Parciales - Ejemplo // Demo.Part1.cs using System; public partial class Demo { public Demo() { Console.Write( &quot;P1&quot; ); } } // Demo.Part2.cs public partial class Demo { private int i; } // Demo.Part3.cs // Error 1! public class Demo { // Error 2! private int i; // OK private int j; public void Test() { // Error 3! Console.Write( &quot;P3&quot; ); } }
  • 121. 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
  • 122. Modificadores de acceso - Ejemplos public class Customer{ private string id; public string CustomerId { public get { return id; } private set { id = value; } } }