炖羊肉都放什么调料| 浮夸是什么意思| 动脉导管未闭对宝宝有什么影响| 广西有什么水果| 什么是善| 子宫粘连有什么症状| 电脑长期不关机有什么影响| 鼻窦炎是什么样子的| 陈丽华是慈禧什么人| 夕阳无限好是什么意思| 什么病不能吃西兰花| 孔雀蓝是什么颜色| 3月2号什么星座| 佛舍利到底是什么| 血清载脂蛋白b偏高是什么意思| 血尿是什么原因引起的男性| 94年什么生肖| 上升星座代表什么| 司空见惯是什么意思| 秦国是现在的什么地方| 肠梗阻是什么病| 氨是什么| 什么病不能吃空心菜| 阻生齿是什么意思| 很无奈是什么意思| 吃什么能瘦| pn是什么意思| 逼格是什么意思| 不解什么什么| 怀字五行属什么| 牙疼是什么病的前兆| 2月15是什么星座| tmd是什么意思| 为什么新疆人长得像外国人| 鲤鱼喜欢吃什么食物| 一什么酒店| 过门是什么意思| 越五行属什么| 声音沙哑是什么原因| 卧轨是什么意思| 植物的根有什么作用| 机器灵砍菜刀是什么意思| 布病是什么| 为什么会有湿疹| 什么属相不能戴貔貅| 什么是sp| 回民为什么不吃猪肉| 女生右手食指戴戒指什么意思| 感冒嗓子疼吃什么消炎药| 渝北区有什么好玩的地方| 生吃胡萝卜有什么好处和坏处| 考法医需要什么条件| 了解是什么意思| 风寒感冒流鼻涕吃什么药| 神神叨叨是什么意思| 7.31什么星座| 手抓饼里面夹什么好吃| spank是什么意思| 食用香精是什么| 玫瑰花和什么一起泡水喝好| 开市是什么意思| 小拇指和无名指发麻是什么原因| 脾虚湿盛吃什么药| 夜间多梦是什么原因| 我的梦想是什么| 外阴白斑是什么引起的| 金不换是什么意思| 属猴的本命佛是什么佛| 乌岽单丛是什么茶| 丢钱是什么预兆| 肾虚什么意思| 左边小腹痛什么原因女| 弟弟的儿子叫什么| 为什么会长息肉| 维生素d低是什么原因| tablet是什么意思| 由来是什么意思| 什么的少年| 阳虚水泛是什么症状| 吃什么去除体内湿热| hvi是什么病| 敏使朗是什么药| 什么是造影| 白牡丹属于什么茶| 咳嗽两个月了一直不好是什么原因| 吃什么可以去湿气| mic是什么意思| 桃花是指什么生肖| 回民是什么意思| 指腹脱皮是什么原因| 右眼皮一直跳是什么原因| 为什么会得白癜风| hcg翻倍不好是什么原因造成的| 吃完饭就想吐是什么原因| 精神卫生科看什么病| 什么叫三叉神经痛| 肛门跳动是什么原因| 占是什么意思| 什么食物含铁量最高| 一月九号是什么星座| 脑梗前有什么预兆| 因数是什么意思| 溃疡是什么意思| 尿液是什么味道| mar什么意思| 鼻炎吃什么药| 盆腔炎是什么病| 蒙奇奇是什么动物| 法脉是什么意思| 灵芝有什么功效| 体感是什么意思| 松花粉对肝有什么好处| 身体发凉是什么原因| 六月六是什么节日| geforce是什么牌子| b币有什么用| 小意思是什么意思| 梦见狼是什么预兆| 耐克属于什么档次| 测尿酸挂什么科| 手指甲有竖纹什么原因| 反流性食管炎吃什么药| 肝内钙化斑是什么意思| 倒挂对身体有什么好处| 一叶知秋下一句是什么| 雄黄是什么东西| ipa啤酒是指什么| 同仁什么意思| 鸟屎掉脸上有什么预兆| 母是什么结构| 猫咪为什么害怕黄瓜| ads是什么| 手淫会导致什么疾病| 曹操叫什么| 阿莫西林不能和什么一起吃| 炖羊肉都放什么调料| 梵克雅宝为什么那么贵| 蚂蚁上树什么姿势| 75年属什么的生肖| 命悬一线的意思是什么| 子宁不嗣音什么意思| 紧张的反义词是什么| 舌头发白是什么情况| 十二年义务教育什么时候实行| 尿隐血十1是什么意思| 什么东西能加不能减| 立牌坊是什么意思| 去医院看乳房挂什么科| 火车不能带什么| 什么是有机蔬菜| 什么是华盖| 心阳虚吃什么中成药| gcp是什么| 二月二十三日是什么星座| 头颅mri是什么检查| 喝红花有什么作用与功效| 我国最早的中医学专著是什么| 鸡蛋加什么吃壮阳持久| 为的多音字是什么| 胡萝卜是什么科| 榴莲树长什么样子| 孕酮低有什么症状| 鹅吃什么食物| 闭目养神什么意思| 前列腺炎吃什么药最好| 学名是什么意思| 夜宵和宵夜有什么区别| 气结是什么意思| 七子饼茶是什么意思| 豚是什么意思| 黑便是什么原因| 什么是属性| 舅舅的孩子叫什么| 20点是什么时辰| 荞麦茶有什么功效| 毛豆子炒什么好吃| 燃气泄露是什么味道| 心跳慢是什么原因| 世界上最小的动物是什么| 脂肪是什么意思| 为什么一吃饭就肚子疼| 血小板高什么原因| 感冒为什么会流鼻涕| 无眠是什么意思| 多吃什么可以长高| 1月17日是什么星座| 罗马棉是什么面料| 8月8日什么星座| 西洋参吃多了有什么副作用| 肝损伤吃什么药| 诸君是什么意思| 什么时候敷面膜效果最好| 牙龈充血是什么原因| 胎儿永存左上腔静脉是什么意思| 淋巴结转移是什么意思| 许三多最后是什么军衔| 尿频是什么病| 做完磁共振要注意什么| 牛奶什么时间喝最好| 脑梗什么症状| 慈禧和光绪是什么关系| 孩子腿疼挂什么科| 香蕉人是什么意思| 小麻雀吃什么| 7.7什么星座| 藏风聚气是什么意思| 黄柏泡水喝有什么功效| 两小儿辩日告诉我们什么道理| 鼠配什么生肖最好| 回声结节什么意思| 腋下有异味是什么原因| 畏首畏尾是什么意思| 人造奶油是什么做的| 为什么会早泄| 喝什么中药补肾| 意淫是什么意思| 尿液白细胞高是什么原因| camper是什么牌子| 化疗后吃什么增强免疫力| 四月初八是什么节日| 自怨自艾什么意思| 立棍是什么意思| 手麻脚麻吃什么药| 张菲和费玉清什么关系| c3是什么驾驶证| 岳飞为什么必须死| 隐形眼镜护理液可以用什么代替| 睾丸发炎吃什么药| 历久弥新的意思是什么| 什么病不能吃空心菜| 高项是什么| 手指发痒是什么原因| 恶露后期为什么是臭的| 快速眼动是什么意思| 哈喇味是什么味道| 在什么前面| 烟台有什么特产| 山代表什么动物| 627是什么星座| 黄精和什么泡水喝最好| 尿酸高是什么造成的| 自怨自艾是什么意思| hpv是什么疫苗| 怀孕乳房会有什么变化| vape是什么意思| 大肠杆菌感染吃什么药| mbti测试是什么| 岔气吃什么药| 无锡机场叫什么名字| 手一直脱皮是什么原因| 猴子怕什么| 茶叶有什么功效| 早泄吃什么| 邓字五行属什么| 绿卡有什么用| 秋天有什么景物| 69属什么| 过是什么结构的字| 故是什么意思| 赶尽杀绝什么意思| 见红是什么样的| 9月3号是什么纪念日| 高三吃什么补脑抗疲劳| 内向的人适合什么职业| 百度Jump to content

华为回应P10闪存差异:流畅不是单一部件决定

From Wikipedia, the free encyclopedia
百度 前11个月,一汽-大众奥迪总销量达526340辆。

In computer science, a metaobject is an object that manipulates, creates, describes, or implements objects (including itself). The object that the metaobject pertains to is called the base object. Some information that a metaobject might define includes the base object's type, interface, class, methods, attributes, parse tree, etc. Metaobjects are examples of the computer science concept of reflection, where a system has access (usually at run time) to its own internal structure. Reflection enables a system to essentially rewrite itself on the fly, to alter its own implementation as it executes.[1]

Metaobject protocol

[edit]

A metaobject protocol (MOP) provides the vocabulary (protocol) to access and manipulate the structure and behaviour of systems of objects. Typical functions of a metaobject protocol include:[2]

  • Create or delete a new class
  • Create a new property or method
  • Cause a class to inherit from a different class ("change the class structure")
  • Generate or change the code defining the methods of a class

Metaobject protocol is contrary to Bertrand Meyer's open/closed principle, which holds that software object systems should be open for extension but closed for modification. This principle effectively draws a distinction between extending an object by adding to it, and modifying an object by redefining it, proposing that the former is a desirable quality ("objects should be extensible to meet the requirements of future use cases"), while the latter is undesirable ("objects should provide a stable interface not subject to summary revision"). Metaobject protocol, by contrast, transparently exposes the internal composition of objects and the entire object system in terms of the system itself. In practice, this means that programmers may use objects to redefine themselves, possibly in quite complex ways.

Furthermore, metaobject protocol is not merely an interface to an "underlying" implementation; rather, through metaobject protocol the object system is recursively implemented in terms of a meta-object system, which itself is theoretically implemented in terms of a meta-metaobject system, and so on until an arbitrary base case (a consistent state of the object system) is determined, with the protocol as such being the recursive functional relationship between these implementation levels.

Implementing object systems in such a way opens the possibility for radical discretionary redesign, providing deep flexibility but introducing possibly complex or difficult-to-understand metastability issues (for instance, the object system must not destructively update its own metaobject protocol - its internal self-representation - but the potential destructiveness of some updates is non-trivial to predict and may be hard to reason about), depending on the recursive depth to which the desired modifications are propagated.[3] For this reason, metaobject protocol, when present in a language, is usually used sparingly and for specialised purposes such as software that transforms other software or itself in sophisticated ways, for example in reverse engineering.[4]

Runtime and compile time

[edit]

When compilation is not available at run-time there are additional complications for the implementation of metaobject protocol. For example, it is possible to change the type hierarchy with such a protocol but doing so may cause problems for code compiled with an alternative class model definition. Some environments have found innovative solutions for this, e.g., by handling metaobject issues at compile time. A good example of this is OpenC++.[5] The Semantic Web object-oriented model is more dynamic than most standard object systems, and is consistent with runtime metaobject protocols. For example, in the Semantic Web model classes are expected to change their relations to each other and there is a special inference engine known as a classifier that can validate and analyze evolving class models.[6]

Usage

[edit]

The first metaobject protocol was in the Smalltalk object-oriented programming language developed at Xerox PARC. The Common Lisp Object System (CLOS) came later and was influenced by the Smalltalk protocol as well as by Brian C. Smith's original studies on 3-Lisp as an infinite tower of evaluators.[7] The CLOS model, unlike the Smalltalk model, allows a class to have more than one superclass; this raises additional complexity in issues such as resolving the lineage of the class hierarchy on some object instance. CLOS also allows for dynamic multimethod dispatch, which is handled via generic functions rather than message passing like in Smalltalk's single dispatch.[8] The most influential book describing the semantics and implementation of the metaobject protocol in Common Lisp is The Art of the Metaobject Protocol by Gregor Kiczales et al.[9]

Metaobject protocols are also extensively used in software engineering applications. In virtually all commercial CASE, re-engineering, and Integrated Development Environments there is some form of metaobject protocol to represent and manipulate the design artifacts.[10][11][12]

A metaobject protocol is one way to implement aspect-oriented programming. Many of the early founders of MOPs, including Gregor Kiczales, have since moved on to be the primary advocates for aspect-oriented programming. Kiczales et al. of PARC were hired to design AspectJ for Java, a language which does not possess a native metaobject protocol.

See also

[edit]

References

[edit]
  1. ^ Smith, Brian C (2025-08-06). "Procedural Reflection In Programming Languages". MIT Technical Report (MIT-LCS-TR-272). Archived from the original on 13 December 2015. Retrieved 16 December 2013.
  2. ^ Foote, Brian; Ralph Johnson (1–6 October 1989). "Reflective facilities in Smalltalk-80". Conference proceedings on Object-oriented programming systems, languages and applications. pp. 327–335. doi:10.1145/74877.74911. ISBN 0897913337. Retrieved 16 December 2013.
  3. ^ The Art of the Metaobject Protocol, Appendix C — Living with Circularity
  4. ^ Favre, Lilliana; Liliana Martinez; Claudia Pereira (2009). "MDA-Based Reverse Engineering of Object Oriented Code". Enterprise, Business-Process and Information Systems Modeling. Lecture Notes in Business Information Processing. Vol. 29. Springer. pp. 251–263. doi:10.1007/978-3-642-01862-6_21. ISBN 978-3-642-01861-9.
  5. ^ Chiba, Shigeru (1995). "A metaobject protocol for C++". Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications. pp. 285–299. doi:10.1145/217838.217868. ISBN 978-0897917032. S2CID 3090058. Retrieved 27 December 2013.
  6. ^ Knublauch, Holger; Oberle, Daniel; Tetlow, Phil; Wallace, Evan (2025-08-06). "A Semantic Web Primer for Object-Oriented Software Developers". W3C. Retrieved 2025-08-06.
  7. ^ Daniel P. Friedman; Mitchell Wand (1988). "The mystery of the tower revealed: A non-reflective description of the reflective tower". Proceedings of the 1986 ACM conference on LISP and functional programming - LFP '86. pp. 298–307. doi:10.1145/319838.319871. ISBN 978-0897912006. S2CID 7974739.
  8. ^ "Integrating Object-Oriented and Functional Programming" (PDF). Retrieved 7 July 2016.
  9. ^ Kiczales, Gregor; Jim des Rivieres; Daniel G. Bobrow (July 30, 1991). The Art of the Metaobject Protocol. The MIT Press. ISBN 978-0262610742.
  10. ^ Johnson, Lewis; David R. Harris; Kevin M. Benner; Martin S. Feather (October 1992). "Aries: The Requirements/Specification Facet for KBSA". Rome Laboratory Final Technical Report. RL-TR-92-248.
  11. ^ "The Origin of Refine" (PDF). www.metaware.fr. Metaware White Paper. Archived from the original (PDF) on 7 January 2014. Retrieved 6 January 2014.
  12. ^ "OMG's MetaObject Facility". omg.org. Object Management Group. Retrieved 7 January 2014.
[edit]
熬夜吃什么保健品 讨好的笑是什么笑 腿弯疼是什么原因 夜叉是什么 手信是什么意思
儿童结膜炎用什么眼药水 退化是什么意思 苟活什么意思 2002年属什么生肖 睡眠不足会引起什么症状
第二性征是什么意思 急性肠胃炎吃什么消炎药 争奇斗艳什么意思 仙茅配什么壮阳效果好 it是什么牌子的衣服
什么叫桑拿 为什么会口臭 血管明显是什么原因 脖子上长个包挂什么科 火代表什么数字
女生被摸胸是什么感觉hcv9jop6ns3r.cn 什么是气质hcv9jop3ns0r.cn 畈是什么意思hcv8jop1ns3r.cn 胎脂是什么原因造成的cl108k.com adh是什么激素hcv8jop9ns2r.cn
脸上长痘痘是什么原因引起的hcv9jop1ns5r.cn 生蚝是什么东西hcv8jop9ns1r.cn 胃出血有什么症状表现aiwuzhiyu.com 肝内胆管结石是什么意思hcv8jop7ns8r.cn 子癫是什么病shenchushe.com
喝红花有什么作用与功效hcv7jop9ns0r.cn 什么是神经衰弱hcv9jop1ns5r.cn pt是什么时间hcv8jop0ns9r.cn 钓鱼有什么好处hcv9jop4ns0r.cn 脑供血不足吃什么食物好hcv9jop2ns2r.cn
倒立有什么好处和坏处hanqikai.com 姓许的女孩取什么名字好听hcv9jop0ns5r.cn 心梗是什么症状hcv7jop6ns6r.cn 蔻驰包属于什么档次hcv9jop0ns9r.cn 危楼高百尺的危是什么意思hcv9jop6ns0r.cn
百度