c# para desarrolladores vb6

90
ISC Moises Chi Gorocica ISC Moises Chi Gorocica [email protected] [email protected] C# para programadores C# para programadores VB6.0 VB6.0 Aluxes .NET Aluxes .NET

Upload: tonymx

Post on 13-Dec-2014

12.839 views

Category:

Technology


2 download

DESCRIPTION

Intro C# for VB6 Developers

TRANSCRIPT

Page 1: C# para desarrolladores VB6

ISC Moises Chi GorocicaISC Moises Chi [email protected]@hotmail.com

C# para programadores C# para programadores VB6.0VB6.0

C# para programadores C# para programadores VB6.0VB6.0

Aluxes .NETAluxes .NET

Page 2: C# para desarrolladores VB6

Temas a TratarTemas a Tratar

Introducción a la Orientación a Introducción a la Orientación a ObjetosObjetosIntroducción a .NETIntroducción a .NETEl lenguaje de programacion C#El lenguaje de programacion C#Programacion en C#Programacion en C#

Page 3: C# para desarrolladores VB6

Temas a TratarTemas a Tratar

Introducción a la Orientación a Introducción a la Orientación a ObjetosObjetosIntroducción a .NETIntroducción a .NETEl lenguaje de programacion C#El lenguaje de programacion C#Programacion en C#Programacion en C#

Page 4: C# para desarrolladores VB6

Temas a TratarTemas a Tratar

Introducción a la Orientación a Introducción a la Orientación a ObjetosObjetos Paradigmas de ProgramaciónParadigmas de Programación Clases y ObjetosClases y Objetos Modificadores de AccesoModificadores de Acceso Principios de la Orientación a ObjetosPrincipios de la Orientación a Objetos Conceptos del Diseño Orientado a Conceptos del Diseño Orientado a

ObjetosObjetos

Introducción a .NETIntroducción a .NETEl lenguaje de programacion C#El lenguaje de programacion C#Programacion en C#Programacion en C#

Page 5: C# para desarrolladores VB6

Paradigmas de Paradigmas de ProgramaciónProgramación

Hay para todos los gustosHay para todos los gustos Estructurados (C, Pascal, Basic, etc.)Estructurados (C, Pascal, Basic, etc.) Funcionales (CAML)Funcionales (CAML) Declarativos (Prolog)Declarativos (Prolog) Orientados a Objetos (C#, VB.NET, Smalltalk, Orientados a Objetos (C#, VB.NET, Smalltalk,

Java)Java) Orientados a AspectosOrientados a Aspectos Híbridos (Lisp, Visual Basic)Híbridos (Lisp, Visual Basic) Incomprensibles....Incomprensibles....

Cada enfoque tiene sus ventajas y Cada enfoque tiene sus ventajas y desventajasdesventajasCada uno es más apropiado para ciertas Cada uno es más apropiado para ciertas cosascosas

Page 6: C# para desarrolladores VB6

El mundo color de ObjetosEl mundo color de Objetos

Todo el mundo está compuesto de Todo el mundo está compuesto de entidades que se relacionan e entidades que se relacionan e interactúan entre siinteractúan entre si

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

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

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

Page 7: C# para desarrolladores VB6

El mundo color de ObjetosEl mundo color de Objetos

¿Por qué Orientación a Objetos (OO)?¿Por qué Orientación a Objetos (OO)? Se parece más al mundo realSe parece más al mundo real Permite representar modelos complejosPermite representar modelos complejos Muy apropiada para aplicaciones de Muy apropiada para aplicaciones de

negociosnegocios Las empresas ahora sí aceptan la OOLas empresas ahora sí aceptan la OO Las nuevas plataformas de desarrollo la Las nuevas plataformas de desarrollo la

han adoptado (Java / .NET)han adoptado (Java / .NET)

Page 8: C# para desarrolladores VB6

¿Qué es un Objeto?¿Qué es un Objeto?

Informalmente, un objeto representa Informalmente, un objeto representa una entidad del mundo realuna entidad del mundo realEntidades Físicas Entidades Físicas

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

Entidades Conceptuales Entidades Conceptuales (Ej.: Proceso Químico, (Ej.: Proceso Químico, Transacción Transacción

BancariaBancaria))

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

Page 9: C# para desarrolladores VB6

¿Qué es un Objeto?¿Qué es un Objeto?

Definición Formal Definición Formal (Rumbaugh)(Rumbaugh):: ““Un objeto es un concepto, abstracción Un objeto es un concepto, abstracción

o cosa con un significado y límites o cosa con un significado y límites claros en el problema en cuestión” claros en el problema en cuestión”

Un objeto posee (Booch):Un objeto posee (Booch): EstadoEstado ComportamientoComportamiento IdentidadIdentidad

Page 10: C# para desarrolladores VB6

Un objeto posee EstadoUn objeto posee Estado

Lo que el objeto sabeLo que el objeto sabeEl estado de un objeto es una de las El estado de un objeto es una de las posibles condiciones en que el objeto posibles condiciones en que el objeto puede existirpuede existirEl estado normalmente cambia en el El estado normalmente cambia en el transcurso del tiempotranscurso del tiempoEl estado de un objeto es El estado de un objeto es implementado por un conjunto de implementado por un conjunto de propiedades (atributos), además de propiedades (atributos), además de las conexiones que puede tener con las conexiones que puede tener con otros objetosotros objetos

Page 11: C# para desarrolladores VB6

Un objeto posee Un objeto posee ComportamientoComportamiento

Lo que el objeto puede hacerLo que el objeto puede hacerEl comportamiento de un objeto El comportamiento de un objeto determina cómo éste actúa y determina cómo éste actúa y reacciona frente a las peticiones de reacciona frente a las peticiones de otros objetosotros objetosEs modelado por un conjunto de Es modelado por un conjunto de mensajes a los que el objeto puede mensajes a los que el objeto puede responder (operaciones que puede responder (operaciones que puede realizar)realizar)Se implementa mediante métodosSe implementa mediante métodos

Page 12: C# para desarrolladores VB6

Un objeto posee IdentidadUn objeto posee Identidad

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

Page 13: C# para desarrolladores VB6

¿Qué es una Clase?¿Qué es una Clase?

Una clase es una descripción de un Una clase es una descripción de un grupo de objetos con: grupo de objetos con: Propiedades en común (atributos)Propiedades en común (atributos) Comportamiento similar (operaciones)Comportamiento similar (operaciones) La misma forma de relacionarse con La misma forma de relacionarse con

otros objetos (relaciones)otros objetos (relaciones) Una semántica en común (significan lo Una semántica en común (significan lo

mismo)mismo)

Una clase es una abstracción que:Una clase es una abstracción que: Enfatiza las características relevantesEnfatiza las características relevantes Suprime otras características Suprime otras características

(simplificación)(simplificación)

Un objeto es una instancia de una Un objeto es una instancia de una claseclase

Page 14: C# para desarrolladores VB6

Objetos y ClasesObjetos y ClasesUna clase es una definición abstracta de Una clase es una definición abstracta de un objetoun objeto Define la estructura y el comportamiento Define la estructura y el comportamiento

compartidos por los objetoscompartidos por los objetos Sirve como modelo para la creación de objetos Sirve como modelo para la creación de objetos

Los objetos pueden ser agrupados en Los objetos pueden ser agrupados en clasesclases

Page 15: C# para desarrolladores VB6

Ejemplo de una ClaseEjemplo de una ClaseClase: CursoClase: CursoEstado (Atributos)Estado (Atributos) NombreNombre UbicaciónUbicación Días OfrecidosDías Ofrecidos Horario de InicioHorario de Inicio Horario de TérminoHorario de Término

Comportamiento (Métodos)Comportamiento (Métodos) Agregar un AlumnoAgregar un Alumno Borrar un AlumnoBorrar un Alumno Entregar un Listado del CursoEntregar un Listado del Curso Determinar si está CompletoDeterminar si está Completo

Page 16: C# para desarrolladores VB6

Modificadores de AccesoModificadores de Acceso

Permiten definir el nivel de acceso Permiten definir el nivel de acceso (visibilidad) de los miembros (visibilidad) de los miembros (atributos o métodos) de una clase(atributos o métodos) de una clase Publico: Cualquier clase puede “ver” los Publico: Cualquier clase puede “ver” los

miembros públicos de otra clasemiembros públicos de otra clase Privado: Sólo la clase puede ver sus Privado: Sólo la clase puede ver sus

propios miembros privadospropios miembros privados

Existen otros dos modificadores para Existen otros dos modificadores para propósitos específicos (Paquete, propósitos específicos (Paquete, Protegido)Protegido)

Page 17: C# para desarrolladores VB6

Pilares de la Orientación a Pilares de la Orientación a ObjetosObjetos

RelacionesRelaciones

HerenciaHerencia

AbstracciónAbstracción

Encapsulamiento Encapsulamiento

Page 18: C# para desarrolladores VB6

AbstracciónAbstracción

Ignorancia SelectivaIgnorancia Selectiva La abstracción nos ayuda a trabajar con La abstracción nos ayuda a trabajar con

cosas complejascosas complejas Se enfoca en lo importanteSe enfoca en lo importante Ignora lo que no es importante Ignora lo que no es importante

(simplifica)(simplifica)

Una clase es una abstracción en la Una clase es una abstracción en la que:que:

Se enfatizan las características Se enfatizan las características relevantesrelevantes

Se suprimen otras característicasSe suprimen otras características

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

Page 19: C# para desarrolladores VB6

EncapsulamientoEncapsulamientoPrincipio que establece que los Principio que establece que los atributos propios de un objeto no atributos propios de un objeto no deben ser visibles desde otros deben ser visibles desde otros objetosobjetos Deben ser declarados como privadosDeben ser declarados como privados

Permite abstraer al resto del mundo Permite abstraer al resto del mundo de la complejidad de la de la complejidad de la implementación internaimplementación internaPermite exponer el estado del objeto Permite exponer el estado del objeto sólo a través del comportamiento sólo a través del comportamiento que le hayamos definido mediante que le hayamos definido mediante miembros públicosmiembros públicos¿Por qué es útil?¿Por qué es útil? Punto de Control/ValidaciónPunto de Control/Validación Mejor respuesta ante los CambiosMejor respuesta ante los Cambios

Page 20: C# para desarrolladores VB6

RelacionesRelaciones

Todo sistema abarca muchas clases Todo sistema abarca muchas clases y objetos y objetos Los objetos contribuyen en el Los objetos contribuyen en el comportamiento de un sistema comportamiento de un sistema colaborando entre si colaborando entre si La colaboración se logra a través de las La colaboración se logra a través de las

relaciones relaciones

Existen dos tipos principales de Existen dos tipos principales de relaciones relaciones AsociaciónAsociación AgregaciónAgregación

Page 21: C# para desarrolladores VB6

Relaciones de AsociaciónRelaciones de Asociación

Una asociación es una conexión entre dos Una asociación es una conexión entre dos clases que representa una comunicaciónclases que representa una comunicación Una asociación puede tener nombreUna asociación puede tener nombre La comunicación puede ser tanto uni como bi-La comunicación puede ser tanto uni como bi-

direccional (por defecto)direccional (por defecto) La multiplicidad es el número de instancias La multiplicidad es el número de instancias

que participan en una asociaciónque participan en una asociación

Ejemplo:Ejemplo: Una Persona es Dueña de un VehículoUna Persona es Dueña de un Vehículo Un Vehículo Pertenece a una PersonaUn Vehículo Pertenece a una Persona

Persona Vehiculo-dueño

Page 22: C# para desarrolladores VB6

Relaciones de AgregaciónRelaciones de Agregación

La agregación es una forma especial de La agregación es una forma especial de asociación donde un todo se relaciona con asociación donde un todo se relaciona con sus partessus partes También se conoce como “una parte de” o una También se conoce como “una parte de” o una

relación de contenciónrelación de contención

Ejemplo:Ejemplo: Una Puerta es una parte de un VehículoUna Puerta es una parte de un Vehículo El Vehículo es azul, la Puerta es AzulEl Vehículo es azul, la Puerta es Azul Mover el Vehículo implica mover la PuertaMover el Vehículo implica mover la Puerta

+Mover()

-color

Vehiculo Puerta

Page 23: C# para desarrolladores VB6

HerenciaHerencia

Es una relación entre Es una relación entre clases en la cual una clases en la cual una clase comparte la clase comparte la estructura y estructura y comportamiento definido comportamiento definido en otra clase (Grady en otra clase (Grady Booch)Booch)Cada clase que hereda Cada clase que hereda de otra posee:de otra posee: Los atributos de la clase Los atributos de la clase

base además de los base además de los propiospropios

Soporta todos o algunos Soporta todos o algunos de los métodos de la clase de los métodos de la clase basebase

Una subclase hereda de Una subclase hereda de una clase baseuna clase base

+Avanzar()+Detenerse()

-pasajeros

Transporte

Automóvil Avión

Clase BaseClase Base

Clases Derivadas oClases Derivadas o

subclasessubclases

Page 24: C# para desarrolladores VB6

HerenciaHerencia

Herencia “Es-Un”: herencia real, Herencia “Es-Un”: herencia real, donde la subclase es un tipo donde la subclase es un tipo específico de la superclaseespecífico de la superclase Un Cuadrado Un Cuadrado es unes un Rectángulo Rectángulo Un perro es un mamíferoUn perro es un mamífero Un automóvil es un vehículo a motorUn automóvil es un vehículo a motor

Page 25: C# para desarrolladores VB6

Temas a TratarTemas a Tratar

Introducción a la Orientación a Introducción a la Orientación a ObjetosObjetosIntroducción a .NETIntroducción a .NETEl lenguaje de programacion C#El lenguaje de programacion C#Programacion en C#Programacion en C#

Page 26: C# para desarrolladores VB6

Polimorfismo - EjemploPolimorfismo - Ejemplo

La definición del método reside en la La definición del método reside en la clase baseclase baseLa implementación del método La implementación del método reside en la clase derivadareside en la clase derivadaLa invocación es resuelta al La invocación es resuelta al momento de ejecuciónmomento de ejecución

Transporte

Avanzar

Frenar

Transporte

Avanzar

Frenar

Transporte

Avanzar

Frenar

Transporte

Avanzar

Frenar

Page 27: C# para desarrolladores VB6

Temas a TratarTemas a Tratar

Introducción a la Orientación a Introducción a la Orientación a ObjetosObjetosIntroducción a .NETIntroducción a .NET ¿Qué es el .NET? ¿Qué es el .NET? ¿Qué es el .NET Framework?¿Qué es el .NET Framework? FuncionamientoFuncionamiento

El lenguaje de programacion C#El lenguaje de programacion C#Programacion en C#Programacion en C#

Page 28: C# para desarrolladores VB6

OtrosOtrosserviciosservicios

OS OS ServicesServices

BizBizTier LogicTier Logic

Servicios SOServicios SO

XMLXML

XMLXML

XMLXML

HTMLHTML

XMLXML

XMLXML

NavegadoresNavegadoresestándaresestándares

DispositivosDispositivosmóvilesmóviles

ClientesClientesinteligentesinteligentes

Lógica aplicaciónLógica aplicación

Servicios Servicios WebWeb

OtrosOtrosserviciosservicios

ServiciosServiciosbuilding building blocksblocks

Formularios Formularios WebWeb

¿Qué es el .NET? ¿Qué es el .NET?

Una arquitectura tecnológica para la creación y distribución de Una arquitectura tecnológica para la creación y distribución de software como servicio. Servicio en cualquier plataforma, software como servicio. Servicio en cualquier plataforma, cliente en cualquier dispositivo, programación en cualquier cliente en cualquier dispositivo, programación en cualquier lenguaje, integración basada en estándareslenguaje, integración basada en estándares

Page 29: C# para desarrolladores VB6

¿Qué es el .NET?¿Qué es el .NET?

Soporte para múltiples lenguajesSoporte para múltiples lenguajesActualmente más de 26 lenguajesActualmente más de 26 lenguajes

C++ .NET, VB.NET, Python, Java, Fortran, Delphi, C++ .NET, VB.NET, Python, Java, Fortran, Delphi, Ada, etc.Ada, etc.

Introduce un nuevo lenguaje – C#Introduce un nuevo lenguaje – C#

Lenguaje intrínseco, herencia, polimorfismo, Lenguaje intrínseco, herencia, polimorfismo, encapsulación (orientación a objetos)encapsulación (orientación a objetos)

Servicios de la plataforma expuestos de forma Servicios de la plataforma expuestos de forma idéntica a todos los lenguajesidéntica a todos los lenguajes

Tanto Biblioteca de Componentes como Servicios Tanto Biblioteca de Componentes como Servicios básicosbásicos

Page 30: C# para desarrolladores VB6

¿Por qué y para ¿Por qué y para qué .NET?qué .NET?

No exclusivamente para PC’s con WindowsNo exclusivamente para PC’s con Windows.NET Compact Framework para dispositivos móviles.NET Compact Framework para dispositivos móviles

PDA’s, SmartPhones, etc.PDA’s, SmartPhones, etc.MonoMono

.NET para Linux.NET para Linux

No solo para desarrollo de aplicaciones de escritorioNo solo para desarrollo de aplicaciones de escritorioAplicaciones y Servicios WebAplicaciones y Servicios WebAplicaciones de consolaAplicaciones de consolaBibliotecas de clasesBibliotecas de clasesAplicaciones para Dispositivos MóvilesAplicaciones para Dispositivos Móviles

Orientado a ComponentesOrientado a ComponentesClasesClasesEventos y delegadosEventos y delegadosPropiedadesPropiedadesAdiós a los manejadores, punteros, gestión de bloques de Adiós a los manejadores, punteros, gestión de bloques de memoria, etc.memoria, etc.

Page 31: C# para desarrolladores VB6

Base Class LibraryBase Class Library

Common Language Common Language Specification - CLSSpecification - CLS

Common Language RuntimeCommon Language Runtime

ADO.NET, XML, Enterprise ADO.NET, XML, Enterprise ServicesServices

VBVB C+C+++ C#C#V

isu

al S

tud

io.N

ET

Vis

ual S

tud

io.N

ET

ASP.NET: Servicios ASP.NET: Servicios WebWeb

y Web Formsy Web Forms

JScriJScriptpt ……

WindowsWindowsFormsForms

¿Qué es el .NET ¿Qué es el .NET Framework?Framework?

Page 32: C# para desarrolladores VB6

Estructura de las aplicacionesEstructura de las aplicacionesArchivos EXE y DLL’sArchivos EXE y DLL’sNecesidad de tener instalado el .NET FrameWorkNecesidad de tener instalado el .NET FrameWork

Contienen código independiente de la máquinaContienen código independiente de la máquina

MSIL (Microsoft Intermediate Languaje)MSIL (Microsoft Intermediate Languaje)Imposible ejecutarlo por si sóloImposible ejecutarlo por si sóloNecesidad de compilarlo previamente para Necesidad de compilarlo previamente para el Procesador y Sistema Operativo en el que el Procesador y Sistema Operativo en el que va a ejecutarse.va a ejecutarse.

JIT (Just In-Time)JIT (Just In-Time)Compilador que realiza la compilación al Compilador que realiza la compilación al vuelo del MSILvuelo del MSIL

FuncionamientoFuncionamiento

Page 33: C# para desarrolladores VB6

Proceso del código gestionadoProceso del código gestionado

Código Fuente

Compilación

En instalación o la primera vez que se llama a un método

Compiladorlenguaje Ensambl.

Ejecución

Compilador JIT

Código Nativo

Código (IL)

Metadatos

FuncionamientoFuncionamiento

CLCLRR

Page 34: C# para desarrolladores VB6

C# es un lenguaje que cumple con la especificación CLS. El código que crearemoscon él será traducido a instrucciones MSIL para entonces ser traducido, justo antesde su ejecución, a instrucciones nativas que correspondan a la plataforma concretasobre la cual estemos trabajando.

Cabe destacar que el compilador JIT (Just In Time) traduce el código MSIL a códigonativo 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 MSILC# y MSIL

Page 35: C# para desarrolladores VB6

Temas a TratarTemas a Tratar

Introducción a la Orientación a Introducción a la Orientación a ObjetosObjetosIntroducción a .NETIntroducción a .NETEl lenguaje de programacion C#El lenguaje de programacion C#Programacion en C#Programacion en C#

Page 36: C# para desarrolladores VB6

Temas a TratarTemas a Tratar

Introducción a la Orientación a Introducción a la Orientación a ObjetosObjetosIntroducción a .NETIntroducción a .NETEl lenguaje de programacion C#El lenguaje de programacion C# C#.NETC#.NET C#.NET y VBC#.NET y VB Sintaxis (Diferencias)Sintaxis (Diferencias)

Programación en C#Programación en C#

Page 37: C# para desarrolladores VB6

C#.NETC#.NETC# 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

Page 38: C# para desarrolladores VB6

C#.NETC#.NETC# 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.

Page 39: C# para desarrolladores VB6

C#.NETC#.NETC# 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.

Page 40: C# para desarrolladores VB6

C#.NET y VBC#.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..

Page 41: C# para desarrolladores VB6

Terminación de líneaTerminación de línea

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

VB: la línea finaliza con un salto de líneaVB: la línea finaliza con un salto de línea

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

'Una linea con mas de un renglonDim nombre As String = primerNombre & _ apellido

Page 42: C# para desarrolladores VB6

ComentariosComentariosC# soporta tres tipos de comentariosC# 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;}}

Page 43: C# para desarrolladores VB6

ComentariosComentarios

VBVB

'Comentario simpleDim nombre As String = “Juan” ‘Otro comentario

Page 44: C# para desarrolladores VB6

Case SensitivityCase Sensitivity

C# distingue entre mayúsuclas y minúsculasC# distingue entre mayúsuclas y minúsculas

VB no distingue entre mayúscuclas y VB no distingue entre mayúscuclas y minúsculasminúsculas

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

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

Page 45: C# para desarrolladores VB6

Tipos de DatosTipos de Datos

Categoría Clase Descripción C# Alias VB

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

    SByte Un entero con signo (8-bit) sbyte Sbyte

    Int16 Un entero con signo (16-bit) short Short

    Int32 Un entero con signo (32-bit) int Integer

    Int64 Un entero con signo (64-bit) long Long

Punto Flotante Single

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

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

    Decimal Un número decimal de 96-bit decimal Decimal

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

Otros Char Un caracter Unicode (16-bit) char Char

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

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

Page 46: C# para desarrolladores VB6

Alcance de miembrosAlcance de miembros

MiembroMiembro: se refiere a los campos, propiedades, : se refiere a los campos, propiedades, métodos, eventos, clases anidadas, etc.métodos, eventos, clases anidadas, etc.

C#:C#: todo miembro es declarado como todo miembro es declarado como PRIVATEPRIVATE por defaultpor default

Modificadores de acceso disponibles:Modificadores de acceso disponibles:

Protected Friend

protected internal

ProtectedprotectedFriendinternalPrivateprivatePublicpublic

VBC#

Page 47: C# para desarrolladores VB6

Declaración de VariablesDeclaración de Variables

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

VB: comienza con “Dim” o algún modificador VB: comienza con “Dim” o algún modificador de acceso (Public, Private, etc.) + de acceso (Public, Private, etc.) + identificador de la variable + “As” Tipo de identificador de la variable + “As” Tipo de DatoDato

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

Dim x As Integer ‘Dim es = a Private por defectoDim y As DecimalDim z As RectangleDim cli As Cliente

Page 48: C# para desarrolladores VB6

Inicialización de VariablesInicialización de Variables

C#:C#: toda variable debe ser inicializada toda variable debe ser inicializada EXPLICITAMENTE antes de ser usadaEXPLICITAMENTE antes de ser usada

VB: inicializa automáticamente las variables VB: inicializa automáticamente las variables en CERO o en Nothingen CERO o en Nothing

int tempBalance; //variable local//ERROR: tempBalance NO ha sido inicializadaSystem.Console.WriteLine(tempBalance);

Page 49: C# para desarrolladores VB6

Conversiones de TiposConversiones de Tipos

C# no permite conversiones implícitas de tiposC# no permite conversiones implícitas de tipos

Si falla el cast se devuelve null o InvalidCastExceptionSi falla el cast se devuelve null o InvalidCastException

VB usa las directivas del compilador Option StrictVB usa las directivas del compilador Option Strict

Si falla el cast siempre se genera una Si falla el cast siempre se genera una InvalidCastExceptionInvalidCastException

Cuenta cta = new CtaCte();CtaCte cc = cta; //Error: puede que cta no sea una CtaCteCtaCte cc = (CtaCte)cta; //Conversion explicita “CASTING”CtaCte cc = cta as CtaCte; //Usando el operador “as”

if (cta is CtaCte) ... //Comp. con el operador “is”

Dim cta As Cuenta = New CtaCte()

Dim cc As CtaCte = cta ‘OK Option Strict OffDim cc As CtaCte = CType(cta, CtaCte) ‘Option Strict On

If TypeOf cta Is CtaCte Then ‘Comp. con TypeOf Is

Page 50: C# para desarrolladores VB6

ArreglosArreglosC# utiliza corchetes [ ] para definición de arraysC# utiliza corchetes [ ] para definición de arrays

VB permite definir arrays de varias formas con ()VB permite definir arrays de varias formas con ()

string[] telefonos; //Definicion de un Arreglo de stringstelefonos = new string[3]; //De 3 elementostelefonos[0] = “1245”; //Seteo del 1er elemento del arreglo

//Definicion y asignacion de una veztelefonos = new string[] {“1”,“2”,“3”};

Dim telefonos As String() ó Dim telefonos() As StringDim telefonos(3) As String ‘Crea un array de 4 elementos telefonos(0) = “1245” ‘Seteo del 1er elemento del arreglo

‘Definicion y asignacion de una vezDim telefonos() As String = {“1”,“2”,“3”}

Page 51: C# para desarrolladores VB6

OperadoresOperadores

Descripción C# VB

Asignación = =

Adición + +

Sustracción - -

Multiplicación * *

División / /

Negación ! not

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

Mayor > >

Menor < <

Mayor o Igual >= >=

Menor o Igual <= <=

Page 52: C# para desarrolladores VB6

Operadores LógicosOperadores Lógicos

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

OperadorVBC#

En C# todas las evaluaciones se hacen por En C# todas las evaluaciones se hacen por “cortocircuito”“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 En VB se debe utilizar los operadores AndAlso y OrElseAndAlso 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

Page 53: C# para desarrolladores VB6

if (x > 10) if (x < 10) if (x < 10) if (x < 10) HacerAlgo(); { { { Hacer1(); Hacer1(); Hacer1(); Hacer2(); } } } else else if (x > 20) { { Hacer2(); Hacer2(); } } else { Hacer3(); }

Sentencias condicionalesSentencias condicionalesC#: sentencia if con varios formatosC#: sentencia if con varios formatos

VB.NET: la sentencia If requiere de la palabra VB.NET: la sentencia If requiere de la palabra ThenThenIf 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

Page 54: C# para desarrolladores VB6

int a = 0;switch(a) {

case 1:{//CODIGO 1 break;}case 2: {//CODIGO 2 break;}default:{//CODIGO DEFAULT break;}

}

Sentencias condicionalesSentencias condicionalesC#: sentencia caseC#: sentencia case

VB: sentencia caseVB: sentencia caseDim a As Integer = 0Select a

Case 1 'Código 1Case 2 'Código 2Case Else 'Código Default

End Select

Page 55: C# para desarrolladores VB6

Sentencia forSentencia forC#: la sentencia for consta de tres partesC#: la sentencia for consta de tres partes

VB usa las palabras claves For, To, Next y VB usa las palabras claves For, To, Next y StepStep

//Partes: declaración, prueba, acciónfor (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 2Next Next

Page 56: C# para desarrolladores VB6

Sentencia for/eachSentencia for/each

C#: usa la palabra foreachC#: usa la palabra foreach

VB usa las palabra For EachVB usa las palabra For Each

string[] nombres = new string[5];foreach(string auxNombre in nombres){ //Codigo}

Dim nombres(5) As StringDim auxNombre As StringFor Each auxNombre In nombres 'CodigoNext

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

Page 57: C# para desarrolladores VB6

Sentencia whileSentencia whileC#:C#:

VB: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

Page 58: C# para desarrolladores VB6

ClasesClases

C#: las clases son declaradas mediante classC#: las clases son declaradas mediante class

VB usa las palabras Class / End ClassVB usa las palabras Class / End Class

//Definicion de la clase CuentaBancariaclass CuentaBancaria{

//Definicion de miembros}

‘Definicion de la clase CuentaBancariaClass CuentaBancaria

‘Definicion de miembrosEnd Class

Page 59: C# para desarrolladores VB6

MétodosMétodos

En C# todo método es una funciónEn C# todo método es una función

VB usa procedimientos Sub y funciones FunctionVB 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 valorEnd Sub

Public Function Inventario(ByVal codArt As Integer) As Integer‘Devuelve un enteroEnd Function

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

Page 60: C# para desarrolladores VB6

Sobrecarga de MétodosSobrecarga de Métodos

C#C#

VBVB

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

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

Page 61: C# para desarrolladores VB6

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

C#C# VBVB

class CtaCte{ int balance; public int Balance { get { return balance; } set { balance = value; } }}

CtaCte cc = new CtaCte();cc.Balance = 100; //AsignaciónMostrar(cc.Balance); //Obtención

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 PropertyEnd Class

Dim cc As New CtaCte()cc.Balance = 100 ‘AsignaciónMostrar(cc.Balance) ‘Obtención

Page 62: C# para desarrolladores VB6

HerenciaHerencia

En C# la herencia se define:En C# la herencia se define:

VB usa la palabra clave InheritsVB usa la palabra clave Inherits

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

Class Cuenta ‘Clase BaseEnd Class

Class CtaCte ‘Clase Derivada Inherits CuentaEnd Class

En .NET solose permiteHerenciaSimple

Page 63: C# para desarrolladores VB6

Admin. De Excepciones Admin. De Excepciones

C#: usa las palabras C#: usa las palabras try/catch/finallytry/catch/finally

VB usa las palabras VB usa las palabras Try/Catch/FinallyTry/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/yCatch e As DivideByZeroException ‘Error division por ceroCatch ‘Otro errorFinally ‘Siempre pasa por acaEnd Try

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

Page 64: C# para desarrolladores VB6

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

Page 65: C# para desarrolladores VB6

System: System: Contiene tipos de datos muy usados, datos basicos, Contiene tipos de datos muy usados, datos basicos, tablas, excepciones, ..... Es el raiztablas, excepciones, ..... Es el raiz

System.Object: System.Object: Soporta toda la jerarquia de las clases .NETSoporta toda la jerarquia de las clases .NET

System.Collection: System.Collection: Colecciones de datos de uso comun, como Colecciones de datos de uso comun, como pilas, colas, listas, ...pilas, colas, listas, ...

System.Data: System.Data: Manipulacion de bases de datos. Forma la Manipulacion de bases de datos. Forma la denominada arquitectura ADO.NETdenominada arquitectura ADO.NET

System.IO:System.IO: Manipulacion de Ficheros Manipulacion de Ficheros

System.Reflection:System.Reflection: Acceso a Metadatos que acompañan a los modulos de codigo Acceso a Metadatos que acompañan a los modulos de codigo

System.Math:System.Math: Funciones logaritmicas, trigonometricas, .... Funciones logaritmicas, trigonometricas, ....

System.XML:System.XML: Acceso a datos XML Acceso a datos XML

System.Web: System.Web: Aplicaciones WebAplicaciones Web

Namespaces de la Namespaces de la plataforma .NETplataforma .NET

Page 66: C# para desarrolladores VB6

Temas a TratarTemas a Tratar

Introducción a la Orientación a Introducción a la Orientación a ObjetosObjetosIntroducción a .NETIntroducción a .NETEl lenguaje de programación C#El lenguaje de programación C#Programación en C#Programación en C# Visual Studio .NETVisual Studio .NET Creación de un proyecto C#Creación de un proyecto C# EjemplosEjemplos

Page 67: C# para desarrolladores VB6

Visual Studio .NETVisual Studio .NETNavegar 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.

Page 68: C# para desarrolladores VB6

Creación de un proyecto Creación de un proyecto C#C#

Arrancar Visual Studio .NETArrancar Visual Studio .NETDel menú File escoger New ProjectDel menú File escoger New ProjectDe los templates escoger Console ApplicationDe los templates escoger Console ApplicationVS.NET crea una simplísima pero completa aplicación de VS.NET crea una simplísima pero completa aplicación de consola llamada ConsoleApplication1consola llamada ConsoleApplication1El código de esta aplicación se guarda en un archivo llamado El código de esta aplicación se guarda en un archivo llamado Program1.csProgram1.cs

Page 69: C# para desarrolladores VB6

Creación de un proyecto Creación de un proyecto C#C#El código C# generado se ve así:El código C# generado se ve así:

using – sirve para usar componentes pre-existentesusing – sirve para usar componentes pre-existentesnamespace – sirve para organizar los componentes de sistemas namespace – sirve para organizar los componentes de sistemas grandesgrandesclass – definición de una entidad que tiene estado y class – definición de una entidad que tiene estado y comportamientocomportamientoMain – método en el que arranca la ejecución de un programa Main – método en el que arranca la ejecución de un programa C#C#

Page 70: C# para desarrolladores VB6

Ejecución de un proyecto Ejecución de un proyecto C#C#

Antes de poder ejecutar un proyecto, debe ser construidoAntes de poder ejecutar un proyecto, debe ser construidoUsar la opción “Build Solution” del menú “Build” (o presionar Usar la opción “Build Solution” del menú “Build” (o presionar Ctrl-Shift-B)Ctrl-Shift-B)El programa se ejecuta usando la opción “Start without El programa se ejecuta usando la opción “Start without Debugging” del menú “Debug” (o presionar Ctrl-F5)Debugging” del menú “Debug” (o presionar Ctrl-F5)

Page 71: C# para desarrolladores VB6

Escribiendo texto en la Escribiendo texto en la salidasalida

Para presentar un texto en la pantalla:Para presentar un texto en la pantalla:

Eliminando aquellos elementos que no necesitamos en este Eliminando aquellos elementos que no necesitamos en este ejemplo:ejemplo:

Esto imprime el texto “¡Hola mundo!” en la consolaEsto imprime el texto “¡Hola mundo!” en la consola

Page 72: C# para desarrolladores VB6

Creación e invocación de Creación e invocación de un métodoun método

Definición – el método como talDefinición – el método como talLlamada – punto donde se pide la ejecución del métodoLlamada – punto donde se pide la ejecución del métodoComentarios – explicación del código (ignorado por la máquina)Comentarios – explicación del código (ignorado por la máquina)

Page 73: C# para desarrolladores VB6

Se pueden tener muchos Se pueden tener muchos métodosmétodos

Page 74: C# para desarrolladores VB6

Funciones, operadores y Funciones, operadores y variablesvariables

Una función es un método que “devuelve” información al Una función es un método que “devuelve” información al invocadorinvocador

Este programa devuelve: “3 + 5 = 8”Este programa devuelve: “3 + 5 = 8”

Page 75: C# para desarrolladores VB6

Funciones, operadores y Funciones, operadores y variablesvariables

Otra manera de obtener el mismo Otra manera de obtener el mismo resultado:resultado:

Page 76: C# para desarrolladores VB6

Funciones, operadores y Funciones, operadores y variablesvariables

Este ejemplo despliega:Este ejemplo despliega:La distancia entre (2,1) y (7,3) es 5,3851648071345La distancia entre (2,1) y (7,3) es 5,3851648071345

Page 77: C# para desarrolladores VB6

Funciones, operadores y Funciones, operadores y variablesvariables

Ejemplo de ejecución:Ejemplo de ejecución:Ingrese el valor de a: 5Ingrese el valor de a: 5Ingrese el valor de b: 7Ingrese el valor de b: 75 + 7 = 125 + 7 = 12

Page 78: C# para desarrolladores VB6

CondicionalesCondicionales

Ejemplo de ejecución:Ejemplo de ejecución:Ingrese un número: 97Ingrese un número: 9797 es menor o igual a 10097 es menor o igual a 100

Page 79: C# para desarrolladores VB6

CondicionalesCondicionales

Ejemplo de ejecución:Ejemplo de ejecución:Ingrese un número: 104Ingrese un número: 104104 es mayor que 100104 es mayor que 100

Page 80: C# para desarrolladores VB6

Lazos usando “for” y Lazos usando “for” y “while”“while”

Ejemplo de ejecución:Ejemplo de ejecución:0 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9

Page 81: C# para desarrolladores VB6

ArreglosArreglos

Ejemplo de ejecución:Ejemplo de ejecución:0 2 4 6 8 10 12 14 16 180 2 4 6 8 10 12 14 16 18

Page 82: C# para desarrolladores VB6

EstructurasEstructurasEste ejemplo despliega:Este ejemplo despliega:

La distancia entre (2,1) y (7,3) es 5,3851648071345La distancia entre (2,1) y (7,3) es 5,3851648071345

Page 83: C# para desarrolladores VB6

ClasesClasesParecidas a las estructuras pero con responsabilidesParecidas a las estructuras pero con responsabilidesEl fundamento de la programación orientada a objetosEl fundamento de la programación orientada a objetos

Page 84: C# para desarrolladores VB6

ClasesClases

Page 85: C# para desarrolladores VB6

ClasesClasesCampos privadosCampos privadosPropiedades públicasPropiedades públicas

Page 86: C# para desarrolladores VB6

Referencias e instanciasReferencias e instanciasSalida:Salida:

Mi nombre es Sole y tengo 16 añosMi nombre es Sole y tengo 16 años

Page 87: C# para desarrolladores VB6

Clases, constructores e Clases, constructores e instanciasinstancias

Page 88: C# para desarrolladores VB6

Clases, arreglos e Clases, arreglos e instanciasinstancias

Page 89: C# para desarrolladores VB6

ISC Moises Chi GorocicaISC Moises Chi [email protected]@hotmail.com

C# para programadores C# para programadores VB6.0VB6.0

C# para programadores C# para programadores VB6.0VB6.0

Aluxes .NETAluxes .NET

Page 90: C# para desarrolladores VB6