Մետաօբյեկտ

Ինֆորմատիկայում մետաօբյեկտը մի օբյեկտ է, որը կառավարում է՝ ստեղծում է, նկարագրում է, իրականացնում է այլ օբյեկտներ (ներառյալ իրեն)։ Այն օբյեկտը, որին պատկանում է մետաօբյեկտը, կոչվում է բազային օբյեկտ։ Մետաօբյեկտը կարող է որոշ տեղեկություններ պարունակել բազային օբյեկտի բաղադրիչների մասին, ինչպիսիք են տիպը, ինտերֆեյսը, դասը, մեթոդները, ատրիբուտները, վերլուծության ծառը և այլն։ Մետաօբյեկտները ինֆորմատիկայի reflection սկզբունքի օրինակ են, երբ համակարգը (սովորաբար կատարման ժամանակ) հասանելիություն ունի իր սեփական ներքին կառուցվածքին։ Reflection-ը համակարգին հնարավորություն է տալիս հեշտությամբ ձևափոխել, վերածրագրավորել ինքն իրեն, դրանով իսկ հնարավոր դարձնելով վերակազմակերպել սեփական վարքը կատարման ընթացքում[1]։

Մետաօբյեկտների արձանագրություն

[խմբագրել | խմբագրել կոդը]

Մետաօբյեկտների արձանագրությունը (metaobject protocol, MOP) որոշում է այն կանոնները, որոնցով հասանելի են դառնում և կառավարվում են օբյեկտների համակարգի կառուցվածքն ու վարքը։ Մետաօբյեկտների արձանագրության ֆունկցիաներից են[2].

  • Նոր դասի ստեղծումն ու վերացումը,
  • Նոր հատկության կամ մեթոդի ստեղծումը,
  • Ստիպել դասին ժառանգվել մի այլ դասից («փոխել դասի կառուցվածքը»),
  • Դասի մեթոդը որոշող գոդի սեղեղծումը կամ ձևափոխումը։

Մետաօբյեկտների արձանագրությունը հակասում է Բերտրան Մեյերի open/close սկզբունքին, որը պահանջում է, որ ծրագրային օբյեկտները պետք է լինեն «բաց՝ ընդլայնման համար» բայց «փակ՝ ձևափոխությունների» համար։ Մետաօբյեկտների արձանագրությունը համակարգի մակարդակով թափանցիկ է դարձնում օբյեկտների ներքին կառուցվածքն ու օբյեկտների ամբողջ համակարգը։ Գործնականում սա նշանակում է, որ ծրագրավորողը կարօղ է օբյեկտն օգտագործեն հենց նաույն օբյեկտը վերասահմանելու համար՝ թերևս բավականին բարդ եղանակով։

Ծանոթագրություններ

[խմբագրել | խմբագրել կոդը]
  1. Smith, Brian C (1982 թ․ հունվարի 1). «Procedural Reflection In Programming Languages». MIT Technical Report (MIT-LCS-TR-272). Արխիվացված է օրիգինալից 2015 թ․ դեկտեմբերի 13-ին. Վերցված է 2013 թ․ դեկտեմբերի 16-ին.
  2. Foote, Brian; Ralph Johnson (1–6 October 1989). «Reflective Facilities in Smalltalk-80». Oopsla '89: 327–335. doi:10.1145/74877.74911. ISBN 0897913337. Վերցված է 2013 թ․ դեկտեմբերի 16-ին.