Qualche consiglio su sviluppo programmi in C++...

di il
5 risposte

Qualche consiglio su sviluppo programmi in C++...

Ciao a tutti, come ho già scritto su altri post, sono in fase di studio del C++.
Mi sono letto un paio di libri e varia documentazione ed ora ho sviluppato il primo programma in C++ ma ovviamente facendo esperienza diretta ci si accorge che alcune cose potevo farle anche in maniera diversa e quindi mi sono sorti un po' di dubbi nonchè domande da porre ai più esperti.
Ecco la lista delle domande:

1. Nel programma che ho fatto, ho scritto diverse classi per compiere diverse azioni e le ho istanziate una per una.
A programma terminato però ho pensato che avrei potuto anche creare una classe che ereditava tutte le altre in modo da istanziare solo questa classe avendo a disposizione i metodi di tutte.
Perchè mi è venuta in mente questa soluzione?
Perchè il risultato di alcuni metodi di una classe mi servivano come argomento da passare ai metodi delle altre classi e invece facendo come sopra avrei potuto gestire tutti i metodi più agevolmente.
Cosa ne pensate di questo approccio? Può essere corretto?

2. Visto quanto sopra, ho voluto fare una prova di ereditarietà ed effettivamente funziona come mi aspettavo.
Ho però un problema nell'ereditare le classi che hanno degli argomenti di inizializzazione.
Dovrò ripassarmi un po' i capitoli sull'ereditarietà, ma nel frattempo mi potete spiegare velocemente come si può fare?

3. Secondo voi, visto il problema riportato al punto 2, conviene creare delle classi con inizializzazione o piuttosto con metodi specifici per passargli una volta istanziata i dovuti dati?

4. Avendo avuto necessità di creare delle funzioni al volo per piccoli compiti, è corretto scrivere un programma misto c/c++ che si appoggia a classi e funzioni classiche?

5. Durante lo sviluppo sono incappato nel problema che per alcune classi avevo utilizzato costanti con lo stesso nome e il compilatore me le ha segnalate come errore.
Nel mio caso ho risolto velocemente perchè avendo scritto io le classi ho cambiato alcuni nomi, ma mi chiedo come si possa risolvere tale problema se dovessi usare due librerie non scritte da me che mi danno lo stesso problema.

Vi prego non maleditemi ho studiato, ma alla fine inizio a capire il senso di molte cose solo perchè ho iniziato a metterle in pratica, prima erano solo concetti astratti che non mi dicevano nulla.
Grazie.

Stefano

5 Risposte

  • Re: Qualche consiglio su sviluppo programmi in C++...

    Punto 2 risolto
  • Re: Qualche consiglio su sviluppo programmi in C++...

    1) Dipende dai singoli casi. In linea generale, però, è consigliabile avere micro oggetti che svolgono compiti precisi invece di avere macro oggetti che fanno un po' di tutto. I singoli micro oggetti poi possono essere impiegati per comporre i macro oggetti.

    3) Dipende dai singoli casi. A volte può essere utile avere dei metodi set(), altre volte è rindondante, altre volte non necessario.

    4) Chiarisci cosa intendi con C/C++ perché vuol dire diverse cose.

    5) Usa i namespace. Sono nati apposta.
  • Re: Qualche consiglio su sviluppo programmi in C++...

    shodan ha scritto:


    1)I singoli micro oggetti poi possono essere impiegati per comporre i macro oggetti.
    Forse non mi sono spiegato bene.
    Io ho dei micro oggetti (le mie classi) ed ogni uno fa un determinato lavoro.
    Quello che volevo capire è se conviene (almeno in alcuni casi) raggrupparli in un macro oggetto.
    Per esempio, piuttosto di avere la classe network, keyboard, utility e elabora, ereditarle tutte avendo una unica classe myApp.
    In questo modo avrei la comodità di avere a disposizione le variabili di tutte le classi senza doverle passare come argomento ai metodi di ogni classe.
    Ovviamente dopo aver ridefinito opportunamente alcuni metodi.
    3) Dipende dai singoli casi. A volte può essere utile avere dei metodi set(), altre volte è rindondante, altre volte non necessario.
    OK, forse qui mi risponderà il tempo e l'esperienza.
    4) Chiarisci cosa intendi con C/C++ perché vuol dire diverse cose.
    Intendo classiche funzioni in stile C miste a classi.
    5) Usa i namespace. Sono nati apposta.
    Ehm, i namespace li sto usando ma la tua risposta mi fa capire che si possono usare in maniera più intelligente.
    Vado ad approfondire

    Grazie.

    Stefano
  • Re: Qualche consiglio su sviluppo programmi in C++...

    1) No. Sarebbe un abuso dell'ereditarietà che porta più problemi che benefici. E comunque avrebbe senso se e solo se la classe derivata è una classe base. Ad esempio (e qui ci vuole un po' per capirlo) un quadrato è una figura geometrica, un rettangolo è una figura geometrica, ma un quadrato non è un rettangolo solo perché entrambi hanno quattro lati.
    Nel tuo caso myApp non è una keyboard o una network o quel che ti pare. myApp avrà queste cose, ma non è queste cose. (concetto "is a", "has a" nell'ereditarietà).

    4) Si, lo si fa spesso.
  • Re: Qualche consiglio su sviluppo programmi in C++...

    Grazie dei chiarimenti.
    Effettivamente il C++ richiede secondo me anche molta esperienza nel campo per capire molte cose che con la sola teoria si faticano a capire.

    S
Devi accedere o registrarti per scrivere nel forum
5 risposte