viernes, 19 de abril de 2013

Principios de la programación orientada a objetos

Introducción

La programación orientada a objetos (POO) o por sus siglas en inglés (OOP) es un paradigma que enfoca la programación como si trabajásemos con objetos del mundo real, esto es muy atractivo desde el punto de vista de la clasificación y análisis de las partes que integrarán un programa pues es posible pensar en objetos del mundo real y sus interacciones entre ellos.

Así pues el concepto más importante de dicho paradigma es la Clase que establece la definición genérica de un Objeto o Instancia dentro de un programa, en el mundo real una clase es un Coche, un Animal, una Factura o cualquier cosa tangible o intangible del mundo real.

El objeto o instancia es la ocurrencia concreta de la clase. Así, mi coche es un objeto de la clase coche, un coche tiene 4 ruedas, un volante, un motor, faros, etc, etc. Mi coche particular es de un modelo concreto, es rojo o amarillo, tiene x kilómetros pero hay muchos coches concretos, cada uno con sus atributos, así una clase es un Molde que establece las Propiedades (color, marca, modelo) de cada coche concreto, objeto.
Además de propiedades un coche puede interaccionar con el mundo, por ejemplo puede acelerar, frenar, girar a la derecha a izquierda, este tipo de interacción se llama Método o Función y se define en cada clase junto con las propiedades.
                             
principios programación orientada a objetos

De este modo tenemos la clase coche con las propiedades color, marca, modelo, etc y los métodos acelerar, frenar, girar. Todo esto se encapsula y sirve de molde para implementar diferentes objetos u ocurrencias concretas, coche azul marca X que acelera de 0 a 100 en 7 segundos, etc, etc.
La OOP nos permite pensar en el mundo real y diseñar inmediatamente el código que maneje cualquier información.  Podemos pensar en una clase Factura que tiene unas propiedades: Importe, datos de cliente, datos de cabecera, etc y unos métodos: Imprimir, borrar, grabar, etc.
Toda esta operativa se programa en un mismo módulo (Encapsulación) y ya no es necesario tocar  pues permite crear un código de cliente que opere con los objetos  de cada clase sin necesidad de tocar el código de las clases.

Las clases soportan la Herencia, Un Animal puede ser un perro o un gato, del mimo modo que la clase animal puede derivarse en otras clases perro o gato que generen propiedades concretas de perro o gato pero posean los mismos métodos (como comer) aunque definidos de forma diferente.(Polimorfismo)
Los métodos pueden cambiar los atributos o propiedades de un objeto, así por ejemplo si tengo Un objeto cuadrado con un valor del lado y uso el método crecer puedo cambiar su valor del lado.
La encapsulación permite la reutilización del código, la clase Imprimir, si está bien diseñada se puede utilizar para imprimir cualquier cosa de tal modo que al programar ya nunca tendremos que programar de nuevo dicha operativa y bastará con escribir  NombreObjeto.Imprimir.
Resumiendo: Un programa orientado a objetos tiene una serie de Moldes (Clases) que contienen la información genérica de cada objeto, (Métodos y Propiedades) dentro de un mismo contenedor (Encapsulación), las clases permiten la herencia y por tanto definir los mismos métodos de diferente forma (Polimorfismo). Cada Ocurrencia concreta de una clase se llama objeto o Instancia y representa un objeto concreto del mundo real como un coche azul o una factura del cliente X por importe Y.

No hay comentarios:

Publicar un comentario