jueves, 13 de junio de 2024

LENGUAJES. Ptthon

POO. Clase y objeto

Modelos de programación

Después de introducirnos en los conceptos básicos de la POO, en esta entrada vamos a aprender a identificar y crear (en abstracto) una clase y un objeto o instancia de esa clase. Esto nos servirá de base para iniciarnos en la práctica de la POO en lenguajes de programación y más concretamente en Python.

Una clase se define, como vimos en la entrada anterior, por ser una representación abstracta de objetos concretos que son, a su vez, instancias o concreciones de esa clase. La clase posee características (en POO atributos) y funcionalidades (que se concretan mediante funciones y que en POO se denominan métodos). La POO permite tratar ambas (características y funciones -> atributos y métodos) como un todo, lo que facilita el manejo del código.

Para crear una clase debemos utilizar la palabra reservada (por ejemplo Class), y darle un nombre identificador. Por convención, los nombres de las clases se inician con mayúscula, lo que la diferencian del nombre del objeto y de los métodos de la clase. Según los lenguajes, este proceso inicial puede precisar ser marcado de algún modo, por ejemplo, mediante (:) En Python class ClaseNombre:

El paso siguiente es utilizar un constructor de la clase, variando de procedimiento según en el lenguaje. En Python se realiza como sigue:

  • Definimos una función especial que consta de las siguientes partes:
    • El definidor def
    • El nombre de la función __init__, que se caracteriza por ir precedido y seguido por dos guiones bajos sucesivos
    • Y la definición de parámetros, que inician por convención por self, que hace referencia a la clase y a su constructor...
    • finalizando mediante :, como cualquier otra función def __init__(self,param1,param2):.
  • Referenciamos los parámetros que nos permiten identificar y dar valor inicial a los atributos de la clase, utilizando la referencia a la propia clase y a su constructor, al que queda asociado el atributo mediante la sintaxis del punto:
    • self.param1 = param1
    • self.param2 = param2

Finalmente creamos los métodos, de modo similar a como creamos las funciones. Estos métodos pueden contar con parámetros (o no) y devolver return datos (o no). En su formulación más simple (sin parámetros ni retorno) se expresan (en Python) como sigue:



def metodo1(self):
    contenidoDelMétodo
	

    Instanciar un objeto de la clase anterior consiste, básicamente, en hacer referencia de esa clase a la hora de declarar el objeto para posteriormente acceder a sus atributos y a sus métodos recurriendo a la sintaxis del punto.

    • Nombramos (declaramos) la instancia u objeto asociándolo a modo de variable a la clase y concretando como argumentos sus atributos. En Python mi_objeto = ClaseNombre(ValorArg1,ValorArg2) -> Los argumentos son concreciones de los atributos de la clase en el objeto.
    • Accedemos a los atributos mediante la sintaxis del punto... mi_objeto.param1 Recuerda que el parámetro es en realidad el atributo1 de la clase que se ha concretado en la creación del objeto como ValorArg1
    • ... y de forma similar a los métodos mi_objeto.metodo1()

    Ya que un ejemplo puede aclarar las cosas, paso a desarrollar uno en Python. El objetivo es mostrar el desarrollo de una concreción del proceso anterior siguiendo las explicaciones que proporciona Eric Matthes (2020:181-185)

    
    
    # Clase Perro
    
    class MiPerro:
    
     def __init__(self,nombre,edad):
    
    self.nombre = nombre
    
    self.edad = edad 
    
     def sentarse(self):
    
             print(f"{self.nombre} se sienta cuando yo se lo ordeno (y ella quiere, claro).")
    
    # Instancia u objeto de la clase MiPerro
    
    perrita = MiPerro("Atenea",10)
    
    # Acceso a los atributos de perrita:
    
     print(f"Mi perrita se llama {perrita.nombre} y tiene {perrita.edad} años")
    
    # Acceso al método creado en la clase
    
    perrita.sentarse() 
    
    
    

    Evidentemente es posible desarrollar clases mucho más complejas en cuanto a atributos y métodos, así como crear tantas instancias de la clase (objetos) como necesitemos. Pero para el propósito de esta entrada es suficiente con lo anterior. Su resultado (output) es el siguiente:

    Mi perrita se llama Atenea y tiene 10 años
    Atenea se sienta cuando yo se lo ordeno (y ella quiere, claro).

No hay comentarios:

Publicar un comentario

Comenta esta entrada