Esercitazioni LPS: differenze tra le versioni

Da Bioingegneria Elettronica e Informatica.
(Esercitazione del 2 maggio 2019)
(Esercitazione del 2 e del 15 maggio 2019)
Riga 40: Riga 40:
 
// segue la funzione costruttore, omonima della classe, e nella cui dichiarazione non si specifica il valore restituito
 
// segue la funzione costruttore, omonima della classe, e nella cui dichiarazione non si specifica il valore restituito
 
persona();
 
persona();
 +
// segue la funzione distruttore, omonima della classe ma preceduta dal TILDE, e nella cui dichiarazione non si specifica il valore restituito
 +
        ~persona();
 
};
 
};
  
Riga 52: Riga 54:
 
void persona::leggiIDP()
 
void persona::leggiIDP()
 
{
 
{
cin >> IDP;
+
        cin >> IDP;
 
}
 
}
 
void persona::leggiIDP(int A)
 
void persona::leggiIDP(int A)
Riga 66: Riga 68:
 
persona::persona()
 
persona::persona()
 
{
 
{
 +
        cout << "Persona costruita " << endl;
 
IDP = 0;
 
IDP = 0;
 +
}
 +
 +
persona::~persona()
 +
{
 +
        cout << "Persona distrutta " << endl;
 
}
 
}
  

Versione delle 21:55, 15 mag 2019


Esercitazione del 2 maggio 2019

  1. // questo è un commento a linea singola in puro stile C++
  2.  
  3.  
  4. // la programamzione ad oggetti supporta //
  5. // l'incapsulamento
  6. // il polimorfismo
  7. // l'ereditarietà 
  8.  
  9. // esempio di incapsulamento: dati e funzioni in un oggetto
  10. // esempio di polimorfismo a compile time: overloading di funzioni
  11. // esempio di ereditarietà: classe persona e classe studente
  12. // esempio di costruttore per inizializzare variabili a valori di default
  13.  
  14.  
  15. // un oggetto è una istanza di una classe
  16.  
  17. // include la necessaria intestazione <iostream>
  18. #include <iostream>
  19.  
  20. // l'istruzione using informa il compilatore che intende utilizzare il namespace standard
  21. using namespace std;
  22. // i namespace creano delle regioni di dichiarazione
  23. // nel namespace standard viene dichiarata l'intera libreria standard del C++
  24.  
  25. // Creazione della classe persona
  26. // una classe può contenere attributi (variabili) e metodi (funzioni) privati, protetti e pubblici
  27. // per ora prevediamo soltanto attributi privati e metodi pubblici
  28. class persona {
  29. private: //private è pleonastico (si può omettere)
  30. 	int IDP;
  31. 	// IDP in quanto variabile privata non risulta visibile da funzioni che non siano metodi della classe persona
  32. public:
  33. 	void leggiIDP();
  34. 	void leggiIDP(int);
  35. 	void stampaIDP();
  36. // segue la funzione costruttore, omonima della classe, e nella cui dichiarazione non si specifica il valore restituito
  37. 	persona();
  38. // segue la funzione distruttore, omonima della classe ma preceduta dal TILDE, e nella cui dichiarazione non si specifica il valore restituito
  39.         ~persona();
  40. };
  41.  
  42. class studente : public persona {
  43. private:
  44. 	int IDS;
  45. public:
  46. 	void leggiIDS();
  47. 	void stampaIPDS();
  48. };
  49.  
  50. void persona::leggiIDP()
  51. {
  52.         cin >> IDP;
  53. }
  54. void persona::leggiIDP(int A)
  55. {
  56. 	IDP = A;
  57. }
  58. void persona::stampaIDP()
  59. {
  60. 	cout << IDP << endl;
  61. 	// endl per andare a capo
  62. }
  63.  
  64. persona::persona()
  65. {
  66.         cout << "Persona costruita " << endl;
  67. 	IDP = 0;
  68. }
  69.  
  70. persona::~persona()
  71. {
  72.         cout << "Persona distrutta " << endl;
  73. }
  74.  
  75. void studente::leggiIDS()
  76. {
  77. 	cin >> IDS;
  78. }
  79.  
  80. void studente::stampaIPDS()
  81. {
  82. 	cout << "Identificativo studente pari a " << IDS << endl;
  83. }
  84.  
  85. int main()
  86. {
  87. 	persona P, Q;
  88. 	studente S;
  89. 	// P.IDP=2; errore cannot access private member
  90. 	P.stampaIDP();
  91. 	P.leggiIDP();
  92. 	P.stampaIDP();
  93.  
  94. 	Q.leggiIDP(2);
  95. 	Q.stampaIDP();
  96.  
  97. 	S.leggiIDP();
  98. 	S.stampaIDP();
  99. 	S.leggiIDS();
  100. 	S.stampaIPDS();
  101.  
  102. 	// Decommentare su visual studio
  103. 	// system("pause");
  104. 	return 0;
  105. }