Programacion

Ξ 55 comentarios

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

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

Bueno, bueno, bueno. Nos demoramos un poco (casi 13 meses), pero lo prometido es deuda: Volvemos con la saga que intenta guiarlos por el largo y complejo camino de la programación.

¿Por qué nos demoramos tanto? Es una buena pregunta, gracias por hacerla -> !. La verdad es que una vez que terminamos la parte 10 y estaban definidos los contenidos para continuar nos dimos cuenta que estábamos entrando en temas bastante avanzados, lo que se alejaba de la intención inicial de estas guías, por lo que decidimos pausar el tema y reconsiderar como seguir. Lamentablemente hubo otros temas que fue necesario cubrir en la cola de peticiones (nuestro buzón explota cada día con todo lo que llega) y el tiempo fue pasando hasta que llegamos a la fecha.

Pero ha llegado el día de continuar y hemos reestructurado el modelo de esta saga para que tengamos una gran cantidad de números por delante. ¿Cómo? se preguntarán. Bastante simple: En las primeras 10 partes estuvimos viendo desde los conceptos más básicos de antes de programar hasta la base de desarrollo estructurado, por lo que empezando en este número, veremos algo completamente nuevo (probablemente hasta el número 20) para entregar las nociones necesarias y luego continuaremos con otro enfoque. Lo sabemos, es enredado, pero con el tiempo se irá entendiendo, confíen en nosotros 🙂

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

Nota: Si bien hoy comenzamos a trabajar con un paradigma nuevo, siempre recomendamos leer las partes anteriores de esta saga, las cuales pueden ser encontradas en nuestra categoría de Programación.

Pues bien, tal como anunciábamos, hoy comenzamos con programación orientada a objetos. Esta parte de la guía será mucho más conceptual que técnica, ya que hay varios contenidos que es bueno que aclaremos para establecer una base sólida y poder trabajar de mejor manera a futuro. Así que sin más, vamos:

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.

A contar de la parte 12 ya comenzaremos a operar bajo un modelo de una parte de conceptos y un ejemplo al final de cada número, con el fin de que vayamos soltando la mano y vayamos aplicando todo lo que veamos.

En la próxima edición de ‘Cómo aprender a programar y no morir en el intento’:

  1. El Constructor (Y no hablamos de Bob).
  2. Permisos.
  3. Clase principal.
  4. Creando nuestra primera aplicación en POO.

Por ahora, como siempre, les recordamos que este tutorial ha sido:

Cualquier duda o comentario que puedan tener, los invitamos a dejarnos unas líneas en el área habilitada a continuación.

Esperamos que este tutorial haya sido de utilidad para Uds.

Muchas gracias por leer y será hasta una próxima oportunidad.

Comparte este tutorial

El culpable de todo esto

Las tardes gloriosas de domingo y las grandes ovaciones a estadio lleno, no son algo extraño para Xabadu. Luego de ser descubierto a los 4 años en un partido de barrio por los ojeadores del gran Aviación F.C., sacudió el mercado nacional al ser traspasado en $500 pesos chilenos (1 USD) y 3 coca colas al renombrado Estrella Blanca de Lolol. Luego de una impresionante carrera por equipos como Lozapenco, Santa Cruz, Deportivo Lago Chungará y una incursión en la 3a división del futbol de Kazajstan, su record imbatible hasta la fecha de 1257 goles en 20 partidos lo llevo a ser elegido como uno de los arqueros más recordados en la historia pelotera nacional. Una lesión en el colmillo superior derecho lo llevó al retiro el año 2003, pero está de vuelta y sin duda que su jerarquía y experiencia internacional será un gran aporte.

En los barrios marginales se le conoce como: Xabadu

Comentarios en Facebook

55 Comentarios

  • Worales gracias 5 estreyas

  • gracias por el tutorial.
    en que lenguaje iran trabajando en los siguientes ?
    java?
    en el caso de tu ejemplo, auto y persona son objetos verdad?

  • excelente estuve esperando esta parte hace un monton ahora me la pongo a leer son muy buenos sus tutoriales sigan asi, suerte y saludos

  • Gracias a todos por sus comentarios.

    @chileno: Si, trabajaremos con Java, ya que al menos en mi opinión es uno de los que implementa el paradigma de forma más purista. Probablemente en un futuro empecemos a cubrir programación Web y trabajemos con PHP, para cuyo caso también lo haremos orientado a objetos.

    Saludos!

  • excelente!!! esperaba con ansias la continuacion de la saga ^^… muy buena por sobretodo

  • super… me encanto
    cuándo van a publicar la parte 12???
    espero que no se demoren tanto

  • hola gracias por esos tutoriales son super buenos, me indentifico mucho en la manera de explicar, y se que ha muchos de los que los leen estan tambien contentos de haber encontrado este sitio. estube buscando informacion para aprender a programar pero no encontraba la adecuada. gracias esta si esta buena. Esperamos las demas partes. Gracias..

  • Me parece excelente que hayan tenido en cuenta a las personas que poco o nada sabemos de programacion.
    Deseo que me aclaren, en que se diferencia los terminos “clase” y “objeto”, no lo tengo muy claro y que es un objeto constructor.

  • Me parece excelente que hayan tenido en cuenta a las personas que poco o nada sabemos de programacion.Deseo que me aclaren, en que se diferencia los terminos “clase” y “objeto”, no lo tengo muy claro y que es un objeto constructor.

  • Que paso con la version 12… hace muxo tiempo que no pasa nada…

1 2 3 6

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Gente linda que nos quiere

Donde mas estamos

news-1701

sabung ayam online

yakinjp

yakinjp

rtp yakinjp

slot thailand

yakinjp

yakinjp

yakin jp

yakinjp id

maujp

maujp

maujp

maujp

slot mahjong

SGP Pools

slot mahjong

sabung ayam online

slot mahjong

SLOT THAILAND

article 999990036

article 999990037

article 999990038

article 999990039

article 999990040

article 999990041

article 999990042

article 999990043

article 999990044

article 999990045

article 999990046

article 999990047

article 999990048

article 999990049

article 999990050

article 710000081

article 710000082

article 710000083

article 710000084

article 710000085

article 710000086

article 710000087

article 710000088

article 710000089

article 710000090

article 710000091

article 710000092

article 710000093

article 710000094

article 710000095

article 710000096

article 710000097

article 710000098

article 710000099

article 710000100

article 710000101

article 710000102

article 710000103

article 710000104

article 710000105

article 710000106

article 710000107

article 710000108

article 710000109

article 710000110

article 710000111

article 710000112

article 710000113

article 710000114

article 710000115

article 710000116

article 710000117

article 710000118

article 710000119

article 710000120

cuaca 638000021

cuaca 638000022

cuaca 638000023

cuaca 638000024

cuaca 638000025

cuaca 638000026

cuaca 638000027

cuaca 638000028

cuaca 638000029

cuaca 638000030

cuaca 638000031

cuaca 638000032

cuaca 638000033

cuaca 638000034

cuaca 638000035

cuaca 638000036

cuaca 638000037

cuaca 638000038

cuaca 638000039

cuaca 638000040

cuaca 638000041

cuaca 638000042

cuaca 638000043

cuaca 638000044

cuaca 638000045

cuaca 638000046

cuaca 638000047

cuaca 638000048

cuaca 638000049

cuaca 638000050

cuaca 638000051

cuaca 638000052

cuaca 638000053

cuaca 638000054

cuaca 638000055

cuaca 638000056

cuaca 638000057

cuaca 638000058

cuaca 638000059

cuaca 638000060

cuaca 638000061

cuaca 638000062

cuaca 638000063

cuaca 638000064

cuaca 638000065

cuaca 638000066

cuaca 638000067

cuaca 638000068

cuaca 638000069

cuaca 638000070

cuaca 638000071

cuaca 638000072

cuaca 638000073

cuaca 638000074

cuaca 638000075

cuaca 638000076

cuaca 638000077

cuaca 638000078

cuaca 638000079

cuaca 638000080

cuaca 638000081

cuaca 638000082

cuaca 638000083

cuaca 638000084

cuaca 638000085

cuaca 638000086

cuaca 638000087

cuaca 638000088

cuaca 638000089

cuaca 638000090

cuaca 638000091

cuaca 638000092

cuaca 638000093

cuaca 638000094

cuaca 638000095

cuaca 638000096

cuaca 638000097

cuaca 638000098

cuaca 638000099

cuaca 638000100

cuaca 898100101

cuaca 898100102

cuaca 898100103

cuaca 898100104

cuaca 898100105

cuaca 898100106

cuaca 898100107

cuaca 898100108

cuaca 898100109

cuaca 898100110

cuaca 898100111

cuaca 898100112

cuaca 898100113

cuaca 898100114

cuaca 898100115

cuaca 898100116

cuaca 898100117

cuaca 898100118

cuaca 898100119

cuaca 898100120

cuaca 898100121

cuaca 898100122

cuaca 898100123

cuaca 898100124

cuaca 898100125

cuaca 898100126

cuaca 898100127

cuaca 898100128

cuaca 898100129

cuaca 898100130

cuaca 898100131

cuaca 898100132

cuaca 898100133

cuaca 898100134

cuaca 898100135

article 868100071

article 868100072

article 868100073

article 868100074

article 868100075

article 868100076

article 868100077

article 868100078

article 868100079

article 868100080

article 868100081

article 868100082

article 868100083

article 868100084

article 868100085

article 868100086

article 868100087

article 868100088

article 868100089

article 868100090

article 888000081

article 888000082

article 888000083

article 888000084

article 888000085

article 888000086

article 888000087

article 888000088

article 888000089

article 888000090

article 888000091

article 888000092

article 888000093

article 888000094

article 888000095

article 888000096

article 888000097

article 888000098

article 888000099

article 888000100

article 328000646

article 328000647

article 328000648

article 328000649

article 328000650

article 328000651

article 328000652

article 328000653

article 328000654

article 328000655

article 328000656

article 328000657

article 328000658

article 328000659

article 328000660

news-1701