Introducció
La programació orientada a objectes (POO) és un paradigma de programació que utilitza "objectes" per dissenyar aplicacions i programes. Els objectes poden representar entitats del món real amb atributs (dades) i comportaments (mètodes). En Python, les classes són plantilles per crear objectes.
Conceptes Clau
- Classes
Una classe és una plantilla per crear objectes. Defineix un conjunt d'atributs i mètodes que els objectes creats a partir de la classe tindran.
- Objectes
Un objecte és una instància d'una classe. Cada objecte creat a partir d'una classe pot tenir diferents valors per als seus atributs.
- Atributs
Els atributs són variables que pertanyen a una classe. Es poden utilitzar per emmagatzemar informació sobre els objectes.
- Mètodes
Els mètodes són funcions definides dins d'una classe que descriuen els comportaments dels objectes.
Definició de Classes i Creació d'Objectes
Definició de Classes
Per definir una classe en Python, utilitzem la paraula clau class
seguida del nom de la classe i dos punts. A continuació, es defineixen els atributs i mètodes de la classe.
class Cotxe: def __init__(self, marca, model, any): self.marca = marca self.model = model self.any = any def descripcio(self): return f"{self.marca} {self.model} ({self.any})"
Creació d'Objectes
Per crear un objecte d'una classe, simplement cridem la classe com si fos una funció, passant els arguments necessaris al constructor (__init__
).
Accés als Atributs i Mètodes
Podem accedir als atributs i mètodes d'un objecte utilitzant la notació de punt.
Exemple Pràctic
Definició de la Classe
class Persona: def __init__(self, nom, edat): self.nom = nom self.edat = edat def saluda(self): return f"Hola, em dic {self.nom} i tinc {self.edat} anys."
Creació d'Objectes i Ús de Mètodes
persona1 = Persona("Anna", 30) persona2 = Persona("Joan", 25) print(persona1.saluda()) # Sortida: Hola, em dic Anna i tinc 30 anys. print(persona2.saluda()) # Sortida: Hola, em dic Joan i tinc 25 anys.
Exercicis Pràctics
Exercici 1: Definició de Classes i Creació d'Objectes
Enunciat:
Defineix una classe Llibre
amb els atributs titol
, autor
i any_publicacio
. Afegeix un mètode descripcio
que retorni una cadena amb la descripció del llibre. Crea dos objectes de la classe Llibre
i mostra la seva descripció.
Solució:
class Llibre: def __init__(self, titol, autor, any_publicacio): self.titol = titol self.autor = autor self.any_publicacio = any_publicacio def descripcio(self): return f"'{self.titol}' de {self.autor} ({self.any_publicacio})" llibre1 = Llibre("1984", "George Orwell", 1949) llibre2 = Llibre("El Petit Príncep", "Antoine de Saint-Exupéry", 1943) print(llibre1.descripcio()) # Sortida: '1984' de George Orwell (1949) print(llibre2.descripcio()) # Sortida: 'El Petit Príncep' de Antoine de Saint-Exupéry (1943)
Exercici 2: Atributs i Mètodes
Enunciat:
Defineix una classe CompteBancari
amb els atributs titular
i saldo
. Afegeix mètodes per depositar
i retirar
diners, així com un mètode per mostrar el saldo
actual. Crea un objecte de la classe CompteBancari
i realitza algunes operacions.
Solució:
class CompteBancari: def __init__(self, titular, saldo=0): self.titular = titular self.saldo = saldo def depositar(self, quantitat): self.saldo += quantitat def retirar(self, quantitat): if quantitat <= self.saldo: self.saldo -= quantitat else: print("Saldo insuficient") def mostrar_saldo(self): return f"Saldo actual: {self.saldo}€" compte = CompteBancari("Maria", 1000) compte.depositar(500) compte.retirar(200) print(compte.mostrar_saldo()) # Sortida: Saldo actual: 1300€
Resum
En aquesta secció, hem après els conceptes bàsics de la programació orientada a objectes en Python, incloent la definició de classes, la creació d'objectes, i l'accés als atributs i mètodes. També hem vist exemples pràctics i hem realitzat exercicis per reforçar els conceptes apresos. Ara estem preparats per explorar temes més avançats en la programació orientada a objectes, com l'herència i el polimorfisme.
Curs de Programació en Python
Mòdul 1: Introducció a Python
- Introducció a Python
- Configuració de l'Entorn de Desenvolupament
- Sintaxi de Python i Tipus de Dades Bàsics
- Variables i Constants
- Entrada i Sortida Bàsiques
Mòdul 2: Estructures de Control
Mòdul 3: Funcions i Mòduls
- Definició de Funcions
- Arguments de Funció
- Funcions Lambda
- Mòduls i Paquets
- Visió General de la Biblioteca Estàndard
Mòdul 4: Estructures de Dades
Mòdul 5: Programació Orientada a Objectes
Mòdul 6: Gestió de Fitxers
- Lectura i Escriptura de Fitxers
- Treballant amb Fitxers CSV
- Gestió de Dades JSON
- Operacions amb Fitxers i Directoris
Mòdul 7: Gestió d'Errors i Excepcions
Mòdul 8: Temes Avançats
- Decoradors
- Generadors
- Gestors de Context
- Concurrència: Fils i Processos
- Asyncio per a Programació Asíncrona
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries amb unittest
- Desenvolupament Guiat per Proves
- Tècniques de Depuració
- Ús de pdb per a la Depuració
Mòdul 10: Desenvolupament Web amb Python
- Introducció al Desenvolupament Web
- Conceptes Bàsics del Framework Flask
- Construcció d'APIs REST amb Flask
- Introducció a Django
- Construcció d'Aplicacions Web amb Django
Mòdul 11: Ciència de Dades amb Python
- Introducció a la Ciència de Dades
- NumPy per al Càlcul Numèric
- Pandas per a la Manipulació de Dades
- Matplotlib per a la Visualització de Dades
- Introducció al Machine Learning amb scikit-learn