Académique Documents
Professionnel Documents
Culture Documents
Net
Jos Antonio Torres Moreno MSP y DCE
Antes de comenzar
Presentacin. Coordinador de Curso. Metodologa del curso. Tiempo de descanso. Asistencia.
Requisitos
XHTML. JavaScript. CSS.
WWW.DCE2005.COM
Objetivo
Presentar una introduccin a la plataforma de desarrollo Microsoft .NET, describiendo sus principios bsicos de funcionamiento, su arquitectura de componentes y sus principales bibliotecas reutilizables, mostrando adems las novedades introducidas en la ltima versin de la misma.
Paradigmas de Programacin
Funcionalidad
Windows 3.0
MFC
Win16
1980 1990
COM Win32
2000
Tecnologa .Net
.NET no es un Sistema Operativo
.NET no es un Lenguaje de Programacin .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 Ejecucin (Runtime) Bibliotecas de Funcionalidad (Class Library) Lenguajes de Programacin Compiladores Herramientas de Desarrollo (IDE & Tools)
Visual Studio 2005.
Guas de Arquitectura
Demo
Primer vistazo a .Net
Desarrollar nuestra aplicacin Hello World
Caractersticas de .NET
Plataforma de ejecucin intermedia 100% Orientada a Objetos Multilenguaje Plataforma Empresarial de Misin Crtica Modelo de Programacin nico para todo tipo de aplicaciones y dispositivos de hardware Se integra fcilmente con aplicaciones existentes desarrolladas en plataformas Microsoft Se integra fcilmente con aplicaciones desarrolladas en otras plataformas
Arquitectura .Net
Aplicacin .NET
Microsoft .NET
Libreras de Funcionalidad
COM: Algunas (ADO, FSO, etc.) .NET: Muy extensa (.NET Framework Class Library)
Lenguajes de Programacin
COM: VB, C++, VFP, ASP, J++ .NET: Common Language Specification
Demo
Mostrar el uso de distinto lenguajes.
Net Framework
Net Framework
Paquete de software fundamental de la plataforma .NET. Incluye:
Entorno de Ejecucin (Runtime) Bibliotecas de Funcionalidad (Class Library)
Servidor
Aplicacin de Consola
Aplicacin Mvil
Visual Studio 6.0 Visual Basic VBA Visual FoxPro VBScript C++ J++ JScript ASP
2000
2001
2002
2003
2004 2005
2006 y ms
Visual Studio .NET 2002 .NET Framework 1.0 Visual Basic .NET C#
Visual Studio 2005 (Whidbey) .NET Framework 2.0 (Whidbey) .NET Compact Framework 2.0 (Whidbey)
VB
C++
C#
J#
ASP.NET
.NET Framework Redistributable
Windows Forms
ADO.NET y XML
Demo
Crear Aplicacin en Windows Forms.
Cdigo Fuente
Assembly (MSIL)
Compilador
Cualquier lenguaje .NET Biblioteca o Ejecutable
Assembly
Descripcin de Tipos MiBiblioteca.DLL Metadata Recursos Cdigo Compilado MSIL
Clases Clases Base Interfaces Implementadas Atributos de las Clases Mtodos de las Clases
Demo
Demostrando MSIL
System.Windows.Forms
Design ComponentModel
System.Drawing
Drawing2D Printing
Configuration
SessionState
Imaging
Text
System.Data
OleDb Common Odbc SqlClient
System.Xml
XSLT XPath Serialization
System
Collections Configuration Diagnostics Globalization IO Net Reflection Resources Security ServiceProcess Text Threading Runtime InteropServices Remoting Serialization
C#
Java Haskell
Mondrian
Fortran
APL
Objective Caml
Los tipos de aplicaciones .NET son INDEPENDIENTES del lenguaje que elija
Sub-Especificaciones de CLI
Lenguajes de Alto Nivel
se ajustan a las reglas de la
Sistema Operativo
Cdigo Manejado
Desarrollo
Assembly Instalacin
Instalacin
Assembly en la mquina destino
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 permissio ns and forms the root of the code group tree."> <IMembershipCondition clas s="AllMembershipCondition" version="1"/> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust"
Ejecucin
Compilador JIT
Seguridad
Code Manager
Debug Engine
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 Ms eficiente que mltiples procesos del sistema operativo Ms eficiente en el intercambio de contexto de ejecucin
Un Assembly y sus tipos son siempre cargados dentro de un AppDomain Provee una frontera para: Fallos, Tipos, Seguridad
AppDomain N
Cdigo Manejado
Todo lenguaje de programacin .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
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 programacin Simplifica an ms el desarrollo Provee un Entorno de Ejecucin robusto y seguro Es independiente del lenguaje de programacin Interoperabilidad con cdigo existente Simplifica la instalacin y administracin de las aplicaciones Es Extensible
.NET Framework
Desarrollo Rapido, Componentes, Event Driven OOP, Potencia, Acceso a bajo nivel Basado en Servidor, UI Embebido en el cdigo
Visual Basic
MFC/ATL (C++)
ASP
Windows API
Desarrollo Simplificado
Alto nivel de abstraccin
No mas accesos COM a bajo nivel Orientado a Objetos desde el Ncleo
Componentes de Software
Propiedades, mtodos, eventos, y atributos incluidos en la construccin de clases
Herramientas compartidas
Debuggers, profilers, analizadores de cdigo, y otras trabajan para todos los lenguajes
Instalaciones Cero-impacto
Aplicaciones y componentes pueden ser compartidas o privadas
Versioning
Mltiples versiones del mismo componente pueden co-existir, an en el mismo proceso
Extensibilidad
El Framework no es una caja negra Sus clases pueden ser extendidas a travs del mecanismo de herencia
A diferencia de COM, usamos y extendemos las clases en si mismas, no un wrapper
Interoperabilidad
.NET Framework Servicios Web XML
C#
COM INTEROP
COM
C++
Otros...
VB .NET
Demo
Aplicaciones en mltiples lenguajes
Qu es un Objeto?
Informalmente, un objeto representa una entidad del mundo real Entidades Fsicas
(Ej.: Vehculo, Casa, Producto)
Entidades Conceptuales
(Ej.: Proceso Qumico, Transaccin Bancaria)
Entidades de Software
(Ej.: Lista Enlazada, Interfaz Grfica)
Qu es un Objeto?
Definicin Formal :
Un objeto es un concepto, abstraccin o cosa con un significado y lmites claros en el problema en cuestin
Un objeto posee :
Propiedades Comportamiento Identidad
Qu es una Clase?
Una clase es una descripcin de un grupo de objetos con:
Propiedades en comn (atributos) Comportamiento similar (operaciones) La misma forma de relacionarse con otros objetos (relaciones) Una semntica en comn (significan lo mismo)
Objetos y Clases
Una clase es una definicin abstracta de un objeto
Define la estructura y el comportamiento compartidos por los objetos Sirve como modelo para la creacin de objetos
Comportamiento (Mtodos)
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 mtodos) de una clase
Publico: Cualquier clase puede ver los miembros pblicos de otra clase Privado: Slo la clase puede ver sus propios miembros privados
Abstraccin
Relaciones
Herencia
Encapsulamiento
Abstraccin
Ignorancia Selectiva
La abstraccin nos ayuda a trabajar con cosas complejas Se enfoca en lo importante Ignora lo que no es importante (simplifica)
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 implementacin interna Permite exponer el estado del objeto slo a travs del comportamiento que le hayamos definido mediante miembros pblicos Por qu es til?
Punto de Control/Validacin 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 colaboracin se logra a travs de las relaciones
Herencia
Es una relacin 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 adems de los propios Soporta todos o algunos de los mtodos de la clase base
Clase Base
Automvil
Avin
Herencia
Herencia Es-Un: herencia real, donde la subclase es un tipo especfico de la superclase
Un Cuadrado es un Rectngulo Un perro es un mamfero Un automvil es un vehculo a motor
Interfaces (1/3)
Recurso de diseo soportado por los lenguajes orientados a objetos que permite definir comportamiento Permite que clases que no estn estrechamente relacionadas entre s deban tener el mismo comportamiento La implementacin de una interfaz es un contrato que obliga a la clase a implementar todos los mtodos definidos en la interfaz
Interfaces (2/3)
Vehiculo
Aereo
Acuatico
Terrestre
Avin
Barco
Automvil
Interfaces (3/3)
Se crean las interfaces que definen comportamiento Hidroavin deber definir los comportamientos de cada una de las interfaces que implemente
interface Acuatico +Navegar() interface Aereo +Volar()
Hidroavion
Polimorfismo
Es la propiedad que tienen los objetos de permitir invocar genricamente un comportamiento (mtodo) cuya implementacin ser delegada al objeto correspondiente recin en tiempo de ejecucin El polimorfismo tiende a existir en las relaciones de herencia, pero no siempre es as
Polimorfismo - Ejemplo
La definicin del mtodo reside en la clase base La implementacin del mtodo reside en la clase derivada La invocacin es resuelta al momento de ejecucin
Transporte
Avanzar Frenar
Transporte Avanzar Frenar Transporte Avanzar Frenar
Desarrolladores
Consultores Profesionales VB6 Devs Part-Timers Hobbyists Estudiantes Entusiastas Novatos
Mltiples Lenguajes
Acceso a datos
Diseo
Desarrollo
Depuracin
Implantacin
Cuadro de herramientas
Ventana Propiedades
Nuevo proyecto
Guardar Form1.vb
Deshacer
Cuadro de herramientas
Ventana Propiedades
Demo
Uso de Visual Studio
Visual C#.NET
Creado especialmente para .NET Estndar ECMA (2002) Orientado a Objetos y Componentes Sintaxis derivada de C, C++, Delphi y Java
Compiladores (1/2)
Compilador de Lnea de Comandos C#
Cumple con la especificacin del CLS <Win>\Microsoft.NET\Framework\<version>\csc.exe Csc /out:XX /target:YY Archivo1.cs Archivo2.cs
Cumple con la especificacin del CLS <Win>\Microsoft.NET\Framework\<version>\vbc.exe vbc /out:XX /target:YY Archivo1.vb Archivo2.vb
Comentarios
string nombre = Juan; // Comentario de una sola lnea /* Comentario con mas de una lnea*/
/// <summary> /// Documentacin XML que puede ser consumida por otras /// herramientas para mostrar ayuda dinmica o generar /// documentacin en varios formatos /// </summary> public class Matematica { /// <summary> /// Calcula la suma de dos nmeros 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
Tipos de Datos
Categora Clase Descripcin C# Alias
Enteros
Un entero sin signo (8-bit) Un entero con signo (8-bit) Un entero con signo (16-bit) Un entero con signo (32-bit) Un entero con signo (64-bit)
Un nmero de punto flotante de simple precisin (32-bit) Un nmero de punto flotante de doble precisin (64-bit) Un nmero decimal de 96-bit Un valor booleano (true o false) Un caracter Unicode (16-bit) La raz de la jerarqua de objetos Una cadena de caracteres unicode inmutable y de tamao fijo
Punto Flotante
Lgicos Otros
Alcance de miembros
Miembro: se refiere a los campos, propiedades, mtodos, eventos, clases anidadas, etc.
C#: todo miembro es declarado como PRIVATE por default
VB.NET public Public private Private internal Friend protected Protected protected internal Protected Friend
C#
Declaracin de Variables
C#: el tipo de dato precede al identificador (nombre)
Conversiones de Tipos
C# no permite conversiones implcitas de tipos
Si falla el cast se devuelve null o InvalidCastException
Cuenta CtaCte CtaCte CtaCte cta = new CtaCte(); cc = cta; //Error: puede que cta no sea una CtaCte cc = (CtaCte)cta; //Conversion explicita CASTING cc = cta as CtaCte; //Usando el operador as
Arreglos
C# utiliza corchetes [ ] para definicin 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
Descripcin
Asignacin Adicin Sustraccin Multiplicacin Divisin Negacin
C#
= + * / !
%
> < >= <=
Operadores Lgicos
C# VB.NET Operador
Operador logico Y Operador logico O Negacion logica
&& ll ! == !=
Igual
Distinto
Sentencias condicionales
C#: sentencia if con varios formatos
if (x > 10) HacerAlgo(); if (x < 10) { Hacer1(); Hacer2(); } if (x < 10) { Hacer1(); } else { Hacer2(); } if (x < 10) { Hacer1(); } else if (x > 20) { Hacer2(); } else { Hacer3(); }
Sentencia for
C#: la sentencia for consta de tres partes
//Partes: declaracin, prueba, accin for (int i=1; i < 10; i++) { }
Sentencia for/each
For/Each permite recorrer arreglos y colecciones
string[] nombres = new string[5]; foreach(string auxNombre in nombres) { //auxNombre es de SOLO LECTURA }
Sentencia while
C#:
bool condicion = true; while (condicion == true){ //En algn momento poner condicion = false }
Clases
C#: las clases son declaradas mediante class
//Definicion de la clase CuentaBancaria class CuentaBancaria { //Definicion de miembros }
Mtodos
Mtodos: acciones que un objeto puede llevar a cabo.
public void importe) //No devuelve valor En C# todoHacerDeposito(int mtodo es una funcin { }
public int ObtenerInventario(int codArticulo) //Devuelve un entero { }
Constructores
Constructor: mtodos dentro de la clase que son llamados automticamente cuando se crea una instancia de dicha clase.
class CtaCte { En C# tienen el mismo nombre de la clase public CtaCte(){...} //Const. por default public CtaCte(int i){...} //Const. con un parametro }
Sobrecarga de Mtodos
Sobrecarga: varios mtodos con el mismo nombre pero diferente firma.
C#
public void HacerDeposito(int importe) { } public void HacerDeposito(int importe, bool acreditar) { }
Mtodos estticos
Miembros que no requieren de una instancia para ser invocados. Se los llama mtodos de clase
C#
public static void HacerDeposito(int importe) { }
Propiedades
Propiedad: caracterstica o atributo de un objeto
class CtaCte { int balance;
C#
Herencia
En C# la herencia se define:
class Cuenta { } class CtaCte : Cuenta { } //Clase Base
//Clase Derivada
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, slo //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
Excepcin: condicin anmala de funcionamiento de una aplicacin
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 }
Tipos Parciales
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 ms restricciones Mejora el encapsulamiento de atributos
public class Customer{ private string id; public string CustomerId { public get { return id; } private set { id = value; } } }