Curso Plataforma .NET Lic. Israel García Anido
Temario <ul><li>POO y migración desde VB a VB.net. </li></ul><ul><li>Introduccion a la Plataforma .NET </li></ul><ul><li>A...
Programación orientada a Objetos (POO), en ingles (OOP). <ul><li>Década del 70: SmallTalk (OO puro) </li></ul><ul><li>Déca...
Objeto. <ul><li>El concepto de objeto puede extenderse prácticamente a cualquier cosa, tanto real como ficticia o imaginar...
Clase. <ul><li>Se trata de realizar una abstracción denominada clase, esta permite la agrupación de objetos que comparten ...
Instancia. <ul><li>Una instancia es en si un objeto que se clasifica dentro de una determinada clase, se le denomina insta...
Conceptos intrínsecos de POO. <ul><li>Abstracción. </li></ul><ul><li>Encapsulamiento. </li></ul><ul><li>Herencia. </li></u...
Abstracción. <ul><li>La  abstracción  es una forma de trabajar con la complejidad que nos impone el mundo real. Una  abstr...
Abstracción. <ul><li>Ejemplo: Un sensor de temperatura.  </li></ul><ul><li>Sabemos que...  </li></ul><ul><li>Mide la tempe...
Encapsulamiento. <ul><li>Consiste en reunir estados y métodos dentro de un entorno limitado, en otras palabras realizar en...
Encapsulamiento. <ul><li>Ejemplo: Un Triangulo. </li></ul><ul><li>Vemos: </li></ul><ul><li>Se puede construir con tres pun...
Triangulo. CAJA NEGRA Construir triangulo con tres puntos. A, B, C. Mostrar el triangulo Ocultar el triangulo I N T E R F ...
Public Class Estrella Private X_coord as Long Private Y_coord as Long Public Sub Show() ‘  ... End Sub Public Sub Hide() ‘...
Ejercicio. <ul><li>Crear una clase en VB.NET </li></ul>
Herencia. <ul><li>Es la relación más  característica de la OOP . Expresa en general una  especialización  o una  generaliz...
Herencia. <ul><li>En Visual Basic .NET no existe el concepto de herencia múltiple como en C++. </li></ul><ul><li>Este conc...
Figura Metodo Mostrar Método Ocultar Figura Plana Función Área. Figura Volumétrica Función Volumen. Triángulo Función Perí...
Llamado a métodos de clases padres. <ul><li>Variable “Me”: Invoca un método de la clase en la que se encuentra. </li></ul>...
Métodos abstractos. <ul><li>Los métodos abstractos solo se pueden declarar en clases que han sido declaradas como abstract...
Clases Abstractas. <ul><li>Una clase abstracta es una clase que al menos posee un método abstracto. </li></ul><ul><li>Las ...
Public  MustInherit   Class Figura Private X_coord as Long Private Y_coord as Long Public Sub MustOverride Show() Public S...
Modificadores de Visibilidad de Métodos. <ul><li>Public:  elementos que pueden ser accedidos desde cualquier contexto, den...
Modificadores de Visibilidad de Clases. <ul><li>Public:  Es posible acceder a la clase desde cualquier ensamblado externo....
Ejercicio. <ul><li>Definir una clase estudiante y una clase estudiante-trabajador. </li></ul>
Construcción. <ul><li>Cuando se quiere trabajar con clases, es necesario crear objetos (instancias de las clases) </li></u...
Construcción. Public Class Empleado Private Salario as Long Private Nombre as String Private UserName as String Private Pa...
Sobrecarga de constructores. Public Class Empleado Private Salario as Long Private Nombre as String Private UserName as St...
Destructores <ul><li>Cuando una instancia se va a dejar de utilizar, debe destruirse para liberar los recursos que consume...
Finalize method. <ul><li>Es invocado justo antes de que el Recolector de basura destruya la instancia de la clase. </li></...
Dispose method <ul><li>Objetos que hacen consumo exhaustivo de muchos recursos. </li></ul><ul><li>Mantienen conexiones abi...
Polimorfismo. <ul><li>Es una caracteristica especial donde un identificador es declarado estáticamente de un tipo de clase...
Polimorfismo. Métodos virtuales. <ul><li>Los métodos virtuales son declarados en Visual Basic .NET con el modificador Over...
Polimorfismo, ejemplo: MustInherit Public Class Shape Public MustOverride Sub Paint(g As Graphics, r As Rectangle) End Cla...
Polimorfismo, ejemplo: Public Class ShapeList Private Shapes as ArrayList Public Sub AddShape(ByVal aShape as Shape) Shape...
Ejercicio. <ul><li>Definir una clase “Animal” una clase “Animal carnívoro” y una clase “Animal herbiboro” </li></ul><ul><l...
Sobrecarga de métodos. <ul><li>Los procedimientos  funciones pueden declararse varias veces con el mismo nombre pero con d...
Sobrecarga de métodos. Public Class ShapeList Private Shapes as ArrayList Public Sub AddShape(ByVal aShape as Shape) Shape...
Interfaces. <ul><li>Una interface es un conjunto de definiciones de métodos y/o propiedades sin implementación. </li></ul>...
Interfaces. Public Interface IShapeList  Sub AddShape(ByVal aShape as Shape) Function CountShapes as Integer Sub ClearList...
Elementos de clase. <ul><li>Elementos que pertenecen a la clase y no a la instancia que pueda crearse. </li></ul><ul><li>N...
Elementos de clase. Public Class Cuenta Public Shared Interes = 15 Public Shared Function AplicarInteres(ByVal saldo as Fl...
Enumerativos <ul><li>Public Enum CartridgeState </li></ul><ul><li>EMPTY </li></ul><ul><li>LOW </li></ul><ul><li>HALF </li>...
Eventos. <ul><li>Eventos: </li></ul><ul><li>Public Class Employe    Public Event EmployeEvent()    Public Sub DoEvent()   ...
Eventos <ul><li>Eventos, Asignación dinámica: </li></ul>Public Class Employe    Public Event EmployeEvent()    Public Sub ...
Delegados <ul><li>Public Delegate Sub EmployeEventHandler(ByVal nState As Integer)   </li></ul><ul><li>Public Delegate Fun...
VB    VB.NET <ul><li>Propiedades. </li></ul><ul><li>Public class Persona </li></ul><ul><li>Private Anio_de_nacimiento as ...
VB    VB.NET <ul><li>Estructuras. </li></ul><ul><li>'  Structure to hold and manage a complex number  </li></ul><ul><li>P...
VB    VB.NET <ul><li>Variant    Object </li></ul><ul><li>Option Explicit es por defecto ON </li></ul><ul><li>Set y Let n...
Ejercicio. <ul><li>Defina un almacen, el almacen puede tener cualquier cantidad de articulos.  </li></ul><ul><li>Todos los...
Upcoming SlideShare
Loading in …5
×

Net1 oop vbnet

1,070 views

Published on

PROGRAMACIÓN ORIENTADA A OBJETOS

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,070
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
27
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Net1 oop vbnet

  1. 1. Curso Plataforma .NET Lic. Israel García Anido
  2. 2. Temario <ul><li>POO y migración desde VB a VB.net. </li></ul><ul><li>Introduccion a la Plataforma .NET </li></ul><ul><li>ASP.NET(4 clases) </li></ul><ul><li>Configuración de aplicaciones. </li></ul><ul><li>Servicios WEB XML </li></ul><ul><li>Construyendo aplicaciones seguras. </li></ul><ul><li>Interoperatividad. </li></ul><ul><li>Tracing y Debugging. </li></ul>
  3. 3. Programación orientada a Objetos (POO), en ingles (OOP). <ul><li>Década del 70: SmallTalk (OO puro) </li></ul><ul><li>Década del 80: C++ y Pascal (híbridos) </li></ul><ul><li>Estos lenguajes OO introducen el concepto de Clase, como tipo de dato. </li></ul>
  4. 4. Objeto. <ul><li>El concepto de objeto puede extenderse prácticamente a cualquier cosa, tanto real como ficticia o imaginaria. En el contexto de la programación Orientada a Objetos, se refiere a algo que posea estado , comportamiento e identidad . Su estado y comportamiento se definen en una clase común. Por tanto, una clase podra tener muchos objetos de su tipo, pero sin embargo un objeto solo podrá pertenecer a una clase. </li></ul>
  5. 5. Clase. <ul><li>Se trata de realizar una abstracción denominada clase, esta permite la agrupación de objetos que comparten las mismas propiedades y comportamiento. No se debe olvidar que la clase es una generalización de objeto. </li></ul>
  6. 6. Instancia. <ul><li>Una instancia es en si un objeto que se clasifica dentro de una determinada clase, se le denomina instancia para resaltar el conceptos de creación en un momento dado, que tiene un tiempo de vida y que pertenece a algo, o sea: la instancia de una clase. </li></ul>
  7. 7. Conceptos intrínsecos de POO. <ul><li>Abstracción. </li></ul><ul><li>Encapsulamiento. </li></ul><ul><li>Herencia. </li></ul><ul><li>Polimorfismo. </li></ul>
  8. 8. Abstracción. <ul><li>La abstracción es una forma de trabajar con la complejidad que nos impone el mundo real. Una abstracción denota las caraterísticas esenciales de un objeto que lo distinguen de todos los demás tipos de objeto y proporciona así fronteras conceptuales nítidamente definidas respecto a la perspectiva del observador. Nos permite separar el comportamiento de la implementación. Será más importante saber qué se hace , y no cómo se hace. </li></ul>
  9. 9. Abstracción. <ul><li>Ejemplo: Un sensor de temperatura. </li></ul><ul><li>Sabemos que... </li></ul><ul><li>Mide la temperatura y nos la dice. </li></ul><ul><li>Se puede calibrar... </li></ul><ul><li>No sabemos.... </li></ul><ul><li>Como mide la temperatura. </li></ul><ul><li>De que esta hecho.... </li></ul>
  10. 10. Encapsulamiento. <ul><li>Consiste en reunir estados y métodos dentro de un entorno limitado, en otras palabras realizar encapsulación. Se trata de que ninguna parte de un sistema complejo dependa de los detalles internos de otra parte. Es por tanto complementario de la abstracción . La principal forma de conseguir este objetivo es mediante la ocultación de la información . Todos aquellos aspectos de un objeto que no contribuyen a sus características esenciales (estructura e implementación de sus métodos) queda escondido . </li></ul>
  11. 11. Encapsulamiento. <ul><li>Ejemplo: Un Triangulo. </li></ul><ul><li>Vemos: </li></ul><ul><li>Se puede construir con tres puntos. </li></ul><ul><li>Se puede construir con un vector y un punto. </li></ul><ul><li>Se puede mostrar. (dibujar en pantalla) </li></ul><ul><li>Se puede ocultar. </li></ul><ul><li>Se puede mover. </li></ul><ul><li>Se puede aumentar su escala. </li></ul><ul><li>No vemos: </li></ul><ul><li>Como está representado internamente… con tres puntos o con un vector y un punto… </li></ul><ul><li>Como se oculta… si dibuja el fondo sobre el triangulo o si elimina las lineas de los lados con una recta de color inverso. </li></ul>
  12. 12. Triangulo. CAJA NEGRA Construir triangulo con tres puntos. A, B, C. Mostrar el triangulo Ocultar el triangulo I N T E R F A C E
  13. 13. Public Class Estrella Private X_coord as Long Private Y_coord as Long Public Sub Show() ‘ ... End Sub Public Sub Hide() ‘ ... Ens Sub End Class Propiedades internas Metodos y funciones Propiedades : Manifiestan el Estado del Objeto. Metodos y Funciones : Manifiestan el coportamiento.
  14. 14. Ejercicio. <ul><li>Crear una clase en VB.NET </li></ul>
  15. 15. Herencia. <ul><li>Es la relación más característica de la OOP . Expresa en general una especialización o una generalización de una clase sobre la otra. Sirve para evitar definir las características comunes a un conjunto de clases multiples veces. También se denomina relación &quot; es un/a &quot; . </li></ul><ul><li>La clase de la cual se hereda recibe el nombre de clase base o superclase . La clase que hereda se llama clase derivada o subclase . A través de esta relación la subclase comparte la estructura y/o el comportamiento de la superclase ( herencia simple ) o superclases ( herencia múltiple ). </li></ul>
  16. 16. Herencia. <ul><li>En Visual Basic .NET no existe el concepto de herencia múltiple como en C++. </li></ul><ul><li>Este concepto ha sido revocado por los lenguajes modernos como Java, C# y VB.NET. </li></ul><ul><li>Para declarar que una clase hereda de otra se especifica el atributo: Inherits </li></ul>
  17. 17. Figura Metodo Mostrar Método Ocultar Figura Plana Función Área. Figura Volumétrica Función Volumen. Triángulo Función Perímetro Función Altura Esfera. Cuadrado Intersección. Class Figura Public Sub Mostrar() End Sub Public Sub Ocultar() ... End Sub End Class Class FiguraPlana Inherits Figura Public Function Area as Float End Function End Class
  18. 18. Llamado a métodos de clases padres. <ul><li>Variable “Me”: Invoca un método de la clase en la que se encuentra. </li></ul><ul><li>Variable “MyBase”: Invoca un método de la clase del padre. </li></ul>Class Cuenta Public Overridable Function Saldo() as Float End Sub End Class Class CuentaInversion Inherits Cuenta Public Overrides Function Saldo() as Float Saldo = MyBase.Saldo() + Intereses End Function End Class
  19. 19. Métodos abstractos. <ul><li>Los métodos abstractos solo se pueden declarar en clases que han sido declaradas como abstractas. </li></ul><ul><li>Se declaran en Visual Basic .NET con el modificador MustOverride. </li></ul><ul><li>No contiene implementación, es solo una declaración. </li></ul><ul><li>Expresan funcionalidad. (El qué hace?) </li></ul>
  20. 20. Clases Abstractas. <ul><li>Una clase abstracta es una clase que al menos posee un método abstracto. </li></ul><ul><li>Las clases abstractas no se pueden instanciar. </li></ul><ul><li>En Visual Basic .NET se declaran con el atributo MustInherit. </li></ul><ul><li>Cualquier clase no abstracta que herede de una clase abstracta deberá implementar los métodos abstractos de su clase padre. </li></ul><ul><li>Si una clase abstracta hereda de otra clase abstracta puede no implementar sus métodos abstractos y adicionar mas. </li></ul><ul><li>Una clase abstracta puede heredar de una no abstracta y adicionar metodos abstractos. </li></ul>
  21. 21. Public MustInherit Class Figura Private X_coord as Long Private Y_coord as Long Public Sub MustOverride Show() Public Sub MustOverride Hide() End Class Public Class Linea Inherits Figura Public Sub Override Show() ´ Dibujar la linea. Drawing.lineTo(X_coord,Y_coord,white) End sub Public Sub Override Hide() ´ Ocultar la linea. Drawing.lineTo(X_coord,Y_coord,black) End sub End Class
  22. 22. Modificadores de Visibilidad de Métodos. <ul><li>Public: elementos que pueden ser accedidos desde cualquier contexto, dentro o fuera de la clase en que se han definido. </li></ul><ul><li>Private: elementos que pueden ser accedidos solo desde dentro de la clase en que han sido definidos. Es lo considerado por defecto . </li></ul><ul><li>Protected: elementos que pueden ser accedidos desde dentro de la clase en que es declarado y en las clases que deriven de la misma. </li></ul><ul><li>Friend: elementos que pueden ser accedidos desde las clases que han sido definidas en el mismo paquete o proyecto. </li></ul><ul><li>Protected Friend: elementos que s ólo pueden ser accedidos desde clases que deriven de esta y que esten definidas en el mismo proyecto. </li></ul>
  23. 23. Modificadores de Visibilidad de Clases. <ul><li>Public: Es posible acceder a la clase desde cualquier ensamblado externo. </li></ul><ul><li>Friend: Sólo es posible acceder a la clase desde el proyecto donde se declaró. Es lo considerado por defecto. </li></ul>
  24. 24. Ejercicio. <ul><li>Definir una clase estudiante y una clase estudiante-trabajador. </li></ul>
  25. 25. Construcción. <ul><li>Cuando se quiere trabajar con clases, es necesario crear objetos (instancias de las clases) </li></ul><ul><li>Todas las clases tienen un constructor público por defecto sin parámetros, esto es debido a que todas heredan implicitamente de la clase System.Object. </li></ul><ul><li>Para instanciar una clase es necesario invocar el contructor de la misma. </li></ul><ul><li>El constructor de una clase en VB.NET se nombra como un Sub “New” </li></ul>
  26. 26. Construcción. Public Class Empleado Private Salario as Long Private Nombre as String Private UserName as String Private Password as String Public Sub New() Salario = 0 Nombre = “Sin nombre” UserName = “anónimo” Password = “none” End Sub Public Function Login( aSystem as LoginSystem) as boolean Login = aSystem.Login(UserName & “sys”, Password) End Function End Class Dim User1 as Empleado User1 = New Empleado() User1.Login(MySystem) Dim User1 as New Empleado() User1.Login(MySystem)
  27. 27. Sobrecarga de constructores. Public Class Empleado Private Salario as Long Private Nombre as String Private UserName as String Private Password as String Private GlobalCatalog as DBUsers Public Sub New() Salario = 0 Nombre = “Sin nombre” UserName = “anónimo” Password = “none” End Sub Public Sub New(aUserName as String, aPassword as String) UserName = aUserName Password = aPassword GlobalCatalog.LookupUser(UserName, Password) End Sub Public Function Login(aSystem as LoginSystem) Login = aSystem.Login(UserName & “sys”, Password) End Function End Class Dim User1 as New Empleado(“guest”, “123”) User1.Login(MySystem)
  28. 28. Destructores <ul><li>Cuando una instancia se va a dejar de utilizar, debe destruirse para liberar los recursos que consume. </li></ul><ul><li>En la plataforma .NET existe un proceso llamado Recolector de basura que mantiene una lista de las referencias creadas y referencias inválidas, cuando un proceso necesita memoria, el ambiente .NET verifica que hay memoria disponible para ese proceso, si no hay llama al recolector de basura para que libere los recursos no utilizados de todas las referencias inválidas. </li></ul><ul><li>Dentro de la plataforma .NET no es necesario llamar el destructor de las clases, pero se pueden hacer operaciones antes de que la clase sea destruida por el Recolector de Basura. </li></ul>
  29. 29. Finalize method. <ul><li>Es invocado justo antes de que el Recolector de basura destruya la instancia de la clase. </li></ul><ul><li>Puede ser de utilidad para realizar alguna acción antes de que el objeto sea destruido. </li></ul><ul><li>Finalize es heredado de System.Object por lo que si se sobreescrbe debe declararse como mismo esta declarado el padre: </li></ul><ul><li>Protected Overrides Sub Finalize()   ‘ clean up code goes here End Sub </li></ul>
  30. 30. Dispose method <ul><li>Objetos que hacen consumo exhaustivo de muchos recursos. </li></ul><ul><li>Mantienen conexiones abiertas a bases de datos, archivos, etc. </li></ul><ul><li>Es neserario liberar la memoria del objeto una vez que se deje de usar y no esperar a que el recolector de basura lo determine. </li></ul><ul><li>Se crea un método en la clase llamado Dispose que cuando se invoca este método se liberan los recursos que consume este objeto. </li></ul><ul><li>Public Sub Dispose()   ‘ clean up code goes here </li></ul><ul><li>End Sub </li></ul>
  31. 31. Polimorfismo. <ul><li>Es una caracteristica especial donde un identificador es declarado estáticamente de un tipo de clase y puede contener en tiempo de ejecución una instancia de otro tipo de clase derivada del tipo declarado. </li></ul><ul><li>Cuando se invoca un método virtual a esta instancia, se invocará el método correcto según el tipo de objeto que esté dinámicamente instanciado. </li></ul>
  32. 32. Polimorfismo. Métodos virtuales. <ul><li>Los métodos virtuales son declarados en Visual Basic .NET con el modificador Overridable. </li></ul><ul><li>Los métodos abstractos siempre son virtuales. </li></ul><ul><li>Para especificar que se quiere especializar o sobreescribir un método en una nueva clase se declara este en la clase hija de la misma forma que está declarado en la clase padre y se le coloca el modificador “Overrides”. </li></ul>
  33. 33. Polimorfismo, ejemplo: MustInherit Public Class Shape Public MustOverride Sub Paint(g As Graphics, r As Rectangle) End Class Public Class Ellipse Inherits Shape Public Overrides Sub Paint(g As Graphics, r As Rectangle) g.drawEllipse(r) End Sub End Class Public Class Box Inherits Shape Public Overrides Sub Paint(g As Graphics, r As Rectangle) g.drawRect(r) End Sub End Class
  34. 34. Polimorfismo, ejemplo: Public Class ShapeList Private Shapes as ArrayList Public Sub AddShape(ByVal aShape as Shape) Shapes.Add(aShape) End sub Public Sub DrawAllShapes( g As Graphics, r As Rectangle ) Dim i as Integer For i = 0 to Shapes.Count – 1 Shapes(i).Paint(g,r) Next i End Sub End Class Dim Ellipse1 as New Ellipse() Dim Box1 as New Box() Dim Collection1 as New ShapeList() Collection1.AddShape(Ellipse1) Collection1.AddShape(Box1) Collection1.DrawAllShapes(CurrentScreen, rect1)
  35. 35. Ejercicio. <ul><li>Definir una clase “Animal” una clase “Animal carnívoro” y una clase “Animal herbiboro” </li></ul><ul><li>Definir clase “vaca”, “perro”, (“tiburon”) </li></ul><ul><li>Perro(ladrar, caminar, dormir) </li></ul><ul><li>Tiburon(nadar, dormir) </li></ul>
  36. 36. Sobrecarga de métodos. <ul><li>Los procedimientos funciones pueden declararse varias veces con el mismo nombre pero con diferentes parámetros. </li></ul><ul><li>En tiempo de ejecución al invocar el método se hace el enlace con el método que corresponda según el tipo de parámetros que se estén pasando. </li></ul>
  37. 37. Sobrecarga de métodos. Public Class ShapeList Private Shapes as ArrayList Public Sub AddShape(ByVal aShape as Shape) Shapes.Add(aShape) End sub Public Overloads Sub DrawAllShapes( g As Graphics, r As Rectangle ) Dim i as Integer For i = 0 to Shapes.Count – 1 Shapes(i).Paint(g,r) Next i End Sub Public Overloads Sub DrawAllShapes( r As Rectangle ) Dim i as Integer For i = 0 to Shapes.Count – 1 Shapes(i).Paint(defaultGraphics,r) Next i End Sub End Class
  38. 38. Interfaces. <ul><li>Una interface es un conjunto de definiciones de métodos y/o propiedades sin implementación. </li></ul><ul><li>Las interfaces expresan funcionalidad (el que debe hacer un objeto?) </li></ul><ul><li>La interface no es una clase abstracta aunque se le parezca. </li></ul><ul><li>Las definiciones que se den de miembros de interfaces han de ser siempre públicas y no pueden incluir override , sí pueden dársele los modificadores como Overridable ó MustOverride y usar Overrides en redefiniciones que se les den en clases hijas de la clase que implemente la interfaz. </li></ul>
  39. 39. Interfaces. Public Interface IShapeList Sub AddShape(ByVal aShape as Shape) Function CountShapes as Integer Sub ClearList() Sub Overloads DrawAllShapes( g As Graphics, r As Rectangle ) Sub Overloads DrawAllShapes( r As Rectangle ) End Interface Las clases pueden implementar una o varias interfaces al mismo tiempo y heredar de alguna clase. Por ejemplo: Public Class ShapeList Implements IShapeList Sub AddShape(ByVal aShape as Shape) Implements IShapeList.AddShape Shapes.Add(aShape) End Sub ´ La clase debe implementar todos los métodos de la interface. ´ ... End Interface
  40. 40. Elementos de clase. <ul><li>Elementos que pertenecen a la clase y no a la instancia que pueda crearse. </li></ul><ul><li>No es necesario crear una instancia. </li></ul><ul><li>No se puede acceder a un elemento (no se clase) desde un elemento de clase. A la inversa si. </li></ul><ul><li>Los elementos de clase suelen llamarse estáticos o compartidos. </li></ul><ul><li>En VB.net se identifican con el modificador Shared. </li></ul>
  41. 41. Elementos de clase. Public Class Cuenta Public Shared Interes = 15 Public Shared Function AplicarInteres(ByVal saldo as Float) AplicarInteres = saldo + (saldo * Interes / 100) End Function ´ ... End Class
  42. 42. Enumerativos <ul><li>Public Enum CartridgeState </li></ul><ul><li>EMPTY </li></ul><ul><li>LOW </li></ul><ul><li>HALF </li></ul><ul><li>FULL </li></ul><ul><li>End Enum </li></ul>
  43. 43. Eventos. <ul><li>Eventos: </li></ul><ul><li>Public Class Employe   Public Event EmployeEvent()   Public Sub DoEvent()     RaiseEvent EmployeEvent()   End Sub End Class </li></ul><ul><li>Asingnación Estática de Manejadores de eventos: </li></ul><ul><li>Public class Caller </li></ul><ul><li>Public Employe1 WithEvents as new Employe() </li></ul><ul><li>Protected Sub CallEvent() Handles Employe1.EmployeEvent </li></ul><ul><li>End Sub </li></ul><ul><li>End class </li></ul>Los eventos no poseen valor de retorno.
  44. 44. Eventos <ul><li>Eventos, Asignación dinámica: </li></ul>Public Class Employe   Public Event EmployeEvent()   Public Sub DoEvent()     RaiseEvent EmployeEvent()   End Sub End Class Public class Caller Public Employe1 WithEvents as new Employe() Protected Sub CallEvent() ´ Do someting End Sub End class Dim Caller1 as new Caller() Dim Employe1 as new Employe() AddHandler Employe1.EmployeEvent, AddressOf Caller1.CallEvent
  45. 45. Delegados <ul><li>Public Delegate Sub EmployeEventHandler(ByVal nState As Integer) </li></ul><ul><li>Public Delegate Function EmployeEventHandler(ByVal nState As EmployeState) as boolean </li></ul><ul><li>Public Class Employe   Public Event EmployeEvent as EmployeEventHandler </li></ul><ul><li> Public Sub DoEvent()     Result = EmployeEvent.Invoke(1);   End Sub End Class </li></ul><ul><li>Asignacion de delegados: </li></ul><ul><li>Public Class Caller </li></ul><ul><li> Public Sub CallEvent() </li></ul><ul><li> Dim emp as new Employe </li></ul><ul><li> AddHandler(emp.EmployEvent, new EmployeEventHandler(AddressOf Manager)) </li></ul><ul><li> End Sub </li></ul><ul><li>    </li></ul><ul><li> Public Function Manager(ByVal nState As EmployeState) as boolean </li></ul><ul><li> End Function </li></ul><ul><li>End Class </li></ul>
  46. 46. VB  VB.NET <ul><li>Propiedades. </li></ul><ul><li>Public class Persona </li></ul><ul><li>Private Anio_de_nacimiento as integer </li></ul><ul><li>Public Property Edad() as integer </li></ul><ul><li>Get </li></ul><ul><li>Return System.Now.GetYear() - Anio_de_nacimiento </li></ul><ul><li>End Get </li></ul><ul><li>Set (ByVal Value as Integer) </li></ul><ul><li>Anio_de_nacimiento = System.Now.GetYear() - Value </li></ul><ul><li>End Set </li></ul><ul><li>End property </li></ul><ul><li>End Class </li></ul>
  47. 47. VB  VB.NET <ul><li>Estructuras. </li></ul><ul><li>' Structure to hold and manage a complex number </li></ul><ul><li>Public Structure Complex </li></ul><ul><li>Public Real As Double </li></ul><ul><li>Public Imag As Double ' &quot;Imaginary&quot; part (coefficient of &quot;i&quot;) </li></ul><ul><li>' Add another complex number to this one: </li></ul><ul><li>Public Function Plus(ByVal Operand As Complex) As Complex </li></ul><ul><li>Plus.Real = Operand.Real + Real </li></ul><ul><li>Plus.Imag = Operand.Imag + Imag </li></ul><ul><li>End Function </li></ul><ul><li>' Multiply this complex number by another one: </li></ul><ul><li>Public Function Times(ByVal Operand As Complex) As Complex </li></ul><ul><li>Times.Real = (Operand.Real * Real) - (Operand.Imag * Imag) </li></ul><ul><li>Times.Imag = (Operand.Imag * Real) + (Operand.Real * Imag) </li></ul><ul><li>End Function </li></ul><ul><li>' Invert this complex number: </li></ul><ul><li>Public Function Reciprocal() As Complex </li></ul><ul><li>Dim Denominator As Double = (Real * Real) + (Imag * Imag) </li></ul><ul><li>If Denominator = 0 Then Throw New System.DivideByZeroException() </li></ul><ul><li>Reciprocal.Real = Real / Denominator </li></ul><ul><li>Reciprocal.Imag = -Imag / Denominator </li></ul><ul><li>End Function </li></ul><ul><li>End Structure ' Complex </li></ul>
  48. 48. VB  VB.NET <ul><li>Variant  Object </li></ul><ul><li>Option Explicit es por defecto ON </li></ul><ul><li>Set y Let no son soportados. </li></ul><ul><li>Uso de paréntesis en llamadas a métodos. </li></ul><ul><li>No hay propiedades por defecto. </li></ul>
  49. 49. Ejercicio. <ul><li>Defina un almacen, el almacen puede tener cualquier cantidad de articulos. </li></ul><ul><li>Todos los objetos deben tener las siguientes propiedades: </li></ul><ul><ul><li>Estado :(‘nuevo’,’usado’,’dañado’). </li></ul></ul><ul><ul><li>Nombre: cadena. </li></ul></ul><ul><ul><li>ID: numérico. </li></ul></ul><ul><li>El almacen tienes las siguientes funcionalidades: </li></ul><ul><ul><li>Adicionar articulo </li></ul></ul><ul><ul><li>Eliminar un articulo por su ID </li></ul></ul><ul><ul><li>Buscar artículos por filtro de nombre </li></ul></ul><ul><li>Desarrollar la aplicación en Windows Form. </li></ul>

×