Está en la página 1de 15

HISTORIA POO

La programación orientada a objetos (POO) nace en los años 60's en el


Norwegian Computing Center con la implementación de dos lenguajes
de programación de simulación: Simula 1 y Simula 67, desarrollados por
Kristen Nygaard y Ole Johan Dahl. Simula 67 introdujo por primera vez
los conceptos de clases, objetos, herencia, subclases, corrutinas y
funciones virtuales. Es por esta razón que Simula es considerado el
primer lenguaje orientado a objetos.
LENGUAJES DE PROGRAMACIÓN ORIENTADOS A OBJETOS Y
LENGUAJES DE PROGRAMACIÓN ORIENTADOS AL PROBLEMA.

Es un paradigma de la programación de computadores que tiene como objetivo el


desarrollo computacional basado en una colección de objetos que están
interrelacionados y trabajan conjuntamente para resolver un problema. Surge dentro
de los paradigmas de la programación como un enfoque diferente al momento de
obtener soluciones computacionales.
La POO es una nueva filosofía de programación que se basa en la utilización de
objetos. El objetivo de la POO no es sino la meta de cualquier modelo de
programación estructurada convencional: "imponer" una serie de normas de
desarrollo que aseguren y faciliten la mantenibilidad y reusabilidad del código. Los
mecanismos básicos de la POO son: objetos, mensajes, métodos y clases.
Objetos. Un objeto es una entidad que tiene unos atributos particulares (datos) y
unas formas de operar sobre ellos (los métodos o funciones miembro). Es decir, un
objeto incluye, por una parte una serie de operaciones que definen su
comportamiento, y una serie de variables manipuladas por esas funciones que
definen su estado. Por ejemplo, una ventana Windows contendrá operaciones como
"maximizar" y variables como "ancho" y "alto" de la ventana.

Mensajes. En C++, un mensaje se corresponde con el nombre de uno de los


métodos de un objeto. Cuando se pasa un mensaje a un objeto, este responde
ejecutando el código de la función asociada.
Por ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos
pasándole el mensaje "ponte en marcha".
Para mandar mensajes a los objetos utilizamos el operador punto, seguido del método que
deseamos invocar y los paréntesis, como en las llamadas a las funciones.
miCoche.ponerseEnMarcha()
Método. Un método (función miembro) se implementa dentro de un objeto y determina
como tiene que actuar el objeto cuando se produce el mensaje asociado. En C++ un
método se corresponde con la definición de la función miembro del objeto. La estructura
más interna de un objeto está oculta, de tal manera que la única conexión con el exterior
son los mensajes, es decir describen el comportamiento de los objetos de una clase.
Estos representan las operaciones que se pueden realizar con los objetos de la clase, la
ejecución de un método puede conducir a cambiar el estado del objeto.
Si el objeto es Persona, los métodos pueden ser: hablar, caminar, comer, dormir, etc.

Clases. Una clase es la definición de un tipo de objetos. De esta manera, una clase
"Empleado" representaría todos los empleados de una empresa, mientras que un objeto
de esa clase (también denominado instancia) representaría a uno de esos empleados en
particular.
Las clases definen las características del objeto
El mensaje está codificado en el bloque de código de la clase Saludos. Este bloque de código
se ejecuta solamente cuando existe una instancia o variable de tipo Saludos, lo que ocurre
efectivamente al crear una instancia por medio de la instrucción New. En Simula, los objetos
siempre son manejados por medio de referencias. Existe un recolector de basura que se
encarga de eliminar de la memoria los objetos que se han quedado sin referencias a ellos. Una
de estas referencias la vemos con variable objeto. Utilizamos el operador :- para asignar
referencias. A diferencia de muchos lenguajes modernos, Simula entiende de dos tipos de
objetos:

Activos: Son aquellos objetos que aún no han completado su bloque asociado begin/end.
Inactivos: Son aquellos que han completado su bloque de instrucciones.
Tanto de unos como de otros, es posible ejecutar los procedimientos miembro y consultar los
atributos en cualquier momento.
EVOLUCIÓN

Años después del desarrollo de Simula 67 casi todos los lenguajes de programación modernos
comenzaron a utilizar los principios de orientación a objetos. Así fue como se popularizaron
términos como clases, objetos, instancias, herencia, polimorfismo, etc. Un ejemplo significativo fue
el nacimiento del lenguaje Java, uno de los lenguajes orientados a objetos con mayor
reconocimiento a nivel mundial.
VENTAJAS
- Una buena abstracción de las clases, objetos y atributos nos brinda una implementación más detallada,
puntual y coherente.
- Reutilización de código: Cuando se han diseñado adecuadamente las clases, se pueden usar en distintas
partes del programa y en numerosos proyectos (herencia). Lo cual permite:
Rápido desarrollo.
Alta calidad del código.
Bajo costo en fases de desarrollo.
- Modificabilidad: La facilidad de añadir o suprimir nuevos objetos nos permite hacer modificaciones de una
forma muy sencilla.
- Encapsulamiento: Nos permite proteger la integridad de los datos.
- 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.
- Bajo acoplamiento y alta cohesión: Las clases son independientes entre sí, y hacen las tareas específicas para
las cuales fueron diseñadas.
- Beneficios de diseño
- Mantenimiento de software
- Amplia documentación
DESVENTAJAS

- Curva de aprendizaje: La necesidad de utilizar bibliotecas de clases obliga a


su aprendizaje y entrenamiento.
- La ejecución de programas orientados a objetos es más lenta.
- Se hereda código que no se usa en la clase hija cuando se extiende de una
clase padre.
- Tiempo en fase de diseño.
- Tamaño del programa.
Un lenguaje de programación es orientado a objetos si cumple con las
siguientes condiciones:

* Soporta objetos que son abstracciones de datos con una interfaz de


operaciones con nombre y un estado local oculto.
* Los objetos tienen un tipo asociado (la clase).
* Los tipos (clases) pueden heredar atributos de los supertipos
(superclases).
Abstracción de un objeto
Un objeto es como una caja negra, es decir, no sabemos como hace las cosas por dentro, excepto en las
opciones que nos deja.
La abstracción de un objeto nos permite distinguir el objeto de los demás, ya que tiene entidad por si
mismo. Así que aislamos el objeto de los elementos que lo acompañan y lo componen.
Polimorfismo del objeto
Su nombre nos sugiere que dentro de un objeto podemos acceder de varias maneras, y todo desde el
mismo objeto. También nos ofrece la posibilidad que el objeto tenga múltiples formas.
Por ejemplo, si un objeto debe dibujar una forma en pantalla, puede ser que un mismo nombre de
función se puede llamar de distintas opciones, además que el resultado final también puede ser distinto.
No se dibujará de la misma manera un texto, un círculo, un triángulo o un cuadrado.
Para aplicar el polimorfismo, debemos hablar de la sobrecarga de métodos, además de funciones
virtuales.
Encapsulamiento de datos
Se suele confundir el encapsulamiento de datos con el principio de ocultación.
El principio de ocultación implica que un objeto es como una caja negra, dónde decidimos que datos
quedan protegidos y no se pueden modificar desde fuera, pero también como nos vamos a comunicar con
este objeto.
No estamos hablando que una variable es de sólo lectura, es posible decidir que esa variable no existe
para el programador que está usando el objeto.
Así decidimos que, por ejemplo, no podemos cambiar el estado de un objeto de una manera que no
deseamos.
La encapsulación es la metodología para ocultar algunos elementos de la clase, proporcionando una
interfaz pública a la hora de programar.
Una vez sabemos como ocultar los datos de un objeto, podemos decir que con el encapsulamiento de
datos reunimos todas las propiedades, organizando las variables y métodos, para considerar que un
objeto tiene entidad propia.
Herencia entre objetos
La programación orientada a objetos implica que los objetos están relacionados entre sí. Los objetos
se llaman, o se comunican, con otros objetos (no podrías ejecutar una función directamente).
Otra manera que tienen los objetos de comunicarse es mediante la herencia entre objetos. Hablamos de
un objeto padre, con una serie de comportamiento y propiedades, y uno  o varios objetos hijo que
heredan y comparten todas estas características.
LENGUAJES DE PROGRAMACIÓN ORIENTADOS AL PROBLEMA

Este tipo de lenguajes están diseñados para problemas específicos, principalmente


de gestión. Los programas están formados por sentencias que indican qué se quiere
hacer.

Generalmente, suelen ser generadores de aplicación es que permiten cierta


automatización de la tarea de desarrollo de software de gestión.
BIBLIOGRAFÍA

https://ferestrepoca.github.io/paradigmas-de-programacion/poo/poo_teoria/index.html

https://entrenamiento-python-basico.readthedocs.io/es/latest/leccion9/poo.html

También podría gustarte