'def title Задачи - ООП, Седмица 8, 08.04.2026 'def desc Условията на задачите за упражнение. # {title} {pagenav 3 min;07 April 2026;08 April 2026} ## За решаване ### Задача 1 .solution-link {url Решение;https://github.com/Syndamia/oop-2025-solutions/tree/main/Week08/Exercise01} .warn За всеки клас имплементирайте {b голяма петица!} Всички методи трябва да достъпни и за константни обекти, когато е възможно. Реализирайте система за менажиране на многостепенни ракети. След изтрелване на ракетата, най-долната "степен" се активира. При изразходване на горивото, тя се откача от другите степени и следващата степен се активира. {img https://upload.wikimedia.org/wikipedia/commons/d/d6/Black_Brant.jpg}
{i В тази ракета, степените са оцветени по различен начин: бяло, червено и черно.} Всяка степен си има: .bulleted - име, низ с максимална дължина от 100 символа - височина в целочислени метри - тежест в килограми - тяга (lift force) в нютони - време на горене в секунди Една степен изразходва горивото си за "време на горене" секунди, като във всяка секунда прилага ускорение на себе си и товара с "тяга" нютони. Може да зачитаме праволинейно ускорение и да не изчисляваме промяната на количеството гориво. Това означава, че можем да използваме следните формули за дадена степен: {img ./img/formulas.png} Където: .bulleted - {` a} е ускорението, - {` v{_ 0}} е началната скорост, за първата степен тя ще е 0, за втората тя ще е скоростта на първата степен, на третата ще е скоростта на втората степен и так. нат. - {` x} е разстояние в метри. Степените се комбинират в ракета. Всяка ракета си има име и неограничен брой степени. За една ракета имплементирайте методи, чрез които се намира: .bulleted - общата тежест на ракетата - общата височина на ракетата - финалната скорост на финалната степен - общото разстояние което ракетата може да измине, в километри - общото време в което ракетата ще гори Допълнително, имплементирайте методи {` Export} и {` Import}, чрез които всички данни на една ракета се запазват или вземат в/от двоичен файл. Неограничено количество ракети и необвързани степени се съхраняват в хангари. Имплементирайте методи за добавяне на степени в хангара и {i преместване} на степени в ракети. Освен това имаме площадки от които ракети могат да се изтрелват. Всяка площадка съдържа: .bulleted - име с максимална дължина от 250 символа - максимална тежест на ракета, която поддържа - максимална височина на ракета, която поддържа Финално, имаме космическа агенция, която съдържа неограничен брой хангари и площадки. Всички хангари в космическата агенция могат да се експортират и импортират в един двоичен файл и всички площадки в един текстови файл. Реализирайте конзолен интерфейс, който поддържа командите: .bulleted - {` exit}, която приключва програмата - {` new_hangar}, която по подадени данни добавя нов хангар - {` new_launch_site}, която по подадени данни добавя нова площадка - {` new_rocket_stage}, която по подадени данни добавя нова степен в избран хангар. Ако такъв не съществува, да се добави в последния добавен хангар. - {` new_rocket}, която по подадени данни добавя нова ракета в хангар. Степените ѝ трябва да са "пренесени" от хангар(и), {b не} да се създадат наново. - {` can_launch}, която по подадени данни за площадка и ракета, връща дали ракетата може да бъде изтреляна от площадката