Dark Mode

kontentsunisukitsupu

Common Lisp Object System

Chu Dian : huri-Bai Ke Shi Dian {uikipedeia(Wikipedia)}

Common Lisp Object System(komon risupu obuziekutoshisutemu, Lue Cheng CLOS)ha, ANSI Common Lisp (CL) noYi Bu wonasuobuziekutoZhi Xiang puroguraminguJi Neng deari, Ta noYan Yu (EuLisp ya Emacs Lisp, Scheme, Dylan)nimoLei Si noshisutemugaDao Ru sareteiru[1]. 1984Nian noCommon LispShi Yang dehaobuziekutoZhi Xiang shisutemuhaShi Qi Shang Zao toshiteZu miIp marenakatsutaga, 1994Nian noANSIBiao Zhun dehaZu miIp miJi Neng tonatsuta. CLOS haQiang iXing Fu kewomotsuDong De (Shi Xing Shi niDing Yi woBian Geng dekiru)obuziekutoshisutemudeari, C++yaJavanoyounaJing De naobuziekutoZhi Xiang Yan Yu tohaDa kikuYi naru. 1970Nian Dai niShi maruChu Qi noLISPobuziekutoshisutemu(Flavors ya LOOPS)niYing Xiang sareteiruga, yoriFan Yong De dearu.

LISPniobuziekutoZhi Xiang woDao Ru surukotohaJian Dan dearu. 2pe-ziCheng Du noko-dogaarebaShi Xian dekiru(Graham, 1994). Yi Fang , obuziekutoZhi Xiang LISPwoRou Ruan deKuo Zhang Xing niFu ndamononiShe Ji surunohayoriKun Nan deatsuta. CLOS haWan Quan naobuziekutoshisutemudeari, obuziekutoZhi Xiang shisutemuZi Ti gaobuziekutoZhi Xiang puroguraminguniyotsuteKuo Zhang Ke Neng dearu. Kuo Zhang nopurotokoruha CLOS Metaobject Protocol (MOP) toHu bareru. [2]

Standard Method Combination noGai Nian Tu

Te Zheng

[Bian Ji ]

Duo Zhong deisupatsuchi

[Bian Ji ]

CLOS haDuo Zhong deisupatsuchishisutemudearu. sunawachi, Yin Shu node-taXing niyotsutemesotsudowoYong Yi dekiru. Duo kunoobuziekutoZhi Xiang Yan Yu haDan Yi deisupatsuchideari, mesotsudohaDi Yi Yin Shu node-taXing deshikadeisupatsuchidekinai. CLOS nomesotsudohaZong Cheng Guan Shu niguru-puHua sareru. Zong Cheng Guan Shu haTong ziMing Qian toYin Shu Gou Zao woChi tsu(tadashiGe "noYin Shu node-taXing gaYi naru)mesotsudowoJi metamonodearu. Hou noLi niyorikonokotowoyoriLiang kuShuo Ming suru.

Ruo ikapuseruHua

[Bian Ji ]

Duo kunoDong De obuziekutoZhi Xiang Yan Yu (Pythonnado)toTong Yang , CLOS dehakapuseruHua gaXing warenai. Ren Yi node-ta(surotsuto)nislot-value Guan Shu deakusesuKe Neng dearu.

de-taGou Zao yaGuan Shu Guan Li niatatsute, CL nopuroguramahapatsuke-zitoiumoziyu-ruGuan Li Ji Neng woYong irukotogaDuo i.

Duo Zhong Ji Cheng

[Bian Ji ]

CLOS haDuo Zhong Ji Cheng Ji Neng womochi, puroguramingusutairutoshitemoMixintoshiteHuo Yong saretemoiru. Biao Zhun dehakurasuYou Xian Shun Wei risutowotoporozikaruso-tosuruZhan Lue niJia e, mesotsudonoQi Dong Shun Xu nokasutamaizuDeng gaKe Neng deari, C++Deng nimirareruLing Xing Ji Cheng Wen Ti Deng haXian Zai Hua shinai. mata, kurasuYou Xian Shun Wei risutonoso-tonoZhan Lue moCLOS MOPniyorikurasugotoniyu-za-gakasutamaizugaKe Neng dearu.

Dong De kurasuBian Geng

[Bian Ji ]

CLOSdenoobuziekutonokurasuhaDong De deari, obuziekutonoNei Rong dakedenaku[Gou Zao ] woShi Xing Shi niBian Geng dekiru. insutansugaShu surukurasuwoBian Geng suruGuan Shu ha (change-class INSTANCE NEW-CLASS-NAME &rest INITARGS) dearu.

mata, CLOS haShi Xing Shi ni(Ji nisonokurasugainsutansuwoChi tsuteitemo)kurasuDing Yi woBian Geng dekiru. Ju Ti De niha, defclasswoZai Du Ping Jia shitekurasuDing Yi woBian Geng shitaJi , CLOSha(make-instances-obsolete CLASS)woHu biChu su. make-instances-obsoletehaZhi Ding saretakurasunosubetenoinsutansuniDui shiteupdate-instance-for-redefined-classwoHu biChu su. update-instance-for-redefined-classhaXin taniZhui Jia saretasurotsutoyaXue Chu saretasurotsutonoQing Bao woYin Shu toshiteShou ketori, Tong zikuYin Shu toshiteShou keQu tsutainsutansukaraXin shiiDing Yi niJi duiteXin taniZuo tsutainsutansuheZhi wokopi-suru. korera3tsunomesotsudohaJi Cheng niyoriyu-za-gaShu kiHuan e*Zhui Jia woXing ukotogadekiru.

kurasube-su

[Bian Ji ]

CLOS hapurototaipube-sudehanai. insutansuwoarukurasunomenba-toshiteZuo Cheng surunihaShi Qian nidefclassniyotsutesonokurasuwoDing Yi shinakerebanaranai.

MOP : Meta Object Protocol

[Bian Ji ]

ANSI Biao Zhun noFan Wei Wai daga, CLOS noShi Zhuang niGuang kuCai Yong sareteiruKuo Zhang toshitemetaobuziekutopurotokoru(The Common Lisp Object System MetaObject Protocol)gaaru. MOP ha CLOS Shi Zhuang Ji Pan niBiao Zhun intahue-suwoDing Yi shi, kurasuwometakurasunoinsutansutoshiteXi i, Xin tanametakurasuwoDing Yi shitari, Ji Di kurasunoZhen ruWu iwoXiu Zheng shitaridekiru. CLOS MOP haasupekutoZhi Xiang puroguramingunoXian Qu ritomoYan e, Shi Ji Tong ziJi Shu Zhe (Gregor Kiczales nado)gaGuan watsuteiru. Dai Biao De naJi Neng haGeneric Function (class-slots class), Class standard-slot-definition, nado.

MOPhaShi Zhuang Xi niyotsuteXi igaYi naruga, sonoZhong Yao Xing notame, Ke Ban Xing woDan Bao suruShi migaXing wareteiru. Jie Guo , Xian Zai deha, inta-hue-suwoGong Tong nisururaiburari Closer to MOP gadehuakutosutanda-dotonatsuteiru[3].

Shi Xing mesotsudonoXing Cheng

[Bian Ji ]

Zong Cheng Guan Shu woHu biChu shitaShi , Shi Xing suruShou Sok kinoNei Rong ha, Duo kunoDong De obuziekutoZhi Xiang puroguramingushisutemutoTong Yang , sonoShi Xing Shi niDong De niJue Ding sareruga, mesotsudokiyatsushiyuyakonpairuShi niJue Ding dekiruZui Shi Hua woYong iteGao Su Hua woTu tsuteiruChu Li Xi gaDuo i.

Shi Yong Ke Neng mesotsudowoBing beru

[Bian Ji ]

Yin Shu noXing toJi Cheng Guan Xi niYing zite, Shi Yong shiteyoimesotsudowoJi meru.

kurasupersongakurasuanimalwoJi Cheng shiteirutosuru. p1top2haGong nipersonnoinsutansudearu. Zong Cheng Guan Shu reactionnoYi Xia noyounaHu biChu shi

(reaction p1 p2)

nitsuite, mesotsudogaYi Xia noyouniDing Yi sareteiruChang He ,

(defmethod reaction ((a1 animal) (a2 animal)) (foo)) ; 1
(defmethod reaction ((a1 person) (a2 animal)) (bar)) ; 2
(defmethod reaction ((a1 animal) (a2 person)) (baz)) ; 3
(defmethod reaction ((a1 person) (a2 person)) (bab)) ; 4

Shang no4tsuhasubeteShi Yong Ke Neng mesotsudodearu.

kurasuJi Cheng Shun niyorumesotsudonoBing beTi e

[Bian Ji ]

korera4tsunomesotsudoha, Yin Shu obuziekutonoJi Cheng Shun Xu (Precedence Order)niCong tsuteso-tosareru. Shang noLi deha, Hu biChu suJi nop1top2gaGong nikurasupersonnoinsutansudearutame, soreniZui momatsuchishiteiru4Fan Mu nomesotsudogaZui moGao iJi Cheng Shun Xu woChi tsu. Ji Cheng Shun Xu haTong Chang , Zuo Ce noYin Shu karaShun niJi Suan sareru. Cong tsuteShang noLi deha, 2Fan Mu to3Fan Mu nomesotsudowoBi betaChang He , Di Yi Yin Shu noShi Yong Du gaYou Xian sarerukotokara, 2Fan Mu noShi Yong Du nohougaGao kunaru. [4][5] Jie Guo De ni, mesotsudoraha4,2,3,1noShun deso-tosareru.

mesotsudoJie He (mesotsudo*konbine-shiyon)

[Bian Ji ]

CLOSdeha, Shang noso-toniyotsuteZuo raretamesotsudonorisutoniYi Ding noZhan Lue woShi Yong surukotode, Zui Zhong De niShi Ji niXing uDong Zuo woJue Ding suru. konoZhan Lue nokotowomesotsudoJie He toHu bu. ikutsukanobarie-shiyongaBiao Zhun deDing Yi sareteiru.

Ta noYan Yu nioite, aruinsutansunomesotsudowoHu biChu sutokinoDong Zuo nitsuiteKao etemiyou. sonoinsutansunokurasugaQin kurasuwoChi tsutoki, Li ebaJavanoyounaYan Yu nioiteha, Ji Cheng saretamesotsudohaShang Shu kisareteshimau. Yi Fang ,CLOSdehasonoyounaTong Chang noShang Shu ki(o-ba-raido)Zhan Lue dakenitodomarazu, Duo Zhong Duo Yang naZhan Lue gaANSIBiao Zhun deDing Yi sare, katsuZi You niDing Yi dekiru. (tadashi, javahasupertoiuTe Shu namesotsudowoBei eteirutame, Zi kurasunomesotsudokaraQin nomesotsudowoHu bukotogadeki, Yan Yu noRou Ruan Xing woGao meteiru. )

mesotsudoJie He Fa Ze haZong Cheng Guan Shu noDing Yi gotoniZhi Ding suru. Biao Zhun mesotsudoJie He Yi Wai nomesotsudoJie He Fa Ze woZhi Ding shitaChang He , mesotsudoDing Yi noJi nihamesotsudoZhi Ding Zi (Qualifier)woZhi Ding shite, Jie He Fa Ze niGu You noJi Neng woShi ukotowoZhi Ding shinakutehaikenai. sorezorenomesotsudoJie He haFu Shu nomesotsudoZhi Ding Zi woChi tsu. nao, subetenomesotsudoJie He ha:aroundmesotsudoJie He woChi tanakutehanaranaitoDing Yi sareteiru.

standard mesotsudokonbine-shiyon / Biao Zhun mesotsudoJie He

[Bian Ji ]

korehajavanomotsuJi Cheng Zhan Lue toGong Tong Dian gaaru. Biao Zhun mesotsudoJie He deha, Zhi Ding Zi woZhi Ding shinai( unspecified method qualifier )mesotsudonokotowopuraimari*mesotsudo ( Primary method )toHu bi, korenihaShang Shu kiZhan Lue woYong iru. mata, sonoTa ni:around,:before,:aftermesotsudoJie He woChi tsu.

mesotsudoDing Yi noZhong deha, (call-next-method)toiuTe Shu naGuan Shu woHu bukotogadeki, korehaCi niShi Yong subekimesotsudowoHu biChu su. konope-zinoShang Bu ni, konoGuan Xi woJi shitaTu gaaru.

+ mesotsudoJie He

[Bian Ji ]

koreha, subetenoShi Yong Ke Neng mesotsudowoShi Xing shi, soreranoFan shitaZhi woZu shiHe waseteQuan Ti noZhi toshiteFan sutoiuJie He Fang Fa dearu. Tong Yang nomesotsudoJie He toshiteBiao Zhun deDing Yi sareteirumononi, list,progn,appendnadogaaru.

max mesotsudoJie He

[Bian Ji ]

koreha, subetenoShi Yong Ke Neng mesotsudowoShi Xing shi, soreranoFan shitaZhi noZui Da Zhi woQuan Ti noZhi toshiteFan sutoiuJie He Fang Fa dearu. Tong Yang nomesotsudoJie He toshiteBiao Zhun deDing Yi sareteirumononimingaaru.

Xin tanamesotsudoJie He noDing Yi

[Bian Ji ]

define-method-combination[6]ha, yu-za-ni, Xin tanamesotsudoJie He woDing Yi suruZi You woYu eru.

Yi Xia ni, CLOSwoYong iteFu Shu nokurasudemesotsudowoShi Yong suruLi woShi su.

kurasuDing Yi

[Bian Ji ]

Dong Wu , Ye Sheng noQuan , petsutonoQuan , Ren Jian , suteyuwa-desu, Nan toiukurasuwoDing Yi shita.

(defclass animal ()
((sex :reader sex-of :initarg :sex)))
;; Chu Qi Zhi woShe Ding surutamenoki-wa-doYin Shu wo :sex niZhi Ding suru

(defclass named-mixin ()
((name :type string :reader name-of :initarg :name)))
;; Ming Qian woChi tsuobuziekutonomixin
;; :reader Zhi Ding niyori, surotsutoDu miChu shiYong noGuan Shu gaZi Dong deDing Yi sareru

(defclass wild-dog (animal)
((food :initform :anything)))
(defclass pet-dog (animal named-mixin)
((food :initform :dog-food)))
;; :initformniyori, insutansuZuo Cheng Shi niZhi woShe Ding shinaiChang He noChu Qi Zhi woDing meru

(defclass person (animal named-mixin)
((address :accessor adress-of)))
;; accessorZhi Ding niyori, Du miShu kiLiang Fang noGuan Shu gaZuo rareru

(defclass male-mixin ()
((sex :initform :male)))
(defclass female-mixin ()
((sex :initform :female)))
(defclass stewardess (person female-mixin)
())

sutanda-do*mesotsudokonbine-shiyon

[Bian Ji ]

sorezorenoJi Cheng Shun niJi duite, He kawoYan wasetemiru.

(defun say (sound)
(format t sound))
;; Biao Zhun Chu Li niShu kiIp mu

(defgeneric saysomething (animal))

(defmethod saysomething ((ani animal))
(say "aaaaa!"))
;; Tong Chang , Dong Zuo haJi Cheng niyoriShang Shu kisareru

(defmethod saysomething :before ((p person))
(say "hi!"))
;; :before Zhi Ding niyori, Zi Sun kurasunomesotsudowoatoniSok iteShi Xing dekiru

(defmethod saysomething ((st stewardess))
(say "welcome aboard!"))
;; stewardess ha person kurasuwoJi Cheng surunode, :before Zhi Ding niCong i
;; hi! toYan tsutaHou ni welcome aboard! toiu

list mesotsudokonbine-shiyon

[Bian Ji ]

Duo Zhong deisupatsuchitolistmesotsudokonbine-shiyonwoYong ite, He kagaHe kaniChu Hui tsutaShi noFan Ying worisutonishiteShu kiChu sasetemiru.

(defgeneric reaction (of to)
(:method-combination :list))
;; Di Yi Yin Shu gatoruDi Er Yin Shu henoFan Ying woFan su.
;; mesotsudoJie He wostandardkaralistheBian Geng suru.
;; sonotame, sorezorenomesotsudonoFan riZhi galistnimatomerareteFan ru


(defmethod reaction list ((a1 animal) (a2 animal))
:look)

(defmethod reaction list ((a1 wild-dog) (a2 wild-dog))
(if (in-same-group a1 a2)
:sniff ;; kunkunXiu gu
:bark)) ;; Fei eru

(defmethod reaction list ((wild wild-dog) (pet pet-dog))
:bark-strongly)
(defmethod reaction list ((pet pet-dog) (wild wild-dog))
:run-away)

(defmethod reaction list ((pet pet-dog) (p person))
:escort)

(defmethod reaction list ((p person) (pet pet-dog))
:go-for-a-walk)

(defmethod reaction list ((p1 person) (p2 person))
:greetings)

(defmethod reaction list ((st stewardess) (p person))
:welcome-aboard)

(defmethod reaction list ((f1 female-mixin) (p person))
:watch-clothes)

(defmethod reaction list ((m male-mixin) (f female-mixin))
:watch-hip-tits-and-waist)

(reaction (make-instance 'animal)
(make-instance 'animal))
;; --> (:LOOK)


(reaction (make-instance 'man)
(make-instance 'stewardess))
;; --> (:GREETINGS :LOOK :WATCH-HIP-TITS-AND-WAIST)


(reaction (make-instance 'stewardess)
(make-instance 'man))
;; --> (:WELCOME-ABOARD :GREETINGS :LOOK :WATCH-CLOTHES)


(reaction (make-instance 'wild-dog)
(make-instance 'man))
;; --> (:LOOK)

(reaction (make-instance 'pet-dog)
(make-instance 'man))
;; --> (:ESCORT :LOOK)


(reaction (make-instance 'pet-dog)
(make-instance 'wild-dog))
;; --> (:RUN-AWAY :LOOK)

Can Kao Wen Xian

[Bian Ji ]
  • "CommonLoops: merging Lisp and object-oriented programming", by Daniel G. Bobrow, Kenneth Kahn, Gregor Kiczales, Larry Masinter, Mark Stefik, Frank Zdybel. 1986, Portland, Oregon, United States. Pages 17 - 29 of the Conference on Object Oriented Programming Systems Languages and Applications, ISSN 0362-1340.
  • "A History and Description of CLOS", by Jim Veitch. Pages 107-158 of Handbook of Programming Languages, Volume IV: Functional and Logic Programming Languages, ed. Peter H. Salus. 1998 (1st edition), Macmillian Technical Publishing; ISBN 1-57870-011-6
  • Gregor Kiczales, Jim des Rivieres, and Daniel G. Bobrow, The Art of the Metaobject Protocol, 1991, MIT Press. ISBN 0-262-61074-4
  • Sonya Keene, Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS, 1988, Addison-Wesley. ISBN 0-201-17589-4.

Jiao Zhu

[Bian Ji ]
  1. ^ [CLOS haBiao Zhun Gui Ge dearu. Fu Shu nobenda-gaCLOSwoTi Gong shiteiru. CLOS yasonoYi Bu haTa noLISPXi Yan Yu dearu EuLisp ya EmacsLisp niobuziekutoZhi Xiang woDao Ru surunoniShi wareteiru] p. 110 (Veitch 1998)
  2. ^ p. 108 (Veitch 1998)
  3. ^ http://www.cliki.net/Current%20recommended%20libraries
  4. ^ tadashi, konoopushiyonhadefgenericno:argument-precedence-ordertoiuopushiyonniyotsuteNi Shun niBian Geng dekiru.
  5. ^ http://www.lispworks.com/documentation/HyperSpec/Body/07_ffab.htm
  6. ^ http://www.lispworks.com/documentation/HyperSpec/Body/m_defi_4.htm#define-method-combination

Wai Bu rinku

[Bian Ji ]