C++: librerie del programmatore, namespace, information hiding

Jacek Yerka

Il linguaggio C++ permette al programmatore di definire una propria libreria nella quale inserire blocchi di programma, utilizzabili da più sorgenti.

Essi possono essere inglobati nel listato del programma mediante la parola

#include<nome_del_namespace.h>

Ad esempio si crea il seguente blocco di programma:

namespace Rettangolo{
//dati
int base, altezza;
//funzioni
int Area(int, int);
int Perimetro(int,int);
}

int Rettangolo::Area(int b,int h)
{return b*h;
}

int Rettangolo::Perimetro(int b,int h)
{
return (b+h)*2;
}

si noti la seguente struttura:

  • si ha una parte dati,
  • una parte dichiarativa delle funzioni che verranno usate
  • la definizione delle funzioni stesse che hanno però prima il nome del namespace::

Ecco poi il listato del programma che usa il namespace rettangolo:

#include<iostream>
#include<rettangolo.h>

using namespace std;

int main()
{
cout<<"Base: ";
cin>>Rettangolo::base;
cout<<"Altezza: ";
cin>>Rettangolo::altezza;
cout<<Rettangolo::Area(Rettangolo::base,Rettangolo::altezza)<<endl;
cout<<Rettangolo::Perimetro(Rettangolo::base,Rettangolo::altezza)<<endl;
}

si nota :

#include<rettangolo.h>

che include il namespace o blocco di programma definito in maniera esterna.

Ho creato una libreria in cui ho definito tutti i miei namespace.

Per evitare di dover scrivere ogni volta il riferimento al namespace rettangolo si può usare

using namespace Rettamgolo;

il codice del sorgente diventa:

#include<iostream>
#include<rettangolo.h>

using namespace std;
using namespace Rettangolo;

int main()
{
cout<<"Base: ";
cin>>base;
cout<<"Altezza: ";
cin>>altezza;
cout<<Area(base,altezza)<<endl;
cout<<Perimetro(base,altezza)<<endl;
}

Questo progetto, pur essendo molto semplice, fornisce un'idea dell'importanza del namespace e delle librerie disponibili per il programmatore, il quale può utilizzare, nei suoi programmi dati e funzioni senza conoscere l'effettiva implementazione con il codice C++. In questo modo si realizza l'information hiding (nascondere le informazioni), con i vantaggio di poter modificare, in tempi successivi le funzioni (e in generale le librerie) per renderle più efficienti, senza dover cambiare i programmi che le utilizzano.

Per esempio, il programma precedente, utilizza le variabili base, altezza e le funzioni Area e Perimetro, ma la loro implementazione non è presente nel programma perché è definita nel namespace Rettangolo. In pratica le funzioni rappresentano le interfacce che il programmatore utilizza per effettuare le elaborazioni sul rettangolo.

Il nome del namespace delle principali librerie del linguaggio C++ è std (standard)

Informazioni su Francesco Bragadin

Insegno informatica e telecomunicazioni al liceo scienze applicate ed all'indirizzo informatica e telecomunicazioni. Ho terminato gli studi in ingegneria elettronica e telecomunicazioni lavorando per molti anni come libero professionista nell'ambito della gestione storage e disaster recovery su mainframe.
Questa voce è stata pubblicata in Senza categoria. Contrassegna il permalink.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *