Tutorial 11 -Clases Parte 1

Hola a todos en este tutorial adentrare en la programación orientada a objetos, tal vez este tutorial se un poco largo pero solo lo necesario.




Bien, antes de meterme en materia directa mente, creo que seria bueno tratar de dejar en claro que es una clase y que es un objeto, pues si no se comprende bien esto, es difícil comprender las capacidades y bondades de la programación orientada a objetos.

Un objeto cualquiera y no solo en programación tiene ciertas características  por poner un ejemplo hablemos de una lata, la lata tiene una altura, un volumen, peso, color, un radio, etc., todas estas características representan a un objeto. En programación es totalmente igual, los objetos los representamos con atributos.


Ahora en cambio una clase la podemos ver como una fábrica que se dedica a crear objetos, continuando con el ejemplo de la lata; la fábrica ya tiene las características de la lata y crea tantos objetos como se le pidan. Pero además las clases contienen métodos que no son mas que funciones, estos métodos son las acciones que pueden hacer dichos objetos; cambiemos nuestro ejemplo a un automóvil:


En la parte de arriba de la imagen tenemos el nombre de la clase

Enseguida tenemos los atributos de nuestra clase, y pues claro que no son los únicos atributos de un carro pero con esos basta para poner un ejemplo.


Y por ultimo tenemos los métodos y/o acciones que puede realizar un automóvil o que podemos aplicar a el. Un automóvil avanza, lo podemos pintar, se puede ponchar una llanta, y obviamente debemos recargarlo con gasolina para que ande.

Pero como sabemos, los carros pueden ser iguales y todos tienen atributos parecidos o sirven para cosas similares  pero no todos los objetos embonan exactamente, miremoslo así, un pick-up es un automóvil pero tiene características que lo hacen único, aunque sirve práctica mente para lo mismo.

Aquí es donde entra un concepto en programación muy utilizado y es la herencia, la herencia no es nada mas que eso, por ejemplo: Tenemos una nueva clase llamada Pick-Up esta clase hereda de automóvil todos sus atributos y todos sus métodos pero además adhiere un método que es: Carga refiriéndome a que puede cargar cosas como cemento u otras cosas pesadas.



En otras palabras la clase Pick-Up quedaría así:

Pick-Up

Llantas
Gasolina
Posicion
Color

Avanza
Pintar
Ponchar
Recargar
Carga

Pick-Up adquiere todo de Automóvil tanto métodos como atributos y además el método propio de Pick-Up.

Para ampliar este ejemplo pondré un árbol de diferentes automóviles en donde todos heredan de Automovil:

Esto de la herencia en programación orientada a objetos es algo muy importante y hay que saberla manejar y también aprovechar, ahora para que quede tal vez un poco mas claro pasemos a definir una clase en Python:


En Python para definir o crear una nueva clase se utiliza la palabra reservada class seguido del nombre que pondremos a la clase, algo muy importante que no hay que olvidar, los nombres de las clases deben empezar con una letra mayúscula, pero claro que pueden empezar por minúscula  la mayúscula se utiliza solo para identificar fácilmente las clases. 

Todas las clases deben contener un método constructor, este método es el que contiene todos los atributos del objeto en si.

Ejemplo:
--------------------------------------------------------------------------------------------------------------------

class Automovil():

    def __init_(self,x,y):

        self.llantas ="Bien"

        self.gasolina=10

        self.color="Azul"

        self.posicion=(x,y)

    def avanza(self):

        self.posicion+=(1,0)

    def pintar(self):

        self.color="Rojo"

    def ponchar(self):

        self.llantas="Ponchadas"

    def recargar(self):

        self.gasolina+=10
--------------------------------------------------------------------------------------------------------------------
En la linea 1 declaramos la clase Automovil, en este caso no hereda de ninguna otra clase.
En la linea 2 creamos nuestro método constructor, el cual inicializa nuestros objetos, al momento de crear un nuevo objeto se le asignan los atributos ahí contenidos, y muy importante, para que Python reconozca este método como el constructor siempre debe llamarse "__init__" sino Python no podrá reconocerlo.
Como ven, el método constructor y todos los demás métodos reciben un parámetro en común "self" este parámetro siempre debe ser el primero el cual sirve para referirnos a los atributos contenidos en nuestro constructor.
En Python es tan sencillo crear un objeto como crear una variable, veamos como creamos un objeto por medio de la clase Automovil:
--------------------------------------------------------------------------------------------------------------------

class Automovil(): 
    def __init_(self,x,y):
        self.llantas ="Bien"
        self.gasolina=10
        self.color="Azul"
        self.posicion=(x,y)

    def avanza(self):
        self.posicion+=(1,0)

    def pintar(self):
        self.color="Rojo"

    def ponchar(self):
        self.llantas="Ponchadas"

    def recargar(self):
        self.gasolina+=10


carro = Automovil(10,10)
--------------------------------------------------------------------------------------------------------------------
Lo único distinto en este código es la linea 21 en donde creamos un objeto del tipo Automovil y le mandamos los parámetros de posición (x,y)
Bien, ya con esto hemos creado un objeto en Python. :)
Esto de los objetos no es fácil de entenderlo de buenas a primeras si eres un principiante en programación, y entender e identificar que es una clase y que es un objeto es algo complicado, no digo que para todos pero en general así es, así que si no comprendiste ni jota no te preocupes, seguiré publicando mas sobre este tema y abarcare aun mas como el polimorfismo y encapsulamiento.
Ya por ultimo modificare el juego del tutorial pasado en donde usare todo lo visto hasta ahora y un poco mas, pero lo explicare paso a paso para que no se pierdan y puedan entender un poco mas esto de la programación orientada a objetos.

Comentarios

Entradas más populares de este blog