# Задачи - ООП, Седмица 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`] например.