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óndef __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 = param1self.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
- 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.param1Recuerda que el parámetro es en realidad el atributo1 de la clase que se ha concretado en la creación del objeto comoValorArg1 - ... y de forma similar a los métodos
mi_objeto.metodo1()
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.
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:
Atenea se sienta cuando yo se lo ordeno (y ella quiere, claro).
No hay comentarios:
Publicar un comentario
Comenta esta entrada