Page 32 - 4836
P. 32

допустиме множинне спадкування, які існують обмеження на
                            іменування  класів,  як  описуються  поля  і  методи,  набір
                            існуючих  типів  даних  та  багато  іншого.  Таким  чином,  клас
                            можна розглядати як об'єкт, у якого є властивості (ім'я, список
                            полів  та  їх  типи,  список  методів,  список  аргументів  для
                            кожного  методу  і  т.д.).  Також  клас  може  мати  певну
                            поведінку, тобто підтримувати методи. А раз для будь-якого
                            об'єкта існує шаблон, що описує властивості і поведінку цього
                            об'єкта,  отже,  його  можна  визначити  і  для  класу.  Такий
                            шаблон, що задає різні класи, називається метакласом.
                                   Щоб  уявити  собі,  що  таке  метакласи,  розглянемо
                            приклад  якоїсь  бюрократичної  організації.  Будемо  вважати,
                            що  всі  класи  в  такій  системі  мають  суворі  інструкції,  які
                            описують, що потрібно зробити, щоб породити новий об'єкт
                            (наприклад,  найняти  нового  службовця  або  відкрити  новий
                            відділ). Як і годиться класам, вони описують всі властивості
                            нових об'єктів (наприклад, зарплату і професійний рівень для
                            співробітників, площа та майно для відділів) та  їх поведінка
                            (обов'язки службовців і функції підрозділів).
                                   У свою чергу, написання нової інструкції можна строго
                            регламентувати.      Скажімо,     необхідно    використовувати
                            спеціальний  бланк,  дотримуватися  правил  оформлення  і
                            заповнити всі обов'язкові поля (наприклад, номер інструкції та
                            прізвища  відповідальних  працівників).  Така  "інструкція
                            інструкцій" і буде представляти собою метаклас в ООП.
                                   Отже,  об'єкти  породжуються  від  класів,  а  класи  -  від
                            метакласів.  Він,  як  правило,  в  системі  тільки  один.  Але
                            існують  мови  програмування,  в  яких  можна  створювати  і
                            використовувати  власні  метакласи,  наприклад  мова  Python.
                            Зокрема,  функціональність  метакласів  може  бути  така:  при
                            формуванні класу він буде переглядати список усіх методів у
                            класі  і,  якщо  ім'я  методу  має  вид  set_XXX  або  get_XXX,
                            автоматично  створювати  поле  з  ім'ям  XXX,  якщо  такого  не
                            існує.




                                                           30
   27   28   29   30   31   32   33   34   35   36   37