# Задачи - ООП, Седмица 8, 08.04.2026 'define expected-reading 3 min 'define created 07 April 2026 'define edited 07 April 2026 [$pagenav] ## За решаване ### Задача 1 .warn За всеки клас имплементирайте [=голяма петица!=] Всички методи трябва да достъпни и за константни обекти, когато е възможно. Реализирайте система за менажиране на многостепенни ракети. След изтрелване на ракетата, най-долната "степен" се активира. При изразходване на горивото, тя се откача от другите степени и следващата степен се активира. [image https://upload.wikimedia.org/wikipedia/commons/d/d6/Black_Brant.jpg]\n [*В тази ракета, степените са оцветени по различен начин: бяло, червено и черно.*] Всяка степен си има: .bulleted - име, низ с максимална дължина от 100 символа - височина в целочислени метри - тежест в килограми - тяга (lift force) в нютони - време на горене в секунди Една степен изразходва горивото си за "време на горене" секунди, като във всяка секунда прилага ускорение на себе си и товара с "тяга" нютони. Може да зачитаме праволинейно ускорение и да не изчисляваме промяната на количеството гориво. Това означава, че можем да използваме следните формули за дадена степен: [image ./img/formulas.png] Където: .bulleted - [`a`] е ускорението, - [`v[_0_]`] е началната скорост, за първата степен тя ще е 0, за втората тя ще е скоростта на първата степен, на третата ще е скоростта на втората степен и так. нат. - [`x`] е разстояние в метри. Степените се комбинират в ракета. Всяка ракета си има име и неограничен брой степени. За една ракета имплементирайте методи, чрез които се намира: .bulleted - общата тежест на ракетата - общата височина на ракетата - финалната скорост на финалната степен - общото разстояние което ракетата може да измине, в километри - общото време в което ракетата ще гори Допълнително, имплементирайте методи [`Export`] и [`Import`], чрез които всички данни на една ракета се запазват или вземат в/от двоичен файл. Неограничено количество ракети и необвързани степени се съхраняват в хангари. Имплементирайте методи за добавяне на степени в хангара и [*преместване*] на степени в ракети. Освен това имаме площадки от които ракети могат да се изтрелват. Всяка площадка съдържа: .bulleted - име с максимална дължина от 250 символа - максимална тежест на ракета, която поддържа - максимална височина на ракета, която поддържа Финално, имаме космическа агенция, която съдържа неограничен брой хангари и площадки. Всички хангари в космическата агенция могат да се експортират и импортират в един двоичен файл и всички площадки в един текстови файл. Реализирайте конзолен интерфейс, който поддържа командите: .bulleted - [`new_hangar`], която по подадени данни добавя нов хангар - [`new_launch_site`], която по подадени данни добавя нова площадка - [`new_rocket_stage`], която по подадени данни добавя нова степен в избран хангар. Ако такъв не съществува, да се добави в последния добавен хангар. - [`new_rocket`], която по подадени данни добавя нова ракета в хангар. Степените ѝ трябва да са "пренесени" от хангар(и), [=не=] да се създадат наново. - [`can_launch`], която по подадени данни за площадка и ракета, връща дали ракетата може да бъде изтреляна от площадката