CORSO INTRODUTTIVO PYTHON – 07

  • Pubblicato
  • Aggiornato
  • 5 minuti di lettura

Introduzione al Progetto

In questa lezione esploreremo la Programmazione Orientata agli Oggetti (OOP), uno dei paradigmi più importanti nella programmazione moderna. Impareremo a creare classi e oggetti, a utilizzare attributi e metodi e a lavorare con concetti fondamentali come ereditarietà e polimorfismo.

Sommario

Soluzioni esercizi lezione 06

				
					#esercizio 1
try:
    a = int(input("Inserisci il primo numero: "))
    b = int(input("Inserisci il secondo numero: "))
    print("Risultato:", a / b)
except ZeroDivisionError:
    print("Errore: Divisione per zero!")
except ValueError:
    print("Errore: Inserisci solo numeri!")

				
			
				
					#esercizio 2
# Scrittura
with open("nomi.txt", "w") as file:
    file.write("Alice\nLuca\nMarco\nAnna\n")

# Lettura
with open("nomi.txt", "r") as file:
    for riga in file:
        print(riga.strip())

				
			
				
					#esercizio 3
with open("testo.txt", "r") as file:
    contenuto = file.read()
    parole = contenuto.split()
    print("Numero di parole:", len(parole))

				
			
				
					#esercizio 4
try:
    numero = int(input("Inserisci un numero: "))
    risultato = 10 / numero
except Exception as e:
    with open("log_errori.txt", "a") as log:
        log.write(f"Errore: {str(e)}\n")
    print("Si è verificato un errore. Controlla il file di log.")

				
			

Obiettivi della lezione 07

  • Comprendere il concetto di programmazione orientata agli oggetti.
  • Creare e utilizzare classi e oggetti in Python.
  • Gestire attributi e metodi di una classe.
  • Apprendere i concetti di incapsulamento, ereditarietà e polimorfismo.

Cosa è la programmazione a oggetti?

La OOP è un paradigma di programmazione che organizza il codice attorno a oggetti e classi. Ogni oggetto rappresenta un’entità del mondo reale (ad esempio, una persona, un’auto, un prodotto), con:

  • Attributi: Le proprietà dell’oggetto (es. nome, età, colore).
  • Metodi: Le azioni o i comportamenti dell’oggetto (es. camminare, accelerare).

I principi fondamentali della OOP sono:

  1. Incapsulamento: Racchiudere dati e metodi all’interno di un oggetto.
  2. Ereditarietà: Permettere a una classe di derivare da un’altra e di ereditarne i comportamenti.
  3. Polimorfismo: Definire metodi con lo stesso nome ma comportamenti diversi.
  4. Astrazione: Nascondere i dettagli complessi e fornire un’interfaccia semplice.

Classi e Oggetti

Definizione di una classe

				
					#Una classe è uno schema (o blueprint) per creare oggetti.

class NomeClasse:
    # Metodo speciale per inizializzare l'oggetto
    def __init__(self, attributi):
        # Inizializzazione degli attributi
        self.attributo = valore

    # Metodi della classe
    def metodo(self):
        # Azione dell'oggetto
        pass

				
			

Creazione di un oggetto

				
					#Un oggetto è un’istanza della classe.

class Persona:
    def __init__(self, nome, eta):
        self.nome = nome  # Attributo nome
        self.eta = eta    # Attributo età

    def saluta(self):
        print(f"Ciao, mi chiamo {self.nome} e ho {self.eta} anni.")

# Creazione di un oggetto
persona1 = Persona("Alice", 30)
persona1.saluta()  # Output: Ciao, mi chiamo Alice e ho 30 anni.

				
			

Attributi e Metodi

Attributi

Gli attributi rappresentano le proprietà di un oggetto.

  • Attributi di istanza: Definiti all’interno di __init__ e specifici per ogni oggetto.
  • Attributi di classe: Condivisi da tutti gli oggetti della classe.

				
					class Auto:
    # Attributo di classe
    tipo = "Veicolo"

    def __init__(self, marca, modello):
        # Attributi di istanza
        self.marca = marca
        self.modello = modello

print(Auto.tipo)  # Output: Veicolo
auto1 = Auto("Toyota", "Yaris")
print(auto1.marca)  # Output: Toyota

				
			

Metodi

I metodi sono funzioni definite all’interno di una classe e descrivono il comportamento degli oggetti.

  • Metodo speciale __init__: Chiamato automaticamente quando si crea un oggetto.
  • Metodi personalizzati: Definiti dall’utente.

				
					class Rettangolo:
    def __init__(self, base, altezza):
        self.base = base
        self.altezza = altezza

    def area(self):
        return self.base * self.altezza

rettangolo = Rettangolo(5, 10)
print(rettangolo.area())  # Output: 50

				
			

Incapsulamento

L’incapsulamento consente di nascondere i dettagli interni di un oggetto. In Python, puoi indicare che un attributo o metodo è privato utilizzando un doppio underscore (__).

				
					class ContoBancario:
    def __init__(self, saldo):
        self.__saldo = saldo  # Attributo privato

    def deposita(self, importo):
        self.__saldo += importo

    def mostra_saldo(self):
        print(f"Saldo: {self.__saldo}")

conto = ContoBancario(100)
conto.deposita(50)
conto.mostra_saldo()  # Output: Saldo: 150

				
			

Ereditarietà

L’ereditarietà permette a una classe di derivare da un’altra classe.

				
					class Animale:
    def __init__(self, nome):
        self.nome = nome

    def saluta(self):
        print(f"{self.nome} fa un saluto.")

class Cane(Animale):  # Classe Cane eredita da Animale
    def abbaia(self):
        print(f"{self.nome} dice: Bau!")

cane = Cane("Fido")
cane.saluta()  # Output: Fido fa un saluto.
cane.abbaia()  # Output: Fido dice: Bau!

				
			

Polimorfismo

Il polimorfismo consente di usare metodi con lo stesso nome ma comportamenti diversi, basati sulla classe a cui appartengono.

				
					class Animale:
    def fa_suono(self):
        print("L'animale fa un suono.")

class Gatto(Animale):
    def fa_suono(self):
        print("Il gatto dice: Miao!")

class Cane(Animale):
    def fa_suono(self):
        print("Il cane dice: Bau!")

animali = [Gatto(), Cane(), Animale()]
for animale in animali:
    animale.fa_suono()
# Output:
# Il gatto dice: Miao!
# Il cane dice: Bau!
# L'animale fa un suono.

				
			

Esercizi pratici

  • Esercizio 1: Calcolo dell’area di un rettangolo
    Crea una classe Rettangolo con attributi base e altezza e un metodo per calcolare l’area.

  • Esercizio 2: Classe ereditaria
    Crea una classe base Veicolo con un metodo muoviti() e una classe derivata Auto che aggiunge un metodo accelerazione().

  • Esercizio 3: Conto bancario con incapsulamento
    Crea una classe ContoBancario con un attributo privato per il saldo, metodi per depositare e prelevare denaro e un metodo per mostrare il saldo.

Conclusioni e anticipazioni

In questa lezione abbiamo:

  • Capito il concetto di programmazione orientata agli oggetti.
  • Imparato a creare e utilizzare classi e oggetti.
  • Esplorato concetti fondamentali come incapsulamento, ereditarietà e polimorfismo.

Nella prossima lezione inizieremo a esplorare librerie per l’analisi dei dati come NumPy e Pandas, entrando nel mondo dell’analisi strutturata dei dati.

Homepage del Corso Introduttivo

Sei curioso di scoprire il mondo della programmazione?
Con il mio corso gratuito di Python potrai infatti scoprire gli aspetti del linguaggio.
Ogni lezione è spiegata in modo chiaro e pratico.
Inoltre, grazie a esercizi e materiali di supporto, potrai quindi mettere subito in pratica ciò che impari.

Il mio Portfolio