Como aprender a programar desde 0 (parte 11)


Cómo aprender a programar y no morir en el intento – Parte 11

Así que sin más introducción, los invitamos a seguirnos después del salto, en esta edición número 11 de “Cómo aprender a programar y no morir en el intento”, en donde empezaremos a cubrir un nuevo paradigma de desarrollo: Programación orientada a objetos.

Cómo aprender a programar y no morir en el intento – Parte 11

Contenidos:

  1. Introducción a la programación orientada a objetos.
  2. Programación orientada a objetos vs Programación estructurada.
  3. Hola, soy un objeto.
  4. Clases.
  5. Métodos.
Así que sin más, vamos, manos a la obra:

1.- Introducción a la programación orientada a objetos:

La programación orientada a objetos (o POO para los más amigos), es un paradigma de desarrollo definido y utilizado por una serie de lenguajes de programación que busca afrontar el desarrollo de aplicaciones desde un enfoque distinto al estructurado (que hemos visto hasta la fecha), mediante la definición y uso de, valga la redundancia, objetos que operen bajo un prisma similar a como vemos, reconocemos y actuamos las situaciones de la vida real.
A la fecha se ha convertido en el paradigma preferido por los principales lenguajes de programación, debido a una serie de ventajas (que iremos viendo a medida que avancemos) que permiten que el desarrollo sea más simple, seguro y completo. Si bien la transición desde el inicio a esta parte puede ser un poco compleja, especialmente por el cambio en el enfoque que se hace, una vez que las bases se entienden y dominan se puede comprender que es bastante simple.
Solo como referencia, algunos lenguajes que trabajan bajo este paradigma:
  • C++.
  • Java.
  • PHP (Desde la versión 5)
  • Ruby.
  • Objective C.
  • Python.
Iremos viendo nueva información en cada parte de esta nueva etapa con el fin de ir aprendiendo un poco más y no extendernos en demasía en un solo número.

2.- Programación orientada a objetos vs Programación estructurada:

Es inevitable que al comenzar a aprender un nuevo paradigma, empiecen las comparaciones y diferenciaciones de lo que ya se sabe. Y en este caso no será ninguna diferencia.
A la fecha todo lo que hemos visto en esta saga es relacionado al desarrollo estructurado, en el cual basicamente nos dedicamos a escribir programas con una lógica directa en base a una “plantilla”, la cual contiene código que es compilado y ejecutado desde un inicio hasta el final.  Esta lógica opera bajo el uso de funciones y procesos que operan sobre una serie de datos de entrada y que finalmente nos despliegan resultados o salidas que dependen de cada tarea que se realizó. Bastante simple, de arriba a abajo, de principio a final.
Por otro lado, en la POO, cambiamos el enfoque y comenzamos a hablar de objetos y clases. Si bien seguimos utilizando elementos clásicos de la programación estructurada, o bien de la programación propiamente tal como variables, ciclos e iteraciones, la base se rige por estos 2 elementos y es así como nuestras aplicaciones operan, lo que podremos ir viendo de forma clara a medida que vayamos desarrollando ejemplos.
Si hicieramos un paralelo entre ambos paradigmas, algo que probablemente no sea correcto, pero a modo de ejemplo quizás nos aclare más los conceptos, si en la programación estructurada en ocasiones trabajamos con librerías, las cuales contienen funciones, en la programación orientada a objetos trabajamos con clases, las cuales a su vez contienen métodos, y estos operan sobre cada uno de los objetos que declaremos. Como indicábamos, lo anterior solo sirve para hacer un paralelo, ya que en lo real varía un poco.
No obstante, a medida que nos adentremos más en el tema, iremos viendo una serie de características en las que podremos ir estableciendo comparaciones y que finalmente nos servirá para entender de mejor manera todo esto.
Sin embargo, independiente de cuantas comparaciones o definiciones veamos, siempre llegaremos a las 2 unidades base que mencionábamos antes y que comenzaremos a ver a continuación: Objetos y clases. A partir de esto, es posible ir escalando el conocimiento relacionado a la programación orientada  a objetos, y eventualmente empezar a desarrollar de aquella forma.

3.- Hola, soy un objeto:

Y llegamos a la unidad básica que de ahora en adelante aparecerá en cada cosa que veamos y en cada ejemplo que codifiquemos: Los objetos.
Si entramos a la definición más purista del paradigma, es posible definir un objeto como todo lo que vemos en el mundo real. Desde una casa, hasta un perro o incluso una fruta, todo es reconocido de esta forma y como tal debe ser modelado para luego poder operar sobre el.
Los objetos son la base de la POO, tal como indica el mismo nombre, y por ende es necesario cambiar la forma en que modelamos, diseñamos y desarrollamos aplicaciones para ajustarnos a este nuevo enfoque. Desde el inicio más básico hasta lo más avanzado, siempre operaremos en torno a ellos y serán lo que construirán y definirán los distintos procesos que utilizaremos.
Un objeto es definido, y diferenciado de otros, por sus características o atributos, tal como lo vemos en la vida real. Por ejemplo, si tomamos dos casos arbitrarios que consideraríamos objetos en la vida real, como una persona y un auto, es posible ver que cada uno de ellos posee atributos que lo diferencian el uno del otro:
  • Persona – Sus atributos serían: Nombres, Apellidos, Edad, etc.
  • Auto – Sus atributos serían: Marca, color, patente, etc.
Si comparamos los ejemplos anteriores, sus atributos específicos son los que nos ayudan a diferenciar cuando hablamos de uno y cuando hablamos del otro. En el caso de la POO es exactamente lo mismo. Definimos objetos y los diferenciamos en base a sus atributos. Posteriormente, dependiendo del objeto que tratemos, operamos de acuerdo a sus características para ejecutar procesos y obtener resultados, tal como cualquier tipo de programación.
Como podemos ver, esta es una definición bastante básica, e intencionalmente ha sido así considerando que este es nuestro primer acercamiento al paradigma. A medida que vayamos avanzando iremos viendo otros detalles importantes. Pero no se preocupen, con esto por ahora podremos seguir avanzando sin problemas. La intención es que vayamos comprendiendo cada concepto desde su punto de vista más básico y de a poco interiorizarnos en temas más avanzados.

4.- Clases:

Hemos hablado de los objetos y ahora es momento de cubrir el otro punto base que habíamos indicado.
¿Por dónde partir? Por lo más básico.
En su definición más básica podemos decir que una clase es una plantilla que describe a un objeto. ¿Cómo lo describe? con 2 partes:
  • Sus características.
  • Su comportamiento.
La manera en que una clase describe las características de un objeto es mediante la definición de sus atributos. Si, exactamente los mismos atributos que mencionábamos más arriba que ayudan a diferenciar a un objeto de otro. Al definirlos se nos dice que son estos, y solamente estos, los atributos reconocidos para tal objeto y los que nos servirán como base para operar en nuestras aplicaciones.
Por otro lado, describe el comportamiento de un objeto mediante la definición de métodos, los cuales operan y ejecutan tareas sobre los atributos de un objeto en particular entregándonos resultados para su respectivo despliegue.
La estructura básica de una clase es como sigue:
  • Definición de la clase.
  • Definición de atributos.
  • Métodos.
Tan simple como eso. A medida que veamos ejemplos podremos ir desglosando cada una de esas partes para un análisis más detallado.

5.- Métodos:

Un método es una función, declarada en una clase, que tiene como fin operar sobre un objeto para ejecutar tareas sobre sus atributos y obtener resultados, ya sea para seguir operando, o bien para entregar una salida al sistema y desplegarla en pantalla al usuario de la aplicación.
Tal como cuando se definían funciones en el desarrollo estructurado, los métodos corresponden a un tipo de dato que debe coincidir con el resultado que retornan.
Por ej: Podemos definir un método de tipo int que se llame retornaEdad y que devuelva un entero que contiene la edad de un objeto de tipo persona. Si este método fue definido como entero, no puede devolver un tipo de dato distinto, debido a su definición inicial.
Todos los métodos que definamos deben devolver un tipo de dato que coincida con su definición, a excepción de los tipo void, que tal como en la programación estructurada, pueden no devolver nada.
También, al igual que en las funciones, los métodos pueden recibir parámetros que pueden ser utilizados en sus operaciones internas para producir resultados.
En una clase cualquiera, declararemos siempre como mínimo 2 tipos de métodos: 1 que crea el objeto(constructor – que veremos en el próximo número) y 1 o más que operen sobre el objeto creado.
Con esta definición de los métodos, daremos por concluida la parte 11 de Cómo aprender a programar y no morir en el intento. Sabemos que este número ha sido mucho más conceptual que técnico y práctico, pero tengan paciencia. Los conceptos explicados acá son necesarios de entender antes de empezar a meter mano de lleno, algo que haremos desde el próximo número cuando ya empecemos a codificar nuestra primera aplicación.
Fin

0 comentarios:

Publicar un comentario

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Bluehost Review