Обектно ориентирано програмиране
Изпитен билет 4
ИМЕ:____________________________________________________
Ф№______________ КУРС__________ СПЕЦИАЛНОСТ_________________
Задача 1. Какво осигурява принципа „наследяване” в обектно-ориентираното програмиране?
Задача 2. Дадено е следното описание на класа CTime:
class CTime
{
private:
int m_hour,m_min,m_sec;
public:
void Read();
void Print();
CTime NextTime();
int GetSec(){return m_sec;}
void SetSec(int d){ m_sec=d;}
int GetMin(){return m_min;}
void SetMin(int d){ m_min=d;}
int GetHour(){return m_hour;}
void SetHour(int d){ m_hour=d;}
};
Опишете какви действия са необходими, за да се разшири функционалността на класа с метод за сравняване на две времена. Методът да има име TimeCmp и да връща стойност -1, ако първото време е преди второто; 1, ако първото време е след второто и 0, ако двете времена съвпадат.
Напишете кода на метода.
Задача 3. Нека е дадена дефиницията на класа от Задача 2. В следната главна програма се въвеждат две времена и извежда часът на по-късното време.
void main()
{
CTime d1,d2;
d1.Read();
d2.Read();
if(d1.TimeCmp(d2)==-1)
cout<
else
cout<
}
При опит за изпълнение програмата компилаторът съобщава за синтактична грешка. Каква е тя и как може да се отстрани?
Задача 5. Декларирайте масив с елементи от типа CTime и напишете функция, която прочита от клавиатурата броя на елементите на масива и след това самите елементи.
Задача 6. За какво служи методът на класа, наречен конструктор? Какви са изискванията към името и типа на конструктора? Може ли един клас да има няколко конструктора?
Задача 7. Кога е наложително да се декларира деструктор на класа? Каква е неговата роля?
Задача 8. Напишете функция-шаблон, която приема като параметри указател към елементите на масив от произволен тип и броя на елементите му и връща като резултат стойността на минималния елемент на масива.
Дадени са следните декларации на класове:
class CClass
{
public:
virtual void Read()=0;
virtual void Print()=0;
};
class CPerson :
public CClass
{
private:
string m_egn,m_name;
public:
CPerson();
CPerson(string,string);
void Read();
void Print();
void SetEgn(string e) {m_egn=e;}
string GetEgn() {return m_egn;}
void SetName(string n) {m_name=n;}
string GetName() {return m_name;}
};
class CDate:public CClass
{
private:
int m_day,m_month,m_year;
public:
void Read();
void Print();
CDate NextDate();
//CDate() { m_day=m_month=m_year=0;}
CDate(int d=0,int m=0,int y=0)
{
m_day=d;
m_month=m;
m_year=y;
}
int GetDay(){return m_day;}
void SetDay(int d){ m_day=d;}
int GetMonth(){return m_month;}
void SetMonth(int d){ m_month=d;}
int GetYear(){return m_year;}
void SetYear(int d){ m_year=d;}
};
class CDoctor :
public CPerson
{
private:
string m_spec;
public:
CDoctor();
CDoctor(string,string,string);
void Read();
void Print();
void SetSpec(string s) {m_spec=s;}
string GetSpec() {return m_spec;}
};
class CDepartment :
public CClass
{
private:
string m_name;
CDoctor m_boss;
double m_cena;
public:
CDepartment();
CDepartment(string,string,string,string,double);
void Read();
void Print();
void SetName(string n) {m_name=n;}
string GetName() {return m_name;}
void SetBoss(CDoctor b) {m_boss=b;}
CDoctor GetBoss() {return m_boss;}
void SetCena(double c) {m_cena=c;}
double GetCena() {return m_cena;}
};
class CPacient :
public CPerson,
public CDepartment,
public CDate,
virtual public CClass
{
private:
string m_diag;
CDoctor m_doc;
public:
CPacient();
CPacient(string,string,string,string,string,string,double,int,int,int,string,string,string,string);
void Read(),Print();
void SetDiag(string n) {m_diag=n;}
string GetDiag() {return m_diag;}
void SetDoc(CDoctor b) {m_doc=b;}
CDoctor GetDoc() {return m_doc;}
};
Задача 9.Кои са класовете, наследници на CDoctor?
Задача 10.Напишете методите Read() и Print() за класа CPacient.
Задача 11.Декларирайте клас, който съдържа като член данни брой елементи от клас CDoctor и масив, за който динамично се заделя памет за лекари. Опишете конструктора и деструктора на класа. Освен тях, като методи на класа декларирайте функции за четене и отпечетване.
Задача 12.Каква е ролята на класа CClass? Как се наричат класове от този тип? Защо се налага използването му?
Сподели с приятели: |