Guida programmazione orientata agli oggetti Torna alla lezione

Esempio di astrazione [Python]

In Python non esiste la parola riservata abstract ma si ottiene un comportamento, in qualche modo, analogo con qualche stratagemma come, ad esempio, scatenando un'eccezione qualora venga invocato un metodo astratto.

from math import pi
class Colore:
  def __init__(self, rosso=0, verde=0, blue=0):
    self.rosso = rosso
    self.verde = verde
    self.blue  = blue
class FiguraGeometrica:
  def __init__(self, x, y, colore):
    self.x     = x
    self.y     = y
    self.colore = colore
  def disegna(self):
    raise "Metodo Astratto!"
  def getArea(self):
    raise " Metodo Astratto!"
  def sposta(self, x, y):
    self.x += x
    self.y += y
class Cerchio(FiguraGeometrica):
  def __init__(self, x, y, raggio, colore):
    FiguraGeometrica.__init__(self, x, y, colore)
    self.raggio = raggio
  def disegna(self):
    pass # Esegue il disegno della figura
  def getArea(self):
    return int(pi * self.raggio)
class Rettangolo(FiguraGeometrica):
  def __init__(self, x, y, base, altezza, colore):
    Shape.__init__(self, x, y, colore)
    self.base  = base
    self.altezza = altezza
  def disegna(self):
    pass # Esegue il disegno della figura
  def getArea(self):
    return self.base * self.altezza