Principios de la Programación Orientada a Objetos

 

Hablar de programación orientada a objetos involucra conocer varios conceptos que describen las caracteristicas de este paradigma. Entenderlos y tener una idea clara de como implementarlos ayuda bastante a la mantenibilidad, escalabilidad y gestión a largo plazo del código.


¿Qué es la programación orientada a objetos?

Es el paradigma de programación en el que definen propiedades y funciones en una clase para abstraer entidades en obejtos y reutilizarlos en lo extenso de un sistema. A continuación se aclaran algunos de los conceptos ya mencionados.


Clases

Las clases son conjuntos de propiedades y funciones que se escriben con un lenjuage de programacion para buscar representar entidades del mundo real en memoria computacional.





Propiedades

Se habla de propiedades cuando se hace referencia a las caracteristicas de una entidad. En una persona, las propiedades que se podrian mencionar serian nombre, fecha de nacimiento, estatura, peso, edad, nacionalidad. En un casa, las propiedades podrian ser total de habitaciones, dirección postal, ubicación geografica, color exterior, numero de ventanas, numero de pisos, etc. 



Funciones

En programación, las funciones son unidades conformadas por secuencias de instrucciones computacionales que llevan a cabo una tarea en especifico. Estas unidades pueden  o no recibir valores comunmente llamados parametros que pueden servir para completar la tarea. El uso de funciones facilita el manejo del codigo ya que estas pueden ser invocadas para realizar tareas multiples veces sin la necesidad de rescribir las intrucciones.

Es comun que una clase este conformada por propiedades y funciones acordes a la entidad que se intenta representar.




Una vez comprendidos los conceptos de clase, propiedades y funciones, se puede comenzar a hablar de los pilares de la programación orientada a objetos; estos son conceptos fundamentales para el paradigma, y que al momento de aplicarlos, se desarrolla un estilo de codigo mantenible a largo plazo.


Abstraccion

Este concepto aunque puede sonar complicado, se refiere al hecho de buscar y definir las propiedades y funciones que una entidad pueda tener y llevarlas de la descripcion al código. Esto es, teniendo una entidad, digamos un vehiculo, partamos en crear una clase llamada Vehiculo, continuando con buscar las caracteristicas que hacen que un vehiculo sea un vehiculo, tales como modelo, marca, año de fabricacion, numero de ruedas, tipo de motor, tipo de vehiculo, total de puertas, éstas definirlas como propiedades y continuar en pensar que funciones hace un vehiculo, mismas que podrian ser acelerar, frenar, sonar el claxon, encender luces, entre otras. 

La abstraccion nos permite plasmar cualidades del mundo real a nivel de codigo para facilitar la definicion de clases que funcionen adecuadamente a un largo plazo.





Encapsulamiento

El encapsulamiento es la accion de exponer o restringir explicitamente a metodos o propiedades en una clase. El uso de multiples clases interactuando entre si puede llevar a que sea necesario especificar que objetos pueden o no compartir determinada información con elementos internos o externos. Con el encapsulamiento se nos permite ser explicitos para especificar que instancias comparten determinada información yse  puede aplicar a nivel de clase, propiedad o metodo. Los niveles de restriccion se hace a traves de modificadores de acceso que pueden variar segun el lenguaje de programacion utilizado.






Herencia

Es el mecanismo que tiene una clase de derivarse en otras clases, heredando las propiedades y funciones que posee. Las clases resultanten son consideradas clases hijas y comparten caracteristicas (propiedades y funciones) iguales a la clase padre. La herencia mejora la reusabilidad del codigo.




Polimorfismo

El polimorfirmo parte del concepto de la herencia, una vez que se heredan las propiedades y funciones de una clase padre, se obtiene una "replica" (clase hija), la cualidad de poder sobrescribir propiedades o funciones en la clase hija se llama polimorfismo. Esta cualidad tambien nos permite agregar a las clases hijas metodos o propiedades para extender su funcionalidad.







Conocer como aplicar estos conceptos al momento de realizar cualquier solucion de software puede resultar en el desarrollo de codigo que sea de facil comprension, con alto grado de mentenibilidad y escalabilidad. El paradigma orientado a objetos busca la representacion mas aproximada en la realidad de las entidades que interactuan en un sistema para llevarlas a un grado de simulacion computacional que sea simple de mantener y escalar.









Comentarios