martes, 20 de enero de 2015

Ingeniería de software: Paradigma de programación Orientada a Objetos.

"Principios de política: Divide y vencerás"

A medianos de los años 80, se popularizó un paradigma metodológico curiosamente similar a uno de los principios políticos. Hoy día, lo conocemos como: Programación Orientada a Objetos ( POO ).



La POO, tubo su nacimiento en el lenguaje Simula 67, desarrollado por Ole-Johan Dahl y Kristen Nygaard, en Oslo, Noruega. Este paradigma, presenta una "fusión" de diferentes ideologías ( se muestran en la imagen de portada ), formando así la suya propia. Con el tiempo, este paradigma, fue mejorado en Smalltalk, basado en Basic, creando así un sistema dinámico para lo que hoy conocemos como "edición en tiempo de ejecución". Su gran popularidad, es debida en gran parte, al lenguaje C++ y a la introducción a las Interfaces Gráficas en la tecnología informática.

POO nos presenta una nueva forma de estructurar un programa: Crear objetos independientes, ordenarlos por clases de objetos, exponer las propiedades de cada objeto y presentarlos en pantalla en el orden deseado.

POO se compone de la unión de los siguientes puntos:

  • Clase: Una clase, es un tipo de objeto, igual que el cine, un tipo de arte.
  • Herencia: Consiste en "heredar" los atributos de una clase a otra. Si compras ingredientes para hacer una Pitzza, podrás crear Pitzza's diferentes mezclando las clases de ingredientes entre ellas.
  • Objeto: Un objeto, es un dato incompleto.
  • Método: Los métodos son todas las funciones posibles de un objeto.
  • Evento: Un evento es la interactividad entre un usuario y un ordenador. Cuando clicas un botón  mueves el ratón o tecleas algo, estas creando eventos referentes a las teclas que tecleas, los botones que presionas o las coordenadas en las que mueves el ratón.
  • Atributo: Los atributos son las caracteristicas de un objeto: nombre, tamaño, posición...
  • Mensjae: El mensaje, es la orden que hace que se inicie el método de un objeto.
  • Propiedad: Las propiedades, serian los atributos de fabrica de un objeto.
  • Identificación: Es una de los atributos mas importantes de un objeto, el cual usaremos para avisar al ordenador de que queremos usar ese objeto en concreto.
  • 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.
    ( Copiado de Wikipedia, sinceramente, no entiendo muy bien eso del Estado interno. )


Ejemplo: Si tenemos una radio con diferentes botones, de diferentes colores, podríamos dividirla en las siguientes opciones:

  • Clases de botones: Los botones cuadrados, los botones redondos, los botones móviles.
  • Objetos: Los botones en sí.
  • Propiedades y Atributos: Colore de botones, tamaño de botones, posición de botones...
  • Método: Si giramos un botón  sube el volumen, si presionamos, inicia la cadena que tenemos sintonizada y seleccionada, si movemos el botón, cambia de cadena de radio.
  • Evento: El hecho de presionar, mover o rotar un objeto, inicia uno u otro método.
La Programación Orientada a Objetos, es distinguida por las siguientes propiedades:
  • Abstracción: Agrupa las propiedades, funciones y comportamientos posibles de un objeto, tales como: realizar una tarea, informar, cambiar su estado o "comunicarse" con otros objetos.
  • Encapsulamiento: Es el hecho de reunir todos los objetos que puedan ser considerados pertenecientes de la misma entidad, tipo, grupo o clase.
  • Modularidad: Consiste en el hecho de dividir el proyecto en subapartados ( denominadas Módulos ) independientes entre si. Hecho que reduce las posibilidades de error y facilita su corrección.
  • Herencia: Las os objetos y objetos, son independientes, pero no están aislados. Se pueden relacionar entre sí, formando una jerarquía de clasificaciones.
  • Recolector de basura: Es la facilidad de no tener que preocuparse por la asignación o limpieza de memoria al hacer uso de objetos y clases.
  • Polimorfismo: El polimorfismo consiste en la capacidad de transformar algo, sin cambiar su identificación. Ejemplo: Dos personas, pueden tener el mismo nombre, pero características diferentes, tales como altura, peso, color de piel, peinado, etc..

Resumen: La programación orientada a objetos, es un paradigma que presenta una ideología bastante curiosa: Divide el proyecto en pequeñas partes independientes pero relacionables entre si. Facilita la edición de propiedades en tiempo de ejecución incluyendo la transformación de objetos entre si de diferentes clases, sin perder sus funcionalidades predefinidas por el usuario.

- Gracias por su tiempo, atentamente: Chaarlis Me.