Esercizi Ereditarietà Python
Codegrind Team•Jul 21 2022
Ecco degli esercizi con soluzione per praticare l’utilizzo dell’ereditarietà e della programmazione ad oggetti in Python.
Esercizio 1
Scrivere una classe Veicolo che abbia le seguenti proprietà: marca, modello e anno. Aggiungi poi i metodi accellera e frena. Creare poi una classe Auto che eredita da Veicolo ma aggiunge la proprietà colore ed il metodo cambia_colore().
class Veicolo:
def __init__(self, marca, modello, anno):
self.marca = marca
self.modello = modello
self.anno = anno
def accelera(self):
print("Sto accelerando")
def frena(self):
print("Sto frenando")
class Auto(Veicolo):
def __init__(self, marca, modello, anno, colore):
super().__init__(marca, modello, anno)
self.colore = colore
def cambia_colore(self, nuovo_colore):
self.colore = nuovo_colore
Esercizio 2
Modifica la classe Auto in modo che erediti anche il metodo __str__() dalla classe Veicolo, in modo da stampare le informazioni sull’auto in questo formato: “Marca: Ferrari, Modello: Enzo, Anno: 2004, Colore: Rosso”.
class Veicolo:
def __init__(self, marca, modello, anno):
self.marca = marca
self.modello = modello
self.anno = anno
def accelera(self):
print("Sto accelerando")
def frena(self):
print("Sto frenando")
def __str__(self):
return f"Marca: {self.marca}, Modello: {self.modello}, Anno: {self.anno}"
class Auto(Veicolo):
def __init__(self, marca, modello, anno, colore):
super().__init__(marca, modello, anno)
self.colore = colore
def cambia_colore(self, nuovo_colore):
self.colore = nuovo_colore
def __str__(self):
return super().__str__() + f", Colore: {self.colore}"
Esercizio 3
Scrivi una classe Forma che abbia un metodo area() che calcoli l’area della forma. Poi crea le classi Quadrato e Cerchio che ereditino dalla classe Forma e che implementino il metodo area() in modo appropriato per ogni forma. Utilizza le classi create per creare un quadrato e un cerchio, quindi stampa l’area di ognuno di essi.
import math
class Forma:
def area(self):
pass
class Quadrato(Forma):
def __init__(self, lato):
self.lato = lato
def area(self):
return self.lato ** 2
class Cerchio(Forma):
def __init__(self, raggio):
self.raggio = raggio
def area(self):
return math.pi * self.raggio ** 2
quadrato = Quadrato(5)
print(quadrato.area())
cerchio = Cerchio(5)
print(cerchio.area())