Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching / oop-2025 / week10 / index.du
blob: b8540292128f1b40891e187ab1c61e3edb2cbc88 (plain) (blame)
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
# Задачи - ООП, Седмица 10, 22.04.2026

'define expected-reading 3 min
'define created 22 April 2026
'define edited 22 April 2026
[$pagenav]

## За решаване

### Задача 1

Реализирайте клас [`User`], който съдържа полета за:
.bulleted
- идентификационен код
- име
- парола
- година на създаване на акаунта

И публичен метод [`LogIn`], който по подаден идентификационен код и парола връща дали данните са коректни (и потребителя може да влезе в акаунта си).

Реализирайте наследник [`Student`] на [`User`], който допълнително съдържа полета:
.bulleted
- дали е завършил или не
- година на випуск

И публичен метод [`Graduate`], с който се записва че е завършил.

Реализирайте наследник [`Teacher`] на [`User`], който допълнително съдържа полета:
.bulleted
- име на предмет който преподава
- брой ученици на които преподава

И публичен метод [`ChangeStudents`], с който се променя бройката студенти на които преподава.

### Задача 2

Реализирайте клас [`Vehicle`], който съдържа полета за:
.bulleted
- модел
- година на производство
- километраж
- еко категория (цяло число от 1 до 6 вкл.)
- тежест в килограми
- конски сили

Реализирайте наследник [`CombustionVehicle`] на [`Vehicle`], който съдържа полета за:
.bulleted
- брой цилиндри в двигателя
- обем на двигателя в литри

Реализирайте наследник [`ElectricVehicle`] на [`Vehicle`], който съдържа полета за:
.bulleted
- капацитет на батерия в киловатчаса
- пробег в километри
- количество поддържано захранване в киловатове

За всички класове реализирайте нужните селектори и мутатори, както и [`operator<<`] и [`operator>>`].

От входа получавате цяло неотрицателно число: бройка превозни средства.
След това, за всяко превозно средство получавате буква определяща типа му ([`c`] за [`CombustionVehicle`] и [`e`] за [`ElectricVehicle`]) и след това всички нужни стойности (първо тези от [`Vehicle`], модел, година на производство, ... и след това тези за съответния автомобил).

Запазете всички превозни средства в [=един=] масив.

### Задача 3

Реализирайте клас [`Inventory`], който съдържа неограничено количество продукти.
За всеки продукт съхранете име и количество.

Реализирайте наследник [`Shop`] на [`Inventory`], който допълнително съхранява неограничено количество продажби.
Всяка продажба съдържа име на продукт, купено количество и дата (ден, месец, година).

Реализирайте негов метод [`Purchase`], който по подадени данни съхранява нова продажба и намалява инвентарното наличество.

Реализирайте наследник [`Warehouse`] на [`Inventory`], който допълнително съхранява неограничено количество доставки.
Всяка доставка съдържа най-много 8 продукта, датата на доставката (ден, месец, година) и номер за проследяване.

Реализирайте негов метод [`Receive`], който по подадени данни съхранява нова доставката и увеличава инвентарното количество.

.warn
Всички неограничени количества трябва да са имплементирани в самия клас.
Не може да имплементирате [`ProductArray`], който да е член-данна в [`Inventory`] например.