Anda di halaman 1dari 10

Programacin orientada a objetos en Basic.

NET Visual
Visual Studio. NET 2003

86 de 100 MSDN - Valorar este tema


Deborah Kurata InStep Technologies, Inc. 09 2001 Resumen: Este artculo discute las muchas nuevas tcnicas de programacin orientada a objetos disponibles en Microsoft Visual Basic NET.. (11 pginas impresas) Contenido Introduccin POO POO en Visual Basic. NET definir una clase de construccin Constructores y Destructores Creacin y destruccin de un objeto de uso System.Object Entendimiento Herencia Conclusin Introduccin Las versiones originales de Microsoft Visual Basic proporcionan un mecanismo para definir estructuras de datos en un tipo definido por el usuario (UDT). Un UDT encapsula los datos, pero no el procesamiento asociado con esos datos. Procesamiento se defini en los mdulos estndar mundial, a menudo llamados mdulos BAS debido a su extensin bas.. El lanzamiento de Visual Basic 4 amaneci una nueva era para los desarrolladores de Visual Basic. Visual Basic dio sus primeros pasos para convertirse en una programacin (POO) el lenguaje orientado a objetos, proporcionando caractersticas orientadas a objetos, tales como mdulos de clase. Un mdulo de clase define los datos como las propiedades y el procesamiento asociado con esos datos como mtodos. Al definir una clase para cada entidad de negocio, que encapsula los datos en las propiedades y el procesamiento de los mtodos, los desarrolladores de Visual Basic tenan el desarrollo basado en objetos. Como evolucion Visual Basic desde la versin 4 a la versin 6, los desarrolladores de Visual Basic ampliaron su conocimiento de OO para incluir tcnicas de desarrollo basadas en componentes (CBD). Con CBD, los desarrolladores de Visual Basic podran construir completas aplicaciones de tres niveles para Microsoft Windows y Web. Este tipo de desarrollo es tan comn que Microsoft proporciona un patrn de diseo conocido como la arquitectura DNA Microsoft. Visual Basic. NET proporciona un nuevo salto en la capacidad de desarrollo de Visual Basic y caractersticas y proporciona una verdadera programacin orientada a objetos, como se detalla en este artculo. Programacin orientada a objetos En un lenguaje de programacin para ser un lenguaje OOP cierto, el lenguaje debe cumplir con los siguientes criterios: Abstraccin , Abstraccin gestiona la complejidad de un problema de negocio que le permite identificar un conjunto de objetos que participan con el problema de negocio. Encapsulacin La encapsulacin-oculta la implementacin interna de una abstraccin dentro del objeto particular.

Polimorfismo Polimorfismo-prev mltiples implementaciones del mismo mtodo. Por ejemplo, diferentes objetos pueden tener unGuardar mtodo, cada uno de los cuales realizan un procesamiento diferente. Herencia -La emocin de. NET Visual Basic se encuentra en la herencia. Visual Basic 5 introdujo el concepto de herencia de interfaces, que permite volver a utilizar la interfaz de una clase, pero no su aplicacin. Visual Basic. NET proporciona la verdadera herencia de implementacin donde se puede volver a utilizar la implementacin de una clase. Ahora echemos un vistazo a hacer la programacin orientada a objetos en. NET. Programacin orientada a objetos en Visual Basic. Visual Basic. NET no es 6 Visual Basic con la herencia clavada en ella. Ms bien, Visual Basic. NET se ha reescrito por completo a ser completamente orientado a objetos. De hecho, todo en. NET Visual Basic puede ser tratada como un objeto. S, incluso sus cadenas y nmeros enteros se puede acceder a los objetos en Basic. NET Visual. Para demostrar esto, comenzar una nueva. NET proyecto de aplicacin de consola de Visual Basic. En el principal subrutina, escriba este cdigo:

Dim i As Integer MsgBox (i.MinValue) El primer indicio de que el nmero entero es tratado como un objeto es la lista de propiedades y mtodos que aparecen cuando se escribe el punto despus de la i . Seleccionar una de las propiedades, tales como la MinValue se muestra en este ejemplo. A continuacin, ejecute la aplicacin y obtendr un cuadro de mensaje que contiene el valor de la propiedad de entero seleccionado. . NET tiene clases predefinidas para los tipos de datos intrnsecos, pero qu pasa con las clases que se crean? Vamos a caminar a travs de un ejemplo para demostrar cmo crear clases en Visual Basic. NET y heredan de ellos para aprovechar algunas de las nuevas caractersticas de programacin orientada a objetos. Definir una Clase El propsito bsico de una clase no ha cambiado en. NET de Visual Basic. An crear clases para los objetos de negocios y para los objetos de apoyo que pueda necesitar para su aplicacin. Los principales cambios de Visual Basic 6 a Visual Basic. NET implican sintaxis y algunas nuevas caractersticas. En Visual Basic 6, se crea una clase mediante la creacin de un mdulo de clase: una clase, un mdulo de clase. Esto ya no es el caso de Visual Basic. NET. Usted puede crear cualquier nmero de clases dentro de un archivo de cdigo nico. Usted puede incluso crear clases dentro de las clases. Pero vamos a empezar con un ejemplo sencillo. Agregar una clase a un Basic. NET Visual es muy similar a Visual Basic 6. Sin embargo, en lugar de obtener un archivo de cdigo vaco, la clase aparecer con el siguiente cdigo:

CCustomer Public Class End Class Sugerencia La convencin actual de Microsoft es definir los nombres de clase sin un prefijo. A raz de esta convencin, el nombre de clase sera al cliente en lugar de CCustomer . Si bien esta convencin es ms fcil de usar al crear objetos utilizando productos al por menor, tales como Microsoft Word y Excel, mantenimiento y soporte de los sistemas de las empresas pueden beneficiarse de la informacin adicional que proporciona un prefijo.
Si desea agregar una segunda clase en el mismo archivo, slo tiene que aadir otra declaracin de clase:

Public Class CCustomer End Class Public Class CContact End Class

Sugerencia Normalmente, una clase debe ser definida en su propio archivo de cdigo. Slo coloque clases juntos si estn estrechamente unidas. Por ejemplo, la lnea de la factura y la factura puede ser de dos clases dentro de un archivo de cdigo, ya que normalmente nunca use lnea de factura sin factura. Si usted desea utilizar los contactos del cliente (cPngase en contacto con) separados de los clientes, entonces la cPngase en contacto clase debe estar separada de la CCustomerclase. A continuacin, puede aadir propiedades o mtodos a la clase. Al igual que con Visual Basic 6, se define normalmente una propiedad al declarar una variable privada y pblica de la vivienda procedimientos. . NET En Visual Basic, debe definir un nombre propiedad de la siguiente manera:

Private m_sName As String Property Name() As String Get Return m_sName End Get Set(ByVal Value As String) m_sName = Value End Set End Property
Slo hay dos tipos de propiedad en los procedimientos de Visual Basic. NET, Get y Set . El Get procedimiento recupera el valor de la propiedad de la clase y el Conjunto procedimiento asigna la propiedad. Visual Basic 6 proporciona una propiedad Let comunicado que maneja los tipos de datos intrnsecos, mientras que el Set declaracin trabaj con los objetos. Ahora que todo en. NET Visual Basic es, bsicamente, un objeto, no hay necesidad de que el Let comunicado. Observe que la sintaxis de un procedimiento de propiedad tambin se cambia. Tanto el Get y Set estn contenidos dentro de una instruccin de propiedad. No existe la posibilidad de un desajuste en los tipos de datos entre la propiedad Get y Set . Esto hace que estas declaraciones ms fcil de mantener. Sugerencia En una aplicacin de tres niveles o N-niveles, las clases pueden ser aptridas, lo que significa que no tienen propiedades. Esto proporciona un uso ms eficiente de sus clases dentro de los componentes de nivel medio. La sintaxis para un mtodo simple es casi idntico a las versiones anteriores de Visual Basic. La nica diferencia que notar es el retorno de palabras clave. Usted puede utilizar retorno para devolver un valor de una funcin en lugar de utilizar el nombre de la funcin. El ejemplo siguiente muestra un mtodo simple:

Public Function SayHello() As String If Name <> "" Then Return "Hello " & Name Else Return "Hello World" End If End Function

En este punto, usted tiene una clase con una propiedad y el mtodo y el resultado es similar a una clase de Visual Basic 6. Echemos un vistazo a algunas de las nuevas caractersticas de Visual Basic. NET.

Constructores de Edificios y destructores


En Visual Basic 6, cuando se crea una instancia de una clase de la inicializacin se genera el evento. Usted puede colocar el cdigo en lainicializacin de eventos para inicializar el objeto. Por ejemplo, es posible que desee para definir los datos de objeto por defecto, conexiones de base de datos abiertos, o crear objetos relacionados. Sin embargo, no se puede pasar nada a la inicializacin evento. Esto hace que sea difcil para inicializar el objeto con parmetros especficos. . NET Visual Basic introduce verdaderos constructores que se ejecutan cada vez que se crea una nueva instancia de la clase. Estos constructores se definen con una subrutina denominada Nuevo :

Public Sub New() ' Perform initialization Debug.WriteLine("I am alive") End Sub
Puede pasar datos a un constructor para una mayor flexibilidad y poder en la inicializacin del objeto. Constructores con parmetros se llaman constructores parametrizados . Por ejemplo:

Public Sub New(ByVal sName As String) ' Assign the name Name = sName 'Other initialization Debug.WriteLine(Name & " is alive") End Sub
En este ejemplo, el nombre del cliente se pasa en al constructor. Ese nombre se utilizar para inicializar el Nombre de la propiedad definida con la propiedad procedimiento. Ambos constructores pueden ser para definir una clase. En realidad, cualquier nmero de constructores puede ser definido para una clase, siempre y cuando cada uno de ellos tienen diferentes parmetros. Esta funcin se denomina sobrecarga . El constructor adecuado es llamado en base a los datos que se pasan al constructor. Usted no tiene que definir un constructor. Si no se crea una, se utiliza un constructor predeterminado. En lugar de una Terminar evento, Visual Basic. NET proporciona una Finalizar destructor. Este destructor es llamado cuando el recolector de basura NET. Determina que el objeto no es ya necesario. Puede haber un retraso entre el momento en que un objeto se termina y el tiempo que el recolector de basura en realidad, destruye el objeto. Tip No use normalmente Finalizar destructor debido a esta demora y el procesamiento adicional requerida por el sistema para administrar los objetos con un Finalizar destructor. Utilice el Dispose destructor lugar. Con el fin de mejorar la gestin de los recursos utilizados por la clase, implemente la IDisposable interfaz y el Dispose destructor:

Implements IDisposable Public Sub Dispose() Implements System.IDisposable.Dispose ' Perform termination End Sub
Este destructor no se llama de forma automtica, por lo que se debe llamar explcitamente como se muestra en la siguiente seccin. Sugerencia El Dispose destructor no es obligatorio, pero se recomienda. Mediante la implementacin del Disposedestructor de todas las clases, incluso si no hace nada, los desarrolladores pueden rutinariamente

pueden llamar al Disposemtodo en cualquier objeto.

Creacin y destruccin de un objeto


Para utilizar una clase, primero debe crear un objeto de la clase. En Visual Basic 6, la sintaxis recomendada para la creacin de un objeto de una clase es:

Private m_oCustomer as CCustomer Set m_oCustomer = New CCustomer

Esta sintaxis es casi idntica en Visual Basic. NET. . Ya que todo es bsicamente un objeto en NET Visual Basic, no hay necesidad de dos tipos diferentes de asignacin, por lo que ya no hay una necesidad de que el conjunto de palabras clave:

Private m_oCustomer as CCustomer m_oCustomer = New CCustomer()


Note los parntesis cuando se crea el objeto. Si ha definido un constructor con parmetros para la clase, puede pasar el parmetro (s) al constructor dentro de los parntesis: m_oCustomer = New CCustomer("Acme Corporation") Con Visual Basic NET, puede combinar el objeto de declaracin de variables y la creacin de objetos con el New palabra clave:

Private m_oCustomer As CCustomer = New CCustomer()


El objeto se crea cuando se ejecuta esta declaracin. La forma abreviada de la sintaxis es la siguiente:

Private m_oCustomer As New CCustomer()


Si necesita pasar parmetros, esta sintaxis ser la siguiente:

Private m_oCustomer As New CCustomer("Acme Corporation")


Tip No se puede poner un Try ... Atrapa bloque de manejo de errores en torno a una declaracin de nivel de mdulo.Esta restriccin hace que este estilo de creacin de objetos menos til. En las aplicaciones de calidad de produccin, es posible que desee adherirse al enfoque probado y verdadero de la primera declaracin de la variable de nivel de mdulo y luego crear una instancia con el New palabra clave para apoyar el manejo de errores con todas las funciones. En la seccin de declaraciones:

Private m_oCustomer as CCustomer

Dentro de una rutina:

Try
m_oCustomer = New CCustomer() Catch e As Exception Debug.WriteLine(e.Message) End Try

Continuando con el ejemplo, seleccione su estilo preferido de la creacin de objetos y agregarlo a la Sub Main . Cuando haya terminado de utilizar un objeto, puede llamar a la del objeto Dispose mtodo para liberar los recursos utilizados por el objeto, en el supuesto de que un Dispose mtodo fue implementado para el objeto. A continuacin, puede establecer la variable de objeto a nada :

m_oCustomer.Dispose() m_oCustomer = Nothing


El objeto se destruye cuando el recolector de elementos no detecta que el objeto ya no se utiliza. Sugerencia diferencia Visual Basic 6, un objeto en. NET no se destruye el momento en que la variable de objeto se establece en el momento . Por el contrario, se destruye cuando el recolector de basura detecta y destruye. El recolector de basura va a destruir un objeto hurfano, si no se establece la variable de objeto a nada . En este punto, usted debera ser capaz de ejecutar la aplicacin de ejemplo y ver los mensajes de depuracin aparecen en la ventana de salida.

Usando System.Object

Todos los objetos de. NET se hereda de una clase base llamada System.Object . Esta clase es parte de Microsoft. NET Framework y contiene las propiedades bsicas y los mtodos necesarios para un objeto. NET. Todas las propiedades o mtodos pblicos definidos en System.Object se proporcionan automticamente en cualquier objeto que cree.Por ejemplo, System.Object contiene un constructor predeterminado. Si el objeto no tiene constructor, sigue siendo construida porSystem.Object prev la construccin. Muchas de las propiedades pblicas y mtodos de System.Object tiene una implementacin predeterminada. Esto significa que usted no tiene que escribir ningn cdigo para usarlos. Por ejemplo:

m_oCustomer.ToString
El ToString mtodo proporciona el nombre del componente y clase asociada m_oCustomer. Se puede reemplazar el comportamiento predeterminado del ToString mtodo con el anulaciones palabra clave. Esto le permite definir su propia implementacin de algunosSystem.Object propiedades y mtodos.

Public Overrides Function ToString() As String Return Name End Function

El ToString mtodo devuelve ahora el nombre del cliente en lugar del nombre del componente y clase.

Entendimiento Herencia
El que ms se habla acerca de la nueva funcin de programacin orientada a objetos en Visual Basic. NET es la herencia. Para comprender plenamente la herencia, vamos a ampliar nuestro ejemplo. El cliente de ejemplo de la clase presentada anteriormente es una pequea parte de un sistema de facturacin del cliente. Este sistema de seguimiento de clientes, gestiona pedidos de los clientes, y genera proyectos de ley en forma de facturas. El sistema es completo y se entregan a los usuarios. Como es tpico, despus de algunas semanas de trabajo con el sistema de los usuarios definir requisitos adicionales. Ahora necesitan el cdigo para trabajar de forma diferente dependiendo del tipo de cliente. Clientes normales tienen un conjunto estndar de reglas de negocio. Clientes educativas tienen ms reglas, algunos elementos de datos diferentes y descuentos especiales. Clientes gubernamentales tienen an ms las reglas de negocio, otros elementos de datos, y un descuento ms pronunciada. La relacin entre el cliente, el cliente educativa, y de los clientes del gobierno se representan utilizando el Lenguaje Unificado de Modelado (UML) y el modelo de la figura 1. Pero cmo va a implementar este cambio?

Figura 1. Ejemplo de un completo sistema de facturacin de los clientes Una solucin consiste en modificar el actual cliente de clase para contener toda la informacin para todos los tipos de clientes. Usted puede utilizar SELECT / Case declaraciones o si las declaraciones de manejar la lgica para manejar los diferentes tipos. Pero esto puede ser tedioso y complejo, sobre todo si hay un montn de diferentes normas o procesamiento asociados con los diferentes tipos. Una segunda opcin es crear una clase separada para cada tipo de cliente, incluyendo el tipo "normal". Cada clase se puede contener su propia lgica para el manejo de ese tipo de cliente en particular. Pero si hay similitudes en algunos de la lgica, es posible que la duplicacin de las clases separadas. . NET con Visual Basic, ahora hay una tercera opcin: la herencia . Con la herencia, se puede definir una clase comn que es la base de otras clases. Esta clase se denomina la base o matriz de clases. En este ejemplo, debe crear un comn Cliente clase. A continuacin, crea las clases especializadas que heredan de la clase base. Estas clases se denominan deriva o nios clases. Estas clases heredan funcionalidad de la clase base, pero puede reemplazar la funcionalidad de la clase base para realizar el procesamiento especializado. Para probar esto, vamos a usar el cliente de clase como la clase base. Aadir otro mtodo para el cliente de clase para calcular un descuento:

Public Overridable Function CalculateDiscount(ByVal dAmt As Decimal) As Decimal ' Standard discount is no discount ' Return the passed in amount Return dAmt End Function

Este mtodo utiliza el Overridable palabra clave. Esta palabra significa que las clases derivadas pueden reemplazar este mtodo y definir su propia implementacin. Sugerencia Si crea una clase que se puede utilizar como clase base, asegrese de usar el Overridable palabras clave en cualquier funcin que una clase derivada podra anular. La clase derivada es muy simple:

Public Class CEdCustomer: Inherits CCustomer Public Sub New() MyBase.New() End Sub Public Overrides Function CalculateDiscount(ByVal dAmt As Decimal) As Decimal Dim newAmt As Decimal newAmt = dAmt * CDec(0.9) Return newAmt End Function End Class

El Inherits palabra clave define el padre o clase base. Todas las propiedades y mtodos pblicos de la clase base se puede acceder a esta clase derivada. El primer mtodo en la clase derivada es el constructor. Este constructor utiliza el MyBase palabra clave para llamar al constructor de la clase base. El constructor predeterminado para la clase padre se llama automticamente cuando el nio se construye, pero se puede especificar manualmente el constructor del padre. El anulaciones por palabras clave en la segunda funcin indica que este es reemplazar la funcin definida dentro de la clase base. Esto permite que una clase derivada para proporcionar su propia implementacin de una funcin en particular. Sugerencia Si no pones el anulaciones por palabras clave en la funcin en la clase derivada, se supone que la funcin parasombrear la funcin original. Una funcin de sombreado es una funcin en la clase derivada que tiene el mismo nombre que una funcin de la clase base, pero no pretende reemplazar la funcin de la clase base. Hay varias formas de crear una instancia de la clase derivada: Declarar una variable de objeto como la clase derivada y luego crear la instancia de la clase derivada:

Private m_oEdCustomer As CEdCustomer m_oEdCustomer = New CEdCustomer()

Declarar una variable de objeto de clase base y luego crear la instancia de la clase derivada:

Private m_oCustomer As CCustomer m_oCustomer = New CEdCustomer()

La primera tcnica declara que el objeto sea de tipo CEdCustomer , definiendo de este modo el objeto a ser de un tipo especfico. El objeto derivado tiene acceso a las propiedades y mtodos pblicos del cliente de la clase base, las propiedades y mtodos se reemplaza en la EdCustomer clase, las propiedades y mtodos sombreados en el EdCustomer clase, y las propiedades pblicas y mtodos de laEdCustomer clase. La segunda tcnica se declara que el objeto sea de tipo CCustomer , permitiendo a cualquier tipo de cliente de objeto que se define y polimorfismo apalancamiento. Esto permite la reutilizacin de la variable de objeto para cualquier tipo de cliente objeto. Sin embargo, al declarar el objeto derivado utilizando la clase padre del objeto derivado slo tiene acceso a las propiedades y mtodos pblicos de la clase base de clientes y de las propiedades y mtodos sobrescritos en el EdCustomer clase. No tiene acceso a las propiedades y mtodos pblicos de la EdCustomer clase, ni a las propiedades y mtodos de sombra. Cuando se trabaja con la herencia, hay algunas cosas a tener en cuenta. En primer lugar, no est limitado a un solo nivel de herencia. La jerarqua de herencia puede ser tan profundo como sea necesario. Las propiedades y mtodos se heredan a travs de los niveles. En general, cuanto ms lejos hacia abajo en la jerarqua aparece una clase, la ms especializada de su comportamiento. Por ejemplo, se podra definir un HighSchoolEdCustomer clase que hereda de la EdCustomer clase que a su vez hereda de la cliente de clase. Sugerencia Para reducir la complejidad y simplificar el mantenimiento, limite sus jerarquas de herencia a no ms de alrededor de cuatro niveles. Cada clase, sin embargo, puede heredar de una clase padre. As que un EdCustomer clase no puede heredar tanto desde el cliente declase y una educacin de clase. Esta es una buena cosa que la herencia mltiple puede llegar a ser muy complejo y realizar el mantenimiento de aplicaciones muy difcil. Hay dos usos principales de la herencia en las aplicaciones que desarrolle: Tiene objetos de diferentes tipos que tienen una funcionalidad similar. Por ejemplo: Cliente Educacin clase y Gobierno al clientede clase heredan de los clientes de clase. Usted tiene el procesamiento general que se hizo por grupos de objetos. Por ejemplo: cada tipo de objeto empresarial hereda de un objeto de negocio de clase (BO). Usted no debe usar la herencia cuando: Slo se necesita una funcin de la clase base. Si este es el caso, debe delegar a la clase en lugar de heredar de ella. Si usted necesita para reemplazar todas las funciones. Si este es el caso, se debe utilizar una interfaz en lugar de la herencia de implementacin. La semntica de la jerarqua no son claras. Si no existe una clara "es un" tipo de relacin, como un cliente educativo "es un" cliente, a continuacin, delegacin o una interfaz puede ser una mejor solucin. Por ejemplo, un vendedor tiene un nombre como un cliente.As que el vendedor clase puede heredar de los clientes de clase para obtener el nombre. Sin embargo, no es exacto decir que un proveedor "es un" cliente. As que la semntica no son claras y herencia no se deben utilizar en este caso.

Conclusin
Atrs han quedado los das en programacin Visual Basic significaba dibujar algunas formas y haga doble clic en algunos botones para crear una aplicacin completa. Atrs han quedado los das en que los desarrolladores de

Visual Basic han sido vistas como "quiero ser" desarrolladores. Desarrolladores de Visual Basic son ahora, y han sido, los profesionales que estn bien calificados en nuestro comercio. . NET Visual Basic nos ha dado un nuevo conjunto de herramientas de desarrollo profesional, herramientas a la par con los utilizados por otros profesionales de desarrollo de software, herramientas que incluyen las complejidades de la herencia y el poder de polimorfismo. Vamos a aprovechar estas nuevas caractersticas OOP a su mximo para seguir adelante ya que los programadores ms eficaces en el lenguaje de programacin ms productiva.

Anda mungkin juga menyukai