programacion orientada a objetos - vb

40
Objetivo Objetivo Mostrar cómo aplicar los conceptos Mostrar cómo aplicar los conceptos fundamentales de programación fundamentales de programación orientada a objetos utilizando orientada a objetos utilizando los lenguajes Microsoft Visual los lenguajes Microsoft Visual C#.NET y Microsoft Visual C#.NET y Microsoft Visual Basic.NET Basic.NET

Upload: andresfilippin

Post on 09-Sep-2015

20 views

Category:

Documents


3 download

DESCRIPTION

Curso VB y Programacion Orientada a Objetos

TRANSCRIPT

  • ObjetivoMostrar cmo aplicar los conceptos fundamentales de programacin orientada a objetos utilizando los lenguajes Microsoft Visual C#.NET y Microsoft Visual Basic.NET

  • Temas a TratarIntroduccin a C# y VB.NETSintaxisTemas GeneralesDefinicin e inicializacin de variablesOperadoresEstructuras de ControlClases y Objetos

  • Visual C#.NETCreado especialmente para .NETEstndar ECMA (2002)Orientado a Objetos y ComponentesSintaxis derivada de C, C++, Delphi y Java

  • Visual Basic.NETRediseado especialmente para .NET100% Orientado a Objetos y ComponentesSalvo por pequeas excepciones, la sintaxis es la misma de VB6 y sus predecesoresTiene la misma potencia, robustez y capacidades de acceso a .NET que C#

  • Compiladores (1/2)Compilador de Lnea de Comandos C#Cumple con la especificacin del CLS\Microsoft.NET\Framework\\csc.exeCsc /out:XX /target:YY Archivo1.cs Archivo2.cs

    Compilador de Lnea de Comandos VB.NETCumple con la especificacin del CLS\Microsoft.NET\Framework\\vbc.exevbc /out:XX /target:YY Archivo1.vb Archivo2.vb

  • Compiladores (2/2)Algunas opciones tiles/out: Nombre del archivo de salida/target:exe/winexe/libraryConsola/Windows/DLL/reference: Assemblies de referencia/doc: Archivo de documentacin/debug[+|-] Emitir info de DEBUG/main: Determina la clase que posee el Entry Point (ignora los otros posibles)/lib: Directorios de libreras

  • Temas a TratarIntroduccin a C# y VB.NETSintaxisTemas GeneralesDefinicin e inicializacin de variablesOperadoresEstructuras de ControlClases y Objetos

  • VB.NET y C# - Terminacin de lneaC#: la lnea finaliza con un ; VB.NET: la lnea finaliza con un salto de lnea//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

  • VB.NET y C# - Declaracin de BloquesEn C# los bloques se declaran entre llavesEn VB.NET cada bloque tiene su sentencia de apertura y su sentencia de cierre, que normalmente empieza con la palabra Endclass MainClass{public static void Main(string[] args) {Console.WriteLine("Hello World!");}}Class MainPublic Shared Sub Main()Console.WriteLine("Hello World!")End SubEnd Class

  • VB.NET y C# - ComentariosC# soporta tres tipos de comentariosstring nombre = Juan; // Comentario de una sola lnea /* Comentario con mas de una lnea*/

    /// /// Documentacin XML que puede ser consumida por otras /// herramientas para mostrar ayuda dinmica o generar /// documentacin en varios formatos/// public class Matematica { /// /// Calcula la suma de dos nmeros enteros /// /// El primer operando de la suma /// El segundo operando de la suma /// La suma entera de ambos operandos public int Sumar (int x, int y) {return x + y;}}

  • VB.NET y C# - ComentariosVB.NET soporta dos tipos de comentarios'Comentario simpleDim nombre As String = Juan''' ''' Documentacin XML que describe un tipo y sus miembros''' ''' El primer operando de la suma''' El segundo operando de la suma''' La suma entera de ambos operandosPublic Function Sumar (x as Integer, y as Integer) as Integerreturn x + yEnd Function

  • VB.NET y C# - Case SensitivityC# distingue entre maysuclas y minsculasVB.NET no distingue entre maysuclas y minsculassystem.console.writeline(HOLA); INCORRECTO

    System.Console.WriteLine(HOLA); CORRECTOsystem.console.writeline(HOLA) CORRECTO

    System.Console.WriteLine(HOLA) CORRECTO

  • Temas a TratarIntroduccin a C# y VB.NETSintaxisTemas GeneralesDefinicin e inicializacin de variablesOperadoresEstructuras de ControlClases y Objetos

  • Tipos de Datos

  • VB.NET y C# - Alcance de miembrosMiembro: se refiere a los campos, propiedades, mtodos, eventos, clases anidadas, etc.C#: todo miembro es declarado como PRIVATE por defaultVB.NET: todo miembro es declarado como PUBLIC por defaultModificadores de acceso disponibles:

  • VB.NET y C# - Declaracin de VariablesC#: el tipo de dato precede al identificador (nombre)VB.NET: comienza con Dim o algn modificador de acceso (Public, Private, etc.) + identificador de la variable + As Tipo de Datoint 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

  • VB.NET y C# - Inicializacin de VariablesC#: toda variable debe ser inicializada EXPLICITAMENTE antes de ser usadaVB.NET: inicializa automticamente las variables en CERO o en Nothingint tempBalance; //variable local//ERROR: tempBalance NO ha sido inicializadaSystem.Console.WriteLine(tempBalance); Dim tempBalance As Integer'SIN ERROR: tempBalance vale CEROSystem.Console.WriteLine(tempBalance)

  • VB.NET y C# - Conversiones de TiposC# no permite conversiones implcitas de tiposSi falla el cast se devuelve null o InvalidCastExceptionVB.NET usa las directivas del compilador Option StrictSi falla el cast siempre se genera una InvalidCastExceptionCuenta cta = new CtaCte();CtaCte cc = cta; //Error: puede que cta no sea una CtaCteCtaCte cc = (CtaCte)cta; //Conversion explicita CASTINGCtaCte cc = cta as CtaCte; //Usando el operador as

    if (cta is CtaCte) ... //Comp. con el operador isDim 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

  • VB.NET y C# - ArreglosC# utiliza corchetes [ ] para definicin de arraysVB.NET 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}

  • Temas a TratarIntroduccin a C# y VB.NETSintaxisTemas GeneralesDefinicin e inicializacin de variablesOperadoresEstructuras de ControlClases y Objetos

  • VB.NET y C# - Operadores

  • VB.NET y C# - Operadores LgicosEn 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.NET se debe utilizar los operadores AndAlso y OrElseSi Hacer1() es True, entonces Si Hacer1() es False, entoncesNO se evalua Hacer2() NO se evalua Hacer2()If Hacer1() OrElse Hacer2() Then If Hacer1() AndAlso Hacer2() Then ... ...End If End If

  • Temas a TratarIntroduccin a C# y VB.NETSintaxisTemas GeneralesDefinicin e inicializacin de variablesOperadoresEstructuras de ControlClases y Objetos

  • VB.NET y C# - Sentencias condicionalesC#: sentencia if con varios formatosif (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 ThenIf 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

  • VB.NET y C# - Sentencias condicionalesC#: sentencia caseint a = 0;switch(a) {case 1:{//CODIGO 1 break;}case 2: {//CODIGO 2 break;}default:{//CODIGO DEFAULT break;}}VB.NET: sentencia caseDim a As Integer = 0Select aCase 1 'Cdigo 1Case 2 'Cdigo 2Case Else 'Cdigo DefaultEnd Select

  • VB.NET y C# - Sentencia forC#: la sentencia for consta de tres partesVB.NET usa las palabras claves For, To, Next y Step//Partes: declaracin, prueba, accinfor (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

  • VB.NET y C# - Sentencia for/eachC#: usa la palabra foreachVB.NET usa las palabra For Eachstring[] nombres = new string[5];foreach(string auxNombre in nombres){ //auxNombre es de SOLO LECTURA}Dim nombres(5) As StringDim auxNombre As StringFor Each auxNombre In nombres auxNombre NO es de SOLO LECTURA NextFor/Each permite recorrer arreglos y colecciones

  • VB.NET y C# - Sentencia whileC#:VB.NET:bool condicion = true;while (condicion == true){//En algn momento poner condicion = false} Dim condicion As Boolean = True While condicion = True 'Poner condicion=false en algn momento End While

  • Temas a TratarIntroduccin a C# y VB.NETSintaxisTemas GeneralesDefinicin e inicializacin de variablesOperadoresEstructuras de ControlClases y Objetos

  • VB.NET y C# - ClasesC#: las clases son declaradas mediante classVB.NET usa las palabras Class / End Class//Definicion de la clase CuentaBancariaclass CuentaBancaria{//Definicion de miembros}Definicion de la clase CuentaBancariaClass CuentaBancariaDefinicion de miembrosEnd Class

  • Sintaxis Entry PointC#:public class HolaMundo {public static void Main(string[] args){//Punto de entrada de la aplicacin}}VB.NETPublic Class HolaMundo Public Shared Sub Main(ByVal args() As String)Punto de entrada de la aplicacin End SubEnd Class

  • VB.NET y C# - MtodosEn C# todo mtodo es una funcinVB.NET usa procedimientos Sub y funciones Functionpublic 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 IntegerDevuelve un enteroEnd FunctionMtodos: acciones que un objeto puede llevar a cabo.

  • VB.NET y C# - ConstructoresEn C# tienen el mismo nombre de la claseVB.NET usa un procedimiento Sub Newclass CtaCte{ public CtaCte(){...} //Const. por default public CtaCte(int i){...} //Const. con un parametro}Class CtaCte Sub New() End Sub Sub New(ByVal i As Integer) End Sub End ClassConstructor: mtodos dentro de la clase que son llamados automticamente cuando se crea una instancia de dicha clase.

  • VB.NET y C# - Sobrecarga de MtodosC#VB.NETpublic void HacerDeposito(int importe) {}

    public void HacerDeposito(int importe, bool acreditar){}Public Sub HacerDeposito(ByVal imp As Integer)End Sub

    Public Sub HacerDeposito(ByVal imp As Integer, ByVal acreditar As Boolean)End SubSobrecarga: varios mtodos con el mismo nombre pero diferente firma.

  • VB.NET y C# - Mtodos estticosC#VB.NETpublic static void HacerDeposito(int importe) {

    }Public Shared Sub HacerDeposito(ByVal imp As Integer)

    End SubMiembros que no requieren de una instancia para ser invocados. Se los llama mtodos de clase

  • VB.NET y C# - PropiedadesC#Propiedad: caracterstica o atributo de un objetoVB.NETclass CtaCte{ int balance; public int Balance { get { return balance; } set { balance = value; } }}

    CtaCte cc = new CtaCte();cc.Balance = 100; //AsignacinMostrar(cc.Balance); //ObtencinClass 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 AsignacinMostrar(cc.Balance) Obtencin

  • VB.NET y C# - HerenciaEn C# la herencia se define:VB.NET usa la palabra clave Inheritsclass Cuenta //Clase Base{ }class CtaCte : Cuenta //Clase Derivada{ }Class Cuenta Clase BaseEnd Class

    Class CtaCte Clase Derivada Inherits CuentaEnd ClassEn .NET solose permiteHerenciaSimple

  • VB.NET y C# - Herencia (Cont.)En C#VB.NETpublic 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 }Public NotInheritable Class CuentaNo se puede heredar de esta claseEnd Class

    Public MustInherit Class CuentaNo se pueden crear instancias de esta clase, slo de sus derivadasEnd Class

  • VB.NET y C# - NamespacesC#VB.NETnamespace BancoARG{ namespace Gestion { public class CtaCte { } public class CajaAhorro { } }}

    //Referencia fullBancoARG.Gestion.CtaCte;BancoARG.Gestion.CajaAhorro;

    //Referencia cortausing BancoARG.Gestion;CtaCte cc = new CtaCte();CajaAhorro ca = new CajaAhorro();Namespace BancoARG Namespace Gestion Public Class CtaCte End Class Public Class CajaAhorro End Class End NamespaceEnd Namespace

    Referencia fullBancoARG.Gestion.CtaCteBancoARG.Gestion.CajaAhorro

    Referencia a un namespaceImports BancoARG.GestionDim cc As New CtaCte()Dim ca As New CajaAhorro()

  • VB.NET y C# - Admin. De Excepciones C#: usa las palabras try/catch/finallyVB.NET usa las palabras Try/Catch/Finallytry{ 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

    Excepcin: condicin anmala de funcionamiento de una aplicacin

    Al descargar de internet gratuitamente el .NET Framework SDK (Software Development Kit), usted podr comenzar a desarrollar aplicaciones simples en un editor de texto cualquiera y compilarlas utilizando los compiladores de lnea de comandos includos en el paquete.Las propiedades permiten implementar el encapsulamiento, impidiendo el acceso directo a los atributos de una clase y proporcionando un mecanismo para poder obtener y asignar sus valores.Ntese que como VB.NET no distingue entre maysculas y minsculas no es posible utilizar para el miembro de la clase el mismo nombre que para la Propiedad. Sin embargo, es importante que ambos tengan nombres significativos para la lgica de la aplicacin. No se recomienda el agregado de prefijos o sufijos a los nombres.Dos palabras clave que afectan la habilidad de heredar desde una clase base.

    Los namespaces (espacios de nombre) funcionan como un mtodo de organizacin de clases (tanto las que escribimos nosotros como las incluidas en .NET), agrupando en un conjunto a aquellas clases que estn relacionadas lgicamente. Un namespace puede contener tanto tipos (clases) como otros namespaces, y dentro de un namespace no puede haber dos clases con el mismo nombre. El nombre completo de una clase se construye a partir de todos los namespaces que la contienen (la jerarqua se arma separndolos con .) + el nombre mismo de la clase..NET provee una forma estructurada de manejar los errores que ocurren en tiempo de ejecucin (llamados excepciones), a travs de los bloques Try/Catch. Si bien se ver este tema con mayor detalle a lo largo del curso, los conceptos bsicos son los siguientes:Todo cdigo que sea susceptible a fallar en tiempo de ejecucin debe ir dentro de un bloque TryDebemos proveer al menos un bloque Catch que atrapar una excepcin en caso de producirse y har algo con ella (mostrar un mensaje, enviar un mail, registrar el error, etc.)Si en tiempo de ejecucin se produce una excepcin dentro del cdigo que se encuentra en el bloque Try, el flujo de control es automticamente direccionado al primer bloque Catch capaz de atraparla, y nunca vuelve al cdigo dentro del bloque Try.Independientemente de la ocurrencia o no de excepciones, la ejecucin termina dirigindose al bloque Finally (optativo), que es utilizado tpicamente para finalizar ordenadamente recursos que se hayan estado utilizando (archivos, conexiones a una base de datos, etc.).