Створення та реалізація інтерфейсу (Interface) в ActionScript 3

Малювання, Дизайн та Розробка ігор

Головна » Записи » Створення та реалізація інтерфейсу (Interface) в ActionScript 3

Створення та реалізація інтерфейсу (Interface) в ActionScript 3

Інтерфейс (Interface) — це клас, що використовується як шаблон, або зразок для класів зі схожими функціями, які повинні дотримуватися певної базової структури.

Синтезований інтерфейс — клас зі списком необхідних методів, які мають бути створені в класах, де реалізується цей інтерфейс.

В офіційній довідці AdobeFlash ActionScript 3 інтерфейс має таке визначення:

Усі методи, зазначені в інтерфейсі повинні бути визначені в класах, де він застосовується, мати таке саме ім'я, тип даних та параметри.

Створення інтерфейсу в ActionScript 3

Клас інтерфейсу створюється так само, як і інші типи класів, в "package", і зберігається в окремому AS-документі. Відмінність у тому, що замість ключового слова "class" використовується ключове слово "interface "; а також, у тілі інтерфейсу описується лише перелік методів, без вказівки коду.

Основний синтаксис наступний:

— Властивості не можуть бути задані.

Ось приклад інтерфейсу з ім'ям "ITest", в якому визначено два методи: "Links()" та "Tutorials()".

— Цей код повинен бути доданий до документа "ActionScript 3.0 Class" (або "ActionScript 3.0 Interface"), запишіть "ITest" в імені класу, і файл із цим кодом повинен бути збережений з ім'ям "ITest.as", у тій же папці , що і класи, які будуть реалізовувати цей інтерфейс.

Реалізація інтерфейсу в ActionScript 3

Як тільки "інтерфейс" збережено, ви можете створити класи, які реалізують методи, визначені в інтерфейсі.

Для реалізації інтерфейсувикористовуйте ключове слово "implements " та ім'я інтерфейсу після імені класу:

клас "ClassName" повинен містити всі методи, визначені в інтерфейсі "InterfaceName", з атрибутом "public", необхідною кількістю параметрів та їх типом даних, встановлених в інтерфейсі. Клас може також містити інші способи.

У наступному прикладі ми створюємо клас (з ім'ям webDevelopment), у новому AS-документі, з ім'ям "webDevelopment.as" і зберігаємо його в ту саму папку, що й інтерфейс "ITest".

— Необхідні методи ("Links()" і "Tutorials()") дотримуються точних параметрів (кількість, порядок, тип даних), встановлених в інтерфейсі "ITest". Інші методи (в даному випадку "Diverse") та властивості є необов'язковими та залежать від ролі кожного класу.

— У необхідних методах ім'я параметрів не має значення, але їх кількість, тип даних та порядок мають бути такими ж, як і в інтерфейсі.

Щоб перевірити цей приклад, створіть у Flash новий документ, додайте в панель Actions наступний код ActionScript, потім збережіть його в ту ж директорію, де розташовані інтерфейс і клас.

— Оскільки клас "webDevelopment" відповідає умовам, вказаним у реалізованому інтерфейсі (ITest), скрипт працює.

— Якщо жодна з умов не виконується в класі: наприклад, не визначається метод, додається додатковий параметр або будь-який параметр оголошується з іншим типом даних; скрипт поверне помилку.

Таким чином, реалізація "інтерфейсу" корисна особливо, коли ви хочете створити кілька класів зі схожими ролями, і хочете, щоб вони мали мінімальний порядок та структуру методів, для найлегшого запам'ятовування.

Інтерфейс як тип даних

Інтерфейс можна також застосовувати як типданих для змінних (або параметрів функції). Потім змінна (або параметр) може являти собою екземпляр класу, який реалізує цей інтерфейс.

Ви зможете зрозуміти це найкраще з наступного прикладу, де ми створюємо інший клас (з ім'ям WebProgramming), який реалізує інтерфейс "ITest".

У FLA-документі в панелі "Actions" запишіть наступний код.

— Зверніть увагу, що викликаючи функцію з різними аргументами, представленими екземплярами класу, функція використовує параметр "cls" як екземпляр класу (бо він має тип даних "ITest"), і може викликати такі ж методи ("Links" та "Tutorials") ) для кожного аргументу, тому що ці методи визначені в інтерфейсі, тому вони повинні знаходитися в кожному класі, який реалізує цей інтерфейс, з тим самим типом параметрів.

— Ця технологія дозволяє не створювати одну й ту саму функцію для кожного екземпляра.

  • Ви також можете створити дочірній інтерфейс, який успадковує список методів, зазначених у батьківському інтерфейсі, додавши додаткові методи за бажанням.

Синтаксис для визначення дочірнього інтерфейсу:

- Інтерфейс "ChildInterface" міститиме список методів, успадкованих від інтерфейсу "ParentInterface", і все, що додано до нього. Це не вплине на інтерфейс ParentInterface.

  • Інтерфейс також може використовуватися дочірніми класами за допомогою такого синтаксису:

- Клас "ChildClass" може бути розширенням будь-якого класу, не важливо реалізує клас "ParentClass" інтерфейс чи ні.

  • Клас може реалізовувати кілька інтерфейсів, розділених крапкою з комою, як у цьому синтаксисі:

Якщо ви зміните інтерфейс, який вже застосовується до класу, то клас небуде працювати.

Завантажити вихідні дані з прикладами ActionScript 3 ви можете тут.