Sunteți pe pagina 1din 3

Η γλώσσα C++ σε βάθος Νίκος Μ.

Χατζηγιαννάκης

Ασκήσεις Κεφαλαίου 13

13.1 Να γραφεί πρόγραµµα το οποίο να δηµιουργεί µία κλάση µε όνοµα biblio. Η


κλάση προορίζεται για τη δηµιουργία αντικειµένων-βιβλίων. Για κάθε βιβλίο
θα καταχωρούµε τον τίτλο, τον αριθµό σελίδων του, και την τιµή του. Το
πρόγραµµα θα πρέπει να υλοποιεί τα παρακάτω: 
¾ Η τιµή του βιβλίου θα είναι ιδιωτική, όλα τα υπόλοιπα δηµόσια.
¾ Η συνάρτηση δόµησης θα θέτει αριθµό σελίδων 0, τιµή 0 και κενό τίτλο.
¾ ∆ηµιουργία αντικειµένου µε ένα όρισµα θα θέτει σαν τίτλο του βιβλίου
την τιµή του ορίσµατος.
¾ ∆ηµιουργία αντικειµένου µε δύο ορίσµατα θα θέτει σαν τίτλο του βιβλίου
την τιµή του πρώτου ορίσµατος και σαν τιµή του βιβλίου την τιµή του
δευτέρου ορίσµατος.
¾ Να υπάρχει συνάρτηση-µέλος που να εµφανίζει όλα τα στοιχεία του βι-
βλίου.
¾ Να δηµιουργεί τρία αντικείµενα-βιβλία, µε ξεχωριστό τρόπο το καθένα,
να θέτει και στα τρία αριθµό σελίδων 100 και στο τέλος να εµφανίζει όλα
τους τα στοιχεία.

#include <iostream>
using namespace std;

class biblio Ιδιωτικό µέλος της τάξης biblio.


{
float timi;
∆ηµόσια µέλη της κλάσης biblio.
public:
int selides;
char titlos[30]; Η τάξη biblio διαθέτει τη συνάρτηση δόµησης
biblio(); biblio() υπερφορτωµένη τρεις φορές ανάλογα
µε το πλήθος των παραµέτρων.
biblio(char title[]);
biblio(char title[],int t);
void info();
}; Η συνάρτηση-µέλος info() εµφανίζει στην
οθόνη τα στοιχεία του αντικειµένου-βιβλίο.
void biblio::info()
{
cout <<"----------------------"<<endl;
cout << titlos << endl;
cout << "Σελίδες :"<< selides << endl;
cout << "Ποσό :"<< timi << endl;
}

74
Η γλώσσα C++ σε βάθος Απαντήσεις ασκήσεων βιβλίου

biblio::biblio()
{ Αυτή η έκδοση της συνάρτησης δόµησης
καλείται όταν δηµιουργείται ένα αντικείµενο
strcpy(titlos,""); χωρίς παραµέτρους. Καταχωρεί αρχικές τιµές
timi = 0; στις µεταβλητές-µέλη του αντικειµένου, κενό
για τον τίτλο και 0 για τις δύο υπόλοιπες.
selides=0;
}

Αυτή η έκδοση της συνάρτησης δόµησης


biblio::biblio(char title[]) καλείται όταν δηµιουργείται ένα αντικείµενο
µε µία παράµετρο. Καταχωρεί την παράµετρο
{ στο µέλος titlos του αντικειµένου.
strcpy(titlos,title);
timi = 0;
selides=0;
}

biblio::biblio(char title[],int t)
Αυτή η έκδοση της συνάρτησης δόµησης
{ καλείται όταν δηµιουργείται ένα αντικείµενο
strcpy(titlos,title); µε δύο παραµέτρους. Καταχωρεί την πρώτη-
παράµετρο στο µέλος titlos και τη δεύτερη
timi=t; στο µέλος timi του αντικειµένου.
selides=0;
}

main()
{
biblio b1,b2("C++ σε βάθος"),b3("Τέλος",200);
b1.selides=b2.selides=b3.selides=100;
b1.info(); Στη µεταβλητή-µέλος selides και των τριών
b2.info(); αντικειµένων καταχωρίζεται η τιµή 100.
b3.info();
}

----------------------
 Τα αντικείµενα b1,b2 και b3 δηµιουργούνται
καλώντας τις αντίστοιχες συναρτήσεις δόµησης: Σελίδες :100
για καµία, µία και δύο παραµέτρους. Ποσό :0
----------------------
C++ σε βάθος
Σελίδες :100
Ποσό :0
----------------------
Τέλος
Σελίδες :100
Ποσό :200

http://cpp.bytes.gr 75
Η γλώσσα C++ σε βάθος Νίκος Μ. Χατζηγιαννάκης

13.2 Τι πρόβληµα θα µας δηµιουργήσει η χρήση της παρακάτω κλάσης: 


class circle
{
float aktina;
circle(){aktina=0;}
float emvado(){return 3.14*aktina*aktina;}
};

Η κλάση δεν διαθέτει δηµόσια µέλη, εποµένως δεν µπορεί να προσπελαστεί κα-
νένα µέλος της.

13.3 Με δεδοµένη τη παρακάτω κλάση:


class test
{
int ar;
public:
void show() {cout << ar << endl;}
test();
∆ηλώσεις συναρτήσεων δόµησης και απο-
~test(); δόµησης.
};
Να συµπληρωθεί κατάλληλα ώστε όταν δηµιουργείται ένα νέο αντικείµενο,
να καταχωρίζει στο µέλος ar έναν τυχαίο αριθµό και να εµφανίζει τη φράση
"∆ηµιουργήθηκε το #" όπου # ο τυχαίος αριθµός. Όταν καταστρέφεται ένα
αντικείµενο, να εµφανίζει τη φράση "Καταστράφηκε το #" όπου # ο αριθµός
που περιέχει το αντικείµενο. 
test::test()
Συνάρτηση δόµησης.
{
ar=rand();
cout<<"∆ηµιουργήθηκε το "<<ar<<endl;
}
test::~test()
Συνάρτηση αποδόµησης.
{
cout<<"Καταστράφηκε το "<<ar<<endl;
}

13. 4 Ποια από τα επόµενα αληθεύουν: 


; Τα ιδιωτικά µέλη µιας κλάσης είναι προσβάσιµα µόνο από τις συναρτή-
σεις-µέλη της κλάσης.
‰ Με τη δήλωση µιας κλάσης, δεσµεύεται ο χώρος µνήµης για τις µεταβλη-
τές-µέλη της κλάσης.
; Όταν έχουµε δύο αντικείµενα της ίδιας κλάσης, µπορούµε µε τον τελεστή
= να καταχωρίσουµε όλα τα χαρακτηριστικά του ενός στο άλλο.
‰ Αν µία κλάση δεν έχει συνάρτηση δόµησης, δεν µπορούν να δηµιουργη-
θούν αντικείµενα σε αυτή την κλάση.
; Μια κλάση µπορεί να έχει πολλές συναρτήσεις δόµησης.

76