这里必须要指出, '概念' 其实就是面向对象中的对象, 也就是物件导向中的物件. 中蟒有两个互通的保留字 "概念" 和 "类别", 它们是一样的.
为什么要另外用一个新名字? 我认为无论是面向对象还是物件导向的说法都会令初学者 摸不着头脑. 好像我当初听了半天都不明白, 于是以为是很深奥的东西. 现在有机会重新弄一套程式语言了, 我研究了一下, 觉得 '概念' 的讲法比较浅白. 当然这个名字会太笼统了, 因此保留了 '类别' 这个保留字, 如果你丝毫不觉得 '概念' 是个好主意的话, 当它不存在好了.
这是一个不算深, 但很烦的题目. 我还没想好该怎样表达. 因此暂时只好用一些例子, 希望你能掌握到其中的要点.
#定义一个概念
概念 印刷员:
#定义这个概念的初始动作, '__初始__'是中蟒的特别函数.
#而 '自己' 则是概念本身, 中蟒规定概念中的函数 (称为方法)
#的第一个参数一定是概念本身. 至于叫什么名字可以随便改,
#一般叫做 '自己'. ('我' 也不错)
定义 __初始__(自己, 名字):
自己.名字 = 名字
#定义本概念的某个功能
定义 印刷(自己, 稿件):
写 "由" + 自己.名字 + "印"
写 "<html>" + 稿件 + "</html>;"
#定义另一个功能
定义 检查(自己, 稿件):
写 "稿件长度为:", 长度(稿件)
#开始操作
小王 = 印刷员('王小明')
小李 = 印刷员('李四')
小王.印刷('这是一份广告')
写 '完成'
小李.检查('论文一篇')
执行结果:
由王小明印 <html>;这是一份广告</html>; 完成 稿件长度为: 8
可以看到所谓的概念, 其实像是一整套完整的, 自给自足的小程式. 它包括了自己的变数 (称为属性), 自己的函数 (称为方法).
用概念的方法来为程式进行分工往往有很好的成效. 尤其是所写的功能可以很容易的重用. 这是因为在分析的过程中, 互相牵连的部份己经尽量分开了.
在上面的方法定义中, 我们并没有传回任何值. 一个更好的做法是传回概念本身:
... #定义另一个功能 定义 检查(自己, 稿件): 写 "稿件长度为:", 长度(稿件) 传回 自己 ...
我们可以这样调用: 小王.检查(稿).印刷(稿)
或者我们传回稿件:
... #定义另一个功能 定义 检查(自己, 稿件): 写 "稿件长度为:", 长度(稿件) 传回 稿件 ...
这样我们又可以用
小王.印刷(小王.检查(稿))
一个是以工作人员的动作为主, 一个是以稿件的流程为主. 这样写传回值, 实际操作时会带来很大方便
如果按上面的写法再写多几个概念出来, 写程式就可以更加接近日常的操作:
#假设己定义好概念
小王 = 印刷员('王小明')
小张 = 外勤('张三')
段总 = 编辑('段正淳')
老朱 = 会计('朱子柳')
#实际操作
作者 = '老粗'
老朱.开稿费(小张,500).拿稿件(作者).交编辑(段总).正稿().付印(小王).印刷()
哈, 好玩吗 ?