Sie sind auf Seite 1von 49

1

1. Introduccion

Miembros de la clase

Los elementos de una clase que contienen sus datos y definen su comportamiento, es decir, las propiedades y mtodos, reciben adems el nombre de miembros de la clase, trmino que tambin utilizaremos a partir de ahora.
Existen dos formas de almacenar los datos o informacin en una clase: a travs de campos de clase y de propiedades. El uso de campos o propiedades para una clase es una cuestin de diseo, no pudiendo afirmar categricamente que un tipo de almacenamiento de datos sea mejor que otro.
2

Definir la informacin de la clase

Campos
Public Class BankAccount Private Adding abalance data member named As Double

balance
End Class
Keyword
Public
Private

Definition
Totalmente accesible Accesible sol dentro de el mismo

Propiedades

Una propiedad en la clase se define, por norma general, mediante dos elementos: una variable de propiedad y un procedimiento de propiedad. La variable de propiedad, tal y como su nombre indica, es una variable con mbito privado a nivel de la clase, que se encarga de guardar el valor de la propiedad. Por su parte el procedimiento de propiedad o Property, es el encargado de actuar de puente entre el cdigo cliente y la variable de propiedad, realizando las operaciones de acceso y asignacin de valores a dicha variable.

Propiedades
Private customerName As String Public Property Name( ) As String Get Return customerName End Get Set(ByVal Value As String) customerName = Value End Set End Property
5

Propiedades

Pueden crearse propiedades de solo lectura o escritura


Public ReadOnly Property Public WriteOnly Property

Propiedades

Propiedades virtuales

Otra de las ventajas del uso de propiedades reside en la posibilidad de definir propiedades virtuales; es decir, una propiedad que no tenga una correspondencia directa con una variable de propiedad, ya que podemos crear un procedimiento Property que no est obligatoriamente asociado con una variable.

Propiedades

Propiedades predeterminadas

Una propiedad predeterminada o por defecto, es aquella que nos permite su manipulacin omitiendo el nombre. Para establecer una propiedad como predeterminada en una clase, la variable de propiedad asociada deber ser un array, pudiendo crear slo una propiedad predeterminada por clase. Al declarar una propiedad por defecto, deberemos utilizar al comienzo de la sentencia de declaracin, la palabra clave Default. Para asignar y obtener valores de este tipo de propiedad, tendremos que utilizar el ndice del array que internamente gestiona la propiedad.
8

Mtodos

Para crear un mtodo en una clase debemos escribir un procedimiento de tipo Sub o Function, en funcin de si necesitamos devolver o no, un valor desde el mtodo.

Mtodos

La sobrecarga de mtodos, es una tcnica que consiste en crear varios mtodos con idntico nombre dentro de la misma clase, distinguindose entre s por su lista de parmetros. Para declarar un mtodo como sobrecargado, debemos utilizar la palabra clave Overloads despus del modificador de mbito. Podemos sobrecargar mtodos de tipo Sub y Function.
10

Constructores

Introduccion

El primer mtodo que es ejecutado al instanciar un objeto de la clase se denomina constructor. Este tipo de mtodo resulta til para tareas de configuracin iniciales sobre el objeto. No es necesario escribir un mtodo constructor en la clase, ya que en el caso de que no exista, el compilador se encarga de crearlo implcitamente.

11

Constructores

Introduccion

Admite parmetros Puede sobrecargarse

12

Herencia

Introduccion

VB.NET es la primera versin de este lenguaje que incorpora herencia, una caracterstica demandada por un amplio colectivo de los programadores de esta herramienta; y es que, a pesar de haber sido incorporados progresivamente aspectos de orientacin a objetos al lenguaje, este era el elemento fundamental que faltaba para ser plenamente OOP.
13

Herencia

Introduccion

Para crear una clase derivada, debemos declarar una nueva clase, especificando cul es su clase base mediante la palabra clave Inherits.

14

Herencia

Reglas de ambito

Public: dicho elemento ser accesible por todo el cdigo de la clase, clases heredadas y cdigo cliente; Private, ese miembro slo ser accesible por el cdigo de la propia clase. Protected Un miembro de clase declarado con este modificador, ser accesible desde el cdigo de su propia clase y desde cualquier clase heredada. Friend Un miembro de clase declarado con este modificador, ser accesible por todo el cdigo de su proyecto o ensamblado.

15

Herencia

Sobrecarga de mtodos

Podemos sobrecargar mtodos existentes en una clase base dentro de una clase derivada, para ello simplemente escribimos la implementacin del mtodo sobrecargado utilizando la palabra clave Overloads,

16

Herencia

Sobrecarga de mtodos

Acceso a los mtodos de la clase base:MyBase:

proporciona acceso a los miembros de una clase base desde su correspondiente subclase.

17

Herencia

Sobre-escritura de mtodos

Esta tcnica consiste en la capacidad de crear, en una clase derivada, un mtodo que altere parcial o totalmente, la implementacin ya existente de dicho mtodo en la clase base. Una de las diferencias existentes con la sobrecarga de mtodos, estriba en que al sobrescribir, el mtodo en la subclase puede tener el mismo nombre y lista de parmetros que el ya existente en la clase padre. Podemos sobrescribir tanto mtodos como propiedades.

18

Herencia

Sobre-escritura de mtodos

Para indicar en la clase base que un mtodo podr ser sobrescrito en una subclase, debemos declarar dicho mtodo utilizando la palabra clave Overridable. Posteriormente, cuando en una clase derivada queramos rescribir el mtodo de la clase base, lo declararemos empleando la palabra clave Overrides. Podemos deducir por lo tanto, que la reescritura de mtodos es un proceso que se debe realizar con el consentimiento previo de la clase base. Se puede utilizar cualquier mtodo de la clase padre usando la palabra clave MyBase

19

Herencia

Ocultamiento de miembros de una clase

Esta tcnica consiste en crear dentro de una clase derivada, miembros con el mismo nombre (y firma,en el caso de mtodos) que los existentes en la clase base, pero ocultando el acceso a los miembros de la clase base para los objetos instanciados de la subclase. Utilizaremos la palabra clave Shadows, en la declaracin de aquellos miembros a esconder.

20

Herencia

Constructores.

Podemos crear una clase base que implemente un constructor y una subclase sin l. En esta situacin,cuando instanciemos un objeto de la subclase, se llamar implcitamente al constructor de la clase base para ejecutar el cdigo de inicializacin. Tambin es posible crear el constructor slo en la clase derivada. Si ambas clases disponen de un constructor, en primer lugar se ejecutar el constructor de la clase base y despus el de la clase derivada. Realmente, el primer constructor ejecutado corresponde a la clase Object, y sucesivamente, se irn ejecutando todos los constructores de la jerarqua de clases hasta llegar a la clase que origin la llamada.
21

Herencia

Constructores.

El problema sobreviene cuando en la clase base creamos un constructor parametrizado, ya que ello obliga a sus clases derivadas a crear tambin un mtodo constructor dentro del cul se haga una llamada al constructor de la clase base.

22

Herencia

Clases selladas:

si no queremos que nuestra clase pueda ser heredada por otras, debemos declararla de forma que no permita herencia; a este tipo de clase se le denomina clase no heredable o sellada (sealed). Para definir una clase no heredable, debemos utilizar la palabra clave NotInheritable

23

Herencia

Clases abstractas o no instanciables

Una clase abstracta es aquella que no permite la instanciacin directa de objetos a partir de ella, siendo necesario una clase derivada para acceder a sus miembros. Aunque en una clase abstracta podemos escribir un mtodo constructor, slo ser accesible desde el constructor de la subclase. Para definir una clase abstracta utilizaremos la palabra clave MustInherit en el momento de su declaracin,

24

Comprobacin del tipo de un objeto y moldeado

Usando Objetos Genericos(Object)

GetType( ) nos permite saber el tipo de objeto que es. Devuelve un objeto de la clase Type. CType( ), que realiza un moldeado de la variable que contiene el objeto hacia un tipo determinado, y nos permite acceder a los elementos del objeto.

25

Miembros compartidos (shared) de una clase

Podemos pues clasificar los miembros de una clase en dos categoras:

Miembros de instancia (instance members). Son aquellos a los que accedemos a travs de un objeto instanciado previamente de la clase. Miembros compartidos (shared members). Son aquellos a los que podemos acceder sin necesidad de que exista un objeto creado de la clase.

26

Miembros compartidos (shared) de una clase

Podemos declarar como compartidos los mtodos, propiedades y campos de una clase. Para ello deberemos emplear la palabra clave Shared en la declaracin. Para utilizar desde el cdigo cliente un miembro compartido, tan slo debemos poner el nombre de la clase a la que pertenece, el punto y el nombre del miembro a utilizar.
27

Destruccin de objetos y recoleccin de basura

En VB6

La destruccin de objetos y liberacin de recursos en est basada en una tcnica que mantiene un contador interno de las referencias que en el cdigo cliente hay establecidas hacia un objeto; cuando la ltima referencia es eliminada, se ejecuta su evento Terminate( ) Este sistema de destruccin se denomina finalizacin determinista, ya que nos permite saber el momento preciso en el que un objeto es destruido.

28

Destruccin de objetos y recoleccin de basura

En Net

no utiliza conteo de referencias, sino que en su lugar, implementa un sistema de bsqueda y eliminacin de objetos que ya no estn siendo utilizados, denominado recoleccin de basura (garbage collection).

29

Destruccin de objetos y recoleccin de basura

En Net

Como ya hemos mencionado, el recolector de basura funciona de modo automtico; no obstante, si en un determinado momento queremos forzar su uso, la jerarqua de .NET nos provee de la clase GC (Garbage Collector), que representa al objeto recolector, pudiendo manipularlo a travs de sus miembros compartidos. Por ejemplo, si necesitamos que se efecte la recoleccin de objetos que no estn siendo utilizados ejecutaramos el mtodo Collect( ) de este objeto

30

Destruccin de objetos y recoleccin de basura

En Net

En .NET Framework los objetos disponen de mtodos finalizadores. Para implementar este tipo de miembro en nuestras clases, escribiremos un mtodo con el nombre Finalize( ), de mbito Protected, que sobrescriba y llame al finalizador de su clase padre. Cuando asignamos Nothing a un objeto, o la variable que lo contiene pierde su mbito y es eliminada, transcurre un tiempo que no es posible determinar hasta que el objeto es definitivamente destruido.

31

Interfaces

Concepto:

anlogo al de contrato, las partes integrantes son el propio interfaz y la clase que lo implementa. Mientras que el interfaz no puede ser cambiado desde el momento en que sea implementado, la clase que lo implementa se compromete a crear la lista de miembros en la misma forma que indica el interfaz Un interfaz proporciona, a modo de declaracin, una lista de propiedades y mtodos, que posteriormente sern codificados en una o varias clases. Debido a su naturaleza declarativa, un interfaz no contiene el cdigo de los miembros que expresa;dicho cdigo ser escrito en las clases que implementen el interfaz.
32

Interfaces

Concepto:

Clara relacin con el polimorfismo. El mismo interfaz, implementado en distintas clases, podr tener a su vez cdigo distinto, con lo que los objetos de diferentes clases que implementen un interfaz comn, pueden tener un comportamiento diferente.

33

Interfaces

Pasos:

Declaro Interface:

Public Interface miinte

miembros

End Interface

34

Interfaces

Pasos:

En las clases que vamos a utilizar las definiciones de la interfaz emplearemos despus de la declaracin de la clase, la palabra clave Implements junto al nombre del interfaz que deseamos que implemente la clase. Para implementar un miembro de un interfaz, en el momento de escribir su declaracin, utilizaremos la palabra clave Implements, seguida del interfaz y miembro que implementa.
35

Eventos y Delegados

Eventos:

Definicin:

Un evento es una seal que comunica a una aplicacin que ha sucedido algo importante dentro de una aplicacin, una notificacin lanzada por un objeto, que podr ser respondida por aquellos otros objetos interesados en darle soporte.

36

Eventos y Delegados

Eventos:

El emisor de eventos

Un emisor de eventos, tambin denominado origen de eventos (event source o event sender), es un objeto capacitado para generar y lanzar eventos al sistema, que puedan ser recuperados por otros objetos preparados para realizar su tratamiento.

37

Eventos y Delegados

Eventos:

El emisor de eventos

Para que un objeto pueda desencadenar eventos, en su clase debemos realizar dos tareas:

Declarar el propio evento usando la palabra clave Event, especificando si es necesario una lista de parmetros que acompaan al evento. Los eventos se declaran en clases, estructuras, mdulos e interfaces mediante la palabra clave Event, como se muestra en el siguiente ejemplo: Event AnEvent(ByVal EventNumber As Integer)

38

Eventos y Delegados

Eventos:

El emisor de eventos

dos tareas:

Lanzar el evento mediante la palabra clave RaiseEvent, seguida del nombre del evento a disparar. Si hemos declarado el evento con parmetros, deberemos aadir los valores para cada uno de los parmetros en el mismo orden en el que los hemos declarado. En Visual Basic .NET, los eventos se producen con la instruccin RaiseEvent, como en el ejemplo siguiente: RaiseEvent AnEvent(EventNumber)
39

Eventos y Delegados

Eventos:

El receptor de eventos

Un receptor de eventos, tambin denominado manipulador de eventos (event receiver o event handler), es aquella parte del cdigo cliente, que configuramos para que sea capaz de recibir los eventos generados por un objeto emisor.

40

Eventos y Delegados

Eventos:

El receptor de eventos

Conexin de un emisor de eventos con un manipulador de eventos Existen dos medios para comunicar un evento con un manipulador de eventos:

mediante las palabras clave WithEvents y Handles. Esta tcnica tiene la ventaja de que permite escribir un cdigo mucho ms legible, en cuanto a la manipulacin de eventos se refiere. mediante la palabra clave AddHandler. La ventaja en este caso, es que podemos asociar procedimientos manipuladores de evento dinmicamente durante el transcurso de la ejecucin del programa.
41

Eventos y Delegados

Eventos:

El receptor de eventos

WithEvents y Handles.

Es el modo ms sencillo para implementar la conexin entre un evento y un procedimiento manipulador de evento. En primer lugar, declaramos una variable del tipo de objeto cuyos eventos queremos capturar, en la zona de declaraciones del mdulo, clase, etc., utilizando la palabra clave WithEvents.(no puede ser local)

42

Eventos y Delegados

Eventos:

El receptor de eventos WithEvents y Handles.

A continuacin, tenemos que escribir el procedimiento manipulador, que ser invocado cada vez que se dispare el evento.

Dicho procedimiento debe ser de tipo Sub, ya que un evento no puede devolver valores, por lo que no podremos utilizar un Function; tambin debemos finalizar su declaracin con la palabra clave Handles, seguida del nombre de la variable del objeto que hemos declarado en la zona de declaraciones, y el nombre del evento que el procedimiento va a tratar.

43

Eventos y Delegados

Eventos:

El receptor de eventos AddHandler

El enlace dinmico de eventos a sus correspondientes manipuladores, tiene la ventaja de que nos permite asociar el mismo evento a diferentes procedimientos manipuladores de dicho evento, durante el transcurso de la ejecucin del programa. El objeto sobre el que vamos a manipular sus eventos podemos declararlo tanto a nivel local como en la zona de declaraciones, a diferencia del enlace esttico,

44

Eventos y Delegados

Eventos:

El receptor de eventos AddHandler

Para establecer un enlace dinmico entre un evento y un manipulador, utilizaremos la instruccin AddHandler. Esta instruccin, recibe dos parmetros

NombreObjeto.NombreEvento. La direccin de entrada al procedimiento que deber ejecutar el evento, y que obtenemos a travs de la instruccin AddressOf.

45

Eventos y Delegados

Delegados:

Definicin:es un objeto al que otros objetos ceden (delegan) la ejecucin de su cdigo. Tambin se conocen como punteros a funcin con seguridad de tipos. Los delegados son tiles en situaciones donde es necesario un intermediario entre el procedimiento que realiza una llamada y el procedimiento que la recibe Al instanciar un delegado, se asocia con un mtodo de instancia o compartido de un objeto, y posteriormente, durante la ejecucin, ser el delegado el que se encargue de ejecutar dicho mtodo y no el propio objeto. Tambin se pueden asociar los delegados con procedimientos Sub o Function de mdulos.
46

Eventos y Delegados

Delegados:

Declaracin:

Para declarar un delegado, debemos utilizar la palabra clave Delegate, seguida del tipo de mtodo (Sub o Function) al que posteriormente deberemos asociar el delegado; y finalmente, el nombre del delegado con la lista de parmetros y valor de retorno si es necesario. El lugar de declaracin debe ser la zona de declaraciones de la clase o mdulo.

47

Eventos y Delegados

Delegados:

Creacin de delegados:

declaramos una variable correspondiente al tipo del delegado. A continuacin, conectamos el delegado con el procedimiento que posteriormente deber ejecutar, empleando la palabra clave AddressOf, seguida del nombre del procedimiento. AddressOf devuelve el puntero o direccin de entrada al procedimiento, que ser lo que utilice el delegado para saber la ubicacin del procedimiento que debe ejecutar. Por ltimo, para ejecutar el procedimiento al que apunta el delegado, llamaremos a su mtodo Invoke( ).
48

Eventos y Delegados

Delegados:

Creacin de delegados:

Si delegamos un procedimiento que admite parmetros, a la hora de invocarlo con el delegado, debemos pasar al mtodo Invoke( ) los valores de los parmetros, en el mismo orden que especifica el procedimiento. En el caso de delegacin hacia funciones, cuando invoquemos el cdigo con el delegado, deberemos obtener el valor de retorno de la funcin.

49

Das könnte Ihnen auch gefallen