PROGRAMACIÓN ORIENTADA A OBJETOS








PROGRAMACIÓN ORIENTADA A OBJETOS:

1        CONTENIDO:

1.1       DEFINICIÓN:

La programación orientada a objetos (POO) es un paradigma de lenguaje de programación que emplea el concepto de objetos en sus interacciones con el fin de desarrollar programas informáticos. En otras palabras, esta programación utiliza objetos como elementos fundamentales en la construcción de la solución.
Emplea técnicas de programación como: herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento.
La POO es diferente de la programación estructurada tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida.
Los programadores que emplean POO, definen primero los objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.
La POO surgió como paradigma en los años 70 y su uso se popularizó a principios de la década de 1990. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos.


1.2       CONCEPTOS BÁSICOS:

1.2.1     Clase:

Las clases son declaraciones o abstracciones de objetos, lo que significa, que una clase es la definición de un objeto. Cuando se programa un objeto y se definen sus características y funcionalidades, realmente se programa una clase.
Las clases son uno de los principales componentes de un lenguaje de programación, pues en ellas ocurren todos los procesos lógicos requeridos para un sistema, en si podemos definirlas como estructuras que representan objetos del mundo real, tomando como objetos a personas, lugares o cosas, en general las clases poseen propiedades, comportamientos y relaciones con otras clases del sistema.
Una clase se compone por tres partes fundamentales:
Nombre:      Contiene el Nombre de la Clase.
Atributos:    Representan las propiedades que caracterizan la clase.
Métodos:     Representan el comportamiento u operaciones, la forma como interactúa la clase con su entorno.



Objeto:
Un objeto se puede definir desde el punto de vista conceptual como una entidad individual de un sistema y que se caracteriza por un estado y un comportamiento. Desde el punto de vista de implementación un objeto es una entidad que posee un conjunto de datos y un conjunto de operaciones (funciones o métodos). Los datos se denominan también atributos y componen la estructura del objeto y las operaciones también llamados métodos representan los servicios que proporciona el objeto.
Los objetos representan una entidad concreta o abstracta del mundo real, en programación básicamente se le conoce como la instancia de una clase en si es lo que da el sentido a estas.
Al igual que las clases se componen de tres partes fundamentales:
Estado: Representa los atributos o características con valores concretos del objeto.
Comportamiento: Se define por los métodos u operaciones que se pueden realizar con él. 
Identidad: Es la propiedad única que representa al objeto y lo diferencia del resto.
En la imagen, los moldes representan las clases, mientras que las galletas obtenidas de estos moldes representan los objetos instancias de estas clases, por ejemplo, atributos del objeto galleta podría ser sabor, color, tamaño, etc.



1.2.2     Herencia:

La herencia representa lo que conocemos de herencia en el mundo real, básicamente mediante esta obtenemos las características o rasgos comunes de nuestros padres o abuelos; en programación es el mismo enfoque; es la propiedad que permite a los objetos ser construidos a partir de otros; es recibir de un módulo superior sus características, tales como atributos o funciones (campos y métodos o comportamientos), para usarlos en el módulo actual. Heredar es compartir atributos y métodos entre clases, que se relacionan de manera jerárquica.

 


1.2.3     Sobrecarga:

En programación orientada a objetos la sobrecarga se refiere a la posibilidad de tener dos o más funciones con el mismo nombre, pero funcionalidad diferente. Es decir, dos o más funciones con el mismo nombre realizan acciones diferentes. El compilador usará una u otra dependiendo de los parámetros usados. A esto se llama también sobrecarga de funciones.
También existe la sobrecarga de operadores que al igual que con la sobrecarga de funciones se le da más de una implementación a un operador.
El mismo método dentro de una clase permite hacer cosas distintas en función de los parámetros.

1.2.4     Evento:

Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento la reacción que puede desencadenar un objeto; es decir, la acción que genera.

1.2.5     Atributos:

Los atributos son las características individuales que tiene la clase y que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables. Las variables de instancia también denominados miembros dato, son declaradas en la clase, pero sus valores son fijados y cambiados en el objeto. Además de las variables de instancia hay variables de clase, las cuales se aplican a la clase y a todas sus instancias. Por ejemplo, el número de ruedas de un automóvil es el mismo cuatro, para todos los automóviles.

1.2.6     Método:

Es un Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.
Es la implementación de un algoritmo que representa una operación o función que un objeto realiza. El conjunto de los métodos de un objeto determinan el comportamiento del objeto.
Un método se implementa en una clase, y determina cómo tiene que actuar el objeto cuando recibe un mensaje. 
Cuando un objeto A necesita que el objeto B ejecute alguno de sus métodos, el objeto A le manda un mensaje al objeto B. 
Al recibir el mensaje del objeto A, el objeto B ejecutará el método adecuado para el mensaje recibido.

1.2.7     Mensajes:

Los objetos interactúan enviándose mensajes unos a otros. Tras la recepción de un mensaje el objeto actuará. La acción puede ser el envío de otros mensajes, el cambio de su estado, o la ejecución de cualquier otra tarea que se requiera que haga el objeto.
Es una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.

1.3       CARACTERÍSTICAS:

Existe un acuerdo acerca de qué características contempla la "orientación a objetos". Las características siguientes son las más importantes:

1.3.1     Abstracción:

La abstracción a objetos expresa las características esenciales de un objeto, así como su comportamiento; las cuales distinguen al objeto de los demás (la abstracción genera la ilusión de simplicidad). Además de distinguir entre los objetos provee límites conceptuales. Entonces se puede decir que la encapsulación separa las características esenciales de las no esenciales dentro de un objeto. Si un objeto tiene más características de las necesarias los mismos resultarán difíciles de usar, modificar, construir y comprender.
Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar "cómo" se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos, y, cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción. El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.

1.3.2     Encapsulamiento:

Significa reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema.
El encapsulado o encapsulación de datos es el proceso de agrupar datos y operaciones relacionadas bajo la misma unidad de programación. En el caso de los objetos que poseen las mismas características y comportamiento se agrupan en clases, que no son más que unidades o módulos de programación que encapsulan datos y operaciones.
La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las clases como cajas negras donde sólo se conoce el comportamiento, pero no los detalles internos, y esto es conveniente porque nos interesará será conocer qué hace la clase, pero no será necesario saber cómo lo hace.

1.3.3     Principio de ocultación:

Es la capacidad de ocultar los detalles internos del comportamiento de una clase y exponer sólo los detalles que sean necesarios para el resto del sistema.
Es el ocultamiento del estado del objeto, es decir, de los datos que pertenecen a un objeto de manera que sólo se pueda cambiar mediante los métodos (u operaciones) definidas para ese objeto. Lo único visible de un objeto para el resto es su interfaz, es decir, los métodos que pueden utilizarse. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas; solamente los propios métodos internos del objeto pueden acceder a su estado.
El ocultamiento permite 2 cosas: restringir y controlar el uso de la clase. Restringir porque habrá cierto comportamiento privado de la clase que no podrá ser accedido por otras clases. Y controlar porque daremos ciertos mecanismos para modificar el estado de nuestra clase y es en estos mecanismos dónde se validarán que algunas condiciones se cumplan.

1.3.4      Modularidad:

Es la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos se pueden compilar por separado, pero tienen conexiones con otros módulos. Al igual que la encapsulación, los lenguajes soportan la modularidad de diversas formas.

1.3.5     Polimorfismo:

El polimorfismo se refiere a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía. En otras palabras; son comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre; al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. De otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.
Este tal vez sea uno de los conceptos de la programación orientada a objetos más usados pero muchas veces sin saber que se aplica ya que el concepto inicialmente puede ser un poco confuso, básicamente mediante el polimorfismo programamos de forma general en lugar de hacerlo de forma específica, se usa cuando se trabajen con la herencia y objetos de características comunes los cuales comparten la misma superClase y árbol jerárquico, al trabajar con este concepto optimizamos y simplificamos en gran medida nuestro trabajo. Básicamente podemos definirlo como la capacidad que tienen los objetos de comportarse de múltiples formas sin olvidar que para esto se requiere de la herencia, en si consiste en hacer referencia a objetos de una clase que puedan tomar comportamientos de objetos descendientes de esta. Con el polimorfismo usamos la generalización olvidando los detalles concretos de los objetos para centrarnos en un punto en común mediante una clase padre.
Tomando como ejemplo la imagen, podemos decir que un objeto de la clase FiguraGeometrica puede usarse para referirse a cualquier objeto de cualquier subClase de FiguraGeometrica, en otras palabras, una figura geométrica puede ser un cuadrado, un triángulo, un círculo o cualquier figura que en términos generales sea geométrica.





1.3.6     Herencia:

Las clases se relacionan entre sí y permiten formar una jerarquía de clasificación. Los objetos heredan propiedades y métodos (comportamientos) de las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento, permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo.
Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple; siendo de alta complejidad técnica por lo cual suele recurrirse a la herencia virtual para evitar la duplicación de datos.

1.3.7     Recolección de basura:

La recolección de basura es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse expresamente.


1.4       PROGRAMACIÓN ORIENTADA A OBJETOS EN VISUAL BASIC NET:

¿Qué es una clase?

En la programación orientada a objetos, utilizamos la abstracción y la encapsulación para crear clases bien diseñadas.

Definición:

Una clase es una plantilla o una estructura preliminar de un objeto. Esta estructura preliminar define atributos para almacenar datos y define operaciones para manipular esos datos. Una clase también define un conjunto de restricciones para permitir o denegar el acceso a sus atributos y operaciones.

Uso de la abstracción:

Para crear una clase bien diseñada, utilizaremos la abstracción. Al implementar la abstracción, definiremos un concepto utilizando un mínimo conjunto de funcionalidades pensadas cuidadosamente que proporcione el comportamiento fundamental de la clase de un modo fácil de utilizar. Por desgracia, no es fácil crear buenas abstracciones de software. Normalmente, encontrar buenas abstracciones requiere un profundo conocimiento del problema que ha de resolver la clase y su contexto, una gran claridad de ideas y mucha experiencia.

Ejemplo de abstracción:

El formulario Visual Basic .NET con el que hemos estado trabajando es un buen ejemplo de abstracción. Las propiedades esenciales de un formulario, como el título y color de fondo, se han abstraído en la clase Form. Algunas operaciones esenciales que se han abstraído son abrir, cerrar y minimizar.

Uso de la encapsulación:

La abstracción se garantiza mediante la encapsulación. La encapsulación es el empaquetamiento de atributos y funcionalidades para crear un objeto que esencialmente es una “caja negra” (cuya estructura interna permanece privada). Empaquetamos los detalles de la abstracción y proporcionamos acceso sólo a los elementos que necesitan estar accesibles. Otros objetos pueden acceder a los servicios de un objeto encapsulado únicamente mediante mensajes que pasan a través de una interfaz claramente definida.

Ejemplo de encapsulación:

Un ejemplo de encapsulación es un terminal de autoservicio (automatic teller machine, ATM). La interfaz de la ATM es simple para el cliente ATM, y el funcionamiento interno está oculto. Del mismo modo, una clase BankAccount encapsularía los métodos, campos y propiedades que describen una cuenta bancaria. Sin la encapsulación, deberíamos declarar procedimientos y variables distintos para almacenar y gestionar información de la cuenta bancaria, y sería difícil trabajar con más de una cuenta bancaria a la vez. La encapsulación permite a los usuarios utilizar los datos y procedimientos de la clase BankAccount como una unidad, sin conocer el código concreto encapsulado en la clase.

¿Qué es un objeto?
  
Un objeto es una unidad de software que contiene una colección de métodos y datos relacionados. Un objeto es una instancia específica de una clase, e incluye las características de esa clase.

Ejemplo de objeto:

La palabra coche tiene diferentes significados en contextos distintos. En ocasiones, hace referencia al concepto general de coche o al conjunto de todos los coches. El uso de la palabra de este modo es parecido al uso de la palabra clase. En ocasiones, la palabra coche se refiere a un coche específico. El uso de la palabra de este modo es parecido al uso de la palabra objeto.

Identidad:
Los objetos tienen identidad. La identidad es la característica que distingue un objeto del resto.

Comportamiento:

Los objetos proporcionan comportamiento. El comportamiento es la característica que hace útiles los objetos. Los objetos existen para proporcionar comportamiento. Por ejemplo, la mayor parte del tiempo podemos ignorar el funcionamiento interno de un coche y pensar en su comportamiento. Los coches son útiles porque podemos conducirlos. El funcionamiento interno existe, pero normalmente es inaccesible. Lo que es accesible es el comportamiento de un objeto. Los objetos de la misma clase comparten el mismo comportamiento. Un coche es un coche porque podemos conducirlo.

Estado:

Los objetos tienen estado. El estado es la característica que hace referencia al funcionamiento interno de un objeto y que le permite proporcionar el comportamiento que le define. Un objeto bien diseñado mantiene su estado inaccesible. El estado está estrechamente relacionado con la abstracción y la encapsulación. No nos preocupa cómo realiza un objeto sus acciones, pero sí que las realice. Dos objetos podrían contener casualmente el mismo estado, pero seguirían siendo dos objetos distintos.

Cómo utilizar el Examinador de objetos:



Uso del Examinador de objetos:

Para abrir el Examinador de objetos, pulse F2 o, en el menú Ver, seleccione Examinador de objetos.
El Examinador de objetos está formado por tres paneles:
ü El panel Objetos muestra todos los objetos contenedores del ámbito de búsqueda en una vista en árbol. Cuando expandimos un elemento haciendo doble clic en él o haciendo clic en el signo más (+) junto a su nombre, aparecen los elementos definidos en él.
ü El panel Miembros muestra los miembros de un elemento cuando seleccionamos el elemento en el panel Objetos.
ü El panel Descripción muestra información detallada sobre el elemento o miembro actualmente seleccionado. Un icono específico representa cada -muestra algunos de los iconos que se utilizan:    





Cómo crear una nueva clase:

ü Abrir un proyecto en Visual Studio .NET (si no hay ninguno abierto).
ü En el menú Proyecto, hacer clic en Agregar clase.
ü En el cuadro Agregar nuevo elemento, escribir el nombre de la nueva clase y hacer clic en Abrir. El Editor de código proporciona instrucciones de programación que marcan las instrucciones de inicio y final de la clase, como sigue:

Public Class ClassName
End Class
Cómo agregar miembros de datos de una instancia:










Ejemplo:
En el siguiente ejemplo, se agrega a la clase un miembro de datos de tipo Double denominado balance (saldo): Private balance As Double palabra clave Me también podemos hacer referencia al miembro de datos balance utilizando la palabra clave Me, como se muestra en el siguiente ejemplo:
Me.balance
La palabra clave Me se comporta como una variable de objeto haciendo referencia a la instancia actual de una clase. Cuando una clase puede tener más de una instancia, la palabra clave Me proporciona una forma para hacer referencia a la instancia específica de la clase en la que el código se está ejecutando actualmente.
Modificadores de acceso:
Podemos controlar la accesibilidad de las entidades dentro de esta clase: algunas estarán accesibles únicamente desde dentro y otras desde dentro y desde fuera. Los miembros de la entidad accesibles únicamente desde dentro son privados. Los miembros de la entidad accesibles tanto desde dentro como desde fuera son públicos. Por ejemplo, necesitaríamos hacer que el miembro de datos de la instancia balance (saldo) fuera privado para que el saldo de la cuenta sólo pudiera modificarse desde dentro de la clase BankAccount.
También podemos utilizar la palabra clave Protected para limitar la accesibilidad a clases que hereden de esta clase. Estudiaremos con más detalle la herencia en la última lección de este módulo.

Cómo agregar métodos:


Ejemplo:

En el siguiente ejemplo, se agrega a la clase un método denominado Deposit:
Public Sub Deposit(ByVal amount As Double)
Balance +=amount
End Sub
En este ejemplo, el método Deposit es público, por tanto, los usuarios de esta clase pueden depositar dinero en una cuenta utilizando el método Deposit.

Sobrecarga de métodos:

La sobrecarga de métodos se produce cuando una clase contiene dos o más métodos con el mismo nombre, pero distintas firmas. Un ejemplo de método sobrecargado es el método MessageBox.Show. El método Show proporciona doce sobrecargas. Estas sobrecargas hacen que el método sea más flexible para los usuarios del método.
Para sobrecargar un método, utilice la palabra clave Overloads. La palabra clave Overloads declara una propiedad o método con el mismo nombre que un miembro existente, pero con una lista de parámetros distinta del miembro original.
El siguiente ejemplo muestra un método sobrecargado denominado Execute. El primer método Execute no toma ningún parámetro. El segundo, únicamente toma como parámetro una cadena.
Public Overloads Sub Execute( )
End Sub
Public Overloads Sub Execute(ByVal connection As String)
End Sub

Cómo agregar propiedades:


Agregar propiedades:
Para agregar miembros de propiedades a una clase, normalmente definimos un miembro de datos privado y procedimientos de propiedades públicos. Podemos realizar dos tipos de procedimientos en propiedades en Visual Basic .NET: Get y Set.
ü  El procedimiento Get recupera el valor de la propiedad desde la clase. No debería modificar el valor.
ü  El procedimiento Set asigna la propiedad.

Ejemplo:
En el siguiente ejemplo, se agrega a la clase BankAccount una propiedad denominada Name:
Public Class BankAccount
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
End Class
ReadOnly y WriteOnly:
Utilizamos el modificador ReadOnly en la declaración de la propiedad para crear únicamente la propiedad Get. Utilizamos el modificador WriteOnly en la declaración de la propiedad para crear únicamente la propiedad Set.
Cómo crear una instancia de una clase:


Sintaxis:
Para crear una instancia de una clase, declaramos una variable del tipo de la clase y utilizamos la palabra clave New, como se muestra en la siguiente línea de código:
Dim nombre_objeto As New tipo_objeto( )

Ejemplo:
El siguiente ejemplo muestra cómo crear una instancia de la clase BankAccount utilizando la palabra clave New:
Sub Main
Dim account As New BankAccount( )
account.Deposit(500.00)
End Sub

Cómo utilizar los constructores:



En Visual Basic .NET, la inicialización de nuevos objetos se controla utilizando constructores. Para crear un constructor para una clase, se crea un procedimiento denominado Sub New en cualquier lugar de la definición de la clase.
Características de Sub New:
El constructor Sub New tiene las siguientes características:
ü El código del bloque Sub New siempre se ejecutará antes de cualquier otro código de una clase.
ü El constructor Sub New solo se ejecutará una vez, cuando se cree un objeto.

Ejemplo de Sub:
El siguiente ejemplo muestra cómo utilizar el constructor Sub New:
Public Sub New( ) ' Perform simple inicialización
intValue = 1
End Sub
La siguiente línea de código crea un objeto desde una clase denominada BankAccount, ya definida en la aplicación.
Dim myAccount As New BankAccount( )
Podemos sobrecargar New y crear tantos constructores de clases como sean necesarios. Esto resulta útil si deseamos inicializar nuestro objeto cuando lo creemos.
Sobrecarga de constructores:
Podemos sobrecargar constructores del mismo modo que se sobrecarga cualquier otro método de una clase. No obstante, no podemos utilizar la palabra clave Overloads cuando sobrecargamos constructores. El siguiente ejemplo muestra cómo sobrecargar New y crear múltiples constructores de clase:
Class BankAccount
Private balance as Double
Sub New( )
' Initialize balance
balance = 0.0
End Sub Sub
New(ByVal amount As Double)
balance = amount
End Sub
End Class
Uno de los constructores del ejemplo anterior toma un parámetro. Si estamos creando un objeto desde tal clase, podemos incluir sus parámetros en la declaración. El siguiente ejemplo muestra cómo invocar el método New que toma un parámetro.
Dim myAccount As New BankAccount(120.00)

Cómo utilizar los destructores:

En Visual Basic .NET, podemos controlar qué ocurre durante la destrucción de objetos utilizando procedimientos denominados destructores.
Finalize y Dispose:
El sistema invoca al destructor Finalize antes de liberar el objeto. Puede utilizarse para limpiar recursos abiertos, como conexiones a bases de datos, o para liberar otros recursos. Sin embargo, existe una demora entre el momento en que un objeto pierde su alcance y el momento en que se invoca al destructor Finalize.
La ejecución de Sub Finalize provoca una ligera pérdida en el rendimiento, por ello únicamente debería definirse un método Sub Finalize cuando sea necesario liberar objetos explícitamente.

Cómo utilizar miembros de datos compartidos:

En Visual Basic .NET, los miembros de datos compartidos pueden utilizarse para permitir que múltiples instancias de una clase hagan referencia a una única variable a nivel de clase.
Sintaxis:
Utilizaremos la siguiente sintaxis para declarar miembros de datos compartidos:
NiveldeAcceso Shared MiembrodeDatos As TipodeDatos
Niveles de acceso:
Los miembros de datos compartidos están directamente enlazados a la clase, y podemos declararlos como públicos o privados. Si declaramos los miembros de datos como públicos, estarán accesibles para cualquier código que pueda acceder a la clase. Si declaramos los miembros de datos como privados, proporcionaremos propiedades compartidas públicas para acceder a la propiedad compartida privada.
Ejemplo:
El siguiente ejemplo muestra cómo crear una clase de cuenta de ahorro (SavingsAccount) que utilice un miembro de datos compartido público para mantener los tipos de interés para una cuenta de ahorro:
Class SavingsAccount
Public Shared InterestRate As Double
Public Function CalculateInterest( ) As Double
End Function
End Class
¿Qué es la herencia?


En la programación orientada a objetos, podemos compartir las características de una clase base en otras clases derivadas de la clase base. Esto se denomina herencia.
Definición:
Herencia es el concepto de reutilizar atributos y operaciones comunes de una clase base en una clase derivada.
Ejemplo de herencia:
Imaginemos tres clases: Cliente, Empleado y Persona. Los atributos y operaciones de la clase base Persona también pueden aplicarse a Cliente o Empleado. La reutilización de estos atributos y operaciones es una técnica eficaz.
Visual Basic .NET soporta herencia simple a nivel de clase. Es decir, una clase únicamente puede heredar de una sola clase base. Esto se muestra en el ejemplo de la ilustración anterior. Otros lenguajes, como C++, permiten que una clase herede de múltiples clases.
Cómo heredar de una clase:
En Visual Basic .NET, la herencia puede utilizarse para derivar una clase de una clase existente. La clase derivada puede heredar todas las propiedades, métodos, miembros de datos, eventos y controladores de eventos de la clase base, facilitando la reutilización de la clase base por toda la aplicación.
La palabra clave Inherits La palabra clave Inherits se utiliza para definir una clase derivada que heredará de una clase base existente.
Ejemplo:
El siguiente ejemplo muestra cómo utilizar la palabra clave Inherits:
Public Class CheckingAccount
Inherits BankAccount
Private Sub ProcessCheck( )
 ' Add code to process a check drawn on this account
End Sub
End Class

¿Qué es el polimorfismo?
La mayoría de sistemas de programación orientada a objetos proporcionan polimorfismo mediante herencia. El polimorfismo basado en herencia implica la definición de métodos en una clase base y sobrecargarlos con nuevas implementaciones en clases derivadas.
Definición:
Polimorfismo hace referencia a la capacidad de definir múltiples clases con diferentes funcionalidades pero con métodos o propiedades de nombres idénticos que pueden utilizarse de forma intercambiable por el código cliente en tiempo de ejecución. El nombre del método reside en la clase base. Las implementaciones de métodos residen en las clases derivadas. Para gestionar esto, únicamente puede declararse en la clase base el nombre del método (no el código que proporciona la funcionalidad del método).
Ejemplo de polimorfismo:
Supongamos que definimos una clase denominada BaseTax que proporciona funcionalidad básica para calcular el impuesto sobre las ventas de un estado. Las clases derivadas de BaseTax, como CountyTax o CityTax, podrían implementar métodos como CalculateTax.
Polimorfismo hace referencia al hecho de que la implementación del método CalculateTax podría ser distinta en cada una de las clases derivadas. Por ejemplo, el tipo impositivo de un condado (county tax rate) podría ser distinto del tipo impositivo de una ciudad (city tax rate). Las clases que hereden de BaseTax tendrán un método CalculateTax, pero el modo como se calcule realmente el impuesto podría variar en cada una de las clases derivadas.

2        RESUMEN:

La Programación Orientada a Objetos es un paradigma de programación que surgió en 1970, que utiliza objetos como elementos fundamentales en la construcción de la solución.
En un programa orientado a objetos tendremos a un conjunto de objetos colaborando entre ellos.
La orientación a objetos es paradigma de que está de moda para el desarrollo de software.
Un objeto es una abstracción conceptual del mundo real que se puede traducir a un lenguaje de programación orientado a objetos.
Un objeto del mundo real tiene características y comportamientos, y de la misma manera, un objeto del mundo del software tiene variables y métodos.
Una clase es una plantilla que define las variables y métodos a ser incluidas en un tipo de objeto específico.
Los objetos también son llamados instancias de la clase. Los objetos sólo almacenan su estado. Se dice que un objeto tiene estado cuando tiene valores en sus variables.
Los objetos se comunican entre ellos usando los mensajes. Un mensaje es la invocación de un método del objeto.
La orientación a objetos requiere de una metodología que integre el proceso de desarrollo y un lenguaje de modelamiento con herramientas y técnicas adecuadas.
En general, se dice que cada objeto es una instancia o ejemplar de una clase.

3        SUMMARY:

Object Oriented Programming is a programming paradigm that emerged in 1970, which uses objects as fundamental elements in the construction of the solution.
In an object-oriented program we will have a set of objects collaborating with each other.
Object orientation is a paradigm of fashion for software development.
An object is a conceptual abstraction of the real world that can be translated into an object-oriented programming language.
A real-world object has characteristics and behaviors, and in the same way, an object in the software world has variables and methods.
A class is a template that defines the variables and methods to be included in a specific object type.
Objects are also called instances of the class. Objects only store their state. It is said that an object has state when it has values ​​in its variables.
Objects communicate with each other using messages. A message is the invocation of an object method.
Object orientation requires a methodology that integrates the development process and a modeling language with appropriate tools and techniques.
In general, each object is said to be an instance or instance of a class.

4        RECOMENDACIONES:

Elegir el entorno de Programación depende principalmente del tipo de aplicación a desarrollar.
¨     Entender los conceptos de programación orientada a objetos, incluyendo clase, abstracción, encapsulación y objeto
¨     Si la aplicación involucra operaciones con base de datos, interfaces web u otras tareas de negocio, la opción ideal es Visual Basic.

5        CONCLUSIONES:

Se puede hablar de Programación Orientada a Objetos cuando se reúnen las características de: abstracción, encapsulación, herencia y polimorfismo; y los conceptos básicos que las forman: objetos, mensajes, clases, instancias y métodos.
La programación orientada a objetos permite la optimización del código generado gracias a que, mediante técnicas de herencia, atributos estáticos entre otros permiten, que el código sea genérico de manera que sea reutilizable.
Podemos decir que los lenguajes de programación orientados a objetos tratan a los programas como conjuntos de objetos que se ayudan entre ellos para realizar acciones, entendiendo como objeto a las entidades que contienen datos y permitiendo que los programas sean más fáciles de escribir, mantener y reutilizar.

6        APRECIACIÓN DEL EQUIPO:

ü  La POO está basada en clases y objetos. Aprender a manejarlos es fundamental para el siguiente paso, y es entender otra de las grandes ventajas de este tipo de programación: cómo las clases se relacionan entre sí y nos permiten enfocar aplicaciones complejas de una forma sencilla.
ü  Con la Programación Orientada a Objetos se pueden hacer programas más complejos, pero a la vez más fácil de entender, permitiendo el trabajo en equipo y la reutilización del código.

7        GLOSARIO DE TÉRMINOS:

¨     Abstraer: Separar por medio de una operación intelectual una cualidad de la cosa en la que existe y considerarla aisladamente de esta cosa.
¨     Interfaz: Esta noción sirve para señalar a la conexión que se da de manera física y al nivel de utilidad entre dispositivos o sistemas. Se conoce como interfaz de usuario al medio que permite a una persona comunicarse con una máquina.
¨     Inherits: La instrucción Inherits hace que una clase herede todos los miembros no privados de la clase especificada.
¨      Cohesión: Cohesión se refiere al grado en que los elementos de un módulo permanecen juntos.Por lo tanto, la cohesión mide de la fuerza de la relación entre las piezas de funcionalidad dentro de un módulo dado.

8        LINKOGRAFÍA:


ü  http://www.alegsa.com.ar/Dic/programacion_orientada_a_objetos.php
ü  http://www.ciberaula.com/articulo/tecnologia_orientada_objetos
ü  http://apdaza-poo.blogspot.pe/2007/09/conceptos-bsicos-de-poo.html
ü  http://codejavu.blogspot.pe/2013/05/conceptos-de-programacion-orientada.html
ühttp://www.marcoteorico.com/curso/51/fundamentos-de-programacion/390/conceptos-fundamentales-de-la-programacion-orientada-a-objetos
ü  https://anaylenlopez.files.wordpress.com/2011/03/10-programacion-orientada-a-objetos-en-visual-basic-net.pdf
ü  https://es.slideshare.net/secret/EwzBlSxBdfbrJ2

Comentarios

Entradas más populares de este blog

TRANSACCIONES EN SQL SERVER

APLICACIONES N-CAPAS EN VISUAL.NET

PROCEDIMIENTOS ALMACENADOS