Net1 oop vbnet

49
Curso Plataforma .NET Curso Plataforma .NET Lic. Israel García Anido Lic. Israel García Anido

description

PROGRAMACIÓN ORIENTADA A OBJETOS

Transcript of Net1 oop vbnet

Page 1: Net1 oop vbnet

Curso Plataforma .NETCurso Plataforma .NET

Lic. Israel García AnidoLic. Israel García Anido

Page 2: Net1 oop vbnet

TemarioTemario

• POO y migración desde VB a VB.net.POO y migración desde VB a VB.net.

• Introduccion a la Plataforma .NETIntroduccion a la Plataforma .NET

• ASP.NET(4 clases)ASP.NET(4 clases)

• Configuración de aplicaciones.Configuración de aplicaciones.

• Servicios WEB XMLServicios WEB XML

• Construyendo aplicaciones seguras.Construyendo aplicaciones seguras.

• Interoperatividad.Interoperatividad.

• Tracing y Debugging.Tracing y Debugging.

Page 3: Net1 oop vbnet

Programación orientada a Programación orientada a Objetos (POO), en ingles Objetos (POO), en ingles (OOP).(OOP).

Década del 70: SmallTalk (OO puro)Década del 70: SmallTalk (OO puro)

Década del 80: C++ y Pascal (híbridos)Década del 80: C++ y Pascal (híbridos)

Estos lenguajes OO introducen el Estos lenguajes OO introducen el concepto de Clase, como tipo de dato.concepto de Clase, como tipo de dato.

Page 4: Net1 oop vbnet

Objeto.Objeto.

El concepto de objeto puede extenderse El concepto de objeto puede extenderse prácticamente a cualquier cosa, tanto real prácticamente a cualquier cosa, tanto real como ficticia o imaginaria. En el contexto como ficticia o imaginaria. En el contexto de la programación Orientada a Objetos, se de la programación Orientada a Objetos, se refiere a algo que posea refiere a algo que posea estadoestado, , comportamientocomportamiento e e identidadidentidad. Su estado y . Su estado y comportamiento se definen en una comportamiento se definen en una claseclase común. Por tanto, una clase podra tener común. Por tanto, una clase podra tener muchos objetos de su tipo, pero sin muchos objetos de su tipo, pero sin embargo un objeto solo podrá pertenecer a embargo un objeto solo podrá pertenecer a una clase. una clase.

Page 5: Net1 oop vbnet

Clase.Clase.

Se trata de realizar una abstracción Se trata de realizar una abstracción denominada clase, esta permite la denominada clase, esta permite la agrupación de objetos que agrupación de objetos que comparten las mismas propiedades y comparten las mismas propiedades y comportamiento. No se debe olvidar comportamiento. No se debe olvidar que la clase es una generalización de que la clase es una generalización de objeto.objeto.

Page 6: Net1 oop vbnet

Instancia.Instancia.

Una instancia es en si un objeto que se Una instancia es en si un objeto que se clasifica dentro de una determinada clasifica dentro de una determinada clase, se le denomina instancia para clase, se le denomina instancia para resaltar el conceptos de creación en resaltar el conceptos de creación en un momento dado, que tiene un un momento dado, que tiene un tiempo de vida y que pertenece a tiempo de vida y que pertenece a algo, o sea: la instancia de una clase.algo, o sea: la instancia de una clase.

Page 7: Net1 oop vbnet

Conceptos intrínsecos de Conceptos intrínsecos de POO.POO.

• Abstracción.Abstracción.

• Encapsulamiento.Encapsulamiento.

• Herencia.Herencia.

• Polimorfismo.Polimorfismo.

Page 8: Net1 oop vbnet

Abstracción.Abstracción.

La La abstracciónabstracción es una forma de trabajar con es una forma de trabajar con la complejidad que nos impone el mundo la complejidad que nos impone el mundo real. Una real. Una abstracciónabstracción denota las denota las caraterísticas esenciales de un objeto que lo caraterísticas esenciales de un objeto que lo distinguen de todos los demás tipos de distinguen de todos los demás tipos de objeto y proporciona así fronteras objeto y proporciona así fronteras conceptuales nítidamente definidas respecto conceptuales nítidamente definidas respecto a la perspectiva del observador. Nos permite a la perspectiva del observador. Nos permite separar el separar el comportamientocomportamiento de la de la implementación. Será más importante saber implementación. Será más importante saber qué se hacequé se hace, y no cómo se hace. , y no cómo se hace.

Page 9: Net1 oop vbnet

Abstracción.Abstracción.

Ejemplo: Un sensor de temperatura. Ejemplo: Un sensor de temperatura.

Sabemos que... Sabemos que...

Mide la temperatura y nos la dice. Mide la temperatura y nos la dice.

Se puede calibrar... Se puede calibrar...

No sabemos.... No sabemos....

Como mide la temperatura. Como mide la temperatura.

De que esta hecho.... De que esta hecho....

Page 10: Net1 oop vbnet

Encapsulamiento.Encapsulamiento.

Consiste en reunir estados y métodos dentro Consiste en reunir estados y métodos dentro de un entorno limitado, en otras palabras de un entorno limitado, en otras palabras realizar encapsulación.realizar encapsulación.

Se trata de que ninguna parte de un sistema Se trata de que ninguna parte de un sistema complejo dependa de los detalles internos de complejo dependa de los detalles internos de otra parte. Es por tanto otra parte. Es por tanto complementario complementario de la abstracciónde la abstracción. La principal forma de . La principal forma de conseguir este objetivo es mediante la conseguir este objetivo es mediante la ocultación de la informaciónocultación de la información. Todos . Todos aquellos aspectos de un objeto que no aquellos aspectos de un objeto que no contribuyen a sus características esenciales contribuyen a sus características esenciales (estructura e implementación de sus (estructura e implementación de sus métodos) queda métodos) queda escondidoescondido. .

Page 11: Net1 oop vbnet

Encapsulamiento.Encapsulamiento.

Ejemplo: Un Triangulo.Ejemplo: Un Triangulo.Vemos:Vemos:

Se puede construir con tres puntos.Se puede construir con tres puntos.Se puede construir con un vector y un punto.Se puede construir con un vector y un punto.Se puede mostrar. (dibujar en pantalla)Se puede mostrar. (dibujar en pantalla)Se puede ocultar.Se puede ocultar.Se puede mover.Se puede mover.Se puede aumentar su escala.Se puede aumentar su escala.

No vemos:No vemos:Como está representado internamente… con tres puntos o Como está representado internamente… con tres puntos o con un vector y un punto…con un vector y un punto…Como se oculta… si dibuja el fondo sobre el triangulo o si Como se oculta… si dibuja el fondo sobre el triangulo o si elimina las lineas de los lados con una recta de color elimina las lineas de los lados con una recta de color inverso.inverso.

Page 12: Net1 oop vbnet

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

Page 13: Net1 oop vbnet

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.

Page 14: Net1 oop vbnet

Ejercicio.Ejercicio.

• Crear una clase en VB.NETCrear una clase en VB.NET

Page 15: Net1 oop vbnet

Herencia.Herencia.

Es la relación más Es la relación más característica de la OOPcaracterística de la OOP. . Expresa en general una Expresa en general una especializaciónespecialización o una o una generalizacióngeneralización de una clase sobre la otra. Sirve de una clase sobre la otra. Sirve para evitar definir las características comunes a para evitar definir las características comunes a un conjunto de clases multiples veces. También se un conjunto de clases multiples veces. También se denomina denomina relación "relación "es un/aes un/a""..

La clase de la cual se hereda recibe el nombre de La clase de la cual se hereda recibe el nombre de clase baseclase base o o superclasesuperclase. La clase que hereda se . La clase que hereda se llama llama clase derivadaclase derivada o o subclasesubclase. A través de . A través de esta relación la subclase comparte la estructura esta relación la subclase comparte la estructura y/o el comportamiento de la superclase (y/o el comportamiento de la superclase (herencia herencia simplesimple) o superclases () o superclases (herencia múltipleherencia múltiple). ).

Page 16: Net1 oop vbnet

Herencia.Herencia.

• En Visual Basic .NET no existe el En Visual Basic .NET no existe el concepto de herencia múltiple como concepto de herencia múltiple como en C++.en C++.

• Este concepto ha sido revocado por Este concepto ha sido revocado por los lenguajes modernos como Java, los lenguajes modernos como Java, C# y VB.NET.C# y VB.NET.

• Para declarar que una clase hereda de Para declarar que una clase hereda de otra se especifica el atributo: Inheritsotra se especifica el atributo: Inherits

Page 17: Net1 oop vbnet

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

Page 18: Net1 oop vbnet

Llamado a métodos de clases Llamado a métodos de clases padres.padres.

• Variable “Me”: Invoca un método de la clase en la que se encuentra.Variable “Me”: Invoca un método de la clase en la que se encuentra.

• Variable “MyBase”: Invoca un método de la clase del padre.Variable “MyBase”: Invoca un método de la clase del padre.

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

Page 19: Net1 oop vbnet

Métodos abstractos.Métodos abstractos.

• Los métodos abstractos solo se Los métodos abstractos solo se pueden declarar en clases que han pueden declarar en clases que han sido declaradas como abstractas.sido declaradas como abstractas.

• Se declaran en Visual Basic .NET con Se declaran en Visual Basic .NET con el modificador MustOverride.el modificador MustOverride.

• No contiene implementación, es solo No contiene implementación, es solo una declaración.una declaración.

• Expresan funcionalidad. (El qué hace?)Expresan funcionalidad. (El qué hace?)

Page 20: Net1 oop vbnet

Clases Abstractas.Clases Abstractas.

• Una clase abstracta es una clase que al menos Una clase abstracta es una clase que al menos posee un método abstracto.posee un método abstracto.

• Las clases abstractas no se pueden instanciar.Las clases abstractas no se pueden instanciar.• En Visual Basic .NET se declaran con el atributo En Visual Basic .NET se declaran con el atributo

MustInherit.MustInherit.• Cualquier clase no abstracta que herede de una Cualquier clase no abstracta que herede de una

clase abstracta deberá implementar los clase abstracta deberá implementar los métodos abstractos de su clase padre.métodos abstractos de su clase padre.

• Si una clase abstracta hereda de otra clase Si una clase abstracta hereda de otra clase abstracta puede no implementar sus métodos abstracta puede no implementar sus métodos abstractos y adicionar mas.abstractos y adicionar mas.

• Una clase abstracta puede heredar de una no Una clase abstracta puede heredar de una no abstracta y adicionar metodos abstractos.abstracta y adicionar metodos abstractos.

Page 21: Net1 oop vbnet

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

Page 22: Net1 oop vbnet

Modificadores de Visibilidad de Modificadores de Visibilidad de Métodos.Métodos.• Public:Public: elementos que pueden ser accedidos elementos que pueden ser accedidos

desde cualquier contexto, dentro o fuera de la desde cualquier contexto, dentro o fuera de la clase en que se han definido.clase en que se han definido.

• Private:Private: elementos que pueden ser accedidos elementos que pueden ser accedidos solo desde dentro de la clase en que han sido solo desde dentro de la clase en que han sido definidos. definidos. Es lo considerado por defectoEs lo considerado por defecto..

• Protected:Protected: elementos que pueden ser accedidos elementos que pueden ser accedidos desde dentro de la clase en que es declarado y desde dentro de la clase en que es declarado y en las clases que deriven de la misma.en las clases que deriven de la misma.

• Friend:Friend: elementos que pueden ser accedidos elementos que pueden ser accedidos desde las clases que han sido definidas en el desde las clases que han sido definidas en el mismo paquete o proyecto.mismo paquete o proyecto.

• Protected Friend:Protected Friend: elementos que s elementos que sólo pueden ólo pueden ser accedidos desde clases que deriven de esta y ser accedidos desde clases que deriven de esta y que esten definidas en el mismo proyecto.que esten definidas en el mismo proyecto.

Page 23: Net1 oop vbnet

Modificadores de Visibilidad de Modificadores de Visibilidad de Clases.Clases.

• Public:Public: Es posible acceder a la clase Es posible acceder a la clase desde cualquier ensamblado externo.desde cualquier ensamblado externo.

• Friend:Friend: Sólo es posible acceder a la Sólo es posible acceder a la clase desde el proyecto donde se clase desde el proyecto donde se declaró. declaró. Es lo considerado por Es lo considerado por defecto.defecto.

Page 24: Net1 oop vbnet

Ejercicio.Ejercicio.

• Definir una clase estudiante y una Definir una clase estudiante y una clase estudiante-trabajador.clase estudiante-trabajador.

Page 25: Net1 oop vbnet

Construcción.Construcción.• Cuando se quiere trabajar con clases, es Cuando se quiere trabajar con clases, es

necesario crear objetos (instancias de las necesario crear objetos (instancias de las clases)clases)

• Todas las clases tienen un constructor Todas las clases tienen un constructor público por defecto sin parámetros, esto público por defecto sin parámetros, esto es debido a que todas heredan es debido a que todas heredan implicitamente de la clase System.Object.implicitamente de la clase System.Object.

• Para instanciar una clase es necesario Para instanciar una clase es necesario invocar el contructor de la misma.invocar el contructor de la misma.

• El constructor de una clase en VB.NET se El constructor de una clase en VB.NET se nombra como un Sub “New”nombra como un Sub “New”

Page 26: Net1 oop vbnet

Construcción.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 FunctionEnd Class

Dim User1 as EmpleadoUser1 = New Empleado()User1.Login(MySystem)

Dim User1 as New Empleado()User1.Login(MySystem)

Page 27: Net1 oop vbnet

Sobrecarga de constructores.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 FunctionEnd Class

Dim User1 as New Empleado(“guest”, “123”)User1.Login(MySystem)

Page 28: Net1 oop vbnet

DestructoresDestructores

• Cuando una instancia se va a dejar de utilizar, debe Cuando una instancia se va a dejar de utilizar, debe destruirse para liberar los recursos que consume.destruirse para liberar los recursos que consume.

• En la plataforma .NET existe un proceso llamado En la plataforma .NET existe un proceso llamado Recolector de basura que mantiene una lista de las Recolector de basura que mantiene una lista de las referencias creadas y referencias inválidas, cuando referencias creadas y referencias inválidas, cuando un proceso necesita memoria, el ambiente .NET un proceso necesita memoria, el ambiente .NET verifica que hay memoria disponible para ese verifica que hay memoria disponible para ese proceso, si no hay llama al recolector de basura para proceso, si no hay llama al recolector de basura para que libere los recursos no utilizados de todas las que libere los recursos no utilizados de todas las referencias inválidas.referencias inválidas.

• Dentro de la plataforma .NET no es necesario llamar Dentro de la plataforma .NET no es necesario llamar el destructor de las clases, pero se pueden hacer el destructor de las clases, pero se pueden hacer operaciones antes de que la clase sea destruida por operaciones antes de que la clase sea destruida por el Recolector de Basura.el Recolector de Basura.

Page 29: Net1 oop vbnet

Finalize method.Finalize method.

• Es invocado justo antes de que el Recolector Es invocado justo antes de que el Recolector de basura destruya la instancia de la clase.de basura destruya la instancia de la clase.

• Puede ser de utilidad para realizar alguna Puede ser de utilidad para realizar alguna acción antes de que el objeto sea destruido.acción antes de que el objeto sea destruido.

• Finalize es heredado de System.Object por Finalize es heredado de System.Object por lo que si se sobreescrbe debe declararse lo que si se sobreescrbe debe declararse como mismo esta declarado el padre:como mismo esta declarado el padre:

Protected Overrides Sub Finalize()Protected Overrides Sub Finalize()  ‘ clean up code goes here   ‘ clean up code goes here End SubEnd Sub

Page 30: Net1 oop vbnet

Dispose methodDispose method• Objetos que hacen consumo exhaustivo de Objetos que hacen consumo exhaustivo de

muchos recursos.muchos recursos.• Mantienen conexiones abiertas a bases de datos, Mantienen conexiones abiertas a bases de datos,

archivos, etc.archivos, etc.• Es neserario liberar la memoria del objeto una vez Es neserario liberar la memoria del objeto una vez

que se deje de usar y no esperar a que el que se deje de usar y no esperar a que el recolector de basura lo determine.recolector de basura lo determine.

• Se crea un método en la clase llamado Dispose Se crea un método en la clase llamado Dispose que cuando se invoca este método se liberan los que cuando se invoca este método se liberan los recursos que consume este objeto.recursos que consume este objeto.

Public Sub Dispose()Public Sub Dispose()  ‘ clean up code goes here   ‘ clean up code goes here

End Sub End Sub

Page 31: Net1 oop vbnet

Polimorfismo.Polimorfismo.

• Es una caracteristica especial donde un Es una caracteristica especial donde un identificador es declarado estáticamente identificador es declarado estáticamente de un tipo de clase y puede contener en de un tipo de clase y puede contener en tiempo de ejecución una instancia de otro tiempo de ejecución una instancia de otro tipo de clase derivada del tipo declarado.tipo de clase derivada del tipo declarado.

• Cuando se invoca un método Cuando se invoca un método virtualvirtual a a esta instancia, se invocará el método esta instancia, se invocará el método correcto según el tipo de objeto que esté correcto según el tipo de objeto que esté dinámicamente instanciado. dinámicamente instanciado.

Page 32: Net1 oop vbnet

Polimorfismo. Métodos Polimorfismo. Métodos virtuales.virtuales.

• Los métodos virtuales son declarados en Los métodos virtuales son declarados en Visual Basic .NET con el modificador Visual Basic .NET con el modificador Overridable.Overridable.

• Los métodos abstractos siempre son Los métodos abstractos siempre son virtuales.virtuales.

• Para especificar que se quiere Para especificar que se quiere especializar o sobreescribir un método especializar o sobreescribir un método en una nueva clase se declara este en la en una nueva clase se declara este en la clase hija de la misma forma que está clase hija de la misma forma que está declarado en la clase padre y se le declarado en la clase padre y se le coloca el modificador “Overrides”.coloca el modificador “Overrides”.

Page 33: Net1 oop vbnet

Polimorfismo, ejemplo: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

Page 34: Net1 oop vbnet

Polimorfismo, ejemplo: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 SubEnd 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)

Page 35: Net1 oop vbnet

Ejercicio.Ejercicio.

• Definir una clase “Animal” una clase Definir una clase “Animal” una clase “Animal carnívoro” y una clase “Animal carnívoro” y una clase “Animal herbiboro”“Animal herbiboro”

• Definir clase “vaca”, “perro”, Definir clase “vaca”, “perro”, (“tiburon”)(“tiburon”)

• Perro(ladrar, caminar, dormir)Perro(ladrar, caminar, dormir)

• Tiburon(nadar, dormir)Tiburon(nadar, dormir)

Page 36: Net1 oop vbnet

Sobrecarga de métodos.Sobrecarga de métodos.

• Los procedimientos funciones pueden Los procedimientos funciones pueden declararse varias veces con el mismo declararse varias veces con el mismo nombre pero con diferentes nombre pero con diferentes parámetros.parámetros.

• En tiempo de ejecución al invocar el En tiempo de ejecución al invocar el método se hace el enlace con el método se hace el enlace con el método que corresponda según el tipo método que corresponda según el tipo de parámetros que se estén pasando.de parámetros que se estén pasando.

Page 37: Net1 oop vbnet

Sobrecarga de métodos.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 SubEnd Class

Page 38: Net1 oop vbnet

Interfaces.Interfaces.

• Una interface es un conjunto de definiciones de Una interface es un conjunto de definiciones de métodos y/o propiedades sin implementación.métodos y/o propiedades sin implementación.

• Las interfaces expresan funcionalidad (el que Las interfaces expresan funcionalidad (el que debe hacer un objeto?)debe hacer un objeto?)

• La interface no es una clase abstracta aunque La interface no es una clase abstracta aunque se le parezca.se le parezca.

• Las definiciones que se den de miembros de Las definiciones que se den de miembros de interfaces han de ser siempre públicas y no interfaces han de ser siempre públicas y no pueden incluir pueden incluir overrideoverride, sí pueden dársele los , sí pueden dársele los modificadores como modificadores como OverridableOverridable ó ó MustOverrideMustOverride y usar y usar OverridesOverrides en en redefiniciones que se les den en clases hijas de redefiniciones que se les den en clases hijas de la clase que implemente la interfaz.la clase que implemente la interfaz.

Page 39: Net1 oop vbnet

Interfaces.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

Page 40: Net1 oop vbnet

Elementos de clase.Elementos de clase.

• Elementos que pertenecen a la clase y no Elementos que pertenecen a la clase y no a la instancia que pueda crearse.a la instancia que pueda crearse.

• No es necesario crear una instancia.No es necesario crear una instancia.• No se puede acceder a un elemento (no se No se puede acceder a un elemento (no se

clase) desde un elemento de clase. A la clase) desde un elemento de clase. A la inversa si.inversa si.

• Los elementos de clase suelen llamarse Los elementos de clase suelen llamarse estáticos o compartidos.estáticos o compartidos.

• En VB.net se identifican con el modificador En VB.net se identifican con el modificador Shared.Shared.

Page 41: Net1 oop vbnet

Elementos de clase.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

Page 42: Net1 oop vbnet

EnumerativosEnumerativos

Public Enum CartridgeStatePublic Enum CartridgeState

EMPTYEMPTY

LOWLOW

HALFHALF

FULLFULL

End EnumEnd Enum

Page 43: Net1 oop vbnet

Eventos.Eventos.• Eventos:Eventos: Public Class Employe Public Class Employe

  Public Event EmployeEvent()   Public Event EmployeEvent()   Public Sub DoEvent()   Public Sub DoEvent()     RaiseEvent EmployeEvent()     RaiseEvent EmployeEvent()   End Sub   End Sub End ClassEnd Class

Asingnación Estática de Manejadores de Asingnación Estática de Manejadores de eventos:eventos:

Public class CallerPublic class Caller Public Employe1 WithEvents as new Employe()Public Employe1 WithEvents as new Employe() Protected Sub CallEvent() Handles Employe1.EmployeEventProtected Sub CallEvent() Handles Employe1.EmployeEvent End SubEnd Sub End classEnd class

Los eventos no poseen valor de retorno.Los eventos no poseen valor de retorno.

Page 44: Net1 oop vbnet

EventosEventos• Eventos, Asignación dinámica:Eventos, Asignación dinámica:

Public Class Employe Public Class Employe   Public Event EmployeEvent()   Public Event EmployeEvent()   Public Sub DoEvent()   Public Sub DoEvent()     RaiseEvent EmployeEvent()     RaiseEvent EmployeEvent()   End Sub   End Sub End ClassEnd Class

Public class CallerPublic class Caller Public Employe1 WithEvents as new Employe()Public Employe1 WithEvents as new Employe() Protected Sub CallEvent() Protected Sub CallEvent() ´ Do someting ´ Do someting End Sub End Sub End classEnd class

Dim Caller1 as new Caller()Dim Caller1 as new Caller()Dim Employe1 as new Employe()Dim Employe1 as new Employe()

AddHandler Employe1.EmployeEvent, AddressOf Caller1.CallEventAddHandler Employe1.EmployeEvent, AddressOf Caller1.CallEvent

Page 45: Net1 oop vbnet

DelegadosDelegadosPublic Delegate Sub EmployeEventHandler(ByVal nState As Integer)Public Delegate Sub EmployeEventHandler(ByVal nState As Integer)

Public Delegate Function EmployeEventHandler(ByVal nState As EmployeState) Public Delegate Function EmployeEventHandler(ByVal nState As EmployeState) as booleanas boolean

Public Class Employe Public Class Employe     Public Event EmployeEvent as EmployeEventHandlerPublic Event EmployeEvent as EmployeEventHandler

Public Sub DoEvent() Public Sub DoEvent()     Result = EmployeEvent.Invoke(1);    Result = EmployeEvent.Invoke(1);  End Sub   End Sub End ClassEnd Class

• Asignacion de delegados:Asignacion de delegados:

Public Class CallerPublic Class Caller

Public Sub CallEvent()Public Sub CallEvent() Dim emp as new EmployeDim emp as new Employe

AddHandler(emp.EmployEvent, new EmployeEventHandler(AddressOf Manager))AddHandler(emp.EmployEvent, new EmployeEventHandler(AddressOf Manager)) End SubEnd Sub

       Public Function Manager(ByVal nState As EmployeState) as booleanPublic Function Manager(ByVal nState As EmployeState) as boolean

End FunctionEnd FunctionEnd ClassEnd Class

Page 46: Net1 oop vbnet

VB VB VB.NET VB.NET

• Propiedades.Propiedades.

Public class PersonaPublic class Persona Private Anio_de_nacimiento as integerPrivate Anio_de_nacimiento as integer Public Property Edad() as integerPublic Property Edad() as integer GetGet Return System.Now.GetYear() - Anio_de_nacimientoReturn System.Now.GetYear() - Anio_de_nacimiento End GetEnd Get Set (ByVal Value as Integer)Set (ByVal Value as Integer) Anio_de_nacimiento = System.Now.GetYear() - ValueAnio_de_nacimiento = System.Now.GetYear() - Value End SetEnd Set End propertyEnd propertyEnd ClassEnd Class

Page 47: Net1 oop vbnet

VB VB VB.NET VB.NET• Estructuras.Estructuras.

' ' Structure to hold and manage a complex number Structure to hold and manage a complex number Public Structure ComplexPublic Structure Complex Public Real As DoublePublic Real As Double Public Imag As Double ' "Imaginary" part (coefficient of "i") Public Imag As Double ' "Imaginary" part (coefficient of "i") ' Add another complex number to this one: ' Add another complex number to this one: Public Function Plus(ByVal Operand As Complex) As ComplexPublic Function Plus(ByVal Operand As Complex) As Complex Plus.Real = Operand.Real + Real Plus.Real = Operand.Real + Real Plus.Imag = Operand.Imag + Imag Plus.Imag = Operand.Imag + Imag End Function End Function ' Multiply this complex number by another one: ' Multiply this complex number by another one: Public Function Times(ByVal Operand As Complex) As Complex Public Function Times(ByVal Operand As Complex) As Complex Times.Real = (Operand.Real * Real) - (Operand.Imag * Imag)Times.Real = (Operand.Real * Real) - (Operand.Imag * Imag) Times.Imag = (Operand.Imag * Real) + (Operand.Real * Imag) Times.Imag = (Operand.Imag * Real) + (Operand.Real * Imag) End Function End Function ' Invert this complex number: ' Invert this complex number: Public Function Reciprocal() As Complex Public Function Reciprocal() As Complex Dim Denominator As Double = (Real * Real) + (Imag * Imag) Dim Denominator As Double = (Real * Real) + (Imag * Imag) If Denominator = 0 Then Throw New System.DivideByZeroException() If Denominator = 0 Then Throw New System.DivideByZeroException() Reciprocal.Real = Real / Denominator Reciprocal.Real = Real / Denominator Reciprocal.Imag = -Imag / Denominator Reciprocal.Imag = -Imag / Denominator End Function End Function End Structure ' Complex End Structure ' Complex

Page 48: Net1 oop vbnet

VB VB VB.NET VB.NET

• Variant Variant Object Object

• Option Explicit es por defecto ONOption Explicit es por defecto ON

• Set y Let no son soportados.Set y Let no son soportados.

• Uso de paréntesis en llamadas a Uso de paréntesis en llamadas a métodos.métodos.

• No hay propiedades por defecto.No hay propiedades por defecto.

Page 49: Net1 oop vbnet

Ejercicio.Ejercicio.

• Defina un almacen, el almacen puede tener Defina un almacen, el almacen puede tener cualquier cantidad de articulos. cualquier cantidad de articulos.

• Todos los objetos deben tener las siguientes Todos los objetos deben tener las siguientes propiedades: propiedades: Estado :(‘nuevo’,’usado’,’dañado’).Estado :(‘nuevo’,’usado’,’dañado’).Nombre: cadena.Nombre: cadena.ID: numérico.ID: numérico.

• El almacen tienes las siguientes funcionalidades:El almacen tienes las siguientes funcionalidades:Adicionar articuloAdicionar articuloEliminar un articulo por su IDEliminar un articulo por su IDBuscar artículos por filtro de nombreBuscar artículos por filtro de nombre

• Desarrollar la aplicación en Windows Form.Desarrollar la aplicación en Windows Form.