19 de agosto de 2015

¿Qué es la Programación Orientada a Objetos?

La programación Orientada a objetos (POO) es una forma especial de programar, en la cual se trata de expresar cosas de la vida real, a través de código de programación.

La POO utiliza: objetos, propiedades, métodos, poliformismo, herencia y mas. Y gracias a este tipo de programación, se crean aplicaciones con código mas limpio, código re utilizable y mas robusto.

Aunque en principio puede parecer algo difícil, -sobre todo si venimos de la programación estructurada- , lo cierto es que no lo es, solo tenemos que pensar como lo hacemos en la vida real, en objetos.

Ejemplo:partes_automovil

Imagina un “automóvil”, este automóvil tiene una serie de características  como: color, modelo, marca, tamaño, llantas, volante, pedales, etc.

 

auto_moviendose

Además este ‘automóvil’, puede realizar diversas acciones, como: arrancar, frenar, acelerar, girar a la izquierda o derecha, dar marcha atrás, etc.

Ahora tratemos de crear este ‘objeto’ de la vida real en una aplicación.

El ‘automóvil’ es el OBJETO

Las características del ‘automóvil’ (color, marca, modelo, etc.)  son sus PROPIEDADES

Y las acciones que el ‘automóvil’ puede realizar (frenar, arrancar, girar, etc.) son sus METODOS

Lo que se hizo prácticamente, fue tomar un Objeto de la vida real (automóvil) y dividirlo en:

  • Las cosas que puede hacer o funcionalidades (Métodos)
  • Sus características o elementos que componen a ese objeto (Propiedades)

Una vez encontrados los elementos que intervienen, podremos asignarles las tareas que tiene que realizar.

Clases

El elemento clave en la POO, es la clase.  Una clase es como una plantilla o modelo que define al objeto.

Siguiendo el ejemplo del ‘automóvil’, la clase es la idea genérica que se tiene los todos los automóviles, sin embargo un objeto seria un ‘automóvil’ en particular, quizás el tuyo.

Esto significa que con la idea general (clase) de los automóviles, no se puede hacer algo, pero con un automóvil (objeto) en particular, si es posible hacer algo.

Plasmemos esto en código, y para ello utilizaremos Visual Basic, -cabe mencionar que el concepto y uso de la POO en igual en todos los lenguajes de programación-.

Primero crearemos la plantilla o modelo,es decir la clase:

Class automovil
......................................
......................................
End Class

Se utiliza la palabra reservada Class seguida del nombre de la clase y se finaliza con End Class.

Después de haber creado la clase, agregaremos las características (Propiedades) que poseen todos los automóviles

   Private _numeroDeLlantas as Short = 4
   Private _color as String
   Private _velocidad as Integer
   Private _posicionX as Short
   Private _posicionY as Short

Con estas características (Propiedades), podemos definir, cuando se cree el objeto, el color del automóvil, su ubicación (x,y), su velocidad, etc

Ahora vamos a agregar las funciones o acciones (Metodos) que todos los automóviles hacen:

Public Sub moverse(ByVal x as short, ByVal y as short)
  _posicionX = x
  _posicionY = y
End Sub

Public Function acelerar() as Integer
  _velocidad = _velocidad + 10
  return _velocidad 
End Function

Public Function desacelerar() as Integer
  If(_velocidad >10) Then
      _velocidad = _velocidad -10
  Else
      _velocidad = 0
  End If
  Return _velocidad
End Function

Public Sub frenar()
  _velocidad = 0
End Sub

Estos métodos son algunas funcionalidades que todo automóvil posee.

  • Podemos indicar su posición (X, Y), con esto controlamos el lugar donde se encuentra el automóvil.
  • Podemos acelerar en múltiplos de 10 unidades
  • Podemos desacelerar en múltiplos de 10 unidades
  • Incluso hasta podemos frenar de golpe, poniendo la velocidad en cero.

Como puedes ver, trasladar una idea que se maneja en el mundo real a la programación orientada a objetos, no es tan difícil.

Propiedades

Como ya mencionamos, las características  de los objetos son las Propiedades. Estas Propiedades no siempre tendrán que ser físicas. Por ejemplo: una propiedad de la clase automóvil, puede ser ‘velocidad máxima’ y por lógica no todos los autos tendrán la misma velocidad máxima.

Las propiedades, corresponden a variables dentro de la clase y cada objeto creado podrá tener algunas propiedades con valores distintos y estos podrán cambiar a lo largo de la ‘vida’ del objeto.

Por ejemplo: un auto de color rojo o azul, o un auto estacionado _posicionX y _posicionY en cero(0) o un auto en movimiento con otros valores en _posicionX y _posicionY y con valor de 110 en _velocidad.

Sin embargo, en cualquiera de los casos, todos los autos tendrá el mismo número de llantas, propiedad _numeroDeLlantas = 4.

Esto significa que algunas propiedades son iguales en todos los objetos y otras son variables. Por esta razón cuando se declaró la propiedad _numeroDeLlantas también se le asigno un valor.

Métodos y Constructores

Ya dejamos en claro que las Propiedades describen las características o estructura del objeto, y los métodos indican su comportamiento (Eje. del “automóvil”, frenar, acelerar, etc.)

Los métodos, son en realidad ‘procedimientos’, como los que se usan en la programación estructurada. Pero al estar dentro de una clase se les llama métodos.

Para mostrar un ejemplo, vamos a crear un método llamado ‘moverse’ que hará que nuestro ‘automóvil’ se mueva.

Public Sub moverse(ByVal x as short, ByVal y as short)
  _posicionX = x
  _posicionY = y
End Sub

Este método tiene dos parámetros y dichos parámetros permiten comunicar al método con el resto del código. Aunque es este ejemplo, el método necesita dos parámetros, eso no significa que ‘siempre’ los métodos necesiten parámetros, pues pueden haber métodos sin parámetros, por ejemplo:

Public Sub frenar()
  _velocidad = 0
End Sub

Cuando necesitemos que el método devuelva un valor, utilizaremos el procedimiento Function, ejemplo:

Public Function acelerar() as Integer
  _velocidad = _velocidad + 10
  return _velocidad 
End Function

Existe un método especial que permite crear objetos de la clase, este método se llama constructor.

En el caso de Visual Basic, proporciona un constructor por defecto, que lo único que hace es inicializar las propiedades (variables); sin embargo, nosotros podemos escribir nuestros propios constructores y realizar las tareas necesarias. Ejemplo:

Public Sub New (ByVal color as String, ByVal posicionX as Short, ByVal posicionY as Short)
    Me._color = color
    Me._posicionX = posicionX
    Me._posicionY = posicionY
    Me._velocidad = 0
End Sub

En este método constructor es donde podemos establecer los valores que deben tener las propiedades cuando se crea al objeto. Por ejemplo, se determino el ‘color’, su posición (x,y) y su ‘velocidad’.

La palabra reservada Me indica  que se hace referencia al propio objeto que se esta creando. Aunque se recomienda utilizarla NO es obligatoria, podría quedar solo:

_color = color

Con esto ya hemos visto que es la POO, que es un objeto, propiedad y método, en el próximo articulo, aprenderemos a crear objetos y a utilizar sus métodos.

Deja una Respuesta