Il problema è gestire una classe che permetta di calcolare le proprietà geometriche di figure piane, anche composte da più figure, il cui input può essere fatto dall'utente o a partire da quanto memorizzato in un file "dxf".
Per ora ho quindi deciso di implementare separatamente la classe "Sezione" e la classe "Filedxf".
La classe "Sezione" permetterà di gestire la geometria vera e propria e relative elaborazioni, la classe "Filedxf" permetterà di gestire l'interazione col file dxf (lettura, ricerca al suo interno, ecc.).
Tra i vari metodi della classe "Sezione" ce ne sarà quindi uno che permetterà di interagire con l'oggetto di tipo "Filedxf".
La dichiarazione della classe "Sezione" sarà quindi simile a quanto segue:
codice:
class Sezione
{
public:
input_dadxf(Filedxf file);
...
}
codice:
La funzione "input_dadxf" potrebbe essere più o meno così, dovendo scegliere il file, leggerlo e memorizzarlo per poi effettuare le operazioni del caso
codice:
Sezione::input_dadxf(Filedxf file)
{
file.sceglifile();//scelta del file da aprire
file.leggifile();//apre e memorizza il file in un vettore di string
...//altre operazioni
}
Nel caso di figura composta da un'unica sezione, avrei potuto in alternativa includere l'oggetto "Filedxf" tra i membri protected di "Sezione": in questo modo la funzione "input_dadxf"
sarebbe:
codice:
Sezione::input_dadxf()
{
file.sceglifile();//scelta del file da aprire
file.leggifile();//apre e memorizza il file in un vettore di string
...//altre operazioni
}
Ho scartato questa possibilità perchè, per gestire il caso di figure composte da più sezioni, creerò l'oggetto "Sezionemultipla", in cui uno dei suoi membri sarà un vettore costituito da elementi di tipo "Sezione", direi una cosa del genere
codice:
class Sezionemultipla
{
public:
...
input_dadxf(Filedxf file);
...
protected:
...
vector<Sezione> vettore_sezioni;
...
}
e la funzione "input_dadxf" sarà simile nella parte iniziale (scelta e lettura del file) a quella precedente, mentre le differenze saranno nella fase successiva.
Così facendo rendo meno "pesante" (memoria e prestazioni) l'oggetto "Sezionemultipla" o sbaglio?

Cosa ne pensate, ammesso di essermi spiegato?