Páginas

jueves, 7 de enero de 2021

Programación Orientada a Objetos (POO)

En Python disponemos de varios paradigmas de programación. Inicialmente hemos visto programación imperativa, concretamente programación estructurada o procedimental o procedural que permite crear algoritmos que se ejecutan secuencialmente de arriba hacia abajo. Cuando el proyecto que deseamos programar se hace muy complejo y de gran tamaño el paradigma procedimental puede llegar a crear un código difícil de seguir y poco intuitivo.

La Object-oriented programming (OOP) o programación orientada a objetos (POO) surgió con la intención de tratar las estructuras de forma similar a como tratamos los objetos en la realidad para conseguir que el código sea más intuitivo.

Veamos un ejemplo de objeto en la vida real. Veamos el objeto coche.

Atributos: características que definen el objeto.

Un coche tiene una serie de atributos o propiedades como son:

  • color
  • número de asientos
  • potencia
  • velocidad máxima
  • consumo
  • peso
  • Km de autonomía
  • capacidad del maletero
  • etc

Métodos: acciones que puede realizar el objeto.

Un coche tiene una serie de métodos o funciones que puede realizar, como por ejemplo:

  • Acelerar
  • Frenar
  • Repostar o cargar batería
  • aparcar
  • abrir maletero
  • girar
  • encender luces
  • poner música
  • etc

También tenemos objetos de objetos. Así, el automóvil tiene un motor que a su vez es un objeto con sus propios tributos y métodos. El motor tiene atributos como la potencia, el consumo, el par-motor, la temperatura máxima, etc. El motor tiene métodos o funciones que puede realizar como encender, apagar, acelerar, etc. Es bastante habitual ver objetos, dentro de objetos, y a su ver estos dentro de otros objetos.

En programación para crear los objetos utilizamos clases. Si el objeto es una galleta la clase sería el molde que utilizamos para crear las galletas. Ese molde tiene una serie de propiedades o atributos y luego una galleta concreta puede disponer de un valor concreto de ese atributo. Por ejemplo, la clase puede definir el color y la forma de la galleta y luego una galleta concreta, que sería el objeto, puede tener un color amarillo, y una forma cuadrada.

En el campo de la programación:

  • La clase se define el Python como class
  • Los atributos son variables. Diferentes objetos creados con la misma clase pueden tener diferentes valores para un mismo atributo. Por ejemplo, el objeto galletaMaria puede tener el atributo calorías con un valor diferente de la galletaIntegral.
  • Los métodos son funciones que en Python se definen con def como cualquier otra función pero que dentro del ámbito de una clase se denomina método. Los métodos, por ser funciones, pueden recibir parámetros y pueden devolver un valor.

El estado de un objeto es el conjunto de valores o atributos que definen ese objeto y que pueden ser diferentes de otro objeto creado con la misma clase. Los objetos creados con una misma clase pueden tener los mismos atributos y métodos pero pueden tener diferentes estados.

Cuando aplicamos una clase para crear un objeto decimos que estamos instanciando una clase para crear un objeto o instancia de clase. De esta forma, una instancia es un objeto e instanciar un objeto es crear un objeto aplicando una clase. Estos objetos se guardan en la memoria conteniendo información sobre los atributos y métodos que poseen.

Python ya dispone de clases creadas a priori y que incluye y están listas para usar, por ejemplo los tipos de datos int o float, y dispone de funciones internas para estos tipos de datos como por ejemplo abs(). En otros casos, el programador puede crear sus propias clases que le permitirá instanciar objetos, por ejemplo, podemos crear facturas, informes, ventanas, puntos de venta, etc.

Veamos como crear en Python la clase galleta. Para ello se usa la palabra clave class y el nombre se acostumbra a ponerlo en mayúsculas y en singular.

 class Galleta:  
   pass  
   
 una_galleta=Galleta()  

Algunos recursos para aprender sobre POO:

No hay comentarios:

Publicar un comentario