Programacion Orientada a Objetos – Principiantes en Python

Posted by Marta on February 1, 2023 Viewed 4004 times

Card image cap

En este articulo aprenderás que es la programacion orientada a objetos. En programacion orientada a objetos hay dos conceptos muy importantes: clase y objetos. Aprenderás que es una clase y un objeto y por que entender programacion orientada a objetos es importante si quieres aprender programacion. Ademas aprenderás como crear clases en Python.

Vamos a empezar.

Clases y Objectos

Vamos a empezar con el concepto mas importante. Que es una clase? y que es un objeto? Todo el mundo entiende que es un objeto. Cualquier cosa que puedes percibir, sentir con tus sentidos o manipular es un objeto. En software, formalmente hablando objetos tienen otro significado. Un clase es un colección de datos y las acciones asociadas para manipularlos. Vamos a ver algunos ejemplos para entender mejor esta definición.

Por ejemplo podriamos definir una clase llamada Persona, la cual representara el concepto de una persona. Seguidamente tienes que determinar que información es relevante para representar una persona en nuestro programa. Por ejemplo, en este caso vamos a elegir el nombre y la edad como los datos relevantes.

El siguiente paso para definir una clase seria definir las operaciones de la clase, también llamadas métodos. En este caso vamos a definir dos operaciones, ‘say hello’ y ‘say name’.

Perfecto! Acabas de definir una clase. En otras palabras, acabas de definir una plantillas que determina los datos y operaciones que un objeto esta clase contendrá. Es decir, si creas un objeto de la clase Persona deberas indicar un nombre y edad específicos, ademas ejecutar las operaciones definidas en la clase Persona, en este caso say name y say age.

Esta seria la idea general. Ahora vamos a ver como definir clases en un lenguaje de programación como Python.

Como definir una clase: Ejemplos

Ahora que entendemos que es una clase, vamos a ver algunos ejemplos para afianzar el concepto. Vamos a continuar con la clase Persona del ejemplo anterior, que tiene dos datos, el nombre y la edad.

Una vez definida la clase podemos crear objetos y asignar valores al objeto que seria una variable. Por ejemplo, podemos crear un objeto llamado person1, que seria la variable. Y los valores del objeto seria nombre, con valor ‘Pedro’ y edad con valor 16. Y podriamos crear un segundo objeto con diferentes valores, por ejemplo, nombre=’Mary’ y edad=32.

Una vez has definido una clase, puedes crear tantos objetos de esa clase como desees.

Otro ejemplo podría ser definir una clase para representar círculos. Podrias definir una clase llamada Circulo y sus datos serian el radio del circulo y el color, por ejemplo. Y las operación o método de la clase seria calcular el area. Ahora podemos crear objetos de la clase Circulo con radio=3 y color=’Amarillo’.

Que es Programacion Orientada a Objetos

Vamos a hablar de que es exactamente la programacion orientada a objetos. ‘Orientada a Objetos’ significa que vas a resolver un problema representado las entidades del problema como clases.

Por ejemplo si el problema es calcular el area de un circulo, vas a necesitar saber el radio del circulo y después calcularas el area utilizando la formula: 2*PI*radio.

Porque Utilizar Programación Orientada a Objectos?

Podrias resolver este problema sin utilizar programacion orientada a objetos. Solo tienes que crear una función que calcule el area pasando el radio como parámetro. En caso que utilices programación orientada a objetos, tendrías que crear una clase Circulo, la cual tendría un campo o atributo llamado radio y un método para calcular el area.

Y si se puede resolver el problema de las dos maneras, por qué utilizar programación orientada a objetos? Esta metodología ayuda a reducir la complejidad de los programas y también consigue que el código sea mas fácil de mantener. Utilizar clases ayuda a organizar el código agrupando código que tiene alguna relación.

Programacion Orientada a Objetos en Python

Como traducimos todo esto a Python? En otras palabras, como podemos crear una clase en Python, objetos de una clase y utilizar esos objetos. Vamos a continuar con el ejemplo anterior, así que vamos a crear una class Persona o Person que tendrá dos atributos, nombre y edad( name y age). También añadiremos dos métodos say_hello y say_name.

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age
  
  def say_hello(self):
    print('Hello')
  
  def say_name(self):
    print('My name is ' + self.name)

person1 = Person('Peter', 28)
person2 = person('Mary', 32)
person1.say_hello()
person2.say_name()

Solo tienes que copiar este código en un archivo de texto y guardarlo utilizando la extension .py, y ejecutarlo utilizando el comando python, o desde una IDE como PyCharm.

El método __init__ es el método constructor. Cuándo llamas a este método, crearas un objeto de la clase Person. La principal funcionalidad del constructor es asignar valores a los atributos.

El resultado de ejecutar el código anterior seria:

Hello
My name is Mary

Hemos visto cómo crear una clase y como utilizarla, así que ahora vamos a hablar de los atributos.

Atributos: Globales y de Instancia

Hemos visto que atributos son los datos que vamos a guardar cuando definimos una clase, por ejemplo, si definimos una clase persona podemos definir como atributos el nombre y la edad.

Estos atributos se conocen como atributos de la instancia. Este tipo de atributos son inicializados con el constructor, el método __init__. Ademas, este tipo de atributos es accesible solo a través del objeto o instancia de la clase.

A parte de los atributos de instancia existe otro tipo de atributo, el atributo global. Los atributos globales son accesibles a través de la clase, es decir, no necesitas crear un objeto para acceder a estos atributos. Vamos a ver un ejemplo:

class Person:
    
    race = 'Human Being' # Atributo global
    
    def __init__(self,name,age):
        self.name = name  # Atributo de instancia
        self.age = age # Atributo de instancia
        
    def say_hello(self):
        print("Hello, my name is" + self.name)
        
    def say_age(self):
        print("I am " + self.age +" years old")

# La siguiente linea devolvera error
# AttributeError: type object 'Person' has no attribute 'name'
print(Person.name)

person_instance = Person('Mary',30)

# La siguiente linea funcionara correctamente. name es un atributo de instancia, asi que necesitas crear un objeto para acceder al atributo
print(person_instance.name)

# La siguiente linea funcionara correctamente. Race is un atributo global, es decir que puedes acceder a este atributo atraves de la clase. No es necesario crear un objeto.
print(Person.race)   # Devuelve Human Being

# Atributos globales pueden ser accedidos atraves de la clase o del objeto
print(person_instance.race)

Atributos globales son accesibles a través del objeto y también a través de la clase. A diferencia de los atributos de instance que son accesibles solo a través del objeto.

Practica con Ejercicios

Ha llegado el momento de practicar y ponen en practica lo aprendido. Te recomiendo que intentes resolver el siguiente problema tu mismo sin mirar la solución. 🙂

Ejercicio: Crea una clase Circle que tenga un atributo global con el valor del numero PI y un atributo de instancia para guardar el radio. Y a continuación crea un método para calcular el area del circulo.

Solucion

class Circle:
    PI =3.14

    def __init__(self,radius):
        self.radius = radius

    def area(self):
        return self.PI * self.radius ** 2

circle_instance = Circle(10)
print(circle_instance.area())

Conclusion

Para concluir, en este articulo hemos visto que es una clase y un objeto en programacion orientada a objetos. Recuerda que la clase es la plantilla, y el objeto es creado basandose en la plantilla y guarda los valores. Tambien hemos visto como crear una clase en Python, que es la programacion orientada a objetos y por que es importante. Y finalmente como utilizar clases y objetos en Python.

Espero que hayas aprendido y te haya resultado util. Muchas gracias por leer este articulo y por apoyar este blog!

Mas Articulos Interesantes

Project-Based Programming Introduction

Steady pace book with lots of worked examples. Starting with the basics, and moving to projects, data visualisation, and web applications

100% Recommended book for Java Beginners

Unique lay-out and teaching programming style helping new concepts stick in your memory

90 Specific Ways to Write Better Python

Great guide for those who want to improve their skills when writing python code. Easy to understand. Many practical examples

Grow Your Java skills as a developer

Perfect Boook for anyone who has an alright knowledge of Java and wants to take it to the next level.

Write Code as a Professional Developer

Excellent read for anyone who already know how to program and want to learn Best Practices

Every Developer should read this

Perfect book for anyone transitioning into the mid/mid-senior developer level

Great preparation for interviews

Great book and probably the best way to practice for interview. Some really good information on how to perform an interview. Code Example in Java