sábado, 11 de mayo de 2013

Programación Orientada a Objeto en .NET

Todo .NET Framework está basado en clases (u objetos). A diferencia de las versiones anteriores de Visual Basic, la versión .NET de este lenguaje basa su funcionamiento casi exclusivamente en las clases contenidas en .NET Framework, además casi sin ningún tipo de limitación.  La programación orientada a objetos puede describirse como el conjunto de disciplinas que desarrollan y modelizan software que facilitan la construcción de sistemas complejos a partir de componentes.
El atractivo intuitivo de la orientación a objetos es que proporciona conceptos y herramientas con las cuales se modela y representa el mundo real tan fielmente como sea posible. Estos conceptos y herramientas orientados a objetos son tecnologías que permiten que los problemas del mundo real sean expresados de modo fácil y natural.
Las técnicas orientadas a objetos proporcionan mejoras y metodologías para construir sistemas de software complejos a partir de unidades de software modularizado y reutilizable. Se necesita un nuevo enfoque para construir software en la actualidad. Este nuevo enfoque debe ser capaz de manipular tanto sistemas grandes como pequeños y debe crear sistemas fiables que sean flexibles, mantenibles y capaces de evolucionar para cumplir las necesidades del cambio.
La programación orientada a objetos trata de cubrir las necesidades de los usuarios finales, así como las propias de los desarrolladores de productos software. Estas tareas se realizan mediante la modelización del mundo real. El soporte fundamental es el modelo objeto.

Pilares en la Programación Orientada a Objetos 

Todos los lenguajes basados en objetos, deben cumplir estos tres requisitos:
  • Herencia 
  • Encapsulación 
  • Polimorfismo

Herencia


Esta es la característica más importante de la POO. Según la propia documentación de Visual Studio .NET:

"La herencia permite crear nuevas clases a partir de clases existentes. La herencia puede simplificar el diseño de la aplicación proporcionando una estructura de relaciones entre las distintas clases. También admite la reutilización de código porque sólo se debe codificar el comportamiento de clases nuevas o distintas.".
Una relación de herencia es una relación en la que un tipo (el tipo derivado) se deriva de otro (el tipo base), de tal forma que el espacio de declaración del tipo derivado contiene implícitamente todos los miembros de tipo no constructor del tipo base.

Encapsulación

“La encapsulación es la capacidad de contener y controlar el acceso a un grupo de elementos asociados. Las clases proporcionan una de las formas más comunes de encapsular elementos."
Cuando usamos las clases, éstas tienen una serie de características (los datos que manipula) así como una serie de comportamientos (las acciones a realizar con esos datos). La encapsulación es esa capacidad de la clase de ocultarnos sus interioridades para que sólo veamos lo que tenemos que ver, sin tener que preocuparnos de cómo está codificada para que haga lo que hace... simplemente nos debe importar que lo hace.

Polimorfismo

"El polimorfismo se refiere a la posibilidad de definir múltiples clases con funcionalidad diferente, pero con métodos o propiedades denominados de forma idéntica, que pueden utilizarse de manera intercambiable mediante código cliente en tiempo de ejecución."
Dicho de otra manera, puede tener múltiples clases que se pueden utilizar de forma intercambiable, si bien cada clase implementa las mismas propiedades o los mismos métodos de maneras diferentes. 
El polimorfismo es importante en la programación orientada a objetos puesto que permite usar elementos que tienen el mismo nombre, independientemente del tipo de objeto que se esté utilizando en ese momento.

Manejo de clases y objetos


Una clase es simplemente una representación de un tipo de objeto. Una clase define las características de un objeto, incluyendo las propiedades que definen los tipos de datos que ese objeto puede contener y los métodos que describen el comportamiento del objeto. Estas características determinan la manera en que otros objetos pueden acceder y trabajar con los datos que se incluyen en el 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.
Las abstracciones de datos (atributos) que describen la clase están encerradas por una “muralla” de abstracciones procedimentales (llamadas operaciones, métodos y eventos) capaces de manipular los datos de alguna manera. La única forma de alcanzar los atributos (y operar sobre ellos) es ir a través de alguno de los métodos que forman la muralla. Por lo tanto, la clase encapsula datos (dentro de la muralla) y el proceso que manipula los datos (los métodos que componen la muralla). Esto posibilita la ocultación de información y reduce el impacto de efectos colaterales asociados a cambios.

Atributos

Los atributos están asociados a clases y objetos, y describen la clase o el objeto de alguna manera. Las entidades de la vida real están a menudo descritas con palabras que indican características estables. La mayoría de los objetos físicos tienen características tales como forma, peso, color y tipo de material. Las personas tienen características como fecha de nacimiento, padres, nombre y color de los ojos.

Propiedades

Las propiedades son métodos que permiten acceder o recuperar los valores de los atributos y se implementan mediante los procedimientos Get y Set.

Operaciones y Métodos

Un objeto encapsula datos (representados como una colección de atributos) y algoritmos que procesan estos datos. Estos algoritmos son llamados operaciones o métodos y pueden ser vistos como módulos en un sentido convencional. Los métodos se definen como procedimientos o funciones.

Eventos

Los eventos son el medio a través del cual interactúan los objetos. Un evento estimula la ocurrencia de cierto comportamiento en el objeto receptor. El comportamiento se realiza cuando se ejecuta un método.
Un evento dentro de un objeto emisor genera un mensaje de la forma:
destino.operación (parámetros)
Donde destino define al objeto receptor el cual es estimulado por el mensaje, operación se refiere al método que recibe el mensaje y parámetros proporciona información requerida para el éxito de la operación.
Los eventos proporcionan una visión interna del comportamiento de objetos individuales, y del sistema Orientado a Objetos como un todo.

Constructor

Para inicializar los atributos los nuevos objetos se controla utilizando constructores.
Un constructor es un método que permite inicializar los atributos de una clase. Este método se ejecuta al momento de instanciar la clase. 
Podemos sobrecargar constructores del mismo modo que se sobrecarga cualquier otro método de una clase.

No hay comentarios:

Tu opinión importa. Dejanos un comentario ;)