Esercitazioni LPS: differenze tra le versioni
Da Bioingegneria Elettronica e Informatica.
(Creata pagina con "__FORCETOC__ == Esercitazione del 2 maggio 2019 == <syntaxhighlight lang="cpp" line> // questo è un commento a linea singola in puro stile C++ // la programamzione ad ogge...") |
(→Esercitazione del 2 maggio 2019) |
||
Riga 28: | Riga 28: | ||
// Creazione della classe persona | // Creazione della classe persona | ||
− | // una classe può contenere | + | // una classe può contenere attributi (variabili) e metodi (funzioni) privati, protetti e pubblici |
− | // | + | // per ora prevediamo soltanto attributi privati e metodi pubblici |
class persona { | class persona { | ||
private: //private è pleonastico (si può omettere) | private: //private è pleonastico (si può omettere) | ||
int IDP; | int IDP; | ||
− | // IDP in quanto privata non visibile da funzioni non | + | // IDP in quanto variabile privata non risulta visibile da funzioni che non siano metodi della classe persona |
public: | public: | ||
void leggiIDP(); | void leggiIDP(); | ||
void leggiIDP(int); | void leggiIDP(int); | ||
void stampaIDP(); | void stampaIDP(); | ||
+ | // segue la funzione costruttore, omonima della classe, e nella cui dichiarazione non si specifica il valore restituito | ||
persona(); | persona(); | ||
}; | }; |
Versione delle 17:09, 2 mag 2019
Esercitazione del 2 maggio 2019
// questo è un commento a linea singola in puro stile C++
// la programamzione ad oggetti supporta //
// l'incapsulamento
// il polimorfismo
// l'ereditarietà
// esempio di incapsulamento: dati e funzioni in un oggetto
// esempio di polimorfismo a compile time: overloading di funzioni
// esempio di ereditarietà: classe persona e classe studente
// esempio di costruttore per inizializzare variabili a valori di default
// un oggetto è una istanza di una classe
// include la necessaria intestazione <iostream>
#include <iostream>
// l'istruzione using informa il compilatore che intende utilizzare il namespace standard
using namespace std;
// i namespace creano delle regioni di dichiarazione
// nel namespace standard viene dichiarata l'intera libreria standard del C++
// Creazione della classe persona
// una classe può contenere attributi (variabili) e metodi (funzioni) privati, protetti e pubblici
// per ora prevediamo soltanto attributi privati e metodi pubblici
class persona {
private: //private è pleonastico (si può omettere)
int IDP;
// IDP in quanto variabile privata non risulta visibile da funzioni che non siano metodi della classe persona
public:
void leggiIDP();
void leggiIDP(int);
void stampaIDP();
// segue la funzione costruttore, omonima della classe, e nella cui dichiarazione non si specifica il valore restituito
persona();
};
class studente : public persona {
private:
int IDS;
public:
void leggiIDS();
void stampaIPDS();
};
void persona::leggiIDP()
{
cin >> IDP;
}
void persona::leggiIDP(int A)
{
IDP = A;
}
void persona::stampaIDP()
{
cout << IDP << endl;
// endl per andare a capo
}
persona::persona()
{
IDP = 0;
}
void studente::leggiIDS()
{
cin >> IDS;
}
void studente::stampaIPDS()
{
cout << "Identificativo studente pari a " << IDS << endl;
}
int main()
{
persona P, Q;
studente S;
// P.IDP=2; errore cannot access private member
P.stampaIDP();
P.leggiIDP();
P.stampaIDP();
Q.leggiIDP(2);
Q.stampaIDP();
S.leggiIDP();
S.stampaIDP();
S.leggiIDS();
S.stampaIPDS();
// Decommentare su visual studio
// system("pause");
return 0;
}