Guida programmazione orientata agli oggetti » Torna alla lezione

Esempio di incapsulamento [Javascript]

In Javascript non esiste il concetto di access specifier e le classi vengono definite da funzioni. Tuttavia, una sorta di incapsulamento puņ essere ottenuto tramite l'utilizzo di qualche artificio, come riportato nell'esempio seguente:

function Parallelepipedo()
{
    var lunghezza = 5;
    var altezza = 10;
    var larghezza 4;
    this.SetLunghezza = SetLunghezza;
    this.SetLarghezza = SetLarghezza;
    this.SetAltezza = SetAltezza;
    this.MostraVolume = DisplayVolume;
    function DisplayVolume()
    {
        alert( lunghezza * altezza * larghezza );
    }
    function SetLunghezza(lun)
    {
        lunghezza = lun;
    }
    function SetLarghezza( lar )
    {
        larghezza = lar;
    }
    function SetAltezza( alt )
    {
        altezza = alt;
    }
}
var Parallelepipedo1 = new Parallelepipedo();
var Parallelepipedo2 = new Parallelepipedo();
Parallelepipedo1.SetLarghezza( 10 );
Parallelepipedo1.SetLunghezza( 5 );
Parallelepipedo1.SetAltezza( 6 );
Parallelepipedo2.SetLarghezza( 7 );
Parallelepipedo2.SetLunghezza( 2 );
Parallelepipedo2.SetAltezza( 3 );
Parallelepipedo1.MostraVolume();    // visualizza: 300
Parallelepipedo2.MostraVolume();    // visualizza: 42