ані усередині класу, то для доступу до цих даних, введені однойменні методи, які повертають значення відповідних змінних.
Клас містить кілька конструкторів: конструктор за замовчуванням, конструктор копіювання і конструктор для ініціалізації існуючим масивом.
Для зручності використання класу перевизначений оператор звернення до елементів масиву (operator []). Так само реалізований широкий набір перевантажених методів копіювання даних (Copy) з іншого масиву, методи обміну даними (Replace) між масивами, методи порівняння вмісту масивів (Compire, Equal).
У класі присутні методи для знаходження індексу першого (IndexFirstOf), наступного (IndexNextOf), останнього (IndexLastOf), попереднього (IndexPreviousOf) входження масиву або під масиву. Так само є методи для підрахунку кількості входжень (QuantityIncludeOf) масиву або подмассіва.
Метод визначення входження індексів (CheckSegment) в заданому діапазоні в масив і корекція індексів (CorrectSegment) для заданого діапазону.
На малюнку 3.4 представлений клас ByteArray.
Малюнок 3.8 - Клас ByteArray
У даному класі оголошені додаткові дані: використаний розмір масиву (use_size) і крок виділення пам'яті (step). Використаний розмір визначає, скільки пам'яті з виділеної використовується, а крок виділення пам'яті визначає, з яким кроком буде збільшуватися або зменшуватися вся виділена пам'ять для цього масиву. Так як дані приховані усередині класу, то для доступу до цих даних, введені однойменні методи, які повертають значення відповідних змінних.
Клас містить основні типи конструкторів за замовчуванням і копіює. Інші конструктори дозволяють задати початковий розмір масиву і крок, а також ініціалізувати виділену пам'ять з іншого масиву.
У класі є метод для створення нового масиву (Recreate), з повним видаленням попереднього і метод для збільшення або зменшення розміру масиву (Resize) зі збереженням інформації в незмінній зоні.
Так само є методи для додавання (Add) і видалення (Delete) із заданого місця певної кількості елементів або одного елемента в кінці.
Клас містить перевантажені методи з великою кількістю налаштувань для вставки (Insert) в певне місце даних з масиву або подмассіва. У результаті подібної вставки розмір масиву збільшитися або залишиться незмінним. Є так само зворотний метод вилучення подмассіва і інший масив (Extract), з подальшим скороченням масиву.
Шаблони класів Array lt; T gt; і FixArray lt; T gt; перевизначають тільки оператор звернення до елементу масиву і конструктори під певний тип.
На цьому розробка програмних інтерфейсів роботи з даними можна завершити. Функціональності розроблених класів достатньо для подальшої розробки.
У даному пункті описана розробка програмних інтерфейсів для роботи з консоллю. Можливості платформи UEFI BIOS дозволяють використовувати консольний висновок для інформації. Функціонал роботи з консоллю в UEFI BIOS є порівнянним за рівнем абстракції з функціоналом сучасних ОС.
Розробка користувальницького інтерфейсу є найбільш трудомісткою у зв'язку зі складністю організації, вимогою масштабування додатки і відсутністю готових бібліотек.
При розробці інтерфейсу необхідно дотримувати не офіційні стандарти інтерфейсів файлового менеджера. Вони чітко представлені в прототипі. Для першого етапу реалізації жорстке проходження стандарту не обов'язково, але в той же час дотримання загальної концепції необхідно надалі для простої адаптації реалізації під стандарт.
Таким чином, з урахуванням вище перерахованих зауважень можна сформулювати вимоги до інтерфейсу програми для першого етапу:
розділення екрану на дві робочі області з однаковими можливостями;
можливість вибору однієї функціональної області для перегляду дерева каталогів;
відображення у функціональних областях структури обраного каталогу або перерахування логічних томів.
В якості базового класу для об'єктів опису інтерфейсу, доцільно використовувати клас, що має властивості розмірності, положення, функції зв'язку з батьківським об'єктом і функції обробки подій, наприклад, отримання і зняття фокуса, оновлення стану об'єкта, універсальний обробник проектованих в майбутньому подій. Дочірніми класами відносно базового будуть класи для поділу простору екрану між двома об'єктами і клас, який реалізує методи виведення інформації на екран, в межах обмеженого простору.
Клас, що розділяє екран на дві частини повинен реалізовувати методи приєднання дочірніх об'єктів і методи зміни правил по...