Context engineering
La programmazione a oggetti (OOP, Object-Oriented Programming) è un paradigma che organizza il codice attorno a entità chiamate oggetti.
Un oggetto è un’astrazione del mondo reale che racchiude dati (stato) e comportamenti (azioni) in un’unica unità coerente.
👉 In altre parole, un oggetto può essere visto come una “cosa” autonoma capace di interagire con altre cose.
Rispetto al modello procedurale, in cui i dati e le funzioni sono separati, la OOP presenta diversi vantaggi:
| Paradigma Procedurale | Paradigma a Oggetti (OOP) |
|---|---|
| Dati e funzioni separati | Dati e metodi integrati in oggetti |
| Programma come sequenza di istruzioni | Programma come interazione tra oggetti |
| Riutilizzo limitato | Elevato riutilizzo grazie a classi e ereditarietà |
Esempio:
class Animale:
pass
cane = Animale() # istanza della classe Animale
Esempio:
class Animale:
def __init__(self, nome, specie, suono):
self.nome = nome # attributo
self.specie = specie # attributo
self.suono = suono # attributo
def faiVerso(self): # metodo
return f"{self.nome} dice {self.suono}"
Definisci una classe con attributi e metodi, poi crea diverse istanze.
class Animale:
def __init__(self, nome, specie, suono):
self.nome = nome
self.specie = specie
self.suono = suono
def faiVerso(self):
return f"{self.nome} ({self.specie}) dice: {self.suono}"
# istanze
cane = Animale("Fido", "Cane", "bau")
gatto = Animale("Micio", "Gatto", "miao")
mucca = Animale("Bianchina", "Mucca", "muu")
print(cane.faiVerso())
print(gatto.faiVerso())
print(mucca.faiVerso())
Facciamo interagire due classi: Animale e Giocattolo.
class Giocattolo:
def __init__(self, nome):
self.nome = nome
def usatoDa(self, animale):
return f"{animale.nome} gioca con {self.nome}"
palla = Giocattolo("palla")
print(palla.usatoDa(cane)) # Fido gioca con palla
Modelliamo un concetto più vicino alla vita quotidiana: Studente.
class Studente:
def __init__(self, nome, eta, classe):
self.nome = nome
self.eta = eta
self.classe = classe
def studia(self, materia):
return f"{self.nome} sta studiando {materia}"
def sostieneEsame(self, materia):
return f"{self.nome} ha sostenuto l’esame di {materia}"
alunno = Studente("Luca", 20, "3A")
print(alunno.studia("matematica"))
print(alunno.sostieneEsame("fisica"))
Altri esempi possibili:
Libro con titolo, autore, numero di pagine, metodo leggi().ContoBancario con saldo, metodi deposita(), preleva().La OOP non è solo una tecnica, ma un modo di pensare.
Modellare un sistema in termini di oggetti significa avvicinare la logica del software a quella del mondo reale. Tuttavia:
studia()nome return__init__?
Commenti
Posta un commento