viernes, 6 de marzo de 2009

la revolucion de la tecnologia orientada a objetos

LA TECNOLOGIA ORIENTADA A OBJETOS esta abarcando todos los ambitos no solo en la programación dado todas las ventajas que ofrece tales como la reutilización de código permitiendo crear sistemas mas complejos de modo que esto también influye en la cantidad de líneas de código que de algún modo serán menos, inclusive esto permite que si se le quiere añadir alguna nueva característica sólo se le agrega una pequeña línea de código sino también en la creación y administración de bases de datos, etc





primero seria necesario conocer ciertos conceptos


¿Qué es un objeto?
Un objeto es una estructura de datos (cuyos componentes denominaremos atributos) y un conjunto de procedimientos y funciones (que denominaremos métodos) para manipular la estructura de datos. La única forma de manipular la información del objeto es a través de sus métodos.



la Programacion Orientada a Objetos(POO) tiene una serie de ventajas como son:

Fomenta la reutilización y extensión del código.
Permite crear sistemas más complejos.
Relacionar el sistema al mundo real.
Facilita la creación de programas visuales.
Construcción de prototipos
Agiliza el desarrollo de software
Facilita el trabajo en equipo
Facilita el mantenimiento del software



Lo interesante de la POO es que proporciona conceptos y herramientas con las cuales se modela y representa el mundo real tan fielmente como sea posible.



La programación modular consiste en descomponer la aplicación a realizar en módulos que se programan y compilan por separado. Después, la aplicación se construye a partir de un programa principal que usa los módulos previamente programados.
Cuando los programas son grandes es absolutamente necesario descomponerlos en módulos. Cuando se desarrolla una aplicación informática en equipo, cada programador se puede encargar de la realización de una parte que se materializará en uno o varios módulos y podrá de esta forma trabajar de forma independiente. Posteriormente los diferentes módulos se unirán para constituir la aplicación final.



La programación modular tiene muchas ventajas:
§ facilita una buena organización del código
§ facilita el reparto de trabajo entre varios programadores (cada uno puede dedicarse a implementar uno de los módulos)
§ facilita el mantenimiento de las aplicaciones (se puede mejorar un módulo sin tener que cambiar más que los ficheros de ese módulo)



La programación orientada a objetos facilita la modularización del código, puesto que fuerza a que cada clase esté en ficheros (de cabecera y de código) diferentes. Por tanto, las aplicaciones estarán mejor organizadas y serán más claras de entender. Evidentes cuando el tamaño de la aplicación es grande. Si la aplicación es pequeña entonces probablemente no vale la pena usar la programación orientada a objetos. Observa por ejemplo, que en la aplicación que acabas de hacer has tenido que escribir mucho código para hacer bien poca cosa. Programando directamente en C hubieras podido hacer lo mismo con menos líneas de código y probablemente con igual grado de claridad y estructuración.Por último, otra ventaja importante de la programación orientada a objetos es la facilidad para reutilizar código.



Características asociadas al POO

Abstracción
La abstracción consiste en captar las características esenciales de un objeto, así como su comportamiento. Por ejemplo, volvamos al ejemplo de los automóviles, ¿Qué características podemos abstraer de los automóviles? O lo que es lo mismo ¿Qué características semejantes tienen todos los automóviles? Todos tendrán una marca, un modelo, número de chasis, peso, llantas, puertas, ventanas, etc. Y en cuanto a su comportamiento todos los automóviles podrán acelerar, frenar, retroceder, etc.
En los lenguajes de programación orientada a objetos, el concepto de Clase es la representación y el mecanismo por el cual se gestionan las abstracciones.
Por ejemplo, en Java tenemos:
public class Automovil {// variables// métodos}
Encapsulamiento
El encapsulamiento consiste en unir en la Clase las características y comportamientos, esto es, las variables y métodos. Es tener todo esto es una sola entidad. En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstracción y el ocultamiento que veremos a continuación.
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.
Ocultamiento
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.
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. En Java el ocultamiento se logra usando las palabras reservadas: public, private y protected delante de las variables y métodos.

Lenguajes de Programación Orientado a Objetos


En 1985, E. Stroustrup extendió el lenguaje de programación C a C++, es decir C con conceptos de clases y objetos, también por esas fechas se creo desde sus bases el lenguaje EIFFEL.
En 1995 apareció el más reciente lenguaje OO, Java desarrollado por SUN, que hereda conceptos de C++.
El lenguaje de desarrollo más extendido para aplicaciones Web, el PHP 5, trae todas las características necesarias para desarrollar software orientado a objetos.
Además de otros lenguajes que fueron evolucionando, como el Pascal a Delphi.
Finalmente también otros lenguajes script como el ActionScript que si bien no es totalmente orientado a objetos pero sí posee las características.
Análisis y diseño Orientado a Objetos
Para el desarrollo de software orientado a objetos no basta usar un lenguaje orientado a objetos. También se necesitará realizar un análisis y diseño orientado a objetos.
El modelamiento visual es la clave para realizar el análisis OO. Desde los inicios del desarrollo de software OO han existido diferentes metodologías para hacer esto del modelamiento, pero sin lugar a duda, el Lenguaje de Modelamiento Unificado (UML) puso fin a la guerra de metodologías.
Según los mismos diseñadores del lenguaje UML, éste tiene como fin modelar cualquier tipo de sistemas (no solamente de software) usando los conceptos de la orientación a objetos. Y además, este lenguaje debe ser entendible para los humanos y máquinas.
Actualmente en la industria del desarrollo de software tenemos al UML como un estándar para el modelamiento de sistemas OO. Fue la empresa Racional que creó estas definiciones y especificaciones del estándar UML, y lo abrió al mercado. La misma empresa creó uno de los programas más conocidos hoy en día para este fin; el Racional Rose, pero también existen otros programas como el Poseidon que trae licencias del tipo community edition que permiten su uso libremente.
El UML consta de todos los elementos y diagramas que permiten modelar los sistemas en base al paradigma orientado a objetos. Los modelos orientados a objetos cuando se construyen en forma correcta, son fáciles de comunicar, cambiar, expandir, validar y verificar. Este modelamiento en UML es flexible al cambio y permite crear componentes plenamente reutilizables.


Ventajas y desventajas de la programación orientada a objetos
La programación orientada a objetos pretende reflejar el mundo real, que se compone de objetos con los que (en general) sólo podemos realizar aquellas operaciones (métodos) previstos por los diseñadores del objeto. Una lavadora, por ejemplo, se compone de una serie de elementos (atributos) tales como: un motor, cables, tubos, una caja metálica, etc. Para usar una lavadora a nadie se le ocurre abrir la caja metálica y empezar a manipular esos elementos. Si hiciera eso lo más probable es que estropease la lavadora. Lo que hará es usar alguno de los programas de lavado pre-establecidos. Con los objetos pasa lo mismo: el hecho de que no podamos acceder directamente a sus atributos, sino usar solamente sus métodos hace que se reduzca la probabilidad de cometer errores, siempre y cuando los objetos hayan sido probados a fondo previamente.

No hay comentarios:

Publicar un comentario