顯示具有 OOP 標籤的文章。 顯示所有文章
顯示具有 OOP 標籤的文章。 顯示所有文章

2008年6月9日

OOP in REBOL 3.0: An Example

REBOL[]


Inherit: func [super [object!] sub [object!]] [
append sub reduce/no-set [parent: super]
]


Invoke: func [ obj member /local ans] [
either ans: select obj member [
ans
] [
attempt [Invoke obj/parent member]
]
]


Super-Class: context [
Member-A: does [ print "Member-A of Super" ]
Member-B: does [ print "Member-B of Super" ]
]


Sub-Class: context [
Inherit Super-Class Self


Member-B: does [ print "Member-B of Sub" ]
Member-C: does [ print "Member-C of Sub" ]
]


Invoke sub-class 'Member-A
Invoke sub-class 'Member-B
Invoke sub-class 'Member-C

2008年6月5日

OOP in REBOL ?

根據REBOL語言設計者Carl在部落格文章中的說法,他以前曾經相當著迷於OOP (Object-Oriented Programming),但是現在已經不再是如此了。雖然Carl不是特別喜歡OOP,但是在REBOL 3.0的設計中,我們依然可以找到少數OOP的影子。最明顯的例子是Scheme與Port。

從OOP的角度來看,Scheme就像是Class,Port就像是Instance;Scheme只有一份,被所有的Port共用。另外,Scheme也像是Super-class;而Port像是Sub-class,Port所提供的action方法可以覆蓋(shadow)掉Scheme的action;而Port如果沒有實做(implement)自己的action,就會使用Scheme的版本。

如果你想在REBOL中寫OOP的程式,那麼你可以參考Scheme與Port的源碼。關於OOP,你可以參考我的這篇文章

2008年5月20日

從OOP到FP

如果你只習慣OOP(Object-Oriented Programming)的編程方式,現在想改用FP(Functional Programming)的方式,但不知道要從何下手,你可以參考我的這篇文章。