La Programación Orientada a Objetos (POO) modela el mundo real mediante objetos con atributos y métodos. La POO utiliza conceptos como encapsulamiento, abstracción, polimorfismo y herencia para definir clases y crear instancias de objetos que facilitan la reutilización del código y el mantenimiento del software.
1. ¿Qué es la POO? Para comprender bien la POO debemos olvidar un poco la Programación Estructurada. La Programación Orientada a Objetos trata de utilizar una visión real del mundo dentro de nuestros programas. Las siglas POO significan Programación Orientada a Objetos, o en inglés OOP (Object Oriented Programming). La visión que se tiene del mundo dentro de la POO es que se encuentra formado por objetos.
2. Objetos Los objetos en la vida real tienen dos características: estado y comportamiento. El estado de un objeto viene definido por una serie de parámetros que lo definen y que lo diferencian de objetos del mismo tipo El comportamiento viene definido por las acciones que pueden realizar los objetos permitiendo distinguir a objetos de distinto tipo. Los parámetros o variables que definen el estado de un objeto se denominan atributos o variables miembro y las acciones que pueden realizar los objetos se denominan métodos o funciones miembro.
3. Encapsulación Es el hecho de ocultar la implementación interna de un objeto, es decir, como está construido y de que se compone. La encapsulación presenta varios beneficios, entre los que destacan la modularidad y la ocultación de la información.
4. Abstracción Capacidad de ignorar determinados aspectos de la realidad con el fin de facilitar la realización de una tarea. También nos permite ignorar los aspectos de implementación de los objetos en los pasos iniciales, con lo cual sólo necesitamos conocer qué es lo que hace un objeto, y no cómo lo hace, para definir un objeto y establecer las relaciones de éste con otros objetos.
5. Mensajes El comportamiento de un objeto está reflejado en los mensajes a los que dicho objeto puede responder. Representan las acciones que un determinado objeto puede realizar. Un mensaje enviado a un objeto representa la invocación de un determinado método sobre dicho objeto. Para enviar un mensaje se necesitan tres elementos: el objeto al que se le va a enviar el mensaje, el nombre del método que se debe ejecutar y los parámetros necesarios para el método en cuestión.
6. Polimorfismo El término polimorfismo expresa la posibilidad de que el mismo mensaje, enviado a objetos distintos, ejecute métodos distintos. Esto significa que podemos definir dentro de dos clases distintas dos operaciones con el mismo nombre y aspecto externo, pero con distintas implementaciones para cada clase.
7. Sobrecarga La sobrecarga de métodos se produce cuando una clase tiene métodos con el mismo nombre pero que difieren o bien en el número o en el tipo de los parámetros que reciben dichos métodos.
8. Clases Una clase es un molde o prototipo que define un tipo de objeto determinado. Una clase define los atributos y métodos que va a poseer un objeto. La clase la vamos a utilizar para definir la estructura de un objeto, es decir, estado (atributos) y comportamiento (métodos). Una vez implementada una clase podremos realizar instancias de la misma para crear objetos que pertenezcan a esa clase.
9. Herencia La herencia es un mecanismo mediante el cual podemos reutilizar clases ya definidas. La herencia dentro de la POO es un mecanismo fundamental que se puede definir también como una transmisión de las características de padres a hijos. Entendiendo aquí características como métodos y atributos de una clase. La clase hija puede añadir atributos, métodos y redefinir los métodos de la clase padre. La clase de la que se hereda se suele denominar clase padre o superclase, y la clase que hereda se denomina clase hija o subclase.
10. Herencia Mediante el mecanismo de herencia podemos definir superclases denominadas clases abstractas que definen comportamientos genéricos. De esta clase pueden heredar otras clases que ya implementan de forma más concreta estos comportamientos. Los métodos que se heredan de la clase padre no tienen porqué utilizarse sin realizar ningún cambio, se puede llevar a cabo lo que se denomina la sobrescritura de métodos. Podemos heredar un método de la clase padre, pero en la clase hija le podemos dar una implementación diferente para que se adecue a la nueva clase. La herencia puede ser simple si la clase hija hereda de una única clase padre o múltiple si hereda de varias clases padre.
11. Métodos Los métodos son las acciones que se pueden realizar con los objetos. También se podría definir un método como la implementación de un mensaje, al fin y al cabo, un mensaje es la llamada o invocación de un método de un objeto. Existen dos métodos especiales dentro de la POO que se denominan constructor y destructor.