ПредишенСледващото

Какво е metaclass. Какви са metaclasses. Какво е протокол, мета-обект. Какво е клас :: MOP. Защо да използвате клас :: MOP.

Какви са metaclasses?

В обектно-ориентиран, а metaclass е един клас, чиито случаи не са обекти, както обикновено, и класове. Точно като нормален клас определя поведението на някои обекти, а metaclass определя поведението на някои от класовете и техните случаи.

Не всички езици за програмиране, които поддържат обектно-ориентиран парадигма поддържа metaclasses. В същото време, нивото на metaclasses подкрепа всеки език може да бъде доста по-различно. Различни като изпълнение добре и мета-обект протокол, принципите, които управляват взаимодействието на обекти, класове, и metaclasses.

Сред най-популярните езици подкрепят metaclasses: Objective-C, Python, Perl и Ruby.

Понякога идеята за metaclasses се сравнява с модела дизайн "Фабрика".

Какви са metaclasses?

Идеята за metaclasses случва в обектно-ориентиран език за програмиране. С него разбрах, пълен рекурсивни дизайн система. Полезно при работа с класа йерархии.

За Perl в чист вид, metaclasses идея напълно чужда. Макар и интересни от гледна точка на архитектурата и изпълнението на.

Какво е протокол, мета-обект?

Мета-обект протокол - механизъм за определяне и използване на нови metaclasses.

Мета-обект протокол определя набор от функции, които включват методи за класове. Програмиране ниво metaobject протокол - за определянето на нови класове, заедно с методи за тези класове.

Metaclasses в Perl

В чист Perl 5 понятия като пакет, клас, метод, конструктор не са забележими различия и граници. Концепцията за атрибут отсъства.

Изпълнение на metaclasses в Perl, като използвате metaobject протокол, който е представен от клас :: MOP система. Клас :: MOP и metaclasses се използват широко популярен лос (Официалното определение: «лос - разширение на Perl 5, опростяване на прилагането на ООП:" Аз не съм съгласен с това, че на лоса има нещо по-лесно мисля, че всичко е точно обратното ..) ,

Клас :: MOP ясно дефинира понятията класове, методи, пакети, допълва концепцията за атрибут. Лос, благодарение на клас :: MOP, носи ООП в Perl с общоприетите стандарти.

Т.е. в действителност, клас :: MOP - това е повече от просто един начин да се създаде metaclasses.

Мета-обект протокол в Perl, клас :: MOP

Мета-обект протокол създава абстрактни понятия на класове, методи, обекти, атрибути. Тази абстракция може да се използва за проверка и контрол на елементите на системата, чрез които те описват.

За неподготвен човек Това е всичко това звучи като глупости. Ето защо, най-добре е да се започне да се разбере metaclasses и примери мета-обектно протокол.

Мета-обект протокол изпълнява Perl модул клас :: MOP и включва 4 под-протокол:

  • Клас протокол - на управлението на класа. Приложена чрез :: Клас Клас MOP ::.
  • Умение протокол - клас управление Реализира атрибути. Приложена чрез Class :: MOP :: Умение. Тя може да бъде разширена чрез наследяване.
  • Метод протокол - Инструмент за работа с методите на системата за обект. Приложена чрез Class :: MOP :: метод.
  • Съд протокол - осигурява определено ниво на абстракция, за да създадете инстанции на обекти. Приложена чрез Class :: MOP :: съд

Съд протокол днес няма да бъдат разглеждани.

клас протокол

Клас Клас :: MOP :: - клас metaobject. Този протокол е най-големият и най-сложните част от клас :: MOP на.

Клас Клас :: MOP :: подклас клас :: MOP :: Модул. Клас :: MOP :: Модул, от своя страна, е подклас на класа :: MOP :: пакет. Протокол пакет осигурява абстракция за Perl-пакети и методи за работа с именни пространства.

В създадения обект ще бъде обект на metaclass.

Ако се опитате да създадете отново на обекта, след това просто да получите линк към вече създадена инстанция.

Методи за контролиране наследство

Можете да получите списък на всички подкласове, или, обратно, да се превърне в наследник на класа. Методи за работа с @ISA.

методи за работа с методите на класа

Можете да използвате този тип методи за създаване на методи на клас, тяхното отстраняване или модификация. Тези методи в работата си, ще се отнасят за обекти от клас :: MOP :: метод.

методи за работа с класа атрибути

Техники ще работят с обекти от клас Class :: :: MOP Умение. Методите, използвани за дефиниране, търсене, четене и изтриване на атрибути на класа.

методи за замразяване

Това е възможност да добавите малко код, който, когато се обадите метод на класа се изпълнява преди екзекуцията (преди модификатор), след като (след модификатор) и по време на изпълнението на основния код (около модификатор).

Пример за използване клас :: MOP клас ::

Разширяване на функционалността на съществуващ клас

Съществуващите клас, Meta.pm модул:

По това време, концепцията за metaclasses са станали съвсем ясно.

Умение протокол

Умение протокол - изобретението е клас :: MOP. Perl 5 не поддържа атрибути. Колкото по-важно да се разбере какво е то.

клас или атрибут на даден обект - променлива, свързана с един клас или обект. Достъп до атрибути се извършва от тяхно име. Тези качества са различни от данните, които съдържа обекта, а са достъпни само чрез методите на обекта.
В Perl програмист естествено възниква въпросът - какво за него е необходимо? Отговор: Не всички са толкова готин език като Perl.

Някои обектно-ориентирани езици за програмиране (например, Java) няма глобални променливи. В този случай, класовете на атрибутите са единственият начин за съхраняване и използване на глобални данни.

Работа с атрибути в :: Клас Клас MOP ::. по мое мнение, грозни и не е удобно. Ето един пример.

Meta4.pm модул файл:

Свързани статии

Подкрепете проекта - споделете линка, благодаря!