Programación orientada a objetos
La programación orientada a objetos (POO) es una forma de escribir programas informáticos que utiliza la idea de "objetos" para representar datos y métodos. Normalmente, los programas informáticos eran sólo una lista de instrucciones para el ordenador, que le decían que hiciera ciertas cosas de una manera determinada, lo que se llama programación procedimental. Sin embargo, en la programación orientada a objetos, los programas informáticos utilizan objetos que hablan entre sí y cambian los datos de esos objetos, para trabajar de la manera que el usuario desea. Además, debido a la forma en que está diseñada la programación orientada a objetos, ayuda al desarrollador al permitir que el código sea fácilmente reutilizado por otras partes del programa o incluso por otras personas.
La mayoría de los lenguajes de programación son una mezcla de diferentes tipos de formas de escribir programas informáticos. Por ejemplo, Python permite escribir programas de ordenador tanto en programación orientada a objetos como en programación procedimental. Hay muchos lenguajes de programación que permiten escribir programas de ordenador en OOP, Algunos de estos lenguajes de programación son, por ejemplo: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, etc.
Características
La idea principal de la programación orientada a objetos es que todo es un objeto. Sin embargo, el objeto puede ser de diferentes tipos:
- Las variables pueden contener información (o datos) de diferentes tipos soportados por el lenguaje de programación. Algunos ejemplos son el tipo de datos entero y la estructura de datos de las listas. Las variables es una idea que ya está disponible en los lenguajes de programación procedimental. En la programación orientada a objetos, las variables se conocen principalmente como atributos.
- Los procedimientos (también conocidos como funciones, métodos o rutinas) son una lista de instrucciones que indican al ordenador que debe tomar datos de entrada, hacer algunos cálculos o cambiar datos, y devolver el resultado al usuario. Los procedimientos son también una idea que ya está disponible en los lenguajes de programación procedimental. En la programación orientada a objetos, los procedimientos se conocen principalmente como métodos.
- Las clases son una colección de diferentes variables y procedimientos. Las clases suelen hablar entre sí para realizar cambios en los datos con el fin de trabajar de la manera que el usuario desea.
Los objetos son un término utilizado para referirse a las instancias de las clases.
Ejemplos
En los ejemplos siguientes, creamos una clase llamada Humano
. Esta clase contiene los atributos name
(para el nombre de la persona) y friend
(para el nombre del amigo). Cada uno de los métodos de la clase Human
contiene una lista de instrucciones que hace uso de los atributos name
y friend
.
Python
Este código está en Python.
Java
Este código está en Java.
La clase humana
Un método para hablar con la clase humana anterior
Crítica
Aunque la programación orientada a objetos es popular, hay mucha gente que piensa que es mala y la critica.
- Luca Cardelli escribió un artículo titulado "Bad Engineering Properties of Object-Oriented Languages".
- Richard Stallman escribió en 1995: "Añadir la POO a Emacs no es claramente una mejora; yo utilicé la POO cuando trabajaba en los sistemas de ventanas de Lisp Machine, y no estoy de acuerdo con la opinión habitual de que es una forma superior de programar".
- Un estudio de Potok et al. nos dice que hay muy poca diferencia de productividad entre los enfoques OOP y procedimentales.
- Christopher J. Date dijo que comparar la POO con otras cosas, especialmente cómo se relacionan la POO y la otra cosa, es difícil porque la gente no está de acuerdo con el significado de la POO.
- Alexander Stepanov sugirió que la POO da un punto de vista limitado en cuanto a las matemáticas, y la calificó de "casi tan engañosa como la Inteligencia Artificial"
- Paul Graham, un exitoso vendedor y programador de Internet, ha sugerido que el propósito de la programación orientada a objetos es actuar como un mecanismo de pastoreo que evita que los programadores promedio en organizaciones promedio "hagan demasiado daño". Esto también frena a los programadores más rápidos y mejores que saben cómo hacer las cosas de una manera más potente y compacta... [1]
Preguntas y respuestas
P: ¿Qué es la programación orientada a objetos?
R: La programación orientada a objetos es una forma de escribir programas informáticos utilizando "objetos" para representar datos y métodos.
P: ¿En qué se diferencia la programación orientada a objetos de la programación procedimental?
R: En la programación procedimental, los programas informáticos son una lista de instrucciones para el ordenador, que le dicen que haga ciertas cosas de una manera determinada. En la programación orientada a objetos, los programas informáticos utilizan objetos que hablan entre sí para cambiar los datos de esos objetos y funcionar de la forma que desee el usuario.
P: ¿Cómo beneficia la programación orientada a objetos a los desarrolladores?
R: La programación orientada a objetos permite reutilizar fácilmente el código en otras partes del programa o incluso por otras personas.
P: ¿Por qué es conocido el lenguaje de programación Python?
R: Python permite escribir programas informáticos tanto en programación orientada a objetos como en programación procedimental.
P: ¿Puede dar ejemplos de lenguajes de programación que permitan escribir programas informáticos en programación orientada a objetos?
R: Entre los lenguajes de programación que permiten escribir programas informáticos en programación orientada a objetos se encuentran C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C#, etc.
P: ¿Qué son los objetos en la programación orientada a objetos?
R: Los objetos son entidades en la programación orientada a objetos que contienen datos y métodos.
P: ¿Cómo funcionan los objetos en la programación orientada a objetos?
R: Los objetos interactúan entre sí para cambiar los datos de esos objetos y funcionar de la forma que desee el usuario.