Guida programmazione orientata agli oggetti Torna alla lezione

Esempio di astrazione [Javascript]

In Javascript il concetto di astrazione dei dati e di classi astratte è abbastanza vago. Tuttavia, rifacendoci all'esempio visto per il Python, è possibile immaginare una sorta di classe astratta (che abbia, ad esempio, dei metodi astratti) scatenando un'eccezione ogni volta che si provi ad invocare un metodo appartenente alla classe che si vuole definire, appunto, astratta:

Riprendendo ancora l'esempio inerente l'eredità tra classi, potremmo scatenare un'eccezione laddove venisse invocato direttamente il metodo Disegna() della classe FiguraGeometrica.

FiguraGeometrica.prototype.GetArea = FiguraGeometrica_GetArea;
FiguraGeometrica.prototype.Disegna = FiguraGeometrica_Disegna;
function FiguraGeometrica()
{
}
function FiguraGeometrica_GetArea()
{
    return this.area;
}
function FiguraGeometrica_Disegna()
{
    throw "Metodo Astratto";
}
Cerchio.prototype = new FiguraGeometrica();
Cerchio.prototype.constructor = Cerchio;
Cerchio.prototype.baseClass = FiguraGeometrica.prototype.constructor;
Cerchio.prototype.Disegna = Cerchio_Disegna;
function Cerchio(r)
{
    this.area = Math.PI * r * r;
}
function Cerchio_Disegna()
{
    alert("Metodo Disegna della classe Cerchio");
}
Rettangolo.prototype = new FiguraGeometrica();
Rettangolo.prototype.constructor = Rettangolo;
Rettangolo.prototype.baseClass = FiguraGeometrica.prototype.constructor;
Rettangolo.prototype.Disegna = Rettangolo_Disegna;
function Rettangolo(x, y)
{
    this.area = x * y;
}
function Rettangolo_Disegna()
{
    alert("Metodo Disegna della classe Rettangolo");
}