2. La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma
de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y
programas informáticos. Está basado en varias
técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulami
ento. . En la actualidad, existe una gran variedad de lenguajes de programación que soportan la
orientación a objetos.
Los objetos son entidades que tienen un determinado estado, comportamiento
(método) e identidad:
*El estado está compuesto de datos o informaciones; serán uno o varios atributos a los que se
habrán asignado unos valores concretos (datos).
*El comportamiento está definido por los métodos o mensajes a los que sabe responder dicho
objeto, es decir, qué operaciones se pueden realizar con él.
La identidad es una propiedad de un objeto que lo diferencia del resto; dicho con otras
palabras, es su identificador (concepto análogo al de identificador de una variable o una
constante). Un objeto contiene toda la información que permite definirlo e identificarlo frente a
otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al
poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de
mecanismos de interacción llamados métodos, que favorecen la comunicación entre ellos.
3. Origen
Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje
diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard, del Centro de
Cómputo Noruego en Oslo. En este centro se trabajaba en simulaciones de naves, que fueron
confundidas por la explosión combinatoria de cómo las diversas cualidades de diferentes naves
podían afectar unas a las otras.
La programación orientada a objetos se fue convirtiendo en el estilo de programación dominante a
mediados de los años ochenta, en gran parte debido a la influencia de C++, una extensión
del lenguaje de programación C. Su dominación fue consolidada gracias al auge de las Interfaces
gráficas de usuario, para las cuales la programación orientada a objetos está particularmente bien
adaptada. En este caso, se habla también de programación dirigida por eventos.
Las características de orientación a objetos fueron agregadas a muchos lenguajes existentes
durante ese tiempo, incluyendo Ada, BASIC, Lisp y Pascal, entre otros. La adición de estas
características condujo a menudo a problemas de compatibilidad y en la capacidad de
mantenimiento del código.
4. *Conceptos fundamentales
La programación orientada a objetos es una forma de programar que trata de encontrar una solución a
estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos.
Entre ellos destacan los siguientes:
Clase
Definiciones de las propiedades y comportamiento de un tipo de objeto concreto.
Herencia
(Por ejemplo, herencia de la clase C a la clase D) es la facilidad mediante la cual la clase D hereda en ella
cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos
por la misma D.
Objeto
Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad
(métodos)
Método
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción
de un "mensaje".
Atributos
Características que tiene la clase.
Mensaje
Una comunicación dirigida a un objeto
5. *Características de la POO
Abstracción
Denota las características esenciales de un objeto, donde se capturan sus comportamientos.
Encapsulamiento
permite aumentar la cohesión de los componentes del sistema.
Modularidad
que permite subdividir una aplicación en partes más pequeñas (llamadas módulos)
Principio de ocultación
El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga
derecho a acceder a ellas
Polimorfismo
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.
Recolección de basura
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.
6. *Ventajas
*Reusabilidad. Cuando hemos diseñado adecuadamente las clases, se pueden usar en
distintas partes del programa y en numerosos proyectos.
*Mantenibilidad. Debido a las sencillez para abstraer el problema, los programas
orientados a objetos son más sencillos de leer y comprender, pues nos permiten
ocultar detalles de implementación dejando visibles sólo aquellos detalles más
relevantes.
*Modificabilidad. La facilidad de añadir, suprimir o modificar nuevos objetos nos
permite hacer modificaciones de una forma muy sencilla.
*Fiabilidad. Al dividir el problema en partes más pequeñas podemos probarlas de
manera independiente y aislar mucho más fácilmente los posibles errores que
puedan surgir.
7. *Desventajas
*Cambio en la forma de pensar de la programación tradicional a la orientada a
objetos.
*La ejecución de programas orientados a objetos es más lenta.
*La necesidad de utilizar bibliotecas de clases obliga a su aprendizaje y
entrenamiento.
8. *El futuro de la POO
*El futuro de la programación orientada a objetos probablemente
se encuentra con lenguajes como Ruby y Lua, en el que se
construye el concepto de objeto en el lenguaje y no siempre
explícitamente controlado por el programador. Ruby, por
ejemplo, trata todo como un objeto, incluyendo
cadenas, números, tu programa y los contenidos del directorio en
el que estás actualmente. Casi nunca tendrás que declarar nada
para que sea un objeto. Eres libre de utilizar la lengua de la forma
que desee: como programación orientada a objetos, como un
lenguaje funcional, como lengua de procedimiento o incluso en
formas que mezclan las modalidades.
9. * Lenguajes orientados a objetos
Entre los lenguajes
orientados a objetos
se destacan los
siguientes:
*ABAP -> SAP
Lenguaje orientado
a eventos
*ABL Lenguaje de
programación de
OpenEdge de
Progress Software
*ActionScript
*ActionScript 3
*Ada
*C++
*C#
*Clarion
*Clipper1
*D
*Object
Pascal (Embarcade
ro Delphi)
*Gambas
*Genie
*Harbour
*Eiffel
*Fortran 90/95
*Java
*JavaScript2
*Lexico3
*Objective-C
*Ocaml
*Oz
*R
*Perl4
*PHP5
*PowerBuilder
*Python
*Ruby
*Self
*Smalltalk6
*Magik (SmallWorld)
*Vala
*VB.NET
*Visual FoxPro7
*Visual Basic 6.0
*Visual DataFlex
*Visual Objects
*XBase++
*Lenguaje DRP
*Scala8