qbasic | Python | |
---|---|---|
![]() |
![]() |
Las funciones son un primer intento de agrupación y reutilización de código, son efectivas, pero no guardan los datos después de su ejecución salvo los que retornan, o bien si estamos usando variables globales.
Imaginemos una plataforma de streaming (Net...) donde cada cliente está viendo una película o serie, que puede tener pausada o no en cierto punto, etc. Sin la POO tendríamos que grabar cada uno de estos datos en una variable. Imaginemos ahora miles o millones de usuarios. La POO ofrece un nuevo paradigma de programación que maneja objetos reutilizables que simplifican la gestión de aplicaciones complejas.
El objetivo es usar menos código y más organizado. Se crean clases que agrupan conjuntos de variables (atributos) y funciones (métodos) que pueden ser reutilizadas una y otra vez al crear objetos pertenecientes a esa clase.
Modelo donde se definen las características comunes de un grupo de objetos.
Podemos imaginar la clase como un molde o unos planos (blueprints) con los que luego poder fabricar los objetos.
Por ejemplo, con un molde de Galletas luego podremos fabricar objetos concretos que serán cada una de las galletas que lleguemos a fabricar.
class Perro: # creación de una clase. Por convenio la primera letra mayúscula y singular
pass # creamos una clase vacía
Son sinónimos:
Una instancia es un ejemplar perteneciente a una clase.
Una instancia es un objeto concreto que pertenece a una clase.
bobby = Perro() # instanciación de una clase. boby es un objeto o instancia de clase. Por convenio todo en minúsculas
teddy = Perro() # otra instancia de la clase Perro, compartirían atributos y métodos
type(bobby) # si preguntamos por el tipo de un objeto nos dice que boby es de tipo Perro, que es su clase
__main__.Perro
type(teddy)
__main__.Perro
Los atributos permiten identificar el carácter de los objetos. Son las variables de la clase.
class Perro:
genero = "Canis"
orden = "Carnívora"
cuadrupedo = True
bobby = Perro() # es necesario poner paréntesis
bobby.genero # nomenclatura del punto
'Canis'
bobby.cuadrupedo
True
if bobby.cuadrupedo:
print("Si, es cuadrúpedo.")
Si, es cuadrúpedo.
Podemos crear varios objetos de una misma clase. Cada uno de estos objetos puede tener diferentes valores para estos atributos, lo que les confiere sus propias características.
Por ejemplo, podemos tener dos instancias de la clase Perro (bobby y teddy) que tengan atributos como nombre, edad, raza, pelo,... que sean diferentes y que identifican el carácter propio de cada uno de ellos.
Tener diferentes valores de los atributos es lo que define el estado de un objeto.
Existen dos tipos de atributos:
Por ejemplo, para la clase Perro son comunes:
Por ejemplo, nombre, edad, raza, pelo, ...
Los métodos describen el comportamiento de los objetos de una clase, describen las acciones que puede realizar el objeto, su funcionalidad.
Son las funciones de la clase.
Los métodos, al ser funciones, pueden recibir parámetros y también pueden retornar un valor.
class Perro:
def ladra(self): # el argumento self hace referencia al propio objeto, puede tener otro nombre
print("Guau!!!")
laika = Perro() # instanciamos el objeto
laika.ladra() # invocamos el método
Guau!!!
Ahora vamos a ver un método que requiere que le pasemos dos argumentos y los recoge como parámetros del método.
class Perro():
def saluda(self, nombre, raza):
self.nombre = nombre
self.raza = raza
print(f"Mi perro {self.nombre} de raza {self.raza} te saluda levantando la patita.")
beto = Perro()
beto.saluda("Beethoven", "San Bernardo")
Mi perro Beethoven de raza San Bernardo te saluda levantando la patita.
Si creamos una aplicación compleja lo habitual es que esté compuesta de varias clases.
Ventajas:
Las clases trabajan en forma de módulos.
Cada clase es independiente de las otras.
En el equipo HiFi cada módulo realiza su tarea y nada sabe de la del resto.
Las diferentes clases se conectan con otras mediante los denominados métodos de acceso. De esta forma se conectan unas clases con otras lo que permite que el conjunto funcione como un solo programa.
Los métodos de acceso tienen acceso solo a algunas de las características de las otras clases, esto permite que su comportamiento sea modular y cada clase quede encapsulada.
Diferentes módulos de un teléfono móvil:
Cada módulo se especializa y así la cámara de fotos nada sabe de realizar llamadas de teléfono, o el modem nada sabe de realizar fotos.
Permite acceder a las propiedades y comportamientos de los objetos.
Sintaxis: