'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 един} масив.