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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
'def title Задачи - ООП, Седмица 10, 22.04.2026
'def desc Условията на задачите за упражнение.
# {title}
{pagenav 3 min;22 April 2026;29 April 2026}
## За решаване
### Задача 1
.solution-link {url Решение;https://github.com/Syndamia/oop-2025-solutions/tree/main/Week10/Exercise01}
Реализирайте клас {` User}, който съдържа полета за:
.bulleted
- идентификационен код
- име
- парола
- година на създаване на акаунта
И публичен метод {` LogIn}, който по подаден идентификационен код и парола връща дали данните са коректни (и потребителя може да влезе в акаунта си).
Реализирайте наследник {` Student} на {` User}, който допълнително съдържа полета:
.bulleted
- дали е завършил или не
- година на випуск
И публичен метод {` Graduate}, с който се записва че е завършил.
Реализирайте наследник {` Teacher} на {` User}, който допълнително съдържа полета:
.bulleted
- име на предмет който преподава
- брой ученици на които преподава
И публичен метод {` ChangeStudents}, с който се променя бройката студенти на които преподава.
### Задача 3
.solution-link {url Решение;https://github.com/Syndamia/oop-2025-solutions/tree/main/Week10/Exercise03}
Реализирайте клас {` Inventory}, който съдържа неограничено количество продукти.
За всеки продукт съхранете име и количество.
Реализирайте наследник {` Shop} на {` Inventory}, който допълнително съхранява неограничено количество продажби.
Всяка продажба съдържа име на продукт, купено количество и дата (ден, месец, година).
Реализирайте негов метод {` Purchase}, който по подадени данни съхранява нова продажба и намалява инвентарното наличество.
Реализирайте наследник {` Warehouse} на {` Inventory}, който допълнително съхранява неограничено количество доставки.
Всяка доставка съдържа най-много 8 продукта, датата на доставката (ден, месец, година) и номер за проследяване.
Реализирайте негов метод {` Receive}, който по подадени данни съхранява нова доставката и увеличава инвентарното количество.
.warn
Всички неограничени количества трябва да са имплементирани в самия клас.
Не може да имплементирате {` ProductArray}, който да е член-данна в {` Inventory} например.
## За любознателните
### Задача 2
.solution-link {url Решение;https://github.com/Syndamia/oop-2025-solutions/tree/main/Week10/Exercise02}
.warn
{i (29.04.2026)}
Тази задача избързва с материала, затова е преместена тук.
Реализирайте клас {` Vehicle}, който съдържа полета за:
.bulleted
- модел
- година на производство
- километраж
- еко категория (цяло число от 1 до 6 вкл.)
- тежест в килограми
- конски сили
Реализирайте наследник {` CombustionVehicle} на {` Vehicle}, който съдържа полета за:
.bulleted
- брой цилиндри в двигателя
- обем на двигателя в литри
Реализирайте наследник {` ElectricVehicle} на {` Vehicle}, който съдържа полета за:
.bulleted
- капацитет на батерия в киловатчаса
- пробег в километри
- количество поддържано захранване в киловатове
За всички класове реализирайте нужните селектори и мутатори, както и {` operator<<} и {` operator>>}.
От входа получавате цяло неотрицателно число: бройка превозни средства.
След това, за всяко превозно средство получавате буква определяща типа му ({` c} за {` CombustionVehicle} и {` e} за {` ElectricVehicle}) и след това всички нужни стойности (първо тези от {` Vehicle}, модел, година на производство, ... и след това тези за съответния автомобил).
Запазете всички превозни средства в {b един} масив.
|