Esercitazioni LPS: differenze tra le versioni

Da Bioingegneria Elettronica e Informatica.
(Esercitazione del 2 maggio 2019)
(Esercitazione del 2 e 15 maggio 2019)
Riga 6: Riga 6:
  
  
// la programamzione ad oggetti supporta //
+
// la programmazione ad oggetti supporta //
 
// l'incapsulamento
 
// l'incapsulamento
 
// il polimorfismo
 
// il polimorfismo
Riga 50: Riga 50:
 
void leggiIDS();
 
void leggiIDS();
 
void stampaIPDS();
 
void stampaIPDS();
 +
studente();
 +
        ~studente();
 
};
 
};
  
Riga 77: Riga 79:
 
}
 
}
  
 +
studente::studente()
 +
{
 +
        cout << "Studente costruito " << endl;
 +
IDS = 0;
 +
}
 +
 +
studente::~studente()
 +
{
 +
        cout << "Studente distrutto " << endl;
 +
}
 
void studente::leggiIDS()
 
void studente::leggiIDS()
 
{
 
{
Riga 89: Riga 101:
 
int main()
 
int main()
 
{
 
{
persona P, Q;
+
persona P, Q(3);
studente S;
+
studente S; // verifica della chiamata del costruttore di persona senza parametri
 
// P.IDP=2; errore cannot access private member
 
// P.IDP=2; errore cannot access private member
 
P.stampaIDP();
 
P.stampaIDP();
 
P.leggiIDP();
 
P.leggiIDP();
 
P.stampaIDP();
 
P.stampaIDP();
 
+
        Q.stampaIDP();
 
Q.leggiIDP(2);
 
Q.leggiIDP(2);
 
Q.stampaIDP();
 
Q.stampaIDP();

Versione delle 22:01, 15 mag 2019


Esercitazione del 2 e 15 maggio 2019

  1. // questo è un commento a linea singola in puro stile C++
  2.  
  3.  
  4. // la programmazione 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. 	studente();
  49.         ~studente();
  50. };
  51.  
  52. void persona::leggiIDP()
  53. {
  54.         cin >> IDP;
  55. }
  56. void persona::leggiIDP(int A)
  57. {
  58. 	IDP = A;
  59. }
  60. void persona::stampaIDP()
  61. {
  62. 	cout << IDP << endl;
  63. 	// endl per andare a capo
  64. }
  65.  
  66. persona::persona()
  67. {
  68.         cout << "Persona costruita " << endl;
  69. 	IDP = 0;
  70. }
  71.  
  72. persona::~persona()
  73. {
  74.         cout << "Persona distrutta " << endl;
  75. }
  76.  
  77. studente::studente()
  78. {
  79.         cout << "Studente costruito " << endl;
  80. 	IDS = 0;
  81. }
  82.  
  83. studente::~studente()
  84. {
  85.         cout << "Studente distrutto " << endl;
  86. }
  87. void studente::leggiIDS()
  88. {
  89. 	cin >> IDS;
  90. }
  91.  
  92. void studente::stampaIPDS()
  93. {
  94. 	cout << "Identificativo studente pari a " << IDS << endl;
  95. }
  96.  
  97. int main()
  98. {
  99. 	persona P, Q(3);
  100. 	studente S; // verifica della chiamata del costruttore di persona senza parametri
  101. 	// P.IDP=2; errore cannot access private member
  102. 	P.stampaIDP();
  103. 	P.leggiIDP();
  104. 	P.stampaIDP();
  105.         Q.stampaIDP();
  106. 	Q.leggiIDP(2);
  107. 	Q.stampaIDP();
  108.  
  109. 	S.leggiIDP();
  110. 	S.stampaIDP();
  111. 	S.leggiIDS();
  112. 	S.stampaIPDS();
  113.  
  114. 	// Decommentare su visual studio
  115. 	// system("pause");
  116. 	return 0;
  117. }