Newsgroup: it.comp.lang.c++
Titolo: Saluti ed un quesito

Ciao a tutti, sono un nuovo frequentatore di questo Newsgroup e spero che la
mia permamenza qui sarà profiqua tanto per me (sicuramente) quanto per voi
(un po' meno sicuramente ^__^).
Volevo proporre, già che c'ero, un quesito stilistico ai programmatori +
paranoici e "precisini" fra di voi.
Supponiamo che io stia realizzando, in C++, un programma Win32 provvisto di
una GUI composta da una singola finestra dalla quale, saltuariamente,
saltano fuori dei dialog.
Il mio cruccio è: dato che non esisterà mai + d'una istanza di questa
finestra per processo, pensate sia necessario incapsulare funzioni e
variabili in una classe (alcune delle quali dovrei comunque dichiarare
static) oppure sia stilisticamente più corretto/gradevole utilizzare le
normali funzioni stile C?
--
-=| Nuitari, Britannia Kingdom's Administrator |=-
-=| 
http://www.britanniakingdom.com
 |=-

 normali funzioni stile C?
Perché ti vuoi incasinare la vita? Non capisco perché dovresti usare una
classe(cioè, proprio non ti capisco: che c'entra col fatto che non esistera
mai +...? Se pensi al pattern Singleton siamo messi male, il programma non
creerà mai + di una finestra e stop). Tra l'altro non è detto che le
funzioni membro di una classe abbiano puntatori identici a funzioni normali,
parlo soprattutto per il callback; usando membri statici forse risolveresti
il problema(dato che si tratta proprio del fatto che i membri d'istanza
hanno in + il parametro invisibile this). In ogni caso creare classi ha
senso se e solo se il programma richiede un design(ovvero è abbastanza lungo
o lo diventerà), questo design è stato fatto e prevede l'uso di classi.
Chiaro? Ciao
--
Paolo Giarrusso
Per rispondere togliere solo "TOGLIMI" dall'indirizzo, non _spam.

 normali funzioni stile C?
Ciao, se ti rispondessi sullo specifico diventerei OT, dato che il C++ non
c'entra niente con Windows, tanto più che le API di Windows non sono scritte
in C++ !! (Escludendo i framework commerciali, vedi MFC che con questo NG
centrano ancora meno!).
Poniamo la questione in generale... L'impalcatura di qualsiasi programma con
delle classi, es
class Application {
    public:
    Application();
    int Run();
   // tutto quello che vuoi!!
};
dove l'entry point del programma (il main) istanzia una classe
Application...
Forse è solo una questione di stile... anchè perché ho potuto constatare che
con il C++ è tutt'altro che immediato districarsi tra classi e callback che
non sono funzioni membro (al massimo sono static).
Ma io quando posso (e se mi fa comodo) creo sempre delle classi, secondo me
il listato diventa più leggibile e meglio strutturato però probabilmente è
un'opinione.
Poi, è chiaro che dipende molto da come sono definite le classi, alcune
implementazioni ti possono poi semplificare la vita, magari perché
generalizzano casi che poi derivando le classi aggiungi nuove funzionalità
in altri casi invece è più la fatica del gusto...
Penso che una risposta non ci sia...
Secondo me è più che altro una questione d'ordine mentale di chi programma,
se devi fare una classe tanto per farla te lo sconsiglio, se invece trovi il
modo per renderla flessibile e potente (quindi magari riusabile anche per
altri progetti) allora hai quasi fatto un framework, e non è poco!!
Se t'interessa (e mi mandi un'email) ti mando privatamente l'indirizzo della
mia home page (non lo rendo pubblico perché forse non interessa, io mi
reputo un dilettante e quì tutti sono più bravi di me anche se un giorno
vorrei avvicinarmi al loro livello, ma soprattutto perché lo sto ancora
costruendo e quindi è pieno di buchi, poi lo pubblicherò) dato che sto
(sempre per diletto) scrivendo un framework in C++ che faciliti (per me,
almeno) la scrittura di programmi per Win32 SDK, e ho dovuto combattere
proprio con questi "impicci", dato che non è un prodotto commerciale, ma
solo un hobby per me, se t'interessa vai a fare un giro...
Ciao,
Paolo Ferraresi.

Uhm beh il punto è che alcuni consigliano d'usare sempre le classi perchè le
possibilità che un oggetto venga distrutto senza che venga eseguito anche il
distruttore sono minime (oltre al discorso che i dati sono protetti e
raggruppati) il che in genere permette di effettuare le funzioni di chiusura
in tutta tranquillità.
Io onestamente preferisco le SEH per assicurarmi una cosa del genere..
