ділу. Клас повинен містити дані описують положення лінії поділу (вертикально, горизонтально) і співвідношення розмірів дочірніх об'єктів. Співвідношення можна описати числом, максимальне значення, якого визначає повне заповнення першого дочірнім об'єктом всього допустимого простору, а нуль - заповнення другого дочірнім об'єктом. Всі інші значення - проміжні стани.
Клас, який реалізує методи виведення інформації на екран, повинен мати всі супутні цьому методи: висновок символу або рядка, настройка атрибутів кольору виведеної інформації, положення курсору і його видимість.
Таким чином, всі класи розділяють простір і класи, що реалізують певні правила виводу, будуть успадковуватися від відповідних базових класів.
Далі від об'єкта керуючого простором, доцільно наслідувати клас є основою вікна. Такий клас повинен реалізовувати модель поведінки для вбудованої ієрархії інших об'єктів. Для даного класу потрібно реалізувати можливості зміни активного елемента, який отримує інформацію про події переданих вікна.
Класи візуальних елементів успадковуються від іншого нащадка базового класу. Такі об'єкти повинні реагувати на події, міняючи внутрішньо стан і відбиваючи зміни у відведеній області екрану. Основним класом даного типу повинен стати клас, який реалізує висновок рамки по периметру об'єкта. Від нього повинен успадковуватися клас для виведення списку елементів, який буде базовим для класу розширює можливості до множинного виділення об'єктів, які будуть реалізовувати отримання даних з різних джерел.
Далі на малюнку 3.5 представлена ??схема успадкування класів користувальницького інтерфейсу.
Малюнок 3.9 - Схема успадкування класів користувальницького інтерфейсу
Базовим класом є Control, його успадковують всі інші класи. Розглянемо докладніше вміст класів.
На малюнку 3.6 представлений клас Control.
Малюнок 3.10 - Клас Control
Клас містить дані про положення і розмірі видимої обрости на екрані (window), покажчик на батьківський контейнер, до якого прикріплений елемент і?? лаг (parent), що визначає активність класу (focus).
Клас містить конструктор за замовчуванням, конструктор копіювання і конструктор прив'язки до контейнера. Так само прив'язку до контейнера і від'єднання можна здійснити за допомогою методів визначених у класі (Connect, Disconnect).
У класі є методи для визначення перебувати об'єкта у фокусі (IsFocus). А за допомогою певних віртуальних методів можна виконати певні дії під час отримання та повернення фокусу (TakeFocus, ReturnFocus). У класі так само є метод для виконання обробки подій надходять в клас (HandleEvent).
Решта методи дозволяють оновити розмір елемента відповідно до розміру надаються контейнером (Update), а так само отримати цей розмір без поновлення розмірів елемента (GetWindow) і отримати розмір всього наявного простору для друку (GetDisplay).
На малюнку 3.7 представлений клас Container.
Малюнок 3.11 - Клас Container
Клас містить дані про першому і другому елементі прив'язаних до контейнера (first, second), дані про положення осі (axis) і пропорцій (ratio) поділу простору між ними. У класі є методи для налаштування і отримання даних (Separator, Ratio).
Серед конструкторів класу є конструктор за замовчуванням, конструктор копіювання завдання осі поділу і прив'язки до базового елементу.
У класі є методи для прив'язки (Attach) і від'єднання (Detach) до певного місця елемента, метод розрахунку розміру приєднаного елемента (Rate), метод визначення наявності зв'язку між поточним контейнером і елементом (Detect).
Так само є метод дозволяє оновити дочірні елементи (Update).
На малюнку 3.8 представлений клас Form.
Малюнок 3.12 - Клас Form
Клас містить список покажчики на елементи форми (control), кількість елементів (number), індекс активного елементу (index), і ознака повторення командного циклу (run).
Конструктори класу бувають за замовчуванням, що копіюють і конструктор завдання положення осі роздільника.
У класі міститися метод для визначення кількості елементів (NumberControl), методи для запуску (Show) і зупинки (Hide) форми.
Клас містить методи для читання кодів клавіш натиснутих на клавіатурі.
Серед метод роботи з фокусом є метод для отримання покажчика на активний елемент (GetFocus), метод отримання поточного розміру доступною обрости вікна (GetWindow...