Vous êtes sur la page 1sur 6

Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados

por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos
para poder tratar los atributos con los que cuenta. El programador debe pensar
indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de
ellos. Hacerlo podría producir el hábito erróneo de crear clases contenedoras de
información por un lado y clases con métodos que manejen a las primeras por el otro.
De esta manera se estaría realizando una "programación estructurada camuflada" en un
lenguaje de POO.

La programación orientada a objetos difiere 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.
La programación estructurada anima al programador a pensar sobre todo en términos de
procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos
procedimientos manejan. En la programación estructurada solo se escriben funciones
que procesan datos. Los programadores que emplean POO, en cambio, primero definen
objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí
mismos.

Origen
Los conceptos de la POO 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 idea surgió al agrupar los diversos
tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de
definir sus "propios" datos y comportamientos. Fueron refinados más tarde en
Smalltalk, desarrollado en Simula en Xerox PARC (cuya primera versión fue escrita
sobre Basic) pero diseñado para ser un sistema completamente dinámico en el cual los
objetos se podrían crear y modificar "sobre la marcha" (en tiempo de ejecución) en
lugar de tener un sistema basado en programas estáticos.
La POO se fue convirtiendo en el estilo de programación dominante a mediados de los
años 1980, 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 POO 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 más Pascal, entre otros. La
adición de estas características a los lenguajes que no fueron diseñados inicialmente
para ellas condujo a menudo a problemas de compatibilidad y en la capacidad de
mantenimiento del código. Los lenguajes orientados a objetos "puros", por su parte,
carecían de las características de las cuales muchos programadores habían venido a
depender. Para saltar este obstáculo, se hicieron muchas tentativas para crear nuevos
lenguajes basados en métodos orientados a objetos, pero permitiendo algunas
características imperativas de maneras "seguras". El lenguaje de programación Eiffel de
Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos
objetivos, pero ahora ha sido esencialmente reemplazado por Java, en gran parte debido
a la aparición de Internet y a la implementación de la máquina virtual Java en la
mayoría de navegadores web. PHP en su versión 5 se ha modificado; soporta una
orientación completa a objetos, cumpliendo todas las características propias de la
orientación a objetos.

Conceptos fundamentales
La POO 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
Una clase se puede definir de las propiedades y comportamiento de un tipo de
objeto concreto. La instanciación es la lectura de estas definiciones y la creación
de un objeto a partir de ella.
Herencia
Una característica notable que permite este modelo de desarrollo es la llamada
“herencia”, que consiste en crear nuevos objetos a partir de los anteriores, modificando
o ampliando tanto sus atributos como los métodos a ejercer sobre ellos.

Pese a que la programación orientada a objetos ha ido ganando popularidad en el mundo


de la programación a partir de finales de la década de los 80 y principios de los 90, lo
cierto es que su creación se remonta bastante más atrás, a finales de los años 60.

El detonante del éxito de la programación orientada a objetos fue, en gran medida, la


popularización de los entornos gráficos de usuario como Windows, ya que el paradigma
facilita en gran medida la creación de recursos gráficos, derivarlos en otros recursos
similares (mediante la antes comentada herencia), y trabajar con métodos que
responden a las acciones de los usuarios sobre los elementos.

A partir de aquí, se convirtió en el paradigma dominante, siendo el que utilizaban un


mayor número de lenguajes, y el de mayor éxito entre los programadores, una situación
que se ha prolongado en el tiempo hasta el día de hoy.

Las diferentes tipologías de objeto deben ser declaradas como clase en un punto inicial
del programa antes de poder instanciar objetos que pertenezcan a dicha clase.

De esta forma se estructura el programa de una forma comprensible para alguien que lo
examine desde fuera, al seguir una secuencia lógica.

Para hacer comprensibles estos conceptos, pongamos un ejemplo: un programa de


administración de personal en una empresa.

Una clase podría ser la de trabajador, con atributos como el nombre, apellidos, número
de la seguridad social, cargo, sueldo, etc. Cada objeto instanciado sería un trabajador
distinto. Por ejemplo, podríamos crear una lista por cada departamento, o una lista
global de trabajadores, dependiendo de la forma de gestionar y de pensar el programa.
Los métodos a aplicar sobre esta clase podrían ser varios, como “aumento de sueldo”,
que multiplicaría el salaria por un porcentaje determinado, o asignar días de vacaciones,
que insertaría marcas de vacaciones en el calendario de cada trabajador, las cuales
diferirán entre trabajadores para poder disfrutar de turnos.

Esta clase podría dar lugar, mediante herencia, a una nueva clase llamada “becarios”, la
cual no tuviera un atributo como es el de sueldo, pero sí uno o varios referidos a la
formación, ya que el estatus legal de los becarios podría obligar a la empresa a
formarlos.

A lo largo de los años, han surgido muchos lenguajes de programación que abrazan
abiertamente el paradigma de orientación a objetos como forma de trabajo.

El lenguaje más conocido es tal vez el C++, que dota al tradicional C de una pátina de
La programación orientada a objetos no es lo que hace falta en
un lenguaje particular. Lo mismo que la programación estructurada, los
conceptos de POO se pueden implementar usando lenguajes tales
como C y PASCAL, sin embargo, la programación se hace pesada y
puede generar confusión cuando los programas crecen de tamaño. Un
lenguaje que este especialmente diseñado para soportar los conceptos
de POO se vuelve mas adecuado para implementarlos.

Los lenguajes deberían soportar varios de los conceptos de POO para


proclamar que están orientados a objetos. Dependiendo de las
características que soportan, se pueden clasificar en las 2 categorías
siguientes:

1. Lenguajes de programación basados en objetos.

2. Lenguajes de programación orientados a objetos.

La programación basada en objetos es el estilo de programación que


soporta principalmente encapsulación e identidad de objetos. Las
caracteristicas principales que se requieren para la programación
basada en objetos son:

 Encapsulación de datos.
 Ocultación de datos y mecanismos de acceso.
 Inicialización automática y aclarado de objetos.
 Sobrecarga de Operadores.
Se dice que los lenguajes que no soportan programación con objetos
son lenguajes de programación basados en objetos. No soportan la
herencia ni la ligadura dinámica. Ada es un típico lenguaje de
programación basado en objetos.

La programación orientada a objetos incorpora todas las características


de la programación basada en objetos junto con dos características
adicionales, a saber, herencia y ligadura dinámica. La programación
orientada a objetos puede tanto estar caracterizada por la siguiente
sentencia:

Características basadas en objetos + herencia + ligadura dinámica

Entre los lenguajes que soportan estas características se incluyen C++,


Smalltalk, Object Pascal y Java, aunque existe un gran número de lenguajes de
programación basados en objetos y orientados a objetos.

Vous aimerez peut-être aussi