Студент Викладач Кафедра Студентська група

Зав. кафедрою Факультет

При цьому ієрархія об'єктів буде мати наступний вид:

Факультет

Студент Викладач Кафедра Студентська група - student2.ru

Студ_ група_1 … Студ_ група_N Кафедра_1 … Кафедра_N

Студенти Студенти Викладачі Викладачі

Зав.кафедрою Зав.кафедрою

2. Для включення об'єктів у групу використовувати третій спосіб (через зв'язаний список структур типу TItem).

3. Приклад визначення доданих абстрактних класів:

class TObject

{

public:

virtual void Show()=0;};

class TDepartment:public TObject // абстрактний клас-група

{

protected:

char name[20]; // найменування

TPerson* head; // керівник

TItem* last; // покажчик на початок зв'язаного списку структур TItem

public:

TDepartment(char*,TPerson*);

TDepardment(TDepartment&);

~ TDepartment();

char* GetName();

TPerson* GetHead();

void SetName(char* NAME);

void SetHead(TPerson* p);

void Insert(TObject* p);

virtual void Show()=0;

};

4.Ієрархія об'єктів створюється в такий спосіб (на прикладі ФАКУЛЬТЕТУ):

а)Створюється порожній ФАКУЛЬТЕТ.

б)Створюється порожня КАФЕДРА.

в)Створюються ВИКЛАДАЧІ і включаються в КАФЕДРУ.

г)КАФЕДРА включається у ФАКУЛЬТЕТ.

д) теж повторюється для іншої кафедри.

е)Створюється порожня СТУДЕНТСЬКА ГРУПА.

ж)Створюються СТУДЕНТИ і включаються в СТУДЕНТСЬКУ ГРУПУ.

з) СТУДЕНТСЬКА ГРУПА включається у ФАКУЛЬТЕТ.

и) теж повторюється для іншої студентської групи.

5.Видаляється ФАКУЛЬТЕТ (при виклику деструктора) у зворотному порядку.

6.Метод-ітератор визначається в неабстрактних класах-групах на основі обраних запитів.

Наприклад, для класу TStudentGroup може бути запропонований ітератор

void TStudentGroup::ForEach(PF action, float parametr);

де action - покажчик на функцію, що повинна бути виконана для всіх об'єктів, включених у групу(у даному випадку для всіх СТУДЕНТІВ), parametr-передана процедурі додаткова інформація..

У якості переданої методу функції може бути запропонована, наприклад, така: “вивести список студентів, що мають рейтинг не нижче заданого”

void MyProc(TObject* p,float rate)

{

if (((TStudent*)p) ->GetGrade()>=rate) cout<<(((TStudent*)p) ->GetName());

}

7. Студент визначає передану ітератору функцію на основі запитів, що повинні бути виконані викликом ітератора. Варіанти запитів приведені в додатку.

Зміст звіту.

1.Титульний лист.

2.Постановка задачі.

3.Ієрархія класів.

4.Ієрархія об'єктів.

5.Визначення класів( доданих чи змінених у порівнянні з лабораторною роботою №2).

6.Реалізація для одного не абстрактного класу-групи всіх методів.

7.Реалізація ітератора.

8.Реалізація переданої ітератору функції.

9.Листинг демонстраційної програми.

Додаток.Варіанти запитів.

1. Імена всіх осіб чоловічої(жіночої) статі.

2. Імена студентів зазначеного курсу.

3. Імена і посада викладачів зазначеної кафедри.

4. Імена службовців зі стажем не менш заданого.

5. Імена службовців заданої професії.

6. Імена робітників заданого цеху.

7. Імена робітників заданої професії.

8. Імена студентів, що здали всі (заданий) іспити на відмінно(добре і відмінно).

9. Імена студентів, що не здали всі (хоча б один) іспит.

10. Імена всіх монархів на заданому континенті.

11. Найменування всіх деталей(вузлів) вхідних у заданий вузол (механізм).

12. Найменування всіх книг у бібліотеці(магазині), що вийшли не раніше зазначеного року.

13. Назви всіх міст, заданої області.

14. Найменування всіх товарів у заданому відділі магазина.

15. Кількість чоловіків(жінок).

16. Кількість студентів на зазначеному курсі.

17. Кількість службовців зі стажем не менш заданого.

18. Кількість робітників заданої професії.

19. Кількість інженерів у заданому підрозділі.

20. Кількість товару заданого найменування.

21. Кількість студентів, що здали всі іспити на відмінно.

22. Кількість студентів не здали хоча б один іспит.

23. Кількість деталей(вузлів) вхідних у заданий вузол (механізм)

24. Кількість зазначеного транспортного засобу в автопарку(на автостоянці).

25. Кількість пасажирів у всіх вагонах експреса.

26. Сумарна вартість товару заданого найменування.

27. Середній бал за сесію заданого студента.

28. Середній бал по предметі для всіх студентів.

29. Сумарна кількість підручників у бібліотеці(магазині).

30. Сумарна кількість жителів усіх міст в області.

31. Сумарна вартість продукції заданого найменування по всіх накладних.

32. Середня потужність усіх(заданого типу) транспортних засобів в організації.

33. Середня потужність усіх дизелів, що обслуговуються заданою фірмою.

Наши рекомендации