Organizzare le classi in C++

Pubblicità

Wallcraft

Nuovo Utente
Messaggi
8
Reazioni
0
Punteggio
24
Allora salve ragazzi ho iniziato da poco a programmare in c++, prima programmavo solo in C e il cambio è stato una specie di parto xD. Dopo svariati programmi in C++ il professore ci ha detto, che per avere il programma più pulito dobbiamo creare dei file in modo tale da avere:
Le classi che uso in un file;
Lo sviluppo dei metodi in un altro file
E il main in un altro file.
Mi potreste spiegare come faccio questi file e come li devo chiamare? Uso Dev-C++ come compilatore.
Grazie in anticipo :D
 
Potresti fare così. Definisci la classe in un header file denominato "nomeClasse.h".
Codice:
#ifndef _NOMECLASSE_H
#define _NOMECLASSE_H
class nomeClasse { /*istruzioni*/ };

#endif
Definisci i metodi in un file chiamato "nomeClasse.cpp".
Codice:
#include "nomeClasse.h"

/*definizioni dei metodi*/
Infine, chiami la tua classe nel programma principale.
Codice:
#include "nomeClasse.h"

int main() { /*istruzioni*/ }
 
Potresti fare così. Definisci la classe in un header file denominato "nomeClasse.h".
Codice:
#ifndef _NOMECLASSE_H
#define _NOMECLASSE_H
Attento:
Standard C++ 2003 ha detto:
Certain sets of names and function signatures are always reserved to the implementation:
  • Each name that contains a double underscore (_ _) or begins with an underscore followed by an uppercase letter (2.11) is reserved to the implementation for any use.
  • Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace.165
165) Such names are also reserved in namespace ::std (17.4.3.1).
 
Quindi, proponi questo?
Codice:
#ifndef NOMECLASSE_H
Grazie per la precisazione, comunque. Avevo guardato uno stralcio di codice per rispondere, è da parecchio tempo che non definisco classi.
 
Wait....xD Allora faccio un file.h dove elenco tutte le classi e quello che fanno. Poi faccio un file .cpp dove metto tutti i prototipi delle classi usate ed infine il mio main in un altro file .cpp e poi richiamo il file .h in tutti e 2 i file .cpp?
 
Quindi, proponi questo?
Codice:
#ifndef NOMECLASSE_H
Grazie per la precisazione, comunque. Avevo guardato uno stralcio di codice per rispondere, è da parecchio tempo che non definisco classi.
Figurati; sì ;).

Wait....xD Allora faccio un file.h dove elenco tutte le classi e quello che fanno. Poi faccio un file .cpp dove metto tutti i prototipi delle classi usate ed infine il mio main in un altro file .cpp e poi richiamo il file .h in tutti e 2 i file .cpp?
Non pensare tale operazione come "statica": sta al programmatore dividere ed organizzare i file di definizione(.h) e di implementazione (.cpp).

Se stai definendo una classe al volo o comunque relativamente piccola, puoi benissimo evitare di suddividere implementazione e definizione.

Ex:

Codice:
struct tempo{
  void show()
  {
     // (...)
  }
  
  int anno, mese, giorno;
  
};

class Data
{
public:
       // operazioni varie
  
private:
    tempo t;
  
  
};
 
int main()
{
  
  Data x;
  // ...
    
}

Se la classe Data svolge molteplici compiti e verrà probabilmente riutilizzata allora vale la pena suddividere la sua implementazione e definizione. Invece tempo è una classe molto basilare, pertanto potresti definirla insieme a Data piuttosto che separarla completamente.
Questo meccanismo viene utilizzato anche per separare l'interfaccia(o definizione) con l'implementazione. Ad esempio se stai per utilizzare una classe di terze parti, preferiresti avere un elenco di tutte le funzioni ed un file separato dove vengono implementate (che tipicamente non ti interessa) oppure un tutt'uno?

Per ulteriori info sull'argomento, dai un'occhiata a questo articolo -> ACCU :: Separating Interface and Implementation in C++
 
Pubblicità
Pubblicità
Indietro
Top