Pella86

Lezione 6 - le classi

Oct 9th, 2017
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.48 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4.  
  5. using namespace std;
  6.  
  7. //enumerazione seme
  8. enum Seme{
  9.     cuori = 0,
  10.     quadri = 1,
  11.     fiori = 2,
  12.     picche = 3,
  13. };
  14.  
  15. //enumerazione per i valori
  16. enum Valori{
  17.     Asso = 1,
  18.     Fante = 11,
  19.     Donna = 12,
  20.     Re = 13,
  21. };
  22.  
  23.  
  24. // ora creiamo una classe carta, sarà una carta generica
  25. class Carta{
  26. // per ora useremo una classe pubblica, accessibile da tutto il programma
  27. // in seguito spiegeremo il concetto di pubblica/privata
  28. public:
  29. // per inizializare la classe carta il programmatore può definire una funzione
  30. // di inizializzazione
  31.  
  32. // la funzione di inizializzazione ha lo stesso nome della classe
  33. // e definiamo che prenda come valore i due interi seme e valore
  34. // chiamati input valore (ivalore) e input seme (iseme)
  35.     Carta(int ivalore, int iseme){
  36.         // i valori sono passati all'interno della funzione e assegnati agli
  37.         // attributi della classe
  38.         this->seme = iseme;
  39.         this->valore = ivalore;
  40.     }
  41.  
  42.     // i metodi sono funzioni all'interno della classe carta
  43.     // possono essere richiamati usando carta.mio_metodo()
  44.  
  45.     // definiamo la stessa funzione di prima, ma ora non prenderà nessun
  46.     // argomento, dato che il valore e il seme, sono all'interno della
  47.     // classe stessa
  48.     string stampa_carta(){
  49.         string nome_seme; // dichiarazione variabile seme
  50.  
  51.         // switch per determinare il seme
  52.         switch(seme){
  53.             case 0:
  54.                 nome_seme = "cuori";
  55.                 break;
  56.             case 1:
  57.                 nome_seme = "quadri";
  58.                 break;
  59.             case 2:
  60.                 nome_seme = "fiori";
  61.                 break;
  62.             case 3:
  63.                 nome_seme = "picche";
  64.                 break;
  65.             default:
  66.                 nome_seme = "seme non definito";
  67.         }
  68.  
  69.         // valore della carta
  70.  
  71.         string nome_valore; // dichiarazione della variabile nome_valore
  72.  
  73.         switch(valore){
  74.             case 1:
  75.                 nome_valore = "Asso";
  76.                 break;
  77.             case 11:
  78.                 nome_valore = "Fante";
  79.                 break;
  80.             case 12:
  81.                 nome_valore = "Donna";
  82.                 break;
  83.             case 13:
  84.                 nome_valore = "Re";
  85.                 break;
  86.             default:
  87.                 char buffer[33];
  88.                 itoa(valore, buffer, 10);
  89.                 nome_valore = buffer;
  90.         }
  91.  
  92.         // costruiamo ora per intero il nome della carta
  93.         string nome_carta = nome_valore + " di " + nome_seme;
  94.         return nome_carta;
  95.     }
  96.  
  97.  
  98.  
  99. // la classe carta avrà due attributi, appunto il valore e il seme.
  100.     int valore; // dichiarazione senza inizializzazione del valore
  101.     int seme; // dichiarazione senza inizializzazione del seme
  102. };
  103.  
  104.  
  105.  
  106.  
  107. // Lezione 6 - Classi
  108. int main()
  109. {
  110.     // Le classi sono astrazioni di oggetti reali.
  111.     // Sono delle strutture dati che aiutano il programmatore a gestire
  112.     // le variabili.
  113.     // ora abbiamo come tipo di base la carta
  114.     // la carta è costituita da un valore (da 1 a 13) e da un seme (da 1 a 4)
  115.  
  116.  
  117.     // dopo aver definito la classe carta possiamo ora istanziare (rendere reale
  118.     // l'astrazione che abbiamo definito sopra)
  119.  
  120.     Carta mia_carta = Carta(Asso, cuori);
  121.  
  122.     // ora la_mia_carta conterrà i valori Asso (1 definito nella enum) e cuori
  123.     // (0 definito nella enum)
  124.  
  125.     // per accedere agli attributi si usa il "." la mia_carta.valore mi darà 1
  126.     // mia_carta.seme mi darà 0
  127.  
  128.     cout << "Valore della mia_carta: " << mia_carta.valore << " Seme della mia_carta: " << mia_carta.seme << endl;
  129.  
  130.     // ora però il bello delle classi è che possiamo non solo attribuire valori
  131.     // ma possiamo anche aggiungere metodi.
  132.  
  133.  
  134.     // dopo aver aggiunto il metodo ora possiamo fare
  135.  
  136.     cout << "La mia_carta: " << mia_carta.stampa_carta() << endl;
  137.  
  138.  
  139.     cout << "------Il mazzo------" << endl;
  140.     // il nostro programma per generare tutte le carte in un mazzo da
  141.     // 52 carte
  142.  
  143.     int seme = 0;// dichiariamo una variabile seme
  144.     while(seme <= 3){ // fino a che seme sara minore uguale a tre
  145.  
  146.         int valore = 1; // dichiarazione e assegnazione del valore iniziale
  147.         while(valore <= 13){ // fino a che la variabile valore non è 13, esegui le istruzioni
  148.             // ora possiamo effettivamente creare e stampare le carte direttamente
  149.             // usando la classe
  150.  
  151.             Carta carta = Carta(valore, seme);
  152.  
  153.             cout << carta.stampa_carta() << endl;
  154.  
  155.             ++valore; // incrementa il valore
  156.         }
  157.         ++seme; // incrementa il seme
  158.     }
  159.  
  160.  
  161.     return 0;
  162. }
  163.  
  164.  
  165.  
  166.  
  167.  
  168. /* OUTPUT
  169. Valore della mia_carta: 1 Seme della mia_carta: 0
  170. La mia_carta: Asso di cuori
  171. ------Il mazzo------
  172. Asso di cuori
  173. 2 di cuori
  174. 3 di cuori
  175. 4 di cuori
  176. 5 di cuori
  177. 6 di cuori
  178. 7 di cuori
  179. 8 di cuori
  180. 9 di cuori
  181. 10 di cuori
  182. Fante di cuori
  183. Donna di cuori
  184. Re di cuori
  185. Asso di quadri
  186. 2 di quadri
  187. 3 di quadri
  188. 4 di quadri
  189. 5 di quadri
  190. 6 di quadri
  191. 7 di quadri
  192. 8 di quadri
  193. 9 di quadri
  194. 10 di quadri
  195. Fante di quadri
  196. Donna di quadri
  197. Re di quadri
  198. Asso di fiori
  199. 2 di fiori
  200. 3 di fiori
  201. 4 di fiori
  202. 5 di fiori
  203. 6 di fiori
  204. 7 di fiori
  205. 8 di fiori
  206. 9 di fiori
  207. 10 di fiori
  208. Fante di fiori
  209. Donna di fiori
  210. Re di fiori
  211. Asso di picche
  212. 2 di picche
  213. 3 di picche
  214. 4 di picche
  215. 5 di picche
  216. 6 di picche
  217. 7 di picche
  218. 8 di picche
  219. 9 di picche
  220. 10 di picche
  221. Fante di picche
  222. Donna di picche
  223. Re di picche
  224. */
Advertisement
Add Comment
Please, Sign In to add comment