Académique Documents
Professionnel Documents
Culture Documents
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.
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.
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.
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.
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.
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.