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
encapsulamiento. Su uso se popularizó a principios de la década de los años
1990. En la actualidad, existe una gran variedad de lenguajes de programación
que soportan la orientación a objetos.
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. La
instanciación es la lectura de estas definiciones y la creación de un objeto a
partir de ellas.
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. Por lo
tanto, puede usar los mismos métodos y variables públicas declaradas en C. Los
componentes registrados como "privados" (private) también se heredan,
pero como no pertenecen a la clase, se mantienen escondidos al programador y
sólo pueden ser accedidos a través de otros métodos públicos. Esto es así para
mantener hegemónico el ideal de POO.
Objeto
Instancia
de una clase. Entidad provista de un conjunto de propiedades o atributos
(datos) y de comportamiento o funcionalidad (métodos), los mismos que
consecuentemente reaccionan a eventos. Se corresponden con los objetos reales
del mundo que nos rodea, o con objetos internos del sistema (del programa). Es
una instancia a una clase.
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". Desde el punto de vista del
comportamiento, es lo que el objeto puede hacer. Un método puede producir un
cambio en las propiedades del objeto, o la generación de un "evento"
con un nuevo mensaje para otro objeto del sistema.
Evento
Es
un suceso en el sistema (tal como una interacción del usuario con la máquina, o
un mensaje enviado por un objeto). El sistema maneja el evento enviando el
mensaje adecuado al objeto pertinente. También se puede definir como evento la
reacción que puede desencadenar un objeto; es decir, la acción que genera.
Atributos
Características
que tiene la clase
Mensaje
Una
comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos
con ciertos parámetros asociados al evento que lo generó.
Propiedad
o atributo
Contenedor
de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace
los datos visibles desde fuera del objeto y esto se define como sus
características predeterminadas, y cuyo valor puede ser alterado por la
ejecución de algún método.
Estado
interno
Es
una variable que se declara privada, que puede ser únicamente accedida y
alterada por un método del objeto, y que se utiliza para indicar distintas
situaciones posibles para el objeto (o clase de objetos). No es visible al
programador que maneja una instancia de la clase.
Componentes
de un objeto
Atributos,
identidad, relaciones y métodos.
Identificación
de un objeto
Un
objeto se representa por medio de una tabla o entidad que esté compuesta por
sus atributos y funciones correspondientes.
En
comparación con un lenguaje imperativo, una "variable" no es más que
un contenedor interno del atributo del objeto o de un estado interno, así como
la "función" es un procedimiento interno del método del objeto.