Задача Какво осигурява принципа „наследяване в обектно-ориентираното програмиране?



Дата02.07.2017
Размер51.14 Kb.
Обектно ориентирано програмиране

Изпитен билет 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? Как се наричат класове от този тип? Защо се налага използването му?


База данных защищена авторским правом ©obuch.info 2016
отнасят до администрацията

    Начална страница