JavascriptProva

sabato 12 maggio 2012

Incapsuliamo

Che cosa si intende per incapsulamento nella programmazione a oggetti?

Ecco, è esattamente quello che ricordavo: ossia il rendere invisibili all'esterno alcuni membri, lasciandone visibili solo alcuni, prevalentemente di tipo funzione, in modo da operare sull'oggetto che istanzia la classe tenendo le fila di questi metodi che hanno accesso ai membri invisibili all'esterno.

Ho trovato il termine di modello black box, che è descrivibile in base a "come reagisce" ma i cui ingranaggi interni non sono visibili.
Questo dovrebbe essere un principio fondamentale nella programmazione a oggetti, da ottenere mediante l'incapsulamento.
Per la classe Rettangolo abbiamo i membri dato base e altezza che sono, fin qui, stati visibili all'esterno in quanto compresi sotto lo specificatore di accesso public.
Rendendoli privati, e lasciando pubblici soltanto i metodi che su di essi agiscono, li incapsuliamo: ci basta, dall'esterno, muovere le giuste leve e queste agiranno sui membri dato interni e ci daranno il risultato.

Incapsuliamo:
#include<stdio.h>
class Rettangolo{
 int base, altezza;
public: 
 void setValues(int b, int a);
 int area();
} MioRettangolo;


void Rettangolo::setValues(int b, int a){
 base=b;
 altezza=a;
}
int Rettangolo::area(){
 return(base*altezza);
}
void main(){
 MioRettangolo.setValues(3,5);
 printf("%u",MioRettangolo.area());
 getc(stdin);
}
Ecco: ho marcato anche lo specificatore di accesso public in modo da evidenziare che i membri dato base e altezza sono precedenti ad esso, senza alcuno specificatore, il che significa che essi sono privati (la condizione di default dei membri di una classe quando non preceduti da nessuno specificatore esplicito). Agendo sui membri funzione setValues e area si opera sui dati "segreti" dell'oggetto che istanzia la classe e si mostra a video il risultato. Essi sono vere e proprie "leve" accessibili dall'esterno per operare sui meccanismi interni all'oggetto.

Nessun commento:

Posta un commento