¿Qué es el .NET? Una arquitectura tecnológica para la creación y distribución de software como servicio. Servicio en cualquier plataforma, cliente en cualquier dispositivo, programación en cualquier lenguaje, integración basada en estándares Otros servicios OS Services Biz Tier Logic Servicios SO XML XML XML HTML XML XML Navegadores estándares Dispositivos móviles Clientes inteligentes Lógica aplicación Servicios Web Otros servicios Servicios building blocks Formularios Web
¿Qué es el .NET?
Soporte para múltiples lenguajes
Actualmente más de 26 lenguajes
C++ .NET, VB.NET, Python, Java, Fortran, Delphi, Ada, etc.
Introduce un nuevo lenguaje – C#
Lenguaje intrínseco, herencia, polimorfismo, encapsulación (orientación a objetos)
Servicios de la plataforma expuestos de forma idéntica a todos los lenguajes
Tanto Biblioteca de Componentes como Servicios básicos
¿Por qué y para qué .NET?
No exclusivamente para PC’s con Windows
.NET Compact Framework para dispositivos móviles
PDA’s, SmartPhones, etc.
Mono
.NET para Linux
No solo para desarrollo de aplicaciones de escritorio
Aplicaciones y Servicios Web
Aplicaciones de consola
Bibliotecas de clases
Aplicaciones para Dispositivos Móviles
Orientado a Componentes
Clases
Eventos y delegados
Propiedades
Adiós a los manejadores, punteros, gestión de bloques de memoria, etc.
¿Qué es el .NET Framework? Base Class Library Common Language Specification - CLS Common Language Runtime ADO.NET, XML, Enterprise Services VB C++ C# Visual Studio.NET ASP.NET: Servicios Web y Web Forms JScript … Windows Forms
Estructura de las aplicaciones
Archivos EXE y DLL’s
Necesidad de tener instalado el .NET FrameWork
Contienen código independiente de la máquina
MSIL (Microsoft Intermediate Languaje)
Imposible ejecutarlo por si sólo
Necesidad de compilarlo previamente para el Procesador y Sistema Operativo en el que va a ejecutarse.
JIT (Just In-Time)
Compilador que realiza la compilación al vuelo del MSIL
Funcionamiento
Proceso del código gestionado En instalación o la primera vez que se llama a un método Funcionamiento CLR Código Fuente Compilación Compiladorlenguaje Ensambl. Ejecución Compilador JIT Código Nativo Código (IL) Metadatos
C# es un lenguaje que cumple con la especificación CLS. El código que crearemos con él será traducido a instrucciones MSIL para entonces ser traducido, justo antes de su ejecución, a instrucciones nativas que correspondan a la plataforma concreta sobre la cual estemos trabajando. Cabe destacar que el compilador JIT ( Just In Time ) traduce el código MSIL a código nativo no de manera monolítica, sino por métodos, módulos y componentes. Por lo tanto, a grandes rasgos: código que no sea ejecutado no será compilado. El código MSIL generado a partir de la compilación de código C# es idéntico al código MSIL generado a partir de cualquier otro lenguaje CLS. Esto podría abrir el interrogante de ¿por qué programar en C# en lugar de hacerlo en VB.NET o en Managed C++ o, incluso, en Delphi .NET? Esta pregunta podría responderse con otra: ¿por qué programar en C++ en lugar de hacerlo en C o Pascal, o en cualquier otro lenguaje compilado, si todos generan el mismo código Intel x86? Cada lenguaje posee sus características que lo tornan ideal para ciertos usos; además, presenta diversos grados de expresividad que pueden permitir implementar el mismo algoritmo de maneras diversas, por lo que un modo puede resultar más eficiente que otro. C# y MSIL
Temas a Tratar
Introducción a la Orientación a Objetos
Introducción a .NET
El lenguaje de programacion C#
Programacion en C#
Temas a Tratar
Introducción a la Orientación a Objetos
Introducción a .NET
El lenguaje de programacion C#
C#.NET
C#.NET y VB
Sintaxis (Diferencias)
Programación en C#
C#.NET
C# es un lenguaje de programación moderno, completamente orientado a objetos y se podría decir que es tanto una evolución de los lenguajes C++ y Java, ya que incorpora las mejoras características de cada uno de ellos.
C# es un lenguaje muy estricto en su sintaxis ya que obliga a que se declaren todas las variables, las conversiones de datos deber ser explícitas, es sensible a mayúsculas y otras características que lo convierte en un lenguaje muy formal. Aunque esta formalidad puede ser una dificultad al comienzo a la larga ayuda al desarrollador a su formación ya que le proporciona mayor disciplina.
Aunque es posible escribir código para la plataforma .NET en muchos otros lenguajes, C# es el único que ha sido diseñado específicamente para ser utilizado en ella, por lo que programarla usando C# es mucho más sencillo e intuitivo que hacerlo con cualquiera de los otros lenguajes ya que C# carece de elementos heredados innecesarios en .NET. Por esta razón, se suele decir que C# es el lenguaje nativo de .NET
C#.NET
C# irrumpe en el mercado como un lenguaje muy bien diseñado y con muchas virtudes en una industria plagada de soluciones y herramientas de programación para todos los gustos…
¿Cuáles son, entonces, los motivos por los cuales deberíamos optar por C#?
C# es un lenguaje moderno y orientado a objetos, con una sintaxis muy similar a la de C++ y Java . Combina la alta productividad de Visual Basic con el poder y la flexibilidad de C++.
La misma aplicación que se ejecuta bajo Windows podría funcionar en un dispositivo móvil de tipo PDA . Con C#/.NET no nos atamos a ninguna plataforma en particular.
Se puede crear una gran variedad de aplicaciones en C#: aplicaciones de consola, aplicaciones para Windows con ventanas y controles, aplicaciones para la Web, etc.
C#.NET
C# gestiona automáticamente la memoria, y de este modo evita los problemas de programación tan típicos en lenguajes como C o C++. Mediante la plataforma .NET desde la cual se ejecuta es posible interactuar con otros componentes realizados en otros lenguajes .NET de manera muy sencilla.
También es posible interactuar con componentes no gestionados fuera de la plataforma .NET. Por ello, puede ser integrado con facilidad en sistemas ya creados.
Desde C# podremos acceder a una librería de clases muy completa y muy bien diseñada, que nos permitirá disminuir en gran medida los tiempos de desarrollo.
C#.NET y VB
Visual Basic es un lenguaje fácil de aprender pero con muchos defectos. Gran parte de esas deficiencias es fruto de su afanoso objetivo por ser sencillo para el programador novato. Es un lenguaje orientado a objetos light . Posee algunas de las características más populares de la POO implementadas, pero muchas de ellas (las que realmente extrañamos en proyectos complejos) permanecen ausentes, como la herencia, los métodos virtuales, la sobrecarga de operadores, etc.
Claro que VB también posee muchas virtudes. Realizar una aplicación Windows nunca había sido tan fácil, y si ciertas tareas se encuentran fuera del alcance del lenguaje, es posible realizar un componente en, por ejemplo, C++ y utilizarlo desde VB sin inconvenientes..
Terminación de línea
C#: la línea finaliza con un “ ; ”
VB: la línea finaliza con un salto de línea
//Una linea con mas de un renglon string nombre = primerNombre + apellido; //El punto y coma indica FINAL de linea 'Una linea con mas de un renglon Dim nombre As String = primerNombre & _ apellido
Comentarios
C# soporta tres tipos de 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="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;} }
Comentarios
VB
'Comentario simple Dim nombre As String = “Juan” ‘Otro comentario
Tipos de Datos String string Una cadena de caracteres unicode inmutable y de tamaño fijo String Object object La raíz de la jerarquía de objetos Object Char char Un caracter Unicode (16-bit) Char Otros Boolean bool Un valor booleano (true o false) Boolean Lógicos Decimal decimal Un número decimal de 96-bit Decimal Double double Un número de punto flotante de doble precisión (64-bit) Double Single float Un número de punto flotante de simple precisión (32-bit) Single Punto Flotante Long long Un entero con signo (64-bit) Int64 Integer int Un entero con signo (32-bit) Int32 Short short Un entero con signo (16-bit) Int16 Sbyte sbyte Un entero con signo (8-bit) SByte Byte byte Un entero sin signo (8-bit) Byte Enteros VB C# Alias Descripción Clase Categoría
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
Modificadores de acceso disponibles:
Protected Friend protected internal Protected protected Friend internal Private private Public public VB C#
Declaración de Variables
C#: el tipo de dato precede al identificador (nombre)
VB: comienza con “Dim” o algún modificador de acceso (Public, Private, etc.) + identificador de la variable + “As” Tipo de Dato
int x; decimal y; rectangle z; Cliente cli; Dim x As Integer ‘Dim es = a Private por defecto Dim y As Decimal Dim z As Rectangle Dim cli As Cliente
Inicialización de Variables
C#: toda variable debe ser inicializada EXPLICITAMENTE antes de ser usada
VB: inicializa automáticamente las variables en CERO o en Nothing
int tempBalance; //variable local //ERROR: tempBalance NO ha sido inicializada System.Console.WriteLine(tempBalance);
Conversiones de Tipos
C# no permite conversiones implícitas de tipos
Si falla el cast se devuelve null o InvalidCastException
VB usa las directivas del compilador Option Strict
Si falla el cast siempre se genera una 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” Dim cta As Cuenta = New CtaCte() Dim cc As CtaCte = cta ‘OK Option Strict Off Dim cc As CtaCte = CType (cta, CtaCte) ‘Option Strict On If TypeOf cta Is CtaCte Then ‘Comp. con TypeOf Is
Arreglos
C# utiliza corchetes [ ] para definición de arrays
VB permite definir arrays de varias formas con ()
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”}; Dim telefonos As String () ó Dim telefonos() As String Dim telefonos(3) As String ‘Crea un array de 4 elementos telefonos(0) = “1245” ‘Seteo del 1er elemento del arreglo ‘ Definicion y asignacion de una vez Dim telefonos() As String = {“1”,“2”,“3”}
Operadores <= <= Menor o Igual >= >= Mayor o Igual < < Menor > > Mayor mod % Módulo (Parte entera de la división) not ! Negación / / División * * Multiplicación - - Sustracción + + Adición = = Asignación VB C# Descripción
Operadores Lógicos
En C# todas las evaluaciones se hacen por “cortocircuito”
//Si Hacer1() es True, entonces //Si Hacer1() es False, entonces //NO se evalua Hacer2() //NO se evalua Hacer2() if (Hacer1() || Hacer2()) if (Hacer1() && Hacer2()) { { } }
En VB se debe utilizar los operadores AndAlso y OrElse
‘ Si Hacer1() es True, entonces ‘Si Hacer1() es False, entonces ‘ NO se evalua Hacer2() ‘NO se evalua Hacer2() If Hacer1() OrElse Hacer2() Then If Hacer1() AndAlso Hacer2() Then ... ... End If End If Distinto <> != Igual = == Negacion logica Not ! Operador logico O Or ll Operador logico Y And && Operador VB 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(); }
VB.NET: la sentencia If requiere de la palabra Then
If x > 10 Then Hacer() If x < 10 Then If x < 10 Then If x < 10 Then Hacer1() Hacer1() Hacer1() Hacer2() Else ElseIf x > 20 Then End If Hacer2() Hacer2() End If Else Hacer3() End If
Sentencias condicionales
C#: sentencia case
int a = 0; switch (a) { case 1:{ //CODIGO 1 break ; } case 2: { //CODIGO 2 break ; } default :{ //CODIGO DEFAULT break ; } }
VB: sentencia case
Dim a As Integer = 0 Select a Case 1 'Código 1 Case 2 'Código 2 Case Else 'Código Default End Select
Sentencia for
C#: la sentencia for consta de tres partes
VB usa las palabras claves For, To, Next y Step
//Partes: declaración, prueba, acción for ( int i=1; i < 10; i++) { } Dim i As Integer For i = 1 To 100 For i = 1 To 100 Step 2 ‘ i se incrementa en 1 ‘i se incrementa en 2 Next Next
Sentencia for/each
C#: usa la palabra foreach
VB usa las palabra For Each
string [] nombres = new string [5]; foreach (string auxNombre in nombres) { // Codigo } Dim nombres(5) As String Dim auxNombre As String For Each auxNombre In nombres ' Codigo Next
For/Each permite recorrer arreglos y colecciones
Sentencia while
C#:
VB:
bool condicion = true ; while (condicion == true ){ //En algún momento poner condicion = false } Dim condicion As Boolean = True While condicion = True 'Poner condicion=false en algún momento End While
Clases
C#: las clases son declaradas mediante class
VB usa las palabras Class / End Class
//Definicion de la clase CuentaBancaria class CuentaBancaria { //Definicion de miembros } ‘ Definicion de la clase CuentaBancaria Class CuentaBancaria ‘ Definicion de miembros End Class
Métodos
En C# todo método es una función
VB usa procedimientos Sub y funciones Function
public void HacerDeposito( int importe) //No devuelve valor { } public int ObtenerInventario( int codArticulo) //Devuelve un entero { } Public Sub HacerDeposito( ByVal importe As Integer ) ‘ No devuelve valor End Sub Public Function Inventario( ByVal codArt As Integer) As Integer ‘ Devuelve un entero End Function
Métodos: acciones que un objeto puede llevar a cabo.
Sobrecarga de Métodos
C#
VB
public void HacerDeposito( int importe) { } public void HacerDeposito( int importe, bool acreditar) { } Public Sub HacerDeposito( ByVal imp As Integer , Optional ByVal acreditar As Boolean = false) End Sub
Sobrecarga : varios métodos con el mismo nombre pero diferente “firma”.
Propiedades
C#
Propiedad: característica o atributo de un objeto
VB
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 Class CtaCte Dim _balance As Integer Property Balance() As Integer Get Return _balance End Get Set (ByVal value As Integer) _balance = value End Set End Property End Class Dim cc As New CtaCte() cc.Balance = 100 ‘Asignación Mostrar(cc.Balance) ‘Obtención
Herencia
En C# la herencia se define:
VB usa la palabra clave Inherits
class Cuenta //Clase Base { } class CtaCte : Cuenta //Clase Derivada { } Class Cuenta ‘Clase Base End Class Class CtaCte ‘Clase Derivada Inherits Cuenta End Class En .NET solo se permite Herencia Simple
Admin. De Excepciones
C#: usa las palabras try/catch/finally
VB 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 } Try Dim resultado As Integer resultado = x/y Catch e As DivideByZeroException ‘ Error division por cero Catch ‘ Otro error Finally ‘ Siempre pasa por aca End Try
Excepción: condición anómala de funcionamiento de una aplicación
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();
System: Contiene tipos de datos muy usados, datos basicos, tablas, excepciones, ..... Es el raiz
System.Object: Soporta toda la jerarquia de las clases .NET
System.Collection: Colecciones de datos de uso comun, como pilas, colas, listas, ...
System.Data: Manipulacion de bases de datos. Forma la denominada arquitectura ADO.NET
System.IO: Manipulacion de Ficheros
System.Reflection: Acceso a Metadatos que acompañan a los modulos de codigo
Navegar fácilmente por las clases por medio del visor de clases.
Navegar por los archivos de nuestros proyectos por medio del explorador de soluciones.
Entender más rápidamente el código escrito gracias a que el editor colorea las palabras reservadas y los tipos de datos conocidos.
Organizar múltiples proyectos y editar fácilmente sus propiedades.
Depurar nuestros proyectos fácilmente y consultar valores de objetos de modo interactivo, así como realizar depuraciones remotas desde otras computadoras.
Acceder a facilidades de búsqueda y reemplazo por hoja de código fuente activo y en archivos.
Editar recursos (bitmaps, iconos, archivos binarios, etc.) por medio de herramientas integradas, y navegar por ellos por medio del visor de recursos.
Colapsar y expandir trozos de código para mejorar la legibilidad de nuestras fuentes.
Posibilidad de integrar herramientas al entorno por medio de un sistema de plug-ins.
Creación de un proyecto C#
Arrancar Visual Studio .NET
Del menú File escoger New Project
De los templates escoger Console Application
VS.NET crea una simplísima pero completa aplicación de consola llamada ConsoleApplication1
El código de esta aplicación se guarda en un archivo llamado Program1.cs
Creación de un proyecto C#
El código C# generado se ve así:
using – sirve para usar componentes pre-existentes
namespace – sirve para organizar los componentes de sistemas grandes
class – definición de una entidad que tiene estado y comportamiento
Main – método en el que arranca la ejecución de un programa C#
Ejecución de un proyecto C#
Antes de poder ejecutar un proyecto, debe ser construido
Usar la opción “Build Solution” del menú “Build” (o presionar Ctrl-Shift-B)
El programa se ejecuta usando la opción “Start without Debugging” del menú “Debug” (o presionar Ctrl-F5)
Escribiendo texto en la salida
Para presentar un texto en la pantalla:
Eliminando aquellos elementos que no necesitamos en este ejemplo:
Esto imprime el texto “¡Hola mundo!” en la consola
Creación e invocación de un método
Definición – el método como tal
Llamada – punto donde se pide la ejecución del método
Comentarios – explicación del código (ignorado por la máquina)
Se pueden tener muchos métodos
Funciones, operadores y variables
Una función es un método que “devuelve” información al invocador
Este programa devuelve: “3 + 5 = 8”
Funciones, operadores y variables
Otra manera de obtener el mismo resultado:
Funciones, operadores y variables
Este ejemplo despliega: La distancia entre (2,1) y (7,3) es 5,3851648071345
Funciones, operadores y variables
Ejemplo de ejecución: Ingrese el valor de a: 5 Ingrese el valor de b: 7 5 + 7 = 12
Condicionales
Ejemplo de ejecución: Ingrese un número: 97 97 es menor o igual a 100
Condicionales
Ejemplo de ejecución: Ingrese un número: 104 104 es mayor que 100
1 comments
Comments 1 - 1 of 1 previous next Post a comment