Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cstdlib>
- using namespace std;
- //enumerazione seme
- enum Seme{
- cuori = 0,
- quadri = 1,
- fiori = 2,
- picche = 3,
- };
- //enumerazione per i valori
- enum Valori{
- Asso = 1,
- Fante = 11,
- Donna = 12,
- Re = 13,
- };
- // ora creiamo una classe carta, sarà una carta generica
- class Carta{
- // per ora useremo una classe pubblica, accessibile da tutto il programma
- // in seguito spiegeremo il concetto di pubblica/privata
- public:
- // per inizializare la classe carta il programmatore può definire una funzione
- // di inizializzazione
- // la funzione di inizializzazione ha lo stesso nome della classe
- // e definiamo che prenda come valore i due interi seme e valore
- // chiamati input valore (ivalore) e input seme (iseme)
- Carta(int ivalore, int iseme){
- // i valori sono passati all'interno della funzione e assegnati agli
- // attributi della classe
- this->seme = iseme;
- this->valore = ivalore;
- }
- // i metodi sono funzioni all'interno della classe carta
- // possono essere richiamati usando carta.mio_metodo()
- // definiamo la stessa funzione di prima, ma ora non prenderà nessun
- // argomento, dato che il valore e il seme, sono all'interno della
- // classe stessa
- string stampa_carta(){
- string nome_seme; // dichiarazione variabile seme
- // switch per determinare il seme
- switch(seme){
- case 0:
- nome_seme = "cuori";
- break;
- case 1:
- nome_seme = "quadri";
- break;
- case 2:
- nome_seme = "fiori";
- break;
- case 3:
- nome_seme = "picche";
- break;
- default:
- nome_seme = "seme non definito";
- }
- // valore della carta
- string nome_valore; // dichiarazione della variabile nome_valore
- switch(valore){
- case 1:
- nome_valore = "Asso";
- break;
- case 11:
- nome_valore = "Fante";
- break;
- case 12:
- nome_valore = "Donna";
- break;
- case 13:
- nome_valore = "Re";
- break;
- default:
- char buffer[33];
- itoa(valore, buffer, 10);
- nome_valore = buffer;
- }
- // costruiamo ora per intero il nome della carta
- string nome_carta = nome_valore + " di " + nome_seme;
- return nome_carta;
- }
- // la classe carta avrà due attributi, appunto il valore e il seme.
- int valore; // dichiarazione senza inizializzazione del valore
- int seme; // dichiarazione senza inizializzazione del seme
- };
- // Lezione 6 - Classi
- int main()
- {
- // Le classi sono astrazioni di oggetti reali.
- // Sono delle strutture dati che aiutano il programmatore a gestire
- // le variabili.
- // ora abbiamo come tipo di base la carta
- // la carta è costituita da un valore (da 1 a 13) e da un seme (da 1 a 4)
- // dopo aver definito la classe carta possiamo ora istanziare (rendere reale
- // l'astrazione che abbiamo definito sopra)
- Carta mia_carta = Carta(Asso, cuori);
- // ora la_mia_carta conterrà i valori Asso (1 definito nella enum) e cuori
- // (0 definito nella enum)
- // per accedere agli attributi si usa il "." la mia_carta.valore mi darà 1
- // mia_carta.seme mi darà 0
- cout << "Valore della mia_carta: " << mia_carta.valore << " Seme della mia_carta: " << mia_carta.seme << endl;
- // ora però il bello delle classi è che possiamo non solo attribuire valori
- // ma possiamo anche aggiungere metodi.
- // dopo aver aggiunto il metodo ora possiamo fare
- cout << "La mia_carta: " << mia_carta.stampa_carta() << endl;
- cout << "------Il mazzo------" << endl;
- // il nostro programma per generare tutte le carte in un mazzo da
- // 52 carte
- int seme = 0;// dichiariamo una variabile seme
- while(seme <= 3){ // fino a che seme sara minore uguale a tre
- int valore = 1; // dichiarazione e assegnazione del valore iniziale
- while(valore <= 13){ // fino a che la variabile valore non è 13, esegui le istruzioni
- // ora possiamo effettivamente creare e stampare le carte direttamente
- // usando la classe
- Carta carta = Carta(valore, seme);
- cout << carta.stampa_carta() << endl;
- ++valore; // incrementa il valore
- }
- ++seme; // incrementa il seme
- }
- return 0;
- }
- /* OUTPUT
- Valore della mia_carta: 1 Seme della mia_carta: 0
- La mia_carta: Asso di cuori
- ------Il mazzo------
- Asso di cuori
- 2 di cuori
- 3 di cuori
- 4 di cuori
- 5 di cuori
- 6 di cuori
- 7 di cuori
- 8 di cuori
- 9 di cuori
- 10 di cuori
- Fante di cuori
- Donna di cuori
- Re di cuori
- Asso di quadri
- 2 di quadri
- 3 di quadri
- 4 di quadri
- 5 di quadri
- 6 di quadri
- 7 di quadri
- 8 di quadri
- 9 di quadri
- 10 di quadri
- Fante di quadri
- Donna di quadri
- Re di quadri
- Asso di fiori
- 2 di fiori
- 3 di fiori
- 4 di fiori
- 5 di fiori
- 6 di fiori
- 7 di fiori
- 8 di fiori
- 9 di fiori
- 10 di fiori
- Fante di fiori
- Donna di fiori
- Re di fiori
- Asso di picche
- 2 di picche
- 3 di picche
- 4 di picche
- 5 di picche
- 6 di picche
- 7 di picche
- 8 di picche
- 9 di picche
- 10 di picche
- Fante di picche
- Donna di picche
- Re di picche
- */
Advertisement
Add Comment
Please, Sign In to add comment