Ciao a tutti, dopo tanto tempo ho deciso di riprovare a studiare il C++

Premetto che conosco il C e tempo fa ho sviluppato anche dei programmi, poi per motivi di tempo ho abbandonato la programmazione.
Ad oggi mi ritrovo con l'idea di fare due cose:

- togliere la ruggine che si è formata in questi anni di inattività
- riprovare a studiare il C++

Negli anni scorsi avevo provato a studiarlo il C++ almeno un paio di volte, ma effettivamente con un bagaglio di conoscenze e abitudini della programmazione procedurale mi tornava difficile ragionare nei termini che richiede questo linguaggio.

In quest'ultimo periodo mi sono letto un po' di guide e di manuali e oggi dopo tanta teoria mi sono messo a sviluppare un banale programma in C++.
Il programma in questione non fa altro che simulare un conto corrente con le relative operazioni che si possono svolgere.
Volevo un Vostro parere, perchè alcuni dubbi (ovviamente) ci sono...

Questo è il codice:
codice:
 //Main
 #include <iostream>
 #include <stdio.h>
 #include "conto.h"
 

 using namespace std;
 

 void showmenu(void);
 void waitchar(void);
 

 int main()
 {
     int scelta=99;
     float importo;
     
     //Istanzio la classe con saldo=0 tasso interessi =5.1
     conto cc(0, 5.1);
 

     while(scelta!=0)
     {
         showmenu();
         cin >> scelta;
 

         switch(scelta)
         {
             case    0:
                 cout << "\nArrivederci\n\n";
                 break;
 

             case    1:
                 cout << "\nIl saldo attuale è pari a: "<< cc.leggisaldo() << endl;
                 waitchar();
                 break;
 

             case    2:
                 cout << "Importo da versare: ";
                 cin >> importo;
                 cc.versamento(importo);
                 break;
 

             case    3:
                 cout << "Importo da prelevare: ";
                 cin >> importo;
                 if(cc.prelevamento(importo) == false)
                     cout << "Il saldo è inferiore a" << importo;
                 break;
 

             case    4:
                 cout << "Ad oggi gli interessi ammontano a " << cc.calcolainteressi() << " in un saldo di " << cc.leggisaldo()<<endl;
                 cout << "Tasso applicato: " << cc.leggitasso() << endl;
                 waitchar();
                 break;
 

             case    5:
                 cout << "Saldo prima di applicare gli interessi " << cc.leggisaldo() << endl;
                 cc.applicainteressi();
                 cout << "Tasso applicato: " << cc.leggitasso() << "%"<<endl;
                 cout << "Saldo attuale con interessi " << cc.leggisaldo()<<endl;
                 waitchar();
                 break;
 

             default:
                 continue;
 

         }
 

     }
 

     return 0;
 }
 

 

 void showmenu()
 {
     cout << string(50, '\n');
     cout << "1 - Saldo\n";
     cout << "2 - Versamento\n";
     cout << "3 - Prelevamento\n";
     cout << "4 - Calcolo interessi\n";
     cout << "5 - Applica interessi\n";
     cout << "0 - Fine\n\n";
     cout << "? ";
 }
 

 void waitchar()
 {
     char    c;
 

     cout<< "Premere C+INVIO per continuare"<< endl;
     cin >> c;
 }
codice:
 //conto.h

 class conto
 {
     private:
     float saldo;
     float tasso;
 

     public:
     conto(float, float);
     ~conto();
     bool versamento(float importo);
     bool prelevamento(float importo);
     float leggisaldo();
     float leggitasso();
     float calcolainteressi();
     float applicainteressi();
 };
codice:
 //conto.cpp
 #include <iostream>
 #include "conto.h" 

 conto::conto(float _saldo, float _tasso)
 {
     saldo=_saldo;
     tasso=_tasso;
 

     std::cout << "Saldo attuale: " << saldo << "\n";
     std::cout << "Tasso attuale: " << tasso << "\n";
 

 }
 

 conto::~conto()
 {}
 

 

 bool conto::versamento(float importo)
 {
     saldo+=importo;
     return true;
 }
 

 

 bool conto::prelevamento(float importo)
 {
     if (importo <= saldo)
     {
         saldo-=importo;
         return true;
     }
     else return false;
 }
 

 float conto::leggisaldo()
 {
      return saldo;
 }
 

 float conto::leggitasso()
 {
      return tasso;
 }
 

 

 float conto::calcolainteressi()
 {
     return(saldo*tasso/100);
 }
 

 float conto::applicainteressi()
 {
     saldo+=(saldo*tasso/100);
     return(saldo);
 }
Ovviamente ci sono le solite immancabili domande...

- Come ambiente di sviluppo uso codeblocks che in automatico mi ha messo la riga “using namespace std;” che non ho visto in nessuno dei manuali che ho letto.
Che significato ha questa riga?

- Perchè se la variabile "scelta" (in main) la trasformo da int a char il programma non funziona più?
Il programma apparentemente gira, ma sembra che non accetti nessuna scelta.

- Va bene come ho fatto, e cioè mischiare semplici funzioni stile C (showmenu e waitchar) con le classi?

- La logica di sviluppo del programma può andare così? avreste fatto diversamente?

Purtroppo, la difficoltà più grande che trovo nello scrivere programmi in C++ non è la sintassi o la struttura, ma è capire come implementare una classe.

Cioè, leggendo una qualsiasi guida che fa un qualsiasi esempio sembra tutto bello e chiarissimo, ma non appena mi trovo davanti ad una situazione reale da trasformare in C++ mi blocco perchè non so esattamente come sviluppare la classe per una determinata situazione.

Esiste più che un manuale teorico sulla sintassi ecc. una guida che aiuti a capire e ragionare bene in questo senso?

Vi ringrazio per l'attenzione e penso che non sarà l'ultima volta che mi sentirete

Per questo mi scuso già da ora.



Stefano