Estratto del documento

Definizione di una classe in C++

In C++, una classe definisce un tipo di dato personalizzato, specificato dal programmatore. Come tale, la classe identifica l'insieme di valori che il tipo può assumere e le operazioni che possono essere applicate a tali valori.

Componenti di una classe

Una classe contiene pertanto:

  • Dati (detti anche attributi o variabili membro)
  • Funzioni (dette anche metodi o funzioni membro) che manipolano i dati

il tutto contenuto in un'unica entità.

Definizione di una classe

La definizione di una classe è fatta di due parti:

  • Dichiarazione: descrive gli attributi e i metodi della classe. L'insieme degli attributi e dei metodi è anche detto interfaccia della classe.
  • Definizione dei metodi: descrive l'implementazione dei metodi della classe. Tale implementazione si può trovare all'interno della dichiarazione della classe, dopo la dichiarazione stessa o anche in un file separato rispetto a quello che contiene la dichiarazione.

Sintassi per la dichiarazione di una classe

class class_name {
    tipo1 nome_attributo1;
    ...
    tipon nome_attributon;
    tipo1 nome_metodo1 (tipo1 id1, ... , tipo_k1 id_k1);
    ...
    tipo n nome_metodon (tipo n idn, ... , tipo_kn id_kn);

Oggetti

Una variabile del tipo definito dalla classe è detta oggetto. Si dice anche che un oggetto è un'istanza di una classe, ovvero è uno specifico valore nell'insieme di valori che la classe rappresenta (ad esempio, uno specifico punto).

Esempio:

int main() {
    Punto p; // p è un oggetto di classe Punto
    return 0;
}

Accesso ad attributi e metodi

Dato un oggetto, l'accesso ai suoi membri (attributi e metodi) avviene attraverso l'operatore . (come per le strutture):

  • Accesso agli attributi: nome_oggetto.nome_attributo;
  • Chiamata a metodi: nome_oggetto.nome_metodo(parametri attuali);

Gestione degli attributi e metodi

Questo, tuttavia, dà errore perché _x e _y sono attributi privati della classe Punto. Ciò vuol dire che qualunque cosa stia fuori dalla classe (anche int main) non può accedere a quegli attributi.

Per ovviare a questo problema, si aggiunge "public:" prima della dichiarazione di attributi e metodi nella classe.

class Punto {
public:
    double _x;
    double _y;
    void riscala(double f);
};

Sintassi corretta generale

class nome_classe {
public:
    // dichiarazione sezione pubblica
private:
    // dichiarazione sezione privata
}

Oppure:

class nome_classe {
    // dichiarazione sezione pubblica
    private:
    // dichiarazione sezione privata
}

Questo è uno dei punti chiave che differenzia le classi dalle strutture: nelle strutture, tutti gli attributi sono pubblici.

Accesso a puntatori

Di nuovo allo stesso modo delle strutture, l'accesso ai puntatori avviene attraverso l'operatore ->.

Esempio:

Punto* p; // inizializzazione del puntatore...
p->_x = 100;
p->_y = 200;
p->riscala(0.5);

Attributi privati e metodi pubblici

Perché gli attributi vengono messi privati? Solitamente, nella programmazione a oggetti, due sviluppatori contribuiscono alla realizzazione del programma: il primo definisce le classi, il secondo sviluppa il main. Mantenendo gli attributi privati, questi possono essere liberamente modificati dal primo sviluppatore senza che ciò comporti delle modifiche nel main.

Tipologie di metodi

  • Costruttori: sono invocati automaticamente per creare e inizializzare un oggetto.
  • Distruttori: sono invocati automaticamente per distruggere un oggetto.
  • Selettori: accedono agli attributi (privati) di un oggetto e ne restituiscono il valore (il loro nome di solito inizia con get).
  • Modificatori: accedono agli attributi (privati) di un oggetto e ne modificano il valore (il loro nome di solito inizia con set).
  • Operatori: elaborano gli attributi di un oggetto e implementano per la classe gli operatori standard C++.
Anteprima
Vedrai una selezione di 4 pagine su 13
Classi In C++ Pag. 1 Classi In C++ Pag. 2
Anteprima di 4 pagg. su 13.
Scarica il documento per vederlo tutto.
Classi In C++ Pag. 6
Anteprima di 4 pagg. su 13.
Scarica il documento per vederlo tutto.
Classi In C++ Pag. 11
1 su 13
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher vale_condo di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Genova o del prof Mastrogiovanni Fulvio.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community