Utilizzare Classi e Oggetti per Creare Strutture Dati Personalizzate in Python

by theArchitect
SHARE
Utilizzare Classi e Oggetti per Creare Strutture Dati Personalizzate in Python
© Guida-HTML5.it

Introduzione

In Python, le classi e gli oggetti sono fondamentali per la programmazione orientata agli oggetti (OOP). Questo tutorial si concentrerà su come utilizzare classi e oggetti per creare strutture dati personalizzate. Impareremo a definire classi che rappresentano entità del mondo reale, come ad esempio un sistema di gestione di una biblioteca. Utilizzeremo attributi e metodi per manipolare i dati in modo efficace.

Codice completo

class Libro:
    def __init__(self, titolo, autore, anno_pubblicazione):
        self.titolo = titolo
        self.autore = autore
        self.anno_pubblicazione = anno_pubblicazione
        self.disponibile = True

    def prendi_in_prestito(self):
        if self.disponibile:
            self.disponibile = False
            print(f"Hai preso in prestito ´{self.titolo}´ di {self.autore}.")
        else:
            print(f"´{self.titolo}´ non è disponibile al momento.")

    def restituisci(self):
        self.disponibile = True
        print(f"Hai restituito ´{self.titolo}´ di {self.autore}.")

    def __str__(self):
        stato = "disponibile" if self.disponibile else "non disponibile"
        return f"´{self.titolo}´ di {self.autore}, pubblicato nel {self.anno_pubblicazione} - Stato: {stato}"

class Biblioteca:
    def __init__(self):
        self.libri = []

    def aggiungi_libro(self, libro):
        self.libri.append(libro)
        print(f"Aggiunto: {libro}")

    def mostra_libri(self):
        print("Libri disponibili nella biblioteca:")
        for libro in self.libri:
            print(libro)

# Esempio di utilizzo
biblioteca = Biblioteca()
libro1 = Libro("1984", "George Orwell", 1949)
libro2 = Libro("Il Signore degli Anelli", "J.R.R. Tolkien", 1954)

biblioteca.aggiungi_libro(libro1)
biblioteca.aggiungi_libro(libro2)

biblioteca.mostra_libri()

libro1.prendi_in_prestito()
biblioteca.mostra_libri()
libro1.restituisci()
biblioteca.mostra_libri()

Spiegazione

Nel codice sopra, abbiamo definito due classi: Libro e Biblioteca. La classe Libro rappresenta un libro con attributi come titolo, autore e anno_pubblicazione. Inoltre, ha un attributo disponibile che indica se il libro è attualmente in prestito.

I metodi prendi_in_prestito e restituisci gestiscono il prestito del libro, aggiornando lo stato di disponibilità. Il metodo __str__ restituisce una rappresentazione testuale del libro, utile per il debug e la visualizzazione.

La classe Biblioteca gestisce una collezione di libri. Ha un attributo libri che è una lista di oggetti di tipo Libro. I metodi aggiungi_libro e mostra_libri permettono di aggiungere un libro alla biblioteca e di visualizzare tutti i libri disponibili, rispettivamente.

Best practice

  • Incapsulamento: Mantieni gli attributi privati e fornisci metodi pubblici per accedervi e modificarli. Questo aiuta a mantenere l´integrità dei dati.
  • Documentazione: Aggiungi docstring ai tuoi metodi e classi per spiegare il loro scopo e il loro utilizzo. Questo rende il codice più leggibile e manutenibile.
  • Test unitari: Scrivi test per i tuoi metodi per garantire che funzionino come previsto. Puoi utilizzare il modulo unittest di Python per facilitare questo processo.
  • Modularità: Se il tuo progetto cresce, considera di suddividere il codice in più file e moduli per migliorare l´organizzazione e la leggibilità.

Riepilogo

In questo tutorial, abbiamo esplorato come creare classi e oggetti in Python per rappresentare strutture dati personalizzate. Abbiamo implementato un semplice sistema di gestione di una biblioteca utilizzando classi per i libri e la biblioteca stessa. Abbiamo anche discusso alcune best practice per scrivere codice OOP di qualità.

Approfondisci con risorse ufficiali

SHARE